One order event display tool
生活随笔
收集整理的這篇文章主要介紹了
One order event display tool
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Created by Jerry Wang, last modified on Feb 15, 2015
執行report,輸入要查看的process type:
得到執行結果:
source code:
PROGRAM bcalvc_print.PARAMETERS: type TYPE crmt_process_type OBLIGATORY DEFAULT 'OPSM'. CLASS lcl_event_receiver DEFINITION DEFERRED. * *********DATA: ok_code LIKE sy-ucomm,g_max TYPE i VALUE 100,gt_sflight TYPE TABLE OF sflight,g_repid LIKE sy-repid,gs_print TYPE lvc_s_prnt,gs_layout TYPE lvc_s_layo,mycontainer TYPE scrfname VALUE 'BCALVC_EVENT1_CONT1',lt_callbacks_hdr TYPE crmt_event_callbacks,lt_out TYPE STANDARD TABLE OF crm_event_callbacks,custom_container TYPE REF TO cl_gui_custom_container,grid1 TYPE REF TO cl_gui_alv_grid,event_receiver TYPE REF TO lcl_event_receiver.CLASS lcl_event_receiver DEFINITION.PUBLIC SECTION. * § 2. Define a method for each print event you need.METHODS:handle_top_of_pageFOR EVENT print_top_of_page OF cl_gui_alv_grid,handle_end_of_pageFOR EVENT print_end_of_page OF cl_gui_alv_grid,handle_top_of_listFOR EVENT print_top_of_list OF cl_gui_alv_grid,handle_end_of_listFOR EVENT print_end_of_list OF cl_gui_alv_grid.PRIVATE SECTION.DATA: pagenum TYPE i.ENDCLASS.CLASS lcl_event_receiver IMPLEMENTATION. *§ 3. Implement your event handler methods. Use WRITE to provide output.METHOD handle_top_of_page.DATA: tablename(30) TYPE c.PERFORM get_tablename CHANGING tablename.WRITE: /,'Event: PRINT_TOP_OF_PAGE'(001),'Table: '(002),tablename.ENDMETHOD. "handle_top_of_page *-------------------------------------------METHOD handle_end_of_page.DATA: tablename(30) TYPE c.PERFORM get_tablename CHANGING tablename.ADD 1 TO pagenum.WRITE: /,'Event: PRINT_END_OF_PAGE'(003),text-002,tablename,'Number of pages so far: '(004), pagenum.ENDMETHOD. "handle_end_of_page *-------------------------------------------METHOD handle_top_of_list.DATA: tablename(30) TYPE c.CLEAR pagenum.PERFORM get_tablename CHANGING tablename.WRITE: /,'Event: PRINT_TOP_OF_LIST'(005),text-002,tablename.ENDMETHOD. "handle_top_of_list *-------------------------------------------METHOD handle_end_of_list.DATA: tablename(30) TYPE c.PERFORM get_tablename CHANGING tablename.WRITE: /,'Event: PRINT_END_OF_LIST'(006),text-002,tablename.ENDMETHOD. "handle_end_of_list *------------------------------------------- ENDCLASS. * * c_event_receiver (Implementation) *===================================================================START-OF-SELECTION.CALL FUNCTION 'CRM_EVENT_FILTER_PROC_TYPE_OW'EXPORTINGiv_proc_type = typeIMPORTINGet_callbacks_hdr = lt_callbacks_hdr.lt_out = lt_callbacks_hdr. * END-OF-SELECTION.g_repid = sy-repid.CALL SCREEN 100.*---------------------------------------------------------------------* * MODULE PBO OUTPUT * *---------------------------------------------------------------------* MODULE pbo OUTPUT.SET PF-STATUS 'MAIN100'.SET TITLEBAR 'MAIN100'.IF custom_container IS INITIAL. * create a custom container control for our ALV ControlCREATE OBJECT custom_containerEXPORTINGcontainer_name = mycontainerEXCEPTIONScntl_error = 1cntl_system_error = 2create_error = 3lifetime_error = 4lifetime_dynpro_dynpro_link = 5.IF sy-subrc NE 0. * add your handling, for exampleCALL FUNCTION 'POPUP_TO_INFORM'EXPORTINGtitel = g_repidtxt2 = sy-subrctxt1 = 'The control could not be created'(010).ENDIF. * create an instance of alv controlCREATE OBJECT grid1EXPORTINGi_parent = custom_container. * * Set a titlebar for the grid control *gs_layout-grid_title = 'Flights'(100).gs_print-reservelns = 2.******** * ->Create Object to receive events and link them to handler methods. * When the ALV Control raises the event for the specified instance * the corresponding method is automatically called. ********** § 4. Link used print events and event handler methods.CREATE OBJECT event_receiver.SET HANDLER event_receiver->handle_top_of_list FOR grid1.SET HANDLER event_receiver->handle_top_of_page FOR grid1.SET HANDLER event_receiver->handle_end_of_list FOR grid1.SET HANDLER event_receiver->handle_end_of_page FOR grid1. *CALL METHOD grid1->set_table_for_first_displayEXPORTINGi_structure_name = 'CRM_EVENT_CALLBACKS'is_print = gs_printis_layout = gs_layoutCHANGINGit_outtab = lt_out.ENDIF.CALL METHOD cl_gui_control=>set_focus EXPORTING control = grid1.* Control Framework flushes at the end of PBO automatically! ENDMODULE. *---------------------------------------------------------------------* * MODULE PAI INPUT * *---------------------------------------------------------------------* MODULE pai INPUT.CASE ok_code.WHEN 'EXIT'.PERFORM exit_program.ENDCASE.CLEAR ok_code. ENDMODULE. *---------------------------------------------------------------------* * FORM EXIT_PROGRAM * *---------------------------------------------------------------------* FORM exit_program.CALL METHOD custom_container->free.CALL METHOD cl_gui_cfw=>flush.IF sy-subrc NE 0. * add your handling, for exampleCALL FUNCTION 'POPUP_TO_INFORM'EXPORTINGtitel = g_repidtxt2 = sy-subrctxt1 = 'Error in Flush'(009).ENDIF.LEAVE PROGRAM. ENDFORM. *&---------------------------------------------------------------------* *& Form GET_TABLENAME *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_TABLENAME text *----------------------------------------------------------------------* FORM get_tablename CHANGING p_tablename.DATA: lt_fieldcat TYPE STANDARD TABLE OF lvc_s_fcat,ls_fieldcat TYPE lvc_s_fcat.CALL METHOD grid1->get_frontend_fieldcatalogIMPORTINGet_fieldcatalog = lt_fieldcat.CALL METHOD cl_gui_cfw=>flush.IF sy-subrc <> 0.p_tablename = 'No tablename in fieldcatalog!'(008).CALL FUNCTION 'POPUP_TO_INFORM'EXPORTINGtitel = g_repidtxt2 = p_tablenametxt1 = 'Error in Flush'(011).ELSE.READ TABLE lt_fieldcat INDEX 1 INTO ls_fieldcat.p_tablename = ls_fieldcat-ref_table.ENDIF.ENDFORM. " GET_TABLENAME總結
以上是生活随笔為你收集整理的One order event display tool的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中兴举办2023年度云网峰会 公布多款新
- 下一篇: 狼人杀狼人玩法经验分享 狼人杀狼人怎么玩