EXCEL-内表转XML转XLSX

https://www.cnblogs.com/hhelibeb/articles/5765451.html#_label0

https://blog.youkuaiyun.com/weixin_30872789/article/details/99659749

*&---------------------------------------------------------------------*
*& Report  ZTEST_003
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZTEST_003.
TYPES:BEGIN OF TYP_TH_OUTPUT.
      INCLUDE STRUCTURE ZTEST002.
TYPES:END OF TYP_TH_OUTPUT.

DATA:
      LTD_OUTPUT TYPE TABLE OF TYP_TH_OUTPUT,
      LTH_OUTPUT TYPE TYP_TH_OUTPUT,
      L_LENGTH     TYPE I,
      L_XML_STREAM TYPE XML_RAWDATA,
      L_FLAVOUR    TYPE STRING,
      L_VERSION    TYPE STRING,
      GIT_VBAP TYPE STANDARD TABLE OF VBAP,
      GIT_FCAT   TYPE LVC_T_FCAT,
      GWA_LAYOUT TYPE LVC_S_LAYO,
      LR_ALV_NEW_DATA TYPE REF TO DATA,
      LR_RESULT_DATA  TYPE REF TO CL_SALV_EX_RESULT_DATA_TABLE,
      LS_XML_CHOICE TYPE IF_SALV_BS_XML=>S_TYPE_XML_CHOICE,
      XML           TYPE XSTRING.

SELECT MATNR
       ERSDA
  INTO TABLE LTD_OUTPUT
  FROM MARA
  UP TO 100 ROWS.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
  EXPORTING
    I_STRUCTURE_NAME       = 'ZTEST002'
  CHANGING
    CT_FIELDCAT            = GIT_FCAT "生成下载excel文件的头--reptext字段
  EXCEPTIONS
    INCONSISTENT_INTERFACE = 1
    PROGRAM_ERROR          = 2
    OTHERS                 = 3.

GWA_LAYOUT-ZEBRA = 'X'.
GWA_LAYOUT-SEL_MODE = 'A'.
GWA_LAYOUT-CWIDTH_OPT = 'X'.

*----- 将内表引用到RANGE表中
GET REFERENCE OF LTD_OUTPUT INTO LR_ALV_NEW_DATA.

*----- 创建前模型
LR_RESULT_DATA = CL_SALV_EX_UTIL=>FACTORY_RESULT_DATA_TABLE(
*        t_selected_rows             = lt_lvc_row
*        t_selected_columns          = lt_sel_cols
*        t_selected_cells            = lt_sel_cells
    R_DATA                      = LR_ALV_NEW_DATA
    S_LAYOUT                    = GWA_LAYOUT
*     S_LAYOUT                    = lr_grid->m_cl_variant->ms_layout
    T_FIELDCATALOG              = GIT_FCAT
*      t_sort                      = lr_grid->m_cl_variant->mt_sort
*      t_filter                    = lr_grid->m_cl_variant->mt_filter
*      t_hyperlinks                = lr_grid->mt_hyperlinks
*        s_current_cell              = ls_cur_cell
*        hyperlink_entry_column      = ls_hyper_entry
*        dropdown_entry_column       = ls_dropdown_entry
*        r_top_of_list               = lr_top_of_list
*        r_end_of_list               = lr_end_of_list
*        t_dropdown_values           = lt_drdn
     ).
*----- 获取版本
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.

L_FLAVOUR = IF_SALV_BS_C_TT=>C_TT_XML_FLAVOUR_EXPORT.                      " Flavor for Complete ALV XML
*----- 根据XML版本集转换
CALL METHOD CL_SALV_BS_TT_UTIL=>IF_SALV_BS_TT_UTIL~TRANSFORM
  EXPORTING
    XML_TYPE      = IF_SALV_BS_XML=>C_TYPE_XLSX  "XLSX
    XML_VERSION   = L_VERSION
    R_RESULT_DATA = LR_RESULT_DATA
    XML_FLAVOUR   = L_FLAVOUR
    GUI_TYPE      = IF_SALV_BS_XML=>C_GUI_TYPE_GUI  "Y6DK066330
  IMPORTING
    XML           = XML.

*IF NOT I_FILENAME IS INITIAL.
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  EXPORTING
    BUFFER        = 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     = 'C:\Users\mm\Desktop\ZTEST08.XLSX'
  CHANGING
    DATA_TAB     = L_XML_STREAM
  EXCEPTIONS
    OTHERS       = 1.
IF SY-SUBRC <> 0.
*       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*ENDIF.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值