下载模板提供给用户一个批量导入数据的格式
1.导入模板
事务代码:smw0
包通常是事务代码的前3个字母如zmm
对象名称是自己定义的模板名后面要用
上传模板文件
2.用代码定义屏幕下载模板按钮
定义屏幕按钮
SELECTION-SCREEN: FUNCTION KEY 1,
FUNCTION KEY 2.
初始化屏幕按钮
INITIALIZATION.
PERFORM frm_init_functxt.
PERFORM frm_init_functxt2.
FORM frm_init_functxt2 .
CLEAR:gs_functxt.
gs_functxt-icon_id = icon_export. "图标
gs_functxt-icon_text = TEXT-i02. "按钮文本
sscrfields-functxt_02 = gs_functxt. "按钮 多个按钮是需要变化
ENDFORM.
3.执行下载模板功能代码
FORM frm_download_temple2 .
DATA: lv_name TYPE string,
lv_file TYPE string,
lv_user_action TYPE i.
IF sscrfields-ucomm EQ 'FC02'. "按下按钮时, !!需要自己改
lv_name = '下载模板2'. "要下载模板自己定义一个模板名称 !!需要自己改
CALL FUNCTION 'GUI_FILE_SAVE_DIALOG' "系统弹出一个文件保存对话框,用户可以选择文件的保存位置、输入文件名,并指定文件的保存格式等。
EXPORTING
default_file_name = lv_name
IMPORTING
fullpath = lv_file
user_action = lv_user_action.
IF lv_user_action EQ 0.
PERFORM frm_download_excel USING 'ZSD015_ZTD' lv_file. "ZSD015_ZTD是模板文件的名字,!!需要自己改
MESSAGE '模板下载成功!' TYPE 'S'.
ENDIF.
ENDIF.
ENDFORM.
"这段代码不用动,是上面引用的模块
FORM frm_download_excel USING excel_name excel_name1.
DATA:
ls_objdata LIKE wwwdatatab,
ls_mime LIKE w3mime,
ls_destination LIKE rlgrap-filename,
lv_objnam TYPE string,
lv_subrc LIKE sy-subrc,
lv_errtxt TYPE string,
lv_objid TYPE wwwdatatab-objid,
lv_dest LIKE sapb-sappfad,
lv_fullpath LIKE rlgrap-filename.
MOVE excel_name TO lv_objid.
CONCATENATE lv_objid '.XLSX' INTO lv_objnam.
CONDENSE lv_objnam NO-GAPS.
SELECT SINGLE
relid,
objid
FROM
wwwdata
WHERE srtf2 EQ 0
AND relid EQ 'MI'
AND objid EQ @lv_objid
INTO CORRESPONDING FIELDS OF @ls_objdata.
IF sy-subrc NE 0 OR ls_objdata-objid EQ space.
CONCATENATE '模板文件:' lv_objnam '不存在,请用TCODE:SMW0进行加载' INTO lv_errtxt.
MESSAGE lv_errtxt TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
CONCATENATE excel_name1 '.xlsx' INTO lv_fullpath.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_objdata
destination = lv_fullpath
IMPORTING
rc = lv_subrc.
IF lv_subrc NE 0.
CONCATENATE '模板文件:' lv_objnam '下载失败' INTO lv_errtxt.
MESSAGE lv_errtxt TYPE 'E'.
ELSE.
MESSAGE '模板下载成功' TYPE 'S'.
ENDIF.
ENDFORM.
4.调用模板下载模块
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'FC01'.
PERFORM frm_download_temple.
ELSEIF sscrfields-ucomm = 'FC02'.
PERFORM frm_download_temple2.
ENDIF.