SAP ABAP 上传下载模板文件

如何在程序的选择画面中配置模板下载按钮

发布日期:2024/07/13

案例:很多时候我们要在可执行程序中上传文件。为了记忆文件格式方便用户使用,选择画面的【执行】按钮旁边添加【模板下载】按钮。点击即可下载模板文件到本地。本例为EXCEL文件。

1.上传模板文件到SAP系统

事务码SMW0,选中二进制数据进行查找
在这里插入图片描述

选择包进行查找
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9c4658727ea945ee88637fd2085c3ee5.png

可以看到包下上传的所有模板文件,在这里可以对文件进行编辑,我们选择新建。
在这里插入图片描述

填入文件名和描述,点击导入
在这里插入图片描述

在本地选择需要上传的文件后打开,
在这里插入图片描述

选择想导入的包,导入成功可以看到我们导入的文件
在这里插入图片描述

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.最后我们来看一下执行效果吧
点击【模板下载】
在这里插入图片描述

选择下载地址并保存
在这里插入图片描述

左下角会显示成功保存的地址,模板文件下载成功!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值