1、事务码smw0上传模板
2、在选择界面中添加按钮。注意:按钮上至少要跳一行,不然会报错
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN PUSHBUTTON 1(16) but USER-COMMAND cli MODIF ID xcl.
3、设置按钮功能
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'CLI'.
PERFORM frm_download_excel USING 'ZFIR118_B' '运费维护模板 - 单独行'.
ENDCASE.
先判断再下载
FORM frm_download_excel USING objid fname.
DATA:lv_fname TYPE string,
lv_init_path TYPE string,
lv_title TYPE string,
lv_path TYPE string," VALUE 'D:/',
lv_fpath TYPE string," VALUE 'D:/',
lv_file TYPE rlgrap-filename.
DATA:lv_objid TYPE char20,
ls_wdatb LIKE wwwdatatab,
lv_subrc TYPE sy-subrc,
lv_msg TYPE string.
lv_objid = objid.
lv_fname = fname.
CONCATENATE lv_fname '下载' INTO lv_title.
"获取桌面路径
CALL METHOD cl_gui_frontend_services=>get_desktop_directory
CHANGING
desktop_directory = lv_init_path
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
EXIT.
ENDIF.
"保存文件
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = lv_title
default_extension = 'xls'
default_file_name = lv_fname
initial_directory = lv_init_path
file_filter = 'EXCEL文件(*.xls)||全部文件(*.*)||'
prompt_on_overwrite = 'X'
CHANGING
filename = lv_fname
path = lv_path
fullpath = lv_fpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CLEAR:lv_file.
lv_file = lv_fpath.
IF lv_file IS NOT INITIAL.
"判断文件模板是否存在
SELECT SINGLE
relid
objid
FROM wwwdata
INTO CORRESPONDING FIELDS OF ls_wdatb
WHERE srtf2 = 0
AND relid = 'MI'
AND objid = lv_objid.
IF ls_wdatb IS INITIAL.
MESSAGE '模板不存在' TYPE 'E'.
ELSE.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_wdatb
destination = lv_file
IMPORTING
rc = lv_subrc.
IF lv_subrc <> 0.
MESSAGE '模板下载失败' TYPE 'E'.
ELSE.
CLEAR:lv_msg.
CONCATENATE '模板下载到本地文件' lv_file INTO lv_msg.
MESSAGE lv_msg TYPE 'S'.
ENDIF.
ENDIF.
ELSE.
MESSAGE '用户取消操作' TYPE 'S' .
RETURN.
ENDIF.
ENDIF.
ENDFORM.