CL_GUI_ALV_GRID Utility Class

In report or workbench / cockpit developments, we often have to display ALV in various layouts. Instead of spending effort in building the same thing over and over again, I’ve created this utility class which can be reused. Thus, saves development time. Over the years, these are the common layouts which I have utilized.

The area with asterisk (*) indicates it can be replaced with top-of-page.

Layouts

The actual representation in SAP GUI are shown below.

Single container

2 containers: left and right

2 containers: top and bottom

3 containers: top, middle, bottom

3 containers: top 2 columns, bottom 1 column

3 containers: top 1 column, bottom 2 columns

3 containers: left 2 rows, right 1 row

3 containers: left 1 row, right 2 rows

4 containers: top 2 columns, bottom 2 columns

4 containers: left 1 row, right 3 rows

4 containers: left 3 rows, right 1 row

Technical Details

In this section, I’ll explain the available parameters and code snippets to call ALV utility methods. You can refer to ABAP Object Oriented with Model View Controller (MVC) – Part 3 on how it is being utilized.

Single container

Parameters Comments
IMPORTING
iv_sc abap_true
EXPORTING
er_alv_single ALV object reference
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid.

mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_sc         = abap_true
  IMPORTING
    er_alv_single = mr_alv_itm
).

2 containers: left and right

Parameters Comments
IMPORTING
iv_2c_lr abap_true
iv_left_col_width Integer; optional to set left column width
EXPORTING
er_alv_left ALV object reference
er_alv_right ALV object reference
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid.

mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_2c_lr          = abap_true
    iv_left_col_width = 25
  IMPORTING
    er_alv_left       = mr_alv_hdr
    er_alv_right      = mr_alv_itm
).

2 containers: top and bottom

Parameters Comments
IMPORTING
iv_2c_tb abap_true
iv_top_row_height Integer; optional to set top row height
EXPORTING
er_alv_top ALV object reference; not required if er_splitter is requested
er_alv_bottom ALV object reference
er_splitter Splitter reference for top-of-page; not required if er_alv_top is requested
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid.

*-----------------------------------------------------------------------
"Without top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_2c_tb          = abap_true
    iv_top_row_height = 25
  IMPORTING
    er_alv_top        = mr_alv_hdr
    er_alv_bottom     = mr_alv_itm
).

*-----------------------------------------------------------------------
"With top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_2c_tb          = abap_true
    iv_top_row_height = 25
  IMPORTING
    er_alv_bottom     = mr_alv_itm
    er_splitter       = DATA(l_r_splitter)
).

"Assign top-of-page
mr_ui->create_top_of_page( l_r_splitter ).

3 containers: top, middle, bottom

Parameters Comments
IMPORTING
iv_3c_tmb abap_true
iv_top_row_height Integer; optional to set top row height
EXPORTING
er_alv_top ALV object reference; not required if er_splitter is requested
er_alv_middle ALV object reference
er_alv_bottom ALV object reference
er_splitter Splitter reference for top-of-page; not required if er_alv_top is requested
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm2 TYPE REF TO cl_gui_alv_grid.

*-----------------------------------------------------------------------
"Without top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_3c_tmb         = abap_true
    iv_top_row_height = 25
  IMPORTING
    er_alv_top        = mr_alv_hdr
    er_alv_middle     = mr_alv_itm
    er_alv_bottom     = mr_alv_itm2
).

*-----------------------------------------------------------------------
"With top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_3c_tmb         = abap_true
    iv_top_row_height = 25
  IMPORTING
    er_alv_middle     = mr_alv_hdr
    er_alv_bottom     = mr_alv_itm
    er_splitter       = DATA(l_r_splitter)
).

"Assign top-of-page
mr_ui->create_top_of_page( l_r_splitter ).

3 containers: top 2 columns, bottom 1 column

Parameters Comments
IMPORTING
iv_3c_t2c_b1c abap_true
iv_left_col_width Integer; optional to set left column width
iv_top_row_height Integer; optional to set top row height
EXPORTING
er_alv_top_left ALV object reference
er_alv_top_right ALV object reference
er_alv_bottom ALV object reference
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm2 TYPE REF TO cl_gui_alv_grid.

mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_3c_t2c_b1c     = abap_true
    iv_top_row_height = 25
  IMPORTING
    er_alv_top_left   = mr_alv_hdr
    er_alv_top_right  = mr_alv_itm
    er_alv_bottom     = mr_alv_itm2
).

3 containers: top 1 column, bottom 2 columns

Parameters Comments
IMPORTING
iv_3c_t1c_b2c abap_true
iv_left_col_width Integer; optional to set left column width
iv_top_row_height Integer; optional to set top row height
EXPORTING
er_alv_top ALV object reference; not required if er_splitter is requested
er_alv_bottom_left ALV object reference
er_alv_bottom_right ALV object reference
er_splitter Splitter reference for top-of-page; not required if er_alv_top is requested
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm2 TYPE REF TO cl_gui_alv_grid.

*-----------------------------------------------------------------------
"Without top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_3c_t1c_b2c       = abap_true
    iv_top_row_height   = 25
  IMPORTING
    er_alv_top          = mr_alv_hdr
    er_alv_bottom_left  = mr_alv_itm
    er_alv_bottom_right = mr_alv_itm2
).

*-----------------------------------------------------------------------
"With top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_3c_t1c_b2c       = abap_true
    iv_top_row_height   = 25
  IMPORTING
    er_alv_bottom_left  = mr_alv_itm
    er_alv_bottom_right = mr_alv_itm2
    er_splitter       = DATA(l_r_splitter)
).

"Assign top-of-page
mr_ui->create_top_of_page( l_r_splitter ).

3 containers: left 2 rows, right 1 row

Parameters Comments
IMPORTING
iv_3c_l2r_r1r abap_true
iv_left_col_width Integer; optional to set left column width
iv_top_row_height Integer; optional to set top row height
EXPORTING
er_alv_top_left ALV object reference; not required if er_splitter2 is requested
er_alv_bottom_left ALV object reference
er_alv_right ALV object reference
er_splitter2 Splitter reference for top-of-page; not required if er_alv_top_left is requested
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm2 TYPE REF TO cl_gui_alv_grid.

*-----------------------------------------------------------------------
"Without top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_3c_l2r_r1r      = abap_true
    iv_top_row_height  = 25
  IMPORTING
    er_alv_top_left    = mr_alv_hdr
    er_alv_bottom_left = mr_alv_itm
    er_alv_right       = mr_alv_itm2
).

*-----------------------------------------------------------------------
"With top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_3c_l2r_r1r      = abap_true
    iv_top_row_height  = 25
  IMPORTING
    er_alv_bottom_left = mr_alv_itm
    er_alv_right       = mr_alv_itm2
    er_splitter2       = DATA(l_r_splitter2)
).

3 containers: left 1 row, right 2 rows

Parameters Comments
IMPORTING
iv_3c_l1r_r2r abap_true
iv_left_col_width Integer; optional to set left column width
iv_top_row_height Integer; optional to set top row height
EXPORTING
er_alv_top_right ALV object reference; not required if er_splitter2 is requested
er_alv_bottom_right ALV object reference
er_alv_left ALV object reference
er_splitter2 Splitter reference for top-of-page; not required if er_alv_top_right is requested
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm2 TYPE REF TO cl_gui_alv_grid.

*-----------------------------------------------------------------------
"Without top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_3c_l1r_r2r       = abap_true
    iv_top_row_height   = 25
  IMPORTING
    er_alv_top_right    = mr_alv_hdr
    er_alv_bottom_right = mr_alv_itm
    er_alv_left         = mr_alv_itm2
).

*-----------------------------------------------------------------------
"With top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_3c_l1r_r2r       = abap_true
    iv_top_row_height   = 25
  IMPORTING
    er_alv_bottom_right = mr_alv_itm
    er_alv_left         = mr_alv_itm2
    er_splitter2        = DATA(l_r_splitter2)
).

"Assign top-of-page
mr_ui->create_top_of_page( l_r_splitter2 ).

4 containers: top 2 columns, bottom 2 columns

Parameters Comments
IMPORTING
iv_4c_t2c_b2c abap_true
iv_left_col_width Integer; optional to set left column width
iv_top_row_height Integer; optional to set top row height
EXPORTING
er_alv_top_left ALV object reference
er_alv_top_right ALV object reference
er_alv_bottom_left ALV object reference
er_alv_bottom_right ALV object reference
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm2 TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm3 TYPE REF TO cl_gui_alv_grid.

mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_4c_t2c_b2c       = abap_true
    iv_top_row_height   = 25
  IMPORTING
    er_alv_top_left     = mr_alv_hdr
    er_alv_top_right    = mr_alv_itm
    er_alv_bottom_left  = mr_alv_itm2
    er_alv_bottom_right = mr_alv_itm3
).

4 containers: left 1 row, right 3 rows

Parameters Comments
IMPORTING
iv_4c_l1r_r3r abap_true
iv_left_col_width Integer; optional to set left column width
iv_top_row_height Integer; optional to set top row height
EXPORTING
er_alv_left ALV object reference
er_alv_top_right ALV object reference; not required if er_splitter2 is requested
er_alv_middle_right ALV object reference
er_alv_bottom_right ALV object reference
er_splitter2 Splitter reference for top-of-page; not required if er_alv_top_right is requested
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm2 TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm3 TYPE REF TO cl_gui_alv_grid.

*-----------------------------------------------------------------------
"Without top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_4c_l1r_r3r       = abap_true
    iv_top_row_height   = 25
  IMPORTING
    er_alv_left         = mr_alv_hdr
    er_alv_top_right    = mr_alv_itm
    er_alv_middle_right = mr_alv_itm2
    er_alv_bottom_right = mr_alv_itm3
).

*-----------------------------------------------------------------------
"With top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_4c_l1r_r3r       = abap_true
    iv_top_row_height   = 25
  IMPORTING
    er_alv_left         = mr_alv_hdr
    er_alv_middle_right = mr_alv_itm2
    er_alv_bottom_right = mr_alv_itm3
    er_splitter2        = DATA(l_r_splitter2)
).

"Assign top-of-page
mr_ui->create_top_of_page( l_r_splitter2 ).

4 containers: left 3 rows, right 1 row

Parameters Comments
IMPORTING
iv_4c_l3r_r1r abap_true
iv_left_col_width Integer; optional to set left column width
iv_top_row_height Integer; optional to set top row height
EXPORTING
er_alv_top_left ALV object reference; not required if er_splitter2 is requested
er_alv_middle_left ALV object reference
er_alv_bottom_left ALV object reference
er_alv_right ALV object reference
er_splitter2 Splitter reference for top-of-page; not required if er_alv_top_left is requested
DATA: 
  mr_alv_serv TYPE REF TO zgb_cl_gui_alv_grid_ref,
  mr_alv_hdr  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm  TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm2 TYPE REF TO cl_gui_alv_grid,
  mr_alv_itm3 TYPE REF TO cl_gui_alv_grid.

*-----------------------------------------------------------------------
"Without top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_4c_l3r_r1r      = abap_true
    iv_top_row_height  = 25
  IMPORTING
    er_alv_top_left    = mr_alv_hdr
    er_alv_middle_left = mr_alv_itm
    er_alv_bottom_left = mr_alv_itm2
    er_alv_right       = mr_alv_itm3
).

*-----------------------------------------------------------------------
"With top-of-page
mr_alv_serv->get_alv_ly_ref(
  EXPORTING
    iv_4c_l3r_r1r      = abap_true
    iv_top_row_height  = 25
  IMPORTING
    er_alv_middle_left = mr_alv_itm
    er_alv_bottom_left = mr_alv_itm2
    er_alv_right       = mr_alv_itm3
    er_splitter2       = DATA(l_r_splitter2)
).

"Assign top-of-page
mr_ui->create_top_of_page( l_r_splitter2 ).

This section contains premium content accessible by paid members only. Please click here to join our membership to support us.

For premium members, please login below to access this content.