OLE导出:
REPORT YGL_MYOLE.
INCLUDE OLE2INCL.
* OLE OBJECT
DATA:
.................................
*创建excel进程
CREATE OBJECT MYEXCEL 'EXCEL.APPLICATION'.
* 创建工作表
CALL METHOD OF MYEXCEL 'WORKBOOKS' = MYWORKBOOK.
* 创建sheet并添加到工作表
SET PROPERTY OF MYEXCEL 'SHEETSINNEWWORKBOOK' = 1.
CALL METHOD OF MYWORKBOOK 'ADD'.
* 选中excel中的cell,第一行的第二列。
CALL METHOD OF MYEXCEL 'CELLS' = MYCELL EXPORTING #1 = 1 #2 = 2.
* 设置被选中的cell的值
SET PROTERTY OF MYCELL 'VALUE' = 'HELLO WORD'. "你要输出的内容
GET PROPERTY OF MYEXCEL 'ACTIVESHEET' = MYSHEET.
GET PROPERTY OF MYEXCEL 'ACTIVEWORKBOOK' = MYWORKBOOK.
* 保存文件
CALL METHOD OF MYWORKBOOK 'SAVEAS' EXPORTING #1 = 'C:/TMP/AA.XLS' #2 = 1.
CALL METHOD OF MYWORKBOOK 'CLOSE'.
* 推出excel
CALL METHOD OF MYEXCEL 'QUIT'.
* 释放对象
FREE OBJECT MYSHEET.
FREE OBJECT MYWORKBOOK.
FREE OBJECT MYEXCEL.
*******************************************************************************
实例:
TYPE
slis.
DEFINE
* WA_FIELD_EIDT = 'X'.
END
* 定义变量和字段组
DATA
gs_layout
wa_field
it_field
*******************************************************************************
* OLE EXCEL变量
DATA
workbook
sheet
cell
* CELL1 TYPE OLE2_OBJECT,
* COLUMN TYPE OLE2_OBJECT,
* RANGE TYPE OLE2_OBJECT,
* BORDERS TYPE OLE2_OBJECT,
* button TYPE OLE2_OBJECT,
* int TYPE OLE2_OBJECT,
* FONT TYPE OLE2_OBJECT.
* ROW TYPE OLE2_OBJECT.
* 填充单元格
FORM
* CALL METHOD OF EXCEL 'COLUMNS' = COLUMN.
* CALL METHOD OF COLUMN 'AUTOFIT'. "导出EXCEL自动适应宽度
* GET PROPERTY OF CELL 'FONT' = FONT.
* SET PROPERTY OF FONT 'BOLD' = BOLD .
ENDFORM
* 处理进度条
FORM
i_total
* 启动指示钟
* PERCENTAGE = I_PERCENT
ENDFORM
DOI:推荐用DOI方式导数据到Excel,而不要用OLE,DOI是调用SAP自带的类来操作的,可控性更高,并且可以把Excel窗口当作一个片屏幕控件放 入屏幕的容器中。
具体请参考:http://help.sap.com/saphelp_nw04/helpdata/en/e9/0be775408e11d1893b0000e8
实例:
更多的东西请看在线帮助里"The Spreadsheet Interface"一章,有详细的结构定义和方法说明。
运行报表前首先要在事务代码OAOR里面新建一个Excel模板,然后调用DOI的类把这个程序调出来后写入数据。
给一个简单的DOI模板,这个模板是单元格一格一格填充的,其实可以一块一起填充。
*&---------------------------------------------------------------------*
*& Report
*&
*&---------------------------------------------------------------------*
*&
*&
*&
*&---------------------------------------------------------------------*
REPORT
TABLES: makt.
***-----------------------------------***
***
***-----------------------------------***
TYPE-POOLS: slis,vrm, sbdst, soi.
CONSTANTS document_name(30) VALUE 'TEST'.
CONSTANTS inplace VALUE 'X'.
DATA: flag .
DATA: container
CONTROLS:
DATA:
* spreadsheet interface structures for Excel data input
DATA: rangeitem TYPE soi_range_item.
DATA: ranges TYPE soi_range_list.
DATA: excel_input TYPE soi_generic_table.
DATA: excel_input_wa TYPE soi_generic_item.
DATA: initialized(1), retcode TYPE soi_ret_string.
DATA: item_url(256), already_done, newname(40).
DATA
DATA: app TYPE vrm_id, applist TYPE vrm_values.
DATA: excel(80) VALUE 'Excel.Sheet'.
DATA: line_count TYPE i,
DATA: ok_code TYPE sy-ucomm,
CLASS c_oi_errors DEFINITION LOAD.
DATA: BEGIN OF itab OCCURS 0.
DATA: END
SELECT-OPTIONS matnr FOR makt-matnr.
START-OF-SELECTION.
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*
*----------------------------------------------------------------------*
FORM getdata .
ENDFORM.
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
ENDMODULE.
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
ENDMODULE.
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*
*
*
*
*----------------------------------------------------------------------*
FORM
* first get the SAP DOI i_oi_container_control interface
* check no errors occured
* save error object in collection
*以下三个值为Tcode:OAOR里面新建模板文件的参数
* ask the SAP DOI container for a i_oi_document_proxy for Excel
* open a document saved in business document service.
* Activate
*
*
ENDFORM.
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM output_to_excel.
ENDFORM.
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
*
*
*
*----------------------------------------------------------------------*
FORM fill_cell
* set data
ENDFORM.