ALV tutorial 04 – 2 grids in splitscreen

Display two grids in split screen mode

REPORT  z_alv_demo_04.
TYPES: BEGIN OF ty_data.
        INCLUDE STRUCTURE sflight.
TYPES: END OF ty_data.

DATA: gt_data TYPE TABLE OF ty_data,
      g_grid_left TYPE REF TO cl_gui_alv_grid,
      g_grid_right TYPE REF TO cl_gui_alv_grid,
      gs_layout TYPE lvc_s_layo,
      gt_fieldcat TYPE lvc_t_fcat.

CONSTANTS:
  c_max_rows TYPE i VALUE 100.

CALL SCREEN 100.

*&---------------------------------------------------------------------*
*&      Form  read_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM read_data.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_data
    FROM sflight
    UP TO c_max_rows ROWS.
ENDFORM.                    "read_data

*&---------------------------------------------------------------------*
*&      Form  display_grid
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_grid.
  data: splitter TYPE REF TO cl_gui_splitter_container,
        graphic_parent1 TYPE REF TO cl_gui_container,
        graphic_parent2 TYPE REF TO cl_gui_container.

  PERFORM get_layout.

  CREATE OBJECT splitter
     EXPORTING
       parent  = cl_gui_container=>default_screen
       rows    = 1
       columns = 2
       align   = 15.

  CALL METHOD splitter->get_container
      EXPORTING
        row       = 1
        column    = 1
      RECEIVING
        container = graphic_parent1.

  call METHOD splitter->get_container
      EXPORTING
        row       = 1
        column    = 2
      RECEIVING
        container = graphic_parent2.

  CREATE OBJECT g_grid_left
    EXPORTING
      i_parent =  graphic_parent1.

  CREATE OBJECT g_grid_right
    EXPORTING
      i_parent =  graphic_parent2.

  CALL METHOD g_grid_left->set_table_for_first_display
    EXPORTING
      i_structure_name              = 'SFLIGHT'
      is_layout                     = gs_layout
    CHANGING
      it_outtab                     = gt_data
*      it_fieldcatalog               = gt_fieldcat
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      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.

    CALL METHOD g_grid_right->set_table_for_first_display
    EXPORTING
      i_structure_name              = 'SFLIGHT'
      is_layout                     = gs_layout
    CHANGING
      it_outtab                     = gt_data
*      it_fieldcatalog               = gt_fieldcat
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      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.
ENDFORM.                    "display_grid
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'MAIN'.
  SET TITLEBAR 'ALV_EXAMPLES'.
ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  DISPLAY_GRID  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE display_grid OUTPUT.
  PERFORM read_data.
  PERFORM display_grid.
ENDMODULE.                 " DISPLAY_GRID  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
*   to react on oi_custom_events:
  CALL METHOD cl_gui_cfw=>dispatch.
  CASE sy-ucomm.
    WHEN 'BACK' OR
         'EXIT' OR
         'CANCEL'.
      LEAVE PROGRAM.
    WHEN OTHERS.
*     do nothing
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Form  GET_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  

Output should look like the following:

ALV Split Screen result

4 thoughts on “ALV tutorial 04 – 2 grids in splitscreen

Leave a Reply