GOS会计凭证上传附件
原创 斌将军 斌将军 2023-05-17 18:01 发表于河南
收录于合集#ABAP64个
GOS是一个连接文档和SAP内各种对象的工具,在SAP的一些凭证中,可以通过GOS进行附件的上传、查看和删除等功能,例如采购订单、会计凭证等。
如果没有这个按钮,可以将当前登录用户的类型设置为对话即可。
点击创建附件,选择需要上传的附件即可
点击附件清单,即可查看上传的附件
并且可以对当前上传的附件进行删除操作
源代码
源代码
"--------------------@斌将军--------------------
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_filenamefiletype = 'BIN'
IMPORTING
filelength = ls_attsizeTABLES
data_tab = lt_binEXCEPTIONS
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_filenameIMPORTING
pure_filename = lv_pure_filenamepure_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_objaobj_roleb = ls_rolebrelationtype = 'ATTA'
IMPORTING
binrel = ls_binrelTABLES
binrel_attrib = lt_binrel_attribEXCEPTIONS
no_model = 1
internal_error = 2
unknown = 3
OTHERS = 4.
IF sy-subrc EQ 0.MESSAGE s043(sgos_msg)."已成功创建附件
ENDIF.ENDIF.ENDFORM."--------------------@斌将军--------------------