*&---------------------------------------------------------------------* *& Report ZKK_FLIGHT_SHM_DEMO *& *&---------------------------------------------------------------------* *& Author: V Kiran Kumar Reddy *& Purpose: Shared Memory Objects Demo *&---------------------------------------------------------------------* *& 1. Create Screen 0100. *& 2. Create calls to PBO and PAI in the flow logic of screen 0100: *& PROCESS BEFORE OUTPUT. *& MODULE STATUS_0100. *& *& PROCESS AFTER INPUT. *& MODULE USER_COMMAND_0100. *& *& 3. Create GUI status zpf_shm, assign Functions SAVE and EXIT to *& standard icons. and create Title zt_shm. *&---------------------------------------------------------------------* REPORT ZKK_FLIGHT_SHM_DEMO. *----------------------------------------------------------------------* * CLASS lcl_flight_alv DEFINITION *----------------------------------------------------------------------* CLASS lcl_flight_alv DEFINITION. PUBLIC SECTION. METHODS: display_alv, " Display ALV handle_double_click FOR EVENT double_click " Event Handler Method OF cl_gui_alv_grid IMPORTING e_row. PRIVATE SECTION. DATA: lr_grid TYPE REF TO cl_gui_alv_grid, lt_sflight TYPE STANDARD TABLE OF sflight, ls_sflight TYPE sflight. ENDCLASS. "lcl_alv_event DEFINITION *----------------------------------------------------------------------* * CLASS lcl_flight_alv IMPLEMENTATION *----------------------------------------------------------------------* CLASS lcl_flight_alv IMPLEMENTATION. METHOD display_alv. * Get Flight Data from DB SELECT * FROM sflight INTO TABLE lt_sflight UP TO 10 ROWS. " Only 10 records for demo * Create ALV Instance CREATE OBJECT lr_grid EXPORTING i_parent = cl_gui_custom_container=>screen0. " Default sceen ( No need of custom container ) * Display ALV CALL METHOD lr_grid->set_table_for_first_display EXPORTING i_structure_name = 'SFLIGHT' CHANGING it_outtab = lt_sflight. CALL SCREEN 100. ENDMETHOD. "display_alv METHOD handle_double_click. DATA: lr_shm_handle TYPE REF TO zcl_flight_data_area, lr_shm_root TYPE REF TO zcl_flight_data_root. * Get the double clicked row (selected Flight data) READ TABLE lt_sflight INTO ls_sflight INDEX e_row. TRY . * Writing to Shared Memory ( Exporting to memory ) lr_shm_handle = zcl_flight_data_area=>attach_for_write( ). CREATE OBJECT lr_shm_root AREA HANDLE lr_shm_handle. lr_shm_handle->set_root( lr_shm_root ). lr_shm_root->set_selected_flight( exporting is_flight = ls_sflight ). lr_shm_handle->detach_commit( ). CATCH cx_shm_no_active_version cx_shm_read_lock_active cx_shm_change_lock_active cx_shm_exclusive_lock_active cx_shm_inconsistent. ENDTRY. * Call Flight Bookings Web Dynpro Appl CALL TRANSACTION 'ZBOOKINGS_SHM'. ENDMETHOD. "handle_double_click ENDCLASS. "lcl_alv_event IMPLEMENTATION START-OF-SELECTION. * Data declaration for local flight object DATA lr_flight_alv TYPE REF TO lcl_flight_alv. * Creating instance of local flight class CREATE OBJECT lr_flight_alv. * Registering Event Handler. SET HANDLER lr_flight_alv->handle_double_click FOR ALL INSTANCES. * Call method to display ALV lr_flight_alv->display_alv( ). *----------------------------------------------------------------------* * MODULE STATUS_0100 OUTPUT *----------------------------------------------------------------------* * *----------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. * Set title bar & PF status SET TITLEBAR 'ZT_SHM'. " Create title bar zt_shm SET PF-STATUS 'ZPF_SHM'. " Create PF status zpf_shm ENDMODULE. "STATUS_0100 OUTPUT *----------------------------------------------------------------------* * MODULE USER_COMMAND_0100 INPUT *----------------------------------------------------------------------* * *----------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT. IF sy-ucomm = 'BACK' or sy-ucomm = 'EXIT'. LEAVE PROGRAM. ENDIF. ENDMODULE. "USER_COMMAND_0100 INPUT |