2021-06-09-ABAP-EXCEL 模板下载功能实现

 

模板建立-smw0

输入t-code:SMW0,选择WebRFC 应用程序的二进制数据,然后点击,如图01显示

EXCEL模板下载创建-图01​​​

 弹出的的对话框,输入包(开发类,也可以不选,因为有时候对象名称已经存在别的包里)的名字和对象名称(模板代码自己创建,程序中用到),点击执行按钮,如果对象名称已有,执行后会显示,否则,显示如图03空白。

EXCEL模板下载创建-图02

 点击新建模板代码,对象名称是要建立的模板代码,描述是对代码的描述。然后选择右下角的,上传EXCEL 模板(这个模板是体现设计好的将来上传数据用的模式)

EXCEL模板下载创建-图03

 

EXCEL模板下载创建-图04

 上传好模板,会需要选择保存到哪个包里,这里最好保存在同用到上传程序一个包里。

EXCEL模板下载创建-图05

 

程序中运用

前期声明

TABLESsscrfields."sscrfields 屏幕添加按钮声明   

TYPE-POOLSicon."ICON 图标 声明   icon 里可以看各个图标的名字

DATAgv_demo1   TYPE w3objid.    "模板1结构代码 下载模板 SMW0定义

 

SELECTION-SCREEN FUNCTION KEY 1"屏幕添加按钮引用 key 1  对应FC01 -要放屏幕选择定义的前边

PARAMETERS p_file TYPE localfile DEFAULT 'C:\'. "路径

 

INITIALIZATION.  事件将增加的下载模板功能以图标形式显示出来

gv_demo1   text-008.                                    "008设置的模板1代码即SMW0建立的对象名称。

CONCATENATE icon_xls'下载模板' INTO sscrfields-functxt_01." icon_xls 是图标名字。模板 sscrfields-functxt_01固定的对应  KEY 1 ,FC01

图例:

 

AT SELECTION-SCREEN.

  CASE sscrfields-ucomm."实现下载模板功能

    WHEN 'FC01'.

      PERFORM save_file USING p_file .

    WHEN 'RC'.

  ENDCASE.

 

FORM save_file  USING    p_p_file.

  DATAwwwdata_item    LIKE wwwdatatab.

  DATAg_filepath TYPE rlgrap-filename,

        l_objdata  TYPE wwwdatatab,

        l_rc       TYPE sy-subrc,

        l_msgtx    TYPE bapi_msg,

        l_objid    TYPE w3objid.

 

  DATAfilename TYPE string.

  DATApath  TYPE string.

  DATAfullpath  TYPE string.

  DATAp_dest LIKE sapb-sappfad.

  DATAlv_filename TYPE string.

  CLEARwwwdata_item,l_rc,l_msgtx. 

  l_objid gv_demo1.               "模板 1 结构代码 这里主要是方便向后扩展多个版本的情况

  SELECT SINGLE FROM wwwdata

      INTO CORRESPONDING FIELDS OF wwwdata_item

     WHERE relid 'MI'

       AND objid l_objid

       AND srtf2 '0'.

  IF sy-subrc <> 0.

    EXIT.

  ENDIF.

  IF  wwwdata_item-objid space .

    EXIT.

  ENDIF.

*模板名

  gv_title2 wwwdata_item-text.

  CALL METHOD cl_gui_frontend_services=>file_save_dialog

    EXPORTING

*     window_title         = ''

      default_extension    'xlsx'

      default_file_name    gv_title2  模板名

      file_filter          'Excel(*.XLS;*.XLSX)'

    CHANGING

      filename             lv_filename

      path                 path

      fullpath             fullpath

    EXCEPTIONS

      cntl_error           1

      error_no_gui         2

      not_supported_by_gui 3

      OTHERS               4.

 

*调用日志工具

  IF l_rc <> 0.

    MESSAGE e004."下载模板失败!

  ELSEIF l_rc 0.

    MESSAGE s003."下载模板成功!

  ENDIF.

  EXIT.

ENDFORM.           

点击保存,显示

 但是,到保存的文件夹中,发现没有。是因为只是实现了下载弹出框功能,实际保存下载功能没有。所以需要加FUNCTION 'DOWNLOAD_WEB_OBJECT'

 

优化后:

FORM save_file  USING    p_p_file.

  DATAwwwdata_item    LIKE wwwdatatab.

  DATAg_filepath TYPE rlgrap-filename,

        l_objdata  TYPE wwwdatatab,

        l_rc       TYPE sy-subrc,

        l_msgtx    TYPE bapi_msg,

        l_objid    TYPE w3objid.

 

  DATAfilename TYPE string.

  DATApath  TYPE string.

  DATAfullpath  TYPE string.

  DATAp_dest LIKE sapb-sappfad.

  DATAlv_filename TYPE string.

 

  CLEARwwwdata_item,l_rc,l_msgtx.

 

  l_objid gv_demo1.                                       "模板 1 结构代码

 

  SELECT SINGLE FROM wwwdata

      INTO CORRESPONDING FIELDS OF wwwdata_item

     WHERE relid 'MI'

       AND objid l_objid

       AND srtf2 '0'.

 

  IF sy-subrc <> 0.

    EXIT.

  ENDIF.

 

  IF  wwwdata_item-objid space .

    EXIT.

  ENDIF.

 

  "模板名

  gv_title2 wwwdata_item-text.

 

*  lv_filename = p_file. 这里我不知道有什么作用,但是我注释后好像也没什么影响

 

  CALL METHOD cl_gui_frontend_services=>file_save_dialog

    EXPORTING

*     window_title         = ''

      default_extension    'xlsx'

      default_file_name    gv_title2  模板名

      file_filter          'Excel(*.XLS;*.XLSX)'

    CHANGING

      filename             lv_filename

      path                 path

      fullpath             fullpath

    EXCEPTIONS

      cntl_error           1

      error_no_gui         2

      not_supported_by_gui 3

      OTHERS               4.

 

  p_dest fullpath.

  p_file p_dest." 不这样过度直接用会报错。没太理解

 

  CHECK NOT p_file IS INITIAL .

 

  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'

    EXPORTING

      key         wwwdata_item

      destination p_file  "注释之后,就不能找到模板——点击保存后会再弹出一个对话框,需要手动输入一个保存的名字,再次点击之后,保存的是乱码。

    IMPORTING

      rc          l_rc.

 

*调用日志工具

  IF l_rc <> 0.

    MESSAGE e004."下载模板失败!

  ELSEIF l_rc 0.

    MESSAGE s003."下载模板成功!

  ENDIF.

 

  EXIT.

ENDFORM.         

 

优化后,点击保存会先弹出以上对话框,点击允许就可以。保存后,会显示

同时,保存的模板,会在相应的文件夹中。

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值