help.sap.com:Desktop Office Integration
一个使用DOI显示Excel的例子:
" 引入Office OLE控件整合所需的内容
INCLUDE <CTLDEF>.
INCLUDE OFFICEINTEGRATIONINCLUDE.
* Instance-definition for the central object of office-integration
DATA: G_OFFICE TYPE REF TO I_OI_DOCUMENT_FACTORY.
* Instance-definition for the documents
DATA: G_DOCUMENT TYPE REF TO I_OI_DOCUMENT_PROXY.
* Excel文档类型
DATA: G_DOCUMENT_TYPE(80) VALUE 'Excel.Sheet.8'.
* Excel的OLE控件
DATA: EXCEL_CONTROL TYPE REF TO I_OI_CONTAINER_CONTROL.
DATA: G_CONTAINER_2 TYPE REF TO CL_GUI_CONTAINER.
FORM INIT_OFFICE_OLE.
IF EXCEL_CONTROL IS INITIAL.
CALL METHOD C_OI_CONTAINER_CONTROL_CREATOR=>GET_CONTAINER_CONTROL
IMPORTING CONTROL = EXCEL_CONTROL.
CALL METHOD EXCEL_CONTROL->INIT_CONTROL
EXPORTING R3_APPLICATION_NAME = 'EXCEL CONTAINER'
INPLACE_ENABLED = 'X'
PARENT = G_CONTAINER_2.
CALL METHOD EXCEL_CONTROL->GET_DOCUMENT_PROXY
EXPORTING DOCUMENT_TYPE = G_DOCUMENT_TYPE
REGISTER_CONTAINER = 'X'
IMPORTING DOCUMENT_PROXY = G_DOCUMENT.
CALL METHOD G_DOCUMENT->CREATE_DOCUMENT
EXPORTING OPEN_INPLACE = 'X'.
ENDIF.
ENDFORM.
FORM RELEASE_OFFICE_OLE.
IF G_DOCUMENT IS NOT INITIAL.
CALL METHOD G_DOCUMENT->CLOSE_DOCUMENT.
CALL METHOD G_DOCUMENT->RELEASE_DOCUMENT.
FREE G_DOCUMENT.
ENDIF.
IF EXCEL_CONTROL IS NOT INITIAL.
CALL METHOD EXCEL_CONTROL->DESTROY_CONTROL.
FREE EXCEL_CONTROL.
ENDIF.
ENDFORM.