1、 FLAG .CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,容器实例CONTROL TYPE REF TO I_OI_CONTAINER_CONTROL,控制器实例 DOCUMENT TYPE REF TO I_OI_DOCUMENT_PROXY,文档操作对象 SPREADSHEET TYPE REF TO I_OI_SPREADSHEET,分隔符对象 ERROR TYPE REF TO I_OI_ERROR,错误信息 ERRORS TYPE REF TO I_OI_ERROR OCCURS 0 WITH HEADER LINE.* spreads
2、heet interface structures for Excel data input RANGEITEM TYPE SOI_RANGE_ITEM. RANGES TYPE SOI_RANGE_LIST. EXCEL_INPUT TYPE SOI_GENERIC_TABLE. EXCEL_INPUT_WA TYPE SOI_GENERIC_ITEM. INITIALIZED(1), RETCODE TYPE SOI_RET_STRING. ITEM_URL(256).存放模板的UrlDATA DOCUMENT_TYPE(80).文档类型 EXCEL(80) VALUE Excel.She
3、et. LINE_COUNT TYPE I, COLUMN_COUNT TYPE I. OK_CODE TYPE SY-UCOMM, SAVE_OK TYPE SY-UCOMM.CLASS C_OI_ERRORS DEFINITION LOAD. BEGIN OF ITAB OCCURS 0.INCLUDE STRUCTURE T001. END OF ITAB.SELECT-OPTIONS BUKRS FOR T001-BUKRS.START-OF-SELECTION.PERFORM GETDATA.CALL SCREEN 100. Form getdata* text*-* - p1 te
4、xt* CLOSE_DOCUMENT.关闭文档FREE DOCUMENT.IF NOT CONTROL IS INITIAL.CALL METHOD CONTROL-DESTROY_CONTROL.FREE CONTROL.LEAVE PROGRAM.BACKCLOSE_DOCUMENT.SET SCREEN 0. quit the programset screen 1000.ENDCASE. USER_COMMAND_0100 INPUT Form CREATE_BASIC_OBJECTSP_APP_NAME textP_CLASSNAME textP_CLASSTYPE textP_OB
5、J_KEY textP_DOCNAME textFORM CREATE_BASIC_OBJECTS USING P_APP_NAME P_CLASSNAME P_CLASSTYPE P_OBJ_KEY P_DOCNAME.CHECK INITIALIZED IS INITIAL.* 获取SAP DOI的控制器接口CALL METHOD C_OI_CONTAINER_CONTROL_CREATOR=GET_CONTAINER_CONTROLIMPORTINGCONTROL = CONTROL ERROR = ERROR.* check no errors occuredCALL METHOD E
6、RROR-RAISE_MESSAGEEXPORTINGTYPE = E实例化容器实例CREATE OBJECT CONTAINER CONTAINER_NAME = CONTAINERDATA L_APP_NAME(200).IF P_APP_NAME IS INITIAL. L_APP_NAME = TESTELSE. L_APP_NAME = P_APP_NAME.初始化控制器的接口INIT_CONTROL R3_APPLICATION_NAME = L_APP_NAME INPLACE_ENABLED = INPLACE INPLACE_SCROLL_DOCUMENTS = PARENT
7、 = CONTAINER REGISTER_ON_CLOSE_EVENT = REGISTER_ON_CUSTOM_EVENT = NO_FLUSH = ERROR = ERRORS.* save error object in collectionAPPEND ERRORS.CLEAR ITEM_URL.定义BDS实例变量,用于设置文档信息 BDS_INSTANCE TYPE REF TO CL_BDS_DOCUMENT_SET. DOC_SIGNATURE TYPE SBDST_SIGNATURE, WA_DOC_SIGNATURE LIKE LINE OF DOC_SIGNATURE,
8、DOC_COMPONENTS TYPE SBDST_COMPONENTS, DOC_URIS TYPE SBDST_URI, WA_DOC_URIS LIKE LINE OF DOC_URIS.*以下三个值为Tcode:OAOR里面新建模板文件的参数 DOC_CLASSNAME TYPE SBDST_CLASSNAME VALUE HRFPM_EXCEL_STANDARD, DOC_CLASSTYPE TYPE SBDST_CLASSTYPE VALUE OT DOC_OBJECT_KEY TYPE SBDST_OBJECT_KEY VALUE WA_DOC_SIGNATURE-PROP_NA
9、ME = DESCRIPTION DOCUMENT_TYPE = EXCEL. WA_DOC_SIGNATURE-PROP_VALUE = P_DOCNAME.赋给文档名字APPEND WA_DOC_SIGNATURE TO DOC_SIGNATURE.DOC_SIGNATURE存储了文档信息CREATE OBJECT BDS_INSTANCE.CALL METHOD BDS_INSTANCE-GET_INFO获取文档信息 CLASSNAME = DOC_CLASSNAME CLASSTYPE = DOC_CLASSTYPE OBJECT_KEY = DOC_OBJECT_KEYCHANGIN
10、G COMPONENTS = DOC_COMPONENTS SIGNATURE = DOC_SIGNATURE.GET_WITH_URL获取文档的url地址放到DOC_URIS中 URIS = DOC_URISFREE BDS_INSTANCE.释放该对象READ TABLE DOC_URIS INTO WA_DOC_URIS INDEX 1. ITEM_URL = WA_DOC_URIS-URI.获取对象的地址* 告诉SAP DOI容器开辟一个Excel策略GET_DOCUMENT_PROXY DOCUMENT_TYPE = DOCUMENT_PROXY = DOCUMENT* 根据模板地址
11、打开Excel文件OPEN_DOCUMENT OPEN_INPLACE = INPLACE DOCUMENT_URL = ITEM_URL. HAS TYPE I.HAS_SPREADSHEET_INTERFACE IS_AVAILABLE = HAS获取模板文档的表格分割器接口给SPREADSHEETGET_SPREADSHEET_INTERFACE SHEET_INTERFACE = SPREADSHEET*激活第一个sheetCALL METHOD SPREADSHEET-SELECT_SHEET NAME = 表整理* NO_FLUSH = * RETCODE = LOOP AT ER
12、RORS. CALL METHOD ERRORS- EXPORTING TYPE = ENDLOOP.FREE ERRORS. INITIALIZED = CREATE_BASIC_OBJECTS Form output_to_excel* fill the EXCEL sheetFORM OUTPUT_TO_EXCEL.DATA NUM TYPE I VALUE 0.LOOP AT ITAB. NUM = SY-TABIX + 2.PERFORM FILL_CELL USING NUM 1 ITAB-BUKRS.行列值PERFORM FILL_CELL USING NUM 2 ITAB-SP
13、RAS.PERFORM FILL_CELL USING NUM 3 ITAB-BUTXT.output_to_excel Form FILL_CELLI textJ textVAL textFORM FILL_CELL USING I J VAL. COLUMNS_NUMBER TYPE I, ROWS_NUMBER TYPE I. COLUMNS_NUMBER = 1. ROWS_NUMBER = 1.INSERT_RANGE_DIMcell TOP = ILEFT = JROWS = ROWS_NUMBER COLUMNS = COLUMNS_NUMBERREFRESH: RANGES,
14、EXCEL_INPUT. RANGEITEM-NAME = RANGEITEM-COLUMNS = 1. RANGEITEM-ROWS = 1.APPEND RANGEITEM TO RANGES. EXCEL_INPUT_WA-COLUMN = 1. EXCEL_INPUT_WA-ROW = 1. EXCEL_INPUT_WA-VALUE = VAL.APPEND EXCEL_INPUT_WA TO EXCEL_INPUT.* set dataSET_RANGES_DATARANGES = RANGES CONTENTS = EXCEL_INPUTFIT_WIDEST NAME = SPACEfill_cellDOI必须放在自定义屏幕的一个Container中。最终的运行结果如图:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1