GOS 会计凭证上传附件

作者:斌将军 约 3 分钟阅读 更新日期:2024-02-22 2 年前更新 标签:ABAP, CO, FI, 工具, 开发, 技术, 财务

GOS会计凭证上传附件

原创 斌将军 斌将军 2023-05-17 18:01 发表于河南

收录于合集#ABAP64个

1、GOS介绍

GOS是一个连接文档和SAP内各种对象的工具,在SAP的一些凭证中,可以通过GOS进行附件的上传、查看和删除等功能,例如采购订单、会计凭证等。

如果没有这个按钮,可以将当前登录用户的类型设置为对话即可。

2、前台附件上传

点击创建附件,选择需要上传的附件即可

点击附件清单,即可查看上传的附件

并且可以对当前上传的附件进行删除操作

3、代码实现

源代码

源代码

"--------------------@斌将军--------------------

REPORT zgos.

TYPE-POOLS: slis,abap,truxs.

INCLUDE <cntn01>.

*----------------------------------------------------------------------*

• 屏幕定义

*----------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-002.
PARAMETERS:p_file TYPE rlgrap-filename MEMORY ID p, "上载模版路径

p_belnr TYPE bkpf-belnr OBLIGATORY,

p_gjahr TYPE bkpf-gjahr OBLIGATORY,

p_bukrs TYPE bkpf-bukrs OBLIGATORY.

SELECTION-SCREEN END OF BLOCK blk1.

*----------------------------------------------------------------------*

• AT SELECTION-SCREEN on HELP-REQUEST|VALUE-REQUEST *

*----------------------------------------------------------------------*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

"选择路径

PERFORM frm_choose_file.

*----------------------------------------------------------------------*

• START-OF-SELECTION *

*----------------------------------------------------------------------*

START-OF-SELECTION.

"上传附件

PERFORM frm_upload_file.

*&---------------------------------------------------------------------*

*& Form FRM_CHOOSE_FILE

*&---------------------------------------------------------------------*

• 选择文件

*----------------------------------------------------------------------*

FORM frm_choose_file.

"F4 选择文件

CALL FUNCTION 'F4_FILENAME'

IMPORTING

file_name = p_file.

IF sy-subrc <> 0.
ENDIF.
ENDFORM. "FRM_CHOOSE_FILE

*&---------------------------------------------------------------------*

*& Form FRM_UPLOAD_FILE

*&---------------------------------------------------------------------*

• 上传附件

*----------------------------------------------------------------------*

FORM frm_upload_file.
DATA:lt_swcont TYPE TABLE OF swcont WITH HEADER LINE,

lt_binrel_attrib TYPE TABLE OF brelattr,

lt_bin TYPE TABLE OF solix.

DATA:lv_filename TYPE string,

lv_long_filename TYPE dbmsgora-filename,

lv_pure_filename TYPE sdbah-actid,

lv_pure_extension TYPE sdbad-funct,

ls_obja TYPE borident,

ls_roleb TYPE borident,

ls_binrel TYPE gbinrel,

ls_attsize TYPE int4,

lo_swc_obj TYPE swc_object.

"上传文件

CLEAR:lv_filename.

lv_filename = p_file.
CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = lv_filename

filetype = 'BIN'

IMPORTING

filelength = ls_attsize

TABLES

data_tab = lt_bin

EXCEPTIONS

file_open_error = 1

file_read_error = 2

no_batch = 3

gui_refuse_filetransfer = 4

invalid_type = 5

no_authority = 6

unknown_error = 7

bad_data_format = 8

header_not_allowed = 9

separator_not_allowed = 10

header_too_long = 11

unknown_dp_error = 12

access_denied = 13

dp_out_of_memory = 14

disk_full = 15

dp_timeout = 16

OTHERS = 17.

IF sy-subrc <> 0.

MESSAGE '文件上传失败' TYPE 'S' DISPLAY LIKE 'E'.

STOP.

ELSE.

CLEAR:lv_long_filename.

lv_long_filename = lv_filename.

"截取文件名称和后缀

CALL FUNCTION 'SPLIT_FILENAME'

EXPORTING

long_filename = lv_long_filename

IMPORTING

pure_filename = lv_pure_filename
pure_extension = lv_pure_extension.

"转换文件

swc_create_object lo_swc_obj 'MESSAGE' ''.

swc_set_element lt_swcont 'NO_DIALOG' 'X'.

swc_set_element lt_swcont 'DOCUMENTTITLE' lv_pure_filename."文件名

swc_set_table lt_swcont 'Content_Hex' lt_bin."文件内容

swc_set_element lt_swcont 'DOCUMENTTYPE' lv_pure_extension."文件格式

swc_set_element lt_swcont 'DOCUMENTSIZE' ls_attsize."文件大小

swc_refresh_object lo_swc_obj.

swc_call_method lo_swc_obj 'CREATE' lt_swcont.

swc_get_object_key lo_swc_obj ls_roleb-objkey.

ls_roleb-objtype = 'MESSAGE'. "
ls_obja-objtype = 'BKPF'. "
ls_obja-objkey = p_bukrs && p_belnr && p_gjahr."拼接会计公司、会计凭证、会计年度

"上传附件

CALL FUNCTION 'BINARY_RELATION_CREATE_COMMIT'

EXPORTING

obj_rolea = ls_obja
obj_roleb = ls_roleb

relationtype = 'ATTA'

IMPORTING

binrel = ls_binrel

TABLES

binrel_attrib = lt_binrel_attrib

EXCEPTIONS

no_model = 1

internal_error = 2

unknown = 3

OTHERS = 4.

IF sy-subrc EQ 0.

MESSAGE s043(sgos_msg)."已成功创建附件

ENDIF.
ENDIF.
ENDFORM.

"--------------------@斌将军--------------------

斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「GOS会计凭证上传附件.docx」整理生成,仅用于内部技术分享与学习交流。