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.
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.