Screen 0 ile çift alv
cl_gui_container=>screen0 ile container kullanmadan çift alv örneği
Kaynak:
https://answers.sap.com/questions/3450716/splitter-control-how-to-set-it-to-full-window-size.html
*&---------------------------------------------------------------------* *& Report ZUS_SDN_TWO_ALV_GRIDS *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zus_sdn_two_alv_grids. DATA: gd_okcode TYPE ui_func, * go_docking TYPE REF TO cl_gui_docking_container, go_splitter TYPE REF TO cl_gui_splitter_container, go_cell_top TYPE REF TO cl_gui_container, go_cell_bottom TYPE REF TO cl_gui_container, go_grid1 TYPE REF TO cl_gui_alv_grid, go_grid2 TYPE REF TO cl_gui_alv_grid, gs_layout TYPE lvc_s_layo. DATA: gt_knb1 TYPE STANDARD TABLE OF knb1, gt_knvv TYPE STANDARD TABLE OF knvv. *---------------------------------------------------------------------* * CLASS lcl_eventhandler DEFINITION *---------------------------------------------------------------------* * *---------------------------------------------------------------------* CLASS lcl_eventhandler DEFINITION. PUBLIC SECTION. CLASS-METHODS: handle_double_click FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row e_column es_row_no sender. ENDCLASS. "lcl_eventhandler DEFINITION *---------------------------------------------------------------------* * CLASS lcl_eventhandler IMPLEMENTATION *---------------------------------------------------------------------* * *---------------------------------------------------------------------* CLASS lcl_eventhandler IMPLEMENTATION. METHOD handle_double_click. * define local data DATA: ls_knb1 TYPE knb1. CHECK ( sender = go_grid1 ). READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row-index. CHECK ( ls_knb1-kunnr IS NOT INITIAL ). CALL METHOD go_grid1->set_current_cell_via_id EXPORTING * IS_ROW_ID = * IS_COLUMN_ID = is_row_no = es_row_no. * Triggers PAI of the dynpro with the specified ok-code CALL METHOD cl_gui_cfw=>set_new_ok_code( `DETAIL` ). ENDMETHOD. "handle_double_click ENDCLASS. "lcl_eventhandler IMPLEMENTATION START-OF-SELECTION. SELECT * FROM knb1 INTO TABLE gt_knb1 WHERE bukrs = `1000`. * Create docking container CREATE OBJECT go_docking EXPORTING parent = cl_gui_container=>screen0 ratio = 90 EXCEPTIONS OTHERS = 6. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. * Create splitter container CREATE OBJECT go_splitter EXPORTING parent = go_docking rows = 2 columns = 1 * NO_AUTODEF_PROGID_DYNNR = * NAME = EXCEPTIONS cntl_error = 1 cntl_system_error = 2 OTHERS = 3. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. * Get cell container CALL METHOD go_splitter->get_container EXPORTING row = 1 column = 1 RECEIVING container = go_cell_top. CALL METHOD go_splitter->get_container EXPORTING row = 2 column = 1 RECEIVING container = go_cell_bottom. * Create ALV grids CREATE OBJECT go_grid1 EXPORTING i_parent = go_cell_top EXCEPTIONS OTHERS = 5. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. * Set event handler SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid1. CREATE OBJECT go_grid2 EXPORTING i_parent = go_cell_bottom EXCEPTIONS OTHERS = 5. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. * Display data gs_layout-grid_title = `Customers`. CALL METHOD go_grid1->set_table_for_first_display EXPORTING i_structure_name = `KNB1` is_layout = gs_layout CHANGING it_outtab = gt_knb1 EXCEPTIONS OTHERS = 4. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. gs_layout-grid_title = `Customers Details (Sales Areas)`. CALL METHOD go_grid2->set_table_for_first_display EXPORTING i_structure_name = `KNVV` is_layout = gs_layout CHANGING it_outtab = gt_knvv " empty !!! EXCEPTIONS OTHERS = 4. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. * Link the docking container to the target dynpro CALL METHOD go_docking->link EXPORTING repid = syst-repid dynnr = `0100` * CONTAINER = EXCEPTIONS OTHERS = 4. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. * NOTE: dynpro does not contain any elements CALL SCREEN `0100`. * Flow logic of dynpro (does not contain any dynpro elements): * *PROCESS BEFORE OUTPUT. * MODULE STATUS_0100. ** *PROCESS AFTER INPUT. * MODULE USER_COMMAND_0100. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_0100 OUTPUT. SET PF-STATUS `STATUS_0100`. " contains push button "DETAIL" * SET TITLEBAR `xxx`. * Refresh display of detail ALV list CALL METHOD go_grid2->refresh_table_display * EXPORTING * IS_STABLE = * I_SOFT_REFRESH = EXCEPTIONS OTHERS = 2. IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0100 INPUT. CASE gd_okcode. WHEN `BACK` OR `END` OR `CANC`. SET SCREEN 0. LEAVE SCREEN. * User has pushed button "Display Details" WHEN `DETAIL`. PERFORM entry_show_details. WHEN OTHERS. ENDCASE. CLEAR: gd_okcode. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Form ENTRY_SHOW_DETAILS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM entry_show_details . * define local data DATA: ld_row TYPE i, ls_knb1 TYPE knb1. CALL METHOD go_grid1->get_current_cell IMPORTING e_row = ld_row. READ TABLE gt_knb1 INTO ls_knb1 INDEX ld_row. CHECK ( syst-subrc = 0 ). SELECT * FROM knvv INTO TABLE gt_knvv WHERE kunnr = ls_knb1-kunnr. ENDFORM. " ENTRY_SHOW_DETAILS