2020.03.03 【ABAP随笔】- Excel批量导出6-OLE客制导出
今天简单说一下使用OLE的方法来输出自己想要的EXCEL。
结果:
部分代码如下:
FORM frm_export_excel_2 . DATA ls_destination TYPE rlgrap-filename. DATA ls_filename TYPE string. * 写入数据 SELECT * FROM zmmt001 INTO CORRESPONDING FIELDS OF TABLE lt_zmmt001 . READ TABLE lt_zmmt001 INTO DATA(ls_zmmt001) INDEX 1. DATA lv_tabix TYPE i. DATA tablestructure TYPE REF TO cl_abap_structdescr. tablestructure ?= cl_abap_typedescr=>describe_by_data( ls_zmmt001 ). ls_filename = p_file. ls_destination = p_file. CALL METHOD zcl_document_jxzhu=>download_template_to_frontend EXPORTING iv_fun = '2' name_of_template = '物料主数据客制表' iv_filepath = ls_filename * iv_relid = 'MI' iv_objid = 'ZMMT001' IMPORTING rv_filepath = ls_filename EXCEPTIONS download_error = 1 OTHERS = 2. WAIT UP TO 2 SECONDS. *open excel CREATE OBJECT excel_obj 'EXCEL.APPLICATION'. IF sy-subrc NE 0. MESSAGE 'EXCEL创建错误' TYPE 'S' DISPLAY LIKE 'E'. STOP. ENDIF. CALL METHOD OF excel_obj 'WORKBOOKS' = book_obj. SET PROPERTY OF excel_obj 'VISIBLE' = 0. * SET PROPERTY OF EXCEL_OBJ 'SheetInNewWorkbook' = 1. * 打开sheet页,(新建使用:call method of book_obj 'Add' = sheet_obj) CALL METHOD OF book_obj 'Open' = sheet_obj EXPORTING #1 = ls_destination. CALL METHOD OF excel_obj 'Sheets' = sheet_obj"切换sheets EXPORTING #1 = 1. CALL METHOD OF sheet_obj 'Select'. CALL METHOD OF sheet_obj 'ACTIVATE'."激活 SET PROPERTY OF sheet_obj 'NAME' = '物料属性表'. LOOP AT tablestructure->components INTO DATA(ls_comps). lv_tabix = sy-tabix. PERFORM fill_cell USING 1 sy-tabix ls_comps-name . GET PROPERTY OF cell_obj 'Interior' = color_obj. SET PROPERTY OF color_obj 'ColorIndex' = 15. ENDLOOP. DATA(lv_row) = 2. LOOP AT lt_zmmt001 INTO ls_zmmt001. LOOP AT tablestructure->components INTO ls_comps. lv_tabix = sy-tabix. ASSIGN COMPONENT lv_tabix OF STRUCTURE ls_zmmt001 TO FIELD-SYMBOL(<fs1>). IF sy-subrc EQ 0. PERFORM fill_cell USING lv_row lv_tabix <fs1> . ENDIF. ENDLOOP. lv_row = lv_row + 1. ENDLOOP. FREE OBJECT cell_obj. GET PROPERTY OF excel_obj 'ActiveSheet' = sheet_obj. "获取活动SHEET FREE OBJECT sheet_obj. GET PROPERTY OF excel_obj 'ACTIVEWORKBOOK' = book_obj."激活工作区 "save CALL METHOD OF book_obj 'SAVE'. * SET PROPERTY OF excel 'Visible' = 1. "是否显示EXCEL 此处显示不退出 CALL METHOD OF book_obj 'CLOSE'. CALL METHOD OF excel_obj 'QUIT'. FREE OBJECT book_obj. FREE OBJECT excel_obj. ENDFORM.
FORM fill_cell USING "设置单元格的值 VALUE(row) VALUE(col) VALUE(value). CALL METHOD OF excel_obj 'CELLS' = cell_obj EXPORTING #1 = row #2 = col. SET PROPERTY OF cell_obj 'VALUE' = value. ENDFORM.
关于
zcl_document_jxzhu=>download_template_to_frontend的方法具体内容:https://www.cnblogs.com/jxzhu/p/12359692.html
-Tab Zhu 不念过去 不畏将来