今天寫一下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 不念過去 不畏將來