ABAP使用OLE方法总结 下载本文

SAP ABAP OLE 操作EXCEL小结

ABAP直接操作EXCEL实现数据处理。这里是用OLE实现操作EXCEL的。现在还有

DOI操作EXCEL等方法。以后用到再做介绍。此处不是直接生成EXCEL文件,而是从

服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存。也可以直接创建

新的EXCEL文件往里面传递数据并设置格式。这里不做介绍。

1.采用模板文件实现。上传EXCEL模板

T-code:SMW0 WebRFC 的二进制数据 包:MI

点击

模板数据保存在系统表wwwdata中。 test

2.在程序中下载模板

*下载EXCEL模板FORM

按钮,上传excel模板。

FORM temp_excel_get.

DATA: lo_objdata LIKE wwwdatatab, lo_mime LIKE w3mime,

lc_filename TYPE string VALUE\ lc_fullpath TYPE string VALUE\ lc_path TYPE string VALUE\ ls_destination LIKE rlgrap-filename, ls_objnam TYPE string, li_rc LIKE sy-subrc, ls_errtxt TYPE string.

DATA:p_objid TYPE wwwdatatab-objid, p_dest LIKE sapb-sappfad.

p_objid = \此处为EXCEL模板名称

CALL METHOD cl_gui_frontend_services=>file_save_dialog ”调用保存对话框 EXPORTING

default_extension = \ default_file_name = lc_filename CHANGING

filename = lc_filename path = lc_path fullpath = lc_fullpath EXCEPTIONS

cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4. IF lc_fullpath = \

MESSAGE \不能打开excel\ ENDIF.

IF sy-subrc = 0. p_dest = lc_fullpath.

* concatenate p_objid \ CONDENSE ls_objnam NO-GAPS.

SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata

WHERE srtf2 = 0 AND relid = \

*检查表wwwdata中是否存在所指定的模板文件

IF sy-subrc NE 0 OR lo_objdata-objid EQ space.“如果不存在,则给出错误提示 CONCATENATE \模板文件\不存在\ MESSAGE ls_errtxt TYPE \

ENDIF.

ls_destination = p_dest. ”保存路径

*如果存在,调用DOWNLOAD_WEB_OBJECT 函数下载模板到路径下 CALL FUNCTION \ EXPORTING

key = lo_objdata destination = ls_destination IMPORTING rc = li_rc. IF li_rc NE 0.

CONCATENATE \模板文件:\下载失败\ MESSAGE ls_errtxt TYPE \ ENDIF.

fname = ls_destination. ENDIF.

ENDFORM. \

3.下载完模板后,打开模板文件,填入数据

CREATE OBJECT excel \\ IF sy-subrc NE 0. EXIT. ENDIF.

SET PROPERTY OF excel \\是否显示EXCEL

CALL METHOD OF excel \

CALL METHOD OF workbook \ EXPORTING

#1 = fname. .\打开上面下载路径下的excel文件

CALL METHOD OF excel \ EXPORTING #1 = 1.

CALL METHOD OF sheet \