ABAP 模板文件上传与模板下载

1.Tcode: SMW0 ,上传模板 ,创建的模板存储类型

2. 选择新建,输入对象名称和描述,导入自己的模板

3.  保存到对应的传入依赖就可以了

 4.程序中下载模板,调用函数 (ZJH_DOWNLOAD_FILE_SMW0)

DATA LD_STR TYPE STRING.

      CALL FUNCTION 'ZJH_DOWNLOAD_FILE_SMW0' "模板输出
        EXPORTING
          IM_OBJNAME      = 'ZSTUDENT'              " 传输模板的名字
          IM_FILENAME_DEF = '学生信息导入模板.xlsx'  " 下载好的名字
*         IM_FILTER_STR   =
        IMPORTING
          EX_FULLNAME     = LD_STR.

  这是另一种写法

  DATA: LS_WWWDATATAB     LIKE WWWDATATAB,
        LT_MIME           LIKE W3MIME OCCURS 10,
        LV_FILENAME       TYPE STRING,
        LV_PATH           TYPE STRING,
        LV_FULLPATH       TYPE STRING,
        WINDOW_TITLE      TYPE STRING,
        DEFAULT_FILE_NAME TYPE STRING.
  DATA: LV_DESTINATION TYPE RLGRAP-FILENAME,
        LV_SUBRC       TYPE SY-SUBRC.

  CLEAR: LS_WWWDATATAB,LT_MIME[],LV_FILENAME,LV_PATH,LV_FULLPATH,
         WINDOW_TITLE,DEFAULT_FILE_NAME.

  LS_WWWDATATAB-RELID = 'MI'.         "IMPORT/EXPORT 数据表中的区域
  LS_WWWDATATAB-OBJID = 'object name'.    "SMW0  WEB RFC的二进数据 对像名称
  LS_WWWDATATAB-TEXT  = '***导入模板'.  "WWWDATA 对象的短文本
  WINDOW_TITLE = '下载导入模板'.
  DEFAULT_FILE_NAME = '***导入模板'.

  CALL FUNCTION 'WWWDATA_IMPORT'                            "#EC *
    EXPORTING
      KEY               = LS_WWWDATATAB
    TABLES
      MIME              = LT_MIME
    EXCEPTIONS
      WRONG_OBJECT_TYPE = 1
      IMPORT_ERROR      = 2
      OTHERS            = 3.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    EXPORTING
      WINDOW_TITLE         = WINDOW_TITLE
      DEFAULT_EXTENSION    = 'xlsx'
      DEFAULT_FILE_NAME    = DEFAULT_FILE_NAME
*     file_filter          = 'EXCEL'
    CHANGING
      FILENAME             = LV_FILENAME
      PATH                 = LV_PATH
      FULLPATH             = LV_FULLPATH
    EXCEPTIONS
      CNTL_ERROR           = 1
      ERROR_NO_GUI         = 2
      NOT_SUPPORTED_BY_GUI = 3
      OTHERS               = 4.

  IF SY-SUBRC <> 0.
    STOP.
  ENDIF.

  IF LV_FULLPATH IS NOT INITIAL.
    LV_DESTINATION = LV_FULLPATH.
    CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
      EXPORTING
        KEY         = LS_WWWDATATAB
        DESTINATION = LV_DESTINATION
      IMPORTING
        RC          = LV_SUBRC.
    IF LV_SUBRC <> 0.
      MESSAGE '下载失败' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
  ENDIF.

下载模板还有一种写法,这是直接下载的,提前选一个下载路径

  DATA: ls_objdata      LIKE wwwdatatab.
  DATA: lv_file         TYPE rlgrap-filename.
  DATA: lv_rc           TYPE sy-subrc.
  DATA: lv_copy_rows    TYPE i.

  SELECT SINGLE relid objid
    INTO CORRESPONDING FIELDS OF ls_objdata
    FROM wwwdata
    WHERE srtf2 EQ 0
    AND   relid = 'MI'
    AND   objid = p_objid.

  IF sy-subrc NE 0 OR ls_objdata-objid EQ space.
    MESSAGE e042 WITH p_objid INTO p_message.
    RETURN.
  ENDIF.

  CONCATENATE p_file '\' 'excel1' '.xlsx'
              INTO lv_file.

  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      key         = ls_objdata
      destination = lv_file
    IMPORTING
      rc          = lv_rc.
  IF lv_rc NE 0.
    MESSAGE e043 WITH p_objid INTO p_message.
    RETURN.
  ENDIF.

5. 上传本地模板内容(函数1:'WS_FILENAME_GET',函数2: 'ALSM_EXCEL_TO_INTERNAL_TABLE' )

函数1:'WS_FILENAME_GET',

函数2: 'ALSM_EXCEL_TO_INTERNAL_TABLE' 

  DATA: ZXUANZE TYPE CHAR50.
  DATA: P_FIELD TYPE RLGRAP-FILENAME.
  DATA WX_01 LIKE TABLE OF ZSTU.
  DATA WS_01 LIKE ZSTU.
  DATA:I_TAB  TYPE TABLE OF ALSMEX_TABLINE,
       WA_TAB TYPE ALSMEX_TABLINE.


  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      DEF_FILENAME     = ' '
      DEF_PATH         = ' '
      MASK             = '.*.*.*.*'
      MODE             = 'S'
      TITLE            = 'O'
    IMPORTING
      FILENAME         = ZXUANZE
*     RC               =
    EXCEPTIONS
      INV_WINSYS       = 1
      NO_BATCH         = 2
      SELECTION_CANCEL = 3
      SELECTION_ERROR  = 4
      OTHERS           = 5.

  P_FIELD  = ZXUANZE.
  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      FILENAME                = P_FIELD
      I_BEGIN_COL             = 1
      I_BEGIN_ROW             = 2
      I_END_COL               = 4
      I_END_ROW               = 20
    TABLES
      INTERN                  = I_TAB[]
    EXCEPTIONS
      INCONSISTENT_PARAMETERS = 1
      UPLOAD_OLE              = 2
      OTHERS                  = 3.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

  LOOP AT I_TAB INTO WA_TAB.
    CASE WA_TAB-COL.
      WHEN '0001'.
        WS_01-ZXUEHAO = WA_TAB-VALUE.
      WHEN '0002'.
        WS_01-ZNAME = WA_TAB-VALUE.
      WHEN '0003'.
        WS_01-ZBANJI = WA_TAB-VALUE.
      WHEN '0004'.
        WS_01-ZMIAOSU = WA_TAB-VALUE.
    ENDCASE.
    AT END OF ROW.
      APPEND WS_01 TO WX_01.
      CLEAR WS_01.
    ENDAT.
  ENDLOOP.

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gong JX

多谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值