Download internal table to an Excel document in ABAP

If you need to download the internal table into an Excel document in ABAP program, you can use the class cl_salv_export_tool_xls to achieve it. Please check below for the sample code.

report z_gary_test1.

data: gt_t000 like table of t000.
data: gt_fieldcat type lvc_t_fcat,
      gs_fieldcat type lvc_s_fcat.
data: gv_length   type i.
data: gt_stream   type salv_xml_xline_tabtype.
data: gv_filename type string.

data: gr_data      type ref to   data,
      go_tool_xls  type ref to   cl_salv_export_tool_xls,
      go_config    type ref to   if_salv_export_configuration,
      gv_content   type          cl_salv_export_tool=>y_file_content,
      go_exception type ref to   cx_salv_export_error.

start-of-selection.
  select *
    into table gt_t000
    from t000.

* Create an instance of the export tool for table a given table gt_t000
  get reference of gt_t000 into gr_data.
  go_tool_xls = cl_salv_export_tool=>create_for_excel( gr_data ).

* Configure export properties
  go_config = go_tool_xls->configuration( ).

* Get fieldcat by ABAP structure
  call function 'LVC_FIELDCATALOG_MERGE'
    exporting
      i_structure_name       = 'T000'
      i_bypassing_buffer     = 'X'
    changing
      ct_fieldcat            = gt_fieldcat[]
    exceptions
      inconsistent_interface = 1
      program_error          = 2
      others                 = 3.
  if sy-subrc <> 0.
    clear gt_fieldcat[].
    exit.
  endif.

  "Complete fieldcatalog
  call function 'LVC_FIELDCAT_COMPLETE'
    changing
      ct_fieldcat = gt_fieldcat[].

  loop at gt_fieldcat into gs_fieldcat.
    go_config->add_column( header_text  = |{ gs_fieldcat-coltext }|
                           field_name   = |{ gs_fieldcat-fieldname }|
                           display_type  = if_salv_export_column_conf=>display_types-text_view ).
  endloop.

* Create the excel document
  try.
      go_tool_xls->read_result(
        importing content = gv_content ).
    catch cx_salv_export_error into go_exception.
      message id go_exception->if_t100_message~t100key-msgid
              type 'E'
              number go_exception->if_t100_message~t100key-msgno .
  endtry.

* Set Filename
  gv_filename = 'H:\Downloads\t000.xlsx'.

* Convert to Binary
  call function 'SCMS_XSTRING_TO_BINARY'
    exporting
      buffer        = gv_content
    importing
      output_length = gv_length
    tables
      binary_tab    = gt_stream.

* Download
  cl_gui_frontend_services=>gui_download(
    exporting
      bin_filesize = gv_length
      filetype     = 'BIN'
      filename     = gv_filename
    changing
      data_tab     = gt_stream
    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
      not_supported_by_gui    = 22
      error_no_gui            = 23
      others                  = 24 ).
  if sy-subrc <> 0.
    message e000(zdev) with 'Fail to download the file' space space space.
  else.
    message s000(zdev)  with 'Download the file successfully' space space space.
  endif.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • By clicking to agree to this Schedule 2, which is hereby ...
    qaz0622阅读 1,444评论 0 2
  • 今天我们分享的主题是《如何让自己在剽悍江湖的收获最大化》。 我们讲8个点,如有多的,就是送的[偷笑] 对的,这就是...
    岁媛阅读 186评论 0 0
  • 听说今天是儿童节。 前一阵子看到一张写着“…今年的…六一…我有…礼物吗?”的表情包,突然想起来儿童节就要到了。于是...
    示子小姐阅读 453评论 33 8
  • 高中语文心得分享 语文重在积累,这点无论是处在哪个学段都是非常重要的一点。像成语含义、字词翻译、作文素材等的积累,...
    王兰_hope阅读 124评论 0 0
  • 五月四日,是一个节日,众所周知,“国际青年节”。已然不惑的我,不知道还能不能被称“青年”,其实就是年轻时,...
    sldlove阅读 1,276评论 0 0