字段:
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.