ABAP 随笔 EXCEL 笔记6批量导出 OLE 客制导出

作者:SAPTAB 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, MM, 开发, 数据工程, 物料管理
ABAP 随笔 EXCEL 笔记6批量导出 OLE 客制导出 - 封面图
ABAP 随笔 EXCEL 笔记6批量导出 OLE 客制导出 - 封面图

原创 Tab Zhu [ SAP TAB ](javascript:void\(0\);)

**点击蓝字关注我们**

富强 民主 文明 和谐

自由 平等 公正 法制

爱国 敬业 诚信 友善

_**01** _

**OLE客制EXCEL导出**

**不念过** **去**

**START**

**不畏将来**

今天简单说一下使用OLE的方法来输出自己想要的EXCEL。

ABAP 随笔 EXCEL 笔记6批量导出 OLE 客制导出 - 封面图
ABAP 随笔 EXCEL 笔记6批量导出 OLE 客制导出 - 封面图

结果:

ABAP 随笔 EXCEL 笔记6批量导出 OLE 客制导出 - 封面图
ABAP 随笔 EXCEL 笔记6批量导出 OLE 客制导出 - 封面图

部分代码如下

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' = '物料属性表'._" 修改sheet的名字_

_* 给第一列写上列名_

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._" 设置单元格颜色 具体可以查询VBA颜色查询_

ENDLOOP.
DATA(lv_row) = 2.

_* 给Excel写入内容_

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的方法具体内容

[ ABAP随笔-EXCEL操作笔记 1-Excel模板下载

](http://mp.weixin.qq.com/s?__biz=MzUxODI4MTQyMg==&mid=2247483790&idx=1&sn=3b364a0ceb83e6e8fa82923cfc873dbb&chksm=f98a002fcefd8939bf79eeab5e9930818e66f6527afbc85d5f9a6bf551190e169124285e6bd4&scene=21#wechat_redirect)

**不念过** **去**

**END**

**不畏将来**

ABAP 随笔 EXCEL 笔记6批量导出 OLE 客制导出 - 封面图
ABAP 随笔 EXCEL 笔记6批量导出 OLE 客制导出 - 封面图

**SAP ABAP TAB**

微信号 : TAB_JXZHU

后台回复'ABAP'免费领取学习资料

长按二维码关注我们

SAPTAB

关于作者:SAPTAB

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP随笔EXCEL笔记6批量导出OLE客制导出.md」整理生成,仅用于内部技术分享与学习交流。