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

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

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

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

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

3、代码实现

源代码
"--------------------@斌将军--------------------
REPORT zgos.TYPE-POOLS: slis,abap,truxs.
INCLUDE .*----------------------------------------------------------------------*
* 屏幕定义
*----------------------------------------------------------------------*
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'IMPORTINGfile_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'EXPORTINGfilename = lv_filenamefiletype = 'BIN'IMPORTINGfilelength = ls_attsizeTABLESdata_tab = lt_binEXCEPTIONSfile_open_error = 1file_read_error = 2no_batch = 3gui_refuse_filetransfer = 4invalid_type = 5no_authority = 6unknown_error = 7bad_data_format = 8header_not_allowed = 9separator_not_allowed = 10header_too_long = 11unknown_dp_error = 12access_denied = 13dp_out_of_memory = 14disk_full = 15dp_timeout = 16OTHERS = 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'EXPORTINGlong_filename = lv_long_filenameIMPORTINGpure_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'EXPORTINGobj_rolea = ls_objaobj_roleb = ls_rolebrelationtype = 'ATTA'IMPORTINGbinrel = ls_binrelTABLESbinrel_attrib = lt_binrel_attribEXCEPTIONSno_model = 1internal_error = 2unknown = 3OTHERS = 4.IF sy-subrc EQ 0.MESSAGE s043(sgos_msg)."已成功创建附件ENDIF.ENDIF.ENDFORM.
"--------------------@斌将军--------------------
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
