abap GUI_DOWNLOAD 可下载Excel TXT的文档等类型

今天给大家分享一个函数,可以用来下载Excel和TXT格式的文件,非常好用

所需的变量:

 DATA:
    lv_filename    TYPE string,
    lv_path        TYPE string,
    lv_fullpath    TYPE string,
    lv_destination LIKE rlgrap-filename,
    ls_objdata     LIKE wwwdatatab,
    lv_objid       TYPE wwwdatatab-objid,
    lv_fname       TYPE string.

首先调用一个类的方法,用来选取我们下载的保存的地址:

  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      default_file_name    = lv_fname
      window_title         = '另存为:'
      default_extension    = 'xls'     "默认保存的类型
      file_filter          = '.xls'    "选择要另存的文件类型
    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.

在使用这个GUI_DOWNLOAD函数下载Excel需要指定一个抬头文本.

FORM frm_excel_head.

  DATA:lt_fieldcat TYPE lvc_t_fcat,
       ls_fieldcat TYPE lvc_s_fcat.

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       = 'ZMM001'   "需要获取这个结构字段吗文本
      i_bypassing_buffer     = 'X'
    CHANGING
      ct_fieldcat            = lt_fieldcat[] "获取到的字段和描述
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
      
*在这里我就拿到了 字段以及字段描述,我们只需要字段描述 通过下面的循环 可自定义获取字段描述
*或者删除某些不需要的字段

*DELETE lt_fieldcat WHERE fieldnames = 'SEL' .

  LOOP AT lt_fieldcat INTO ls_fieldcat.

    gs_head-fieldname = ls_fieldcat-scrtext_l.
    APPEND gs_head TO gt_head.
    CLEAR gs_head.

  ENDLOOP.

ENDFORM.

接下来我们调用下载的函数:

  *可以判断 lv_filename 这个参数 来确定 他在另存时候是否选择了路径或取消了
IF lv_filename IS NOT INITIAL .
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename                = lv_filename "文件名
      filetype                = 'ASC'        "文件类型
      write_field_separator   = 'X'
      codepage                = '8404'       "gbk格式
    TABLES
      data_tab                = gt_xml      "下载的数据
      FIELDNAMES              = gt_head     "抬头
    EXCEPTIONS
      file_write_error        = 1
      no_batch                = 2
      gui_refuse_filetransfer = 3
      invalid_type            = 4
      no_authority            = 5
      unknown_error           = 6
      header_not_allowed      = 7
      separator_not_allowed   = 8
      filesize_not_allowed    = 9
      header_too_long         = 10
      dp_error_create         = 11
      dp_error_send           = 12
      dp_error_write          = 13
      unknown_dp_error        = 14
      access_denied           = 15
      dp_out_of_memory        = 16
      disk_full               = 17
      dp_timeout              = 18
      file_not_found          = 19
      dataprovider_exception  = 20
      control_flush_error     = 21
      OTHERS                  = 22.
ELSE.
    MESSAGE '已取消下载!' TYPE 'E' .
ENDIF.
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雨天行舟

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值