2020.03.01 【ABAP隨筆】- Excel批量導出-SAP_CONVERT_TO_XLS_FORMAT


今天寫一下SAP_CONVERT_TO_XLS_FORMAT 批量導出excel的函數

部分功能代碼如下:

FORM frm_export_excel_1 .

  DATA li_filename TYPE rlgrap-filename.
  DATA ls_filename TYPE string.
  li_filename = p_file.
  ls_filename = p_file.

  CALL METHOD zcl_document_jxzhu=>download_template_to_frontend
    EXPORTING
      iv_fun           = '2'  "選擇FUN的功能
      name_of_template = '物料主數據客制表' 
      iv_filepath      = ls_filename "當IV_FUN = 2時,保存路徑iv_filepath必填 這樣就不會彈框選擇,可以引用函數外部的路徑
*     iv_relid         = 'MI'
      iv_objid         = 'ZMMT001'
    IMPORTING
      rv_filepath      = ls_filename
    EXCEPTIONS
      download_error   = 1
      OTHERS           = 2.

  WAIT UP TO 2 SECONDS."確保從服務器下載的模板保存下來,之后再打開輸入。
  li_filename = ls_filename.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE @lt_zmmt001 FROM zmmt001.

  READ TABLE lt_zmmt001 into data(ls_zmmt001) INDEX 1 .

  "為了防止格式的問題,使用這個函數的時候,輸出最好用char型
  TYPES:BEGIN OF lty_excel,
          matnr TYPE char40,
          id    TYPE char10,
          f1    TYPE char10,
          f2    TYPE char10,
          f3    TYPE char10,
        END OF lty_excel.
  DATA lt_zmmt001_excel TYPE TABLE OF lty_excel.

  MOVE-CORRESPONDING lt_zmmt001 TO lt_zmmt001_excel.

  INSERT INITIAL LINE INTO lt_zmmt001_excel ASSIGNING FIELD-SYMBOL(<fs1>) INDEX 1.
  DATA tablestructure TYPE REF TO cl_abap_structdescr.
  tablestructure ?= cl_abap_typedescr=>describe_by_data( ls_zmmt001 ).
  LOOP AT tablestructure->components INTO DATA(ls_comps).
    ASSIGN COMPONENT sy-tabix OF STRUCTURE <fs1> TO FIELD-SYMBOL(<fs2>).
    IF sy-subrc EQ 0 .
      <fs2> = ls_comps-name.
    ENDIF.
  ENDLOOP.

  CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
    EXPORTING
*     I_FIELD_SEPERATOR =
      i_line_header     = 'X'
      i_filename        = li_filename
*     I_APPL_KEEP       = ' '
    TABLES
      i_tab_sap_data    = lt_zmmt001_excel
* CHANGING
*     I_TAB_CONVERTED_DATA       =
    EXCEPTIONS
      conversion_failed = 1
      OTHERS            = 2.

ENDFORM.
這里需要提一下,為了解決輸出內容格式的問題:
1.     先將一個Excel單位格屬性設置為文本格式,然后保存下來,用SMW0將EXCEL上傳到服務器上
2.     用zcl_document_jxzhu=>download_template_to_fronten方法來講模板下載下來

3.   使用SAP_CONVERT_TO_XLS_FORMAT將內表數據導入到Excel

關於

zcl_document_jxzhu=>download_template_to_frontend的方法具體內容:https://www.cnblogs.com/jxzhu/p/12359692.html


-Tab Zhu 不念過去 不畏將來

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM