gui_download怎么下载复杂的ALV表头为EXCEL



以上是一个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中,其格式如下

 

DATABEGIN OF gt_out  OCCURS 0,

        str TYPE string,

      END OF gt_out.

 

然后把表头APPEND进去,但因为是一行中有很多列,所以要加一个分隔符cl_abap_char_utilities=>horizontal_tab

实际上就是一个'#'号,用于在调用函数GUI_DOWNLOAD时分列,碰到一个就做为下一列

 

最后就是把<dyn_table>中的数据APPENDGT_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结果

 


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值