如何在程序的选择画面中配置模板下载按钮
发布日期:2024/07/13
案例:很多时候我们要在可执行程序中上传文件。为了记忆文件格式方便用户使用,选择画面的【执行】按钮旁边添加【模板下载】按钮。点击即可下载模板文件到本地。本例为EXCEL文件。
1.上传模板文件到SAP系统
事务码SMW0,选中二进制数据进行查找
选择包进行查找
可以看到包下上传的所有模板文件,在这里可以对文件进行编辑,我们选择新建。
填入文件名和描述,点击导入
在本地选择需要上传的文件后打开,
选择想导入的包,导入成功可以看到我们导入的文件
2.程序中模板下载
REPORT zmm_rpt_538_wu.
TABLES: sscrfields.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS:
p_file TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN: FUNCTION KEY 1. "定义按钮
INITIALIZATION.
sscrfields-functxt_01 = '模板下载'."定义按钮文本
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN'FC01'.
PERFORM frm_download."点击按钮事件
ENDCASE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM get_file.
START-OF-SELECTION.
FORM get_file .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = p_file
mask = '*.*'
mode = 'O'
title = 'File Name'
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM frm_download .
DATA: lv_fullpath TYPE string,
lv_filename TYPE string,
lv_path TYPE string,
lv_objid TYPE wwwdatatab-objid,
lo_objdata LIKE wwwdatatab,
ls_destination LIKE rlgrap-filename,
lv_rc TYPE i.
* download the template
lv_objid = 'ZMMTEST_UPLOAD'. "目标模板名
lv_filename = 'ZMMTEST_UPLOAD.xlsx'. "默认下载到本地的文件名
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_extension = 'xlsx'
default_file_name = lv_filename
CHANGING
filename = lv_filename
path = lv_path
fullpath = lv_fullpath.
IF lv_fullpath IS INITIAL.
RETURN.
ENDIF.
IF sy-subrc = 0.
SELECT SINGLE relid objid
INTO CORRESPONDING FIELDS OF lo_objdata
FROM wwwdata
WHERE srtf2 = 0
AND relid = 'MI'
AND objid = lv_objid.
IF sy-subrc <> 0 OR lo_objdata-objid IS INITIAL.
CLEAR: lv_fullpath.
* MESSAGE i005 WITH ls_objnam.
RETURN.
ENDIF.
ls_destination = lv_fullpath.
"template download
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lo_objdata
destination = ls_destination
IMPORTING
rc = lv_rc.
IF lv_rc <> 0.
CLEAR: lv_fullpath.
* MESSAGE i006 WITH ls_objnam.
RETURN.
ENDIF.
ENDIF.
ENDFORM.
3.最后我们来看一下执行效果吧
点击【模板下载】
选择下载地址并保存
左下角会显示成功保存的地址,模板文件下载成功!