ABAP:内表XLSX格式下载

字段:
DEFINE append_alv_cat.
ADD 1 TO col_pos.
CLEAR gs_fieldcat.
gs_fieldcat-col_pos = col_pos. "column position
gs_fieldcat-fieldname = &1.
gs_fieldcat-reptext = &2.
gs_fieldcat-fix_column = &3.
gs_fieldcat-scrtext_l = &5.
gs_fieldcat-scrtext_m = &6.
gs_fieldcat-scrtext_s = &7.
gs_fieldcat-just = &4.
APPEND gs_fieldcat TO gT_fieldcat.
END-OF-DEFINITION.

append_alv_cat ‘KAPPL’ ‘Fieldname1’ ‘space’ ‘L’ ‘Fieldname1’ ‘Fieldname1’ ‘Fieldname1’ .
append_alv_cat ‘KSCHL’ ‘Fieldname2’ ‘space’ ‘L’ ‘Fieldname2’ ‘Fieldname2’ ‘Fieldname2’ .
append_alv_cat ‘KUNNR’ ‘Fieldname3’ ‘space’ ‘L’ ‘Fieldname3’ ‘Fieldname3’ ‘Fieldname3’ .
append_alv_cat ‘KDGRP’ ‘Fieldname4’ ‘space’ ‘L’ ‘Fieldname4’ ‘Fieldname4’ ‘Fieldname4’ .
append_alv_cat ‘SPART’ ‘Fieldname5’ ‘space’ ‘L’ ‘Fieldname5’ ‘Fieldname5’ ‘Fieldname5’ .
append_alv_cat ‘PRODH’ ‘Fieldname6’ ‘space’ ‘L’ ‘Fieldname6’ ‘Fieldname6’ ‘Fieldname6’ .
append_alv_cat ‘MATNR’ ‘Fieldname7’ ‘space’ ‘L’ ‘Fieldname7’ ‘Fieldname7’ ‘Fieldname7’ .
append_alv_cat ‘MATKL’ ‘Fieldname8’ ‘space’ ‘L’ ‘Fieldname8’ ‘Fieldname8’ ‘Fieldname8’ .
append_alv_cat ‘VKORG’ ‘Fieldname9’ ‘space’ ‘L’ ‘Fieldname9’ ‘Fieldname9’ ‘Fieldname9’ .
append_alv_cat ‘REGIO’ ‘Fieldname10’ ‘space’ ‘L’ ‘Fieldname10’ ‘Fieldname10’ ‘Fieldname10’ .
append_alv_cat ‘J_1AREGIO’ ‘Fieldname11’ ‘space’ ‘L’ ‘Fieldname11’ ‘Fieldname11’ ‘Fieldname11’ .
append_alv_cat ‘KONDA’ ‘Fieldname12’ ‘space’ ‘L’ ‘Fieldname12’ ‘Fieldname12’ ‘Fieldname12’ .
append_alv_cat ‘KFRST’ ‘Fieldname13’ ‘space’ ‘L’ ‘Fieldname13’ ‘Fieldname13’ ‘Fieldname13’ .
append_alv_cat ‘KBSTAT’ ‘Fieldname14’ ‘space’ ‘L’ ‘Fieldname14’ ‘Fieldname14’ ‘Fieldname14’ .
append_alv_cat ‘DATBI’ ‘Fieldname15’ ‘space’ ‘L’ ‘Fieldname15’ ‘Fieldname15’ ‘Fieldname15’ .
append_alv_cat ‘DATAB’ ‘Fieldname16’ ‘space’ ‘L’ ‘Fieldname16’ ‘Fieldname16’ ‘Fieldname16’ .
append_alv_cat ‘KNUMH’ ‘Fieldname17’ ‘space’ ‘L’ ‘Fieldname17’ ‘Fieldname17’ ‘Fieldname17’ .
append_alv_cat ‘KBRUE’ ‘Fieldname18’ ‘space’ ‘L’ ‘Fieldname18’ ‘Fieldname18’ ‘Fieldname18’ .

下载:

DATA:lo_itab_data TYPE REF TO data,
lv_flavour TYPE string,
l_version TYPE string,
lv_xml TYPE xstring,
l_length TYPE i,
l_xml_stream TYPE xml_rawdata,
lo_result_data TYPE REF TO cl_salv_ex_result_data_table.

DATA:filename TYPE string, "VALUE ‘C:\Users\20090418\Desktop\EXPORT.XLSX’.
c_filepath TYPE string, " 存放路径
c_path TYPE string, " 下载后存放全路径
lv_ret TYPE abap_bool,
lv_file TYPE string.

GET REFERENCE OF gt_alv INTO lo_itab_data."GT_ALV是需要下载的内表

"下载路径对话框
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = ‘ZSD235_获取定价报表’
default_extension = ‘XLSX’
default_file_name = ‘ZSD235_获取定价报表.XLSX’
file_filter = ‘EXCEL’
CHANGING
fullpath = c_path
filename = filename
path = c_filepath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.

"检查文件是否存在
MOVE c_path TO lv_file.
CALL METHOD cl_gui_frontend_services=>file_exist
EXPORTING
file = lv_file
RECEIVING
result = lv_ret
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
not_supported_by_gui = 4
OTHERS = 5.

IF sy-subrc <> 0.
MESSAGE ‘取消下载’ TYPE ‘S’ DISPLAY LIKE ‘E’.
EXIT.
ENDIF.

lo_result_data = cl_salv_ex_util=>factory_result_data_table(
r_data = lo_itab_data
t_fieldcatalog = gt_fieldcat ).

CASE cl_salv_bs_a_xml_base=>get_version( ).
WHEN if_salv_bs_xml=>version_25.
l_version = if_salv_bs_xml=>version_25.
WHEN if_salv_bs_xml=>version_26.
l_version = if_salv_bs_xml=>version_26. " = 2.6
ENDCASE.

lv_flavour = if_salv_bs_c_tt=>c_tt_xml_flavour_export.

CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
EXPORTING
text = ‘正在下载…’.

CALL METHOD cl_salv_bs_tt_util=>if_salv_bs_tt_util~transform
EXPORTING
xml_version = l_version
r_result_data = lo_result_data
xml_type = if_salv_bs_xml=>c_type_xlsx " XML Type as SALV Constant
xml_flavour = lv_flavour
gui_type = if_salv_bs_xml=>c_gui_type_gui " Constant
IMPORTING
xml = lv_xml.

CALL FUNCTION ‘SCMS_XSTRING_TO_BINARY’
EXPORTING
buffer = lv_xml
IMPORTING
output_length = l_length
TABLES
binary_tab = l_xml_stream.

CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_length
filetype = ‘BIN’
filename = filename
CHANGING
data_tab = l_xml_stream
EXCEPTIONS
OTHERS = 1.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

放弃幻想_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值