【ABAP】下载模板的方法

21 篇文章 2 订阅

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.     
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值