多语言展示
当前在线:1954今日阅读:39今日分享:10

SAP ABAP-DOI技术输出EXCEL文档(2)

看完成第一篇DOI技术输出EXCEL文档的文章,你是不是发现DOI的代码很简单。实际上,DOI代码有更简单的写法:那就是不调用屏幕,直接在REPORT程序中写相关的代码。也许,你会怀疑,怎么定义屏幕,怎么定义CONTAINER对象?其实很简单,因为一些程序语句会隐形地创建这些东西。  你还记得我们怎么定义的CONTAINER吗?cl_container = cl_gui_container-screen0.  你看,我们也没有创建CONTAINER,只是把程序中的容器对象赋给我们自己定义的类变量。下面我们还是看看代码吧!如果你看懂了,会对ABAP程序有更深一步的了解。  为了方便大家的阅读,本程序,只是创建了EXCEL文档的SHEET页并显示出来,如果需要对此文档进行操作,请参考第一篇文档。不用屏幕输出DOI文档*&---------------------------------------------------------------------**& Report ZTEST26 ABAP DOI技术输出EXCEL*&---------------------------------------------------------------------**& Created by 薛现军 xaveryon 2015-07-26.*& **&---------------------------------------------------------------------*REPORT ztraining26 NO STANDARD PAGE HEADING.************************************************************************** 定义变量与内表************************************************************************TYPE-POOLS:vrm, sbdst, soi.* SAP Desktop Office Integration InterfacesDATA: cl_container TYPE REF TO cl_gui_container,cl_splitter TYPE REF TO cl_gui_splitter_container,cl_control TYPE REF TO i_oi_container_control,cl_docu_proxy TYPE REF TO i_oi_document_proxy,cl_spreadsheet TYPE REF TO i_oi_spreadsheet,cl_error TYPE REF TO i_oi_error,cl_errors TYPE REF TO i_oi_error OCCURS 0 WITH HEADER LINE.DATA:g_has_activex TYPE c,g_initialized TYPE c.************************************************************************** 执行程序事件 Executing the program's events************************************************************************INITIALIZATION.START-OF-SELECTION.PERFORM sub_create_object.*&---------------------------------------------------------------------**& Form SUB_CREATE_OBJECT*&---------------------------------------------------------------------** 创建相关的对象*----------------------------------------------------------------------*FORM sub_create_object .SKIP 1.CHECK g_initialized IS INITIAL.CALL FUNCTION 'GUI_HAS_ACTIVEX'IMPORTINGreturn = g_has_activex.IF g_has_activex IS INITIAL.MESSAGE e007(demoofficeintegratio).ENDIF.* first get the SAP DOI i_oi_container_control interfaceCALL METHODc_oi_container_control_creator=>get_container_controlIMPORTINGcontrol = cl_controlerror = cl_error.cl_container = cl_gui_container=>screen0.* specified above and tell it to run Excel in-placeCALL METHOD cl_control->init_controlEXPORTINGr3_application_name = 'RBasis' '#EC NOTEXTinplace_enabled = 'X'inplace_scroll_documents = 'X'parent = cl_containerregister_on_close_event = 'X'register_on_custom_event = 'X'no_flush = 'X'name = 'D:模版'IMPORTINGerror = cl_errors.* save error object in collectionAPPEND cl_errors.CALL METHOD cl_gui_cfw=>dispatch.* ask the SAP DOI container for a i_oi_document_proxy for ExcelCALL METHOD cl_control->get_document_proxyEXPORTINGdocument_type = 'Excel.Sheet'no_flush = 'X'* REGISTER_CONTAINER = 'X'IMPORTINGdocument_proxy = cl_docu_proxyerror = cl_errors.APPEND cl_errors.CALL METHOD cl_docu_proxy->create_documentEXPORTINGopen_inplace = 'X'no_flush = 'X'document_title = '明细表'IMPORTINGerror = cl_errors.* STARTUP_MACRO = g_macro.ENDFORM. ' SUB_CREATE_OBJECT  执行程序后会发现,EXCEL文档已经可以输出了!一定要记住。程序中SKIP语句是创建屏幕的关键!
推荐信息