以上是一个ALV_LIST,如果要下载以上形式到EXCEL.
如果用GUI_DOWNLOAD,按常规方法一表头it_colname,一内表<dyn_table>,无法输出这样的格式的 ALV.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_filename1
filetype = 'DAT'
codepage = '8400'
TABLES
data_tab = <dyn_table>
fieldnames = it_colname[]
解决方法:把表字段头和数据一起压入一个表gt_out中,其格式如下
DATA: BEGIN OF gt_out OCCURS 0,
str TYPE string,
END OF gt_out.
然后把表头APPEND进去,但因为是一行中有很多列,所以要加一个分隔符cl_abap_char_utilities=>horizontal_tab
实际上就是一个'#'号,用于在调用函数GUI_DOWNLOAD时分列,碰到一个就做为下一列
最后就是把<dyn_table>中的数据APPEND到GT_OUT中,这里要通过ASSIGN COMPONENT来获得<DYN_TABLE>中每行的每一个字段的值,且每一个字段之间
加一个cl_abap_char_utilities=>horizontal_tab来分隔。
FORM process_outdata .
refresh gt_OUT.
CLEAR GT_OUT.
DATA:wa_out LIKE gt_out.
DATA:l_str TYPE string.
DATA:l_times TYPE i.
LOOP AT fieldcat.
CONCATENATE wa_out-str fieldcat-seltext_l cl_abap_char_utilities=>horizontal_tab INTO wa_out-str.
IF sy-tabix LE 5.
CONCATENATE gt_out-str cl_abap_char_utilities=>horizontal_tab INTO gt_out-str.
CONTINUE.
ENDIF.
IF sy-tabix EQ 6.
CONCATENATE gt_out-str 'Usage' cl_abap_char_utilities=>horizontal_tab INTO gt_out-str.
CONTINUE.
ENDIF.
CASE fieldcat-fieldname(1).
WHEN 'D'.
CONCATENATE gt_out-str 'Demand' cl_abap_char_utilities=>horizontal_tab INTO gt_out-str.
WHEN 'P'."pl
CONCATENATE gt_out-str 'Stock' cl_abap_char_utilities=>horizontal_tab INTO gt_out-str.
WHEN 'I'."inspe
CONCATENATE gt_out-str 'Stock' cl_abap_char_utilities=>horizontal_tab INTO gt_out-str.
WHEN 'S'.
IF fieldcat-fieldname(2) = 'SP'."speme
CONCATENATE gt_out-str 'Stock' cl_abap_char_utilities=>horizontal_tab INTO gt_out-str.
ELSE. "S
CONCATENATE gt_out-str 'Shortage' cl_abap_char_utilities=>horizontal_tab INTO gt_out-str.
ENDIF.
WHEN 'E'.
CONCATENATE gt_out-str 'Eta' cl_abap_char_utilities=>horizontal_tab INTO gt_out-str.
ENDCASE.
ENDLOOP.
APPEND gt_out.
APPEND wa_out TO gt_out.
CLEAR wa_out.
l_times = LINES( it_structure ).
LOOP AT <dyn_table> INTO <dyn_wa>.
DO l_times TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE <dyn_wa> TO <dyn_field>.
l_str = <dyn_field>.
CONCATENATE wa_out-str l_str cl_abap_char_utilities=>horizontal_tab INTO wa_out-str.
ENDDO.
APPEND wa_out TO gt_out.
CLEAR wa_out.
ENDLOOP.
ENDFORM. " process_outdata
最后调用GUI_DOWNLOAD.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_filename1
filetype = 'DAT'
codepage = '8400'
TABLES
data_tab = GT_OUT[]
输出EXCEL结果