SAP-ABAP-文件批导程序通用部分

文章代码实现下图功能,复制可用

1.点击按钮模板下载

将SMW0中的模板下载至指定位置

注意修改代码中的此处,此处是文件在smw0中的代号,及下载后文件名称

2.选择屏幕以及F4帮助打开文件路径选择下载路径,反写至选择屏幕

以上为代码实现功能,所有带如下,复制可用

*&---------------------------------------------------------------------*
*& Report ZFIR019
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZFIR019.

TYPE-POOLS:slis.
TABLES: sscrfields.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-f30.

SELECTION-SCREEN: FUNCTION KEY 1. "TOOLBAR-BUTTON 1 - DOWNLOAD TEMPLATE
PARAMETERS:p_file LIKE rlgrap-filename .

SELECTION-SCREEN END OF BLOCK b1.


INITIALIZATION.
  DATA ls_functxt TYPE smp_dyntxt.
  CLEAR ls_functxt.
  ls_functxt-icon_text = '模板下载'.
  ls_functxt-icon_id   = '@HG@'.  "AT_VERY_BUTTOM USED FOR DOWNLOAD.
  ls_functxt-quickinfo = '模板下载'.
  sscrfields-functxt_01 = ls_functxt.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. "FOR DROPDOWN FILENAME

  PERFORM frm_select_file.

AT SELECTION-SCREEN.

  IF sscrfields-ucomm = 'FC01'."DOWNLOAD TEMPLATE.
    DATA l_name1 TYPE string.
    PERFORM download_template3 USING 'ZFIR019' '模板文件名称'. ""模板在SMW0是名称和模板文件名称
  ENDIF.



START-OF-SELECTION.


*&---------------------------------------------------------------------*
*&      FORM  SELECT_FILE
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
FORM frm_select_file .

  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      mask             = ' EXCEL FILES(*.xlsx),*.XLSX,EXCEL FILES(*.xls),*.XLS.'
      title            = '选择文件'
    IMPORTING
      filename         = p_file
    EXCEPTIONS
      inv_winsys       = 1
      no_batch         = 2
      selection_cancel = 3
      selection_error  = 4
      OTHERS           = 5.
  IF sy-subrc <> 0 AND sy-subrc <> 3.
    MESSAGE '文件路径打开失败' TYPE 'S' DISPLAY LIKE 'E' .
  ENDIF.

ENDFORM. "SELECT_FILE
*&---------------------------------------------------------------------*
*&      Form  download_template3
*&---------------------------------------------------------------------*
*       下载模版 - 自动弹出保存路径 需要传入文件名
*----------------------------------------------------------------------*
*      -->P_STR_TMPLNAME  text
*----------------------------------------------------------------------*
FORM download_template3 USING p_str_tmplname l_name1.
  DATA: lv_objdata     LIKE wwwdatatab,
        lv_obj_name    LIKE wwwdatatab-objid,
        lv_destination LIKE rlgrap-filename,
        lv_objid       LIKE sy-repid,
        lv_subrc       LIKE sy-subrc.

  DATA:lv_filename TYPE string,
       lv_path     TYPE string,
       lv_fullpath TYPE string.

  SELECT SINGLE relid objid
    FROM wwwdata
    INTO  CORRESPONDING FIELDS OF lv_objdata
    WHERE srtf2 = 0
    AND   relid = 'MI'
    AND   objid = p_str_tmplname.

  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title              = '保存数据模板'
      default_file_name         = l_name1
      file_filter               = 'Excel File(*.xlsx)|*.xlsx|'
    CHANGING
      filename                  = lv_filename
      path                      = lv_path
      fullpath                  = lv_fullpath
    EXCEPTIONS
      cntl_error                = 1
      error_no_gui              = 2
      not_supported_by_gui      = 3
      invalid_default_file_name = 4
      OTHERS                    = 5.

  "路径不为空才下载模板
  IF lv_fullpath IS NOT INITIAL.
    lv_destination = lv_fullpath.

    CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
      EXPORTING
        key         = lv_objdata
        destination = lv_destination
      IMPORTING
        rc          = lv_subrc.

    IF lv_subrc NE 0.
      CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
        EXPORTING
          titel     = '下载文件'
          textline1 = '下载失败,未找到该模板,请使用SMW0上传模板'
        EXCEPTIONS
          OTHERS    = 1.
      EXIT.
    ENDIF.
  ENDIF.
ENDFORM. "download_template3

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值