Export ->Excel

1.FM 'SAP_CONVERT_TO_XLS_FORMAT'

  可直接导出'XLSX'类型EXCEL.

CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
  EXPORTING
    i_filename        = 'C:\temp\1.xlsx'    "路径名
  TABLES
    i_tab_sap_data    = gt_alv    "导出内表
  EXCEPTIONS
    conversion_failed = 1
    OTHERS            = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

2.Class

  可根据ALV格式导出EXCEL,将需要下载的内表先转换成XML stream,然后再通过gui_download的BIN模式将xml stream下载成.xlsx文件。

 DATA: l_defaultname TYPE string,
        l_filename    TYPE string,
        l_path        TYPE string,
        l_fullpath    TYPE string,
        l_result      TYPE i.

  DATA: l_length     TYPE i,
        l_xml_stream TYPE xml_rawdata,
        l_flavour    TYPE string,
        l_version    TYPE string.

  DATA: lr_alv_new_data TYPE REF TO data,
        lr_result_data  TYPE REF TO cl_salv_ex_result_data_table.

  DATA: ls_xml_choice TYPE if_salv_bs_xml=>s_type_xml_choice,
        xml           TYPE xstring.

  GET REFERENCE OF gt_itab INTO lr_alv_new_data.
 "自定义保存路径
  CONCATENATE 'Filename'  INTO l_defaultname.
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title         'Save as...'
      default_file_name    = l_defaultname
      default_extension    'XLSX'
      file_filter          '.XLSX'
    CHANGING
      filename             = l_filename
      path                 = l_path
      fullpath             = l_fullpath
    EXCEPTIONS
      cntl_error           1
      error_no_gui         2
      not_supported_by_gui 3
      OTHERS               4.

  IF sy-subrc <> 0.
*    MESSAGE
  ELSE.
    IF l_fullpath IS NOT INITIAL.
    "根据fieldcat生成内表       lr_result_data 
= cl_salv_ex_util=>factory_result_data_table(         r_data                      = lr_alv_new_data         t_fieldcatalog              = gt_fieldcat_sla          ).       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       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 l_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     = l_filename           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.     ENDIF.   ENDIF.

 

posted on 2022-03-03 14:05  Π几  阅读(111)  评论(0)    收藏  举报