OOPS ALV in SAP ABAP

Hello Friends, if you are trying to learn OOPS ALV in SAP ABAP | OOPS ALV Report Creation in SAP | OOPS ALV Tutorial in SAP ABAP | OOPS ALV Notes in SAP ABAP | OOPS ALV Step by step creation | OOPS ALV Notes for Freshers | OOPS ALV Notes for Beginner then you learn it from here.

If we want to work on OOPS ALV then we need to create one screen, create one custom control in
it. Custom control we can not use it directly, so refer it to custom container. From Custom
Container, we can not display the data, so refer it to grid display.

OOPS ALV

CL_GUI_CUSTOM_CONTAINER:- Global Class which refer the Custom Control screen element
CL_GUI_ALV_GRID:- Global class which refer the ALV Grid.
SET_TABLE_FOR_FIRST_DISPLAY :- This is a method in CL_GUI_ALV_GRID which is used to display
the data.
If you want to call this method then we must create object for gird class. Whenever we create the
object for gird class then automatically one constructor is triggered and asks the input as object
name of container class. Whenever we create the object for container class then automatically
one constructor is triggered and asks the input as container name.

Steps to work with OOPS ALV:-

  1. Create the selection-screen / input fields.
  2. Declare the data internal table and field catalog internal table
  3. Create the reference to the container and grid class start-ofselection.
  4. Call screen & place custom control component in it.

PBO of the screen: –

  1. Design the back button
  2. Create the object to the container and gird class
  3. Fill the data internal table
  4. Fill the field catalog
  5. Call the SET_TABLE_FOR_FIRST_DISPLAY method

PAI of the screen

  1. Logic of back button
    ➔Based on the given customer number, display the customer information from KNA1
    table
REPORT ztest_cust_info1.
DATA lv_kunnr TYPE kunnr.
DATA obj_cus_con TYPE REF TO cl_gui_custom_container.
DATA obj_grid TYPE REF TO cl_gui_alv_grid.
DATA lt_fcat TYPE lvc_t_fcat .
DATA ls_fcat LIKE LINE OF lt_fcat.
DATA lv_count TYPE i.
SELECT-OPTIONS s_kunnr FOR lv_kunnr.
START-OF-SELECTION.
CALL SCREEN 2222.
&---------------------------------------------------------------------*
*& Module STATUS_2222 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_2222 OUTPUT.
SET PF-STATUS 'PF'.
CREATE OBJECT obj_cus_con
EXPORTING
container_name = 'CUST_CTRL'.
CREATE OBJECT obj_grid
EXPORTING
i_parent
= obj_cus_con.
SELECT kunnr, name1, ort01 FROM kna1 INTO TABLE @DATA(lt_kna1) WHERE kunnr IN
@s_kunnr.
IF lt_kna1 IS NOT INITIAL.
PERFORM fill_fcat USING 'KUNNR' 'Customer'.
PERFORM fill_fcat USING 'NAME1' 'Customer Name'.
PERFORM fill_fcat USING 'ORT01' 'City'.
CALL METHOD obj_grid->set_table_for_first_display
CHANGING
it_outtab
= lt_kna1
it_fieldcatalog
= lt_fcat.
ENDIF.
ENDMODULE.
FORM fill_fcat
USING
VALUE(p_fname)
VALUE(p_value).
lv_count = lv_count + 1.
ls_fcat-fieldname = p_fname.
ls_fcat-col_pos = lv_count.
ls_fcat-coltext = p_value.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ENDFORM.

*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_2222 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_2222 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.

Based on the given customer number, display the Sales information from VBAK table
and apply some colours to the output.

*&---------------------------------------------------------------------*
*& Report ZTEST_SO
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest_so.
TYPES: BEGIN OF ty_so,
vbeln TYPE vbak-vbeln,
vbtyp TYPE vbak-vbtyp,
audat TYPE vbak-audat,
kunnr TYPE kunnr,
col
TYPE char4,
END OF ty_so.
DATA: lv_kunnr TYPE kunnr,
obj_so_cc TYPE REF TO cl_gui_custom_container,
obj_so_gr TYPE REF TO cl_gui_alv_grid,
lt_so
TYPE TABLE OF ty_so,
ls_so
TYPE ty_so,
lt_fcat
TYPE lvc_t_fcat,
ls_fcat
TYPE lvc_s_fcat,
ls_layout TYPE lvc_s_layo.
SELECT-OPTIONS s_kunnr FOR lv_kunnr.
START-OF-SELECTION.
CALL SCREEN 1111.
*&---------------------------------------------------------------------*
*& Module STATUS_1111 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_1111 OUTPUT.
SET PF-STATUS 'PF_SO'.
* SET TITLEBAR 'xxx'.
CREATE OBJECT obj_so_cc
EXPORTING
container_name = 'CC_SO'.
CREATE OBJECT obj_so_gr
EXPORTING
i_parent = obj_so_cc.
SELECT vbeln
vbtyp
audat
kunnr
FROM vbak INTO TABLE lt_so
WHERE kunnr IN s_kunnr.
LOOP AT lt_so ASSIGNING FIELD-SYMBOL(<fs_so>).
CASE <fs_so>-vbtyp.
WHEN 'A'.
<fs_so>-col = 'C310'.
WHEN 'B'.
<fs_so>-col = 'C410'.
WHEN 'C'.
<fs_so>-col = 'C510'.
WHEN OTHERS.
<fs_so>-col = 'C610'.
ENDCASE.
ENDLOOP.
PERFORM fill_fieldcatalog.
ls_layout-zebra = 'X'.
ls_layout-info_fname = 'COL'.
CALL METHOD obj_so_gr->set_table_for_first_display
EXPORTING
is_layout
= ls_layout
" Layout
CHANGING
it_outtab
= lt_so
" Output Table
it_fieldcatalog = lt_fcat .
" Field Catalog
ENDMODULE.
FORM fill_fieldcatalog .
ls_fcat-fieldname = 'VBELN'.
ls_fcat-col_pos = 1.
ls_fcat-coltext = 'SO NUM'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'VBTYP'.
ls_fcat-col_pos = 2.
ls_fcat-coltext = 'Doc Type'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'AUDAT'.
ls_fcat-col_pos = 3.
ls_fcat-coltext = 'Doc Date'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'KUNNR'.
ls_fcat-col_pos = 4.
ls_fcat-coltext = 'Customer'.
* LS_FCAT-emphasize = 'C310'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ENDFORM.
MODULE user_command_1111 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.

Based on the given customer number, display the Sales information from VBAK table
and apply some colours for particular one column in the output.

*&---------------------------------------------------------------------*
*& Report ZTEST_SO
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest_so1.
TYPES: BEGIN OF ty_so,
vbeln TYPE vbak-vbeln,
vbtyp TYPE vbak-vbtyp,
audat TYPE vbak-audat,
kunnr TYPE kunnr,
col
TYPE lvc_t_scol,
END OF ty_so.
DATA: lv_kunnr TYPE kunnr,
obj_so_cc TYPE REF TO cl_gui_custom_container,
obj_so_gr TYPE REF TO cl_gui_alv_grid,
lt_so
TYPE TABLE OF ty_so,
ls_so
TYPE ty_so,
lt_fcat
TYPE lvc_t_fcat,
ls_fcat
TYPE lvc_s_fcat,
ls_layout TYPE lvc_s_layo,
ls_scol TYPE lvc_s_scol.
SELECT-OPTIONS s_kunnr FOR lv_kunnr.
START-OF-SELECTION.
CALL SCREEN 1111.
MODULE status_1111 OUTPUT.
SET PF-STATUS 'PF_SO'.
CREATE OBJECT obj_so_cc
EXPORTING
container_name = 'CC_SO'.
CREATE OBJECT obj_so_gr
EXPORTING
i_parent = obj_so_cc.
SELECT vbeln
vbtyp
audat
kunnr
FROM vbak INTO CORRESPONDING FIELDS OF TABLE lt_so
WHERE kunnr IN s_kunnr.
LOOP AT lt_so ASSIGNING FIELD-SYMBOL(<fs_so>).
CASE <fs_so>-vbtyp.
WHEN 'A'.
ls_scol-fname = 'VBELN'.
ls_scol-color-col = '3'.
ls_scol-color-int = '1'.
ls_scol-color-inv = '0'.
APPEND ls_scol TO <fs_so>-col.
CLEAR ls_scol.
WHEN 'B'.
ls_scol-fname = 'VBELN'.
ls_scol-color-col = '4'.
ls_scol-color-int = '1'.
ls_scol-color-inv = '0'.
APPEND ls_scol TO <fs_so>-col.
CLEAR ls_scol.
WHEN 'C'.
ls_scol-fname = 'VBELN'.
ls_scol-color-col = '5'.
ls_scol-color-int = '1'.
ls_scol-color-inv = '0'.
APPEND ls_scol TO <fs_so>-col.
CLEAR ls_scol.
WHEN OTHERS.
ls_scol-fname = 'VBELN'.
ls_scol-color-col = '6'.
ls_scol-color-int = '1'.
ls_scol-color-inv = '0'.
APPEND ls_scol TO <fs_so>-col.
CLEAR ls_scol.
ENDCASE.
ENDLOOP.
PERFORM fill_fieldcatalog.
ls_layout-zebra = 'X'.
ls_layout-ctab_fname = 'COL'.
CALL METHOD obj_so_gr->set_table_for_first_display
EXPORTING
is_layout
= ls_layout
" Layout
CHANGING
it_outtab
= lt_so
" Output Table
it_fieldcatalog = lt_fcat .
" Field Catalog
ENDMODULE.
FORM fill_fieldcatalog .
ls_fcat-fieldname = 'VBELN'.
ls_fcat-col_pos = 1.
ls_fcat-coltext = 'SO NUM'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'VBTYP'.
ls_fcat-col_pos = 2.
ls_fcat-coltext = 'Doc Type'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'AUDAT'.
ls_fcat-col_pos = 3.
ls_fcat-coltext = 'Doc Date'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'KUNNR'.
ls_fcat-col_pos = 4.
ls_fcat-coltext = 'Customer'.
* LS_FCAT-emphasize = 'C310'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ENDFORM.
MODULE user_command_1111 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.

Based on the given customer number, display the customer information from KNA1
table. If double click on customer number, display the sales orders related to that
customer in the next screen.

REPORT ztest_cust_info2.
TYPES: BEGIN OF ty_kna1,
kunnr TYPE kunnr,
name1 TYPE name1,
ort01 TYPE ort01,
END OF ty_kna1.
DATA lv_kunnr TYPE kunnr.
DATA obj_cus_con TYPE REF TO cl_gui_custom_container.
DATA obj_grid TYPE REF TO cl_gui_alv_grid.
DATA lt_fcat TYPE lvc_t_fcat .
DATA ls_fcat LIKE LINE OF lt_fcat.
DATA lv_count TYPE i.
DATA lt_fcat_so TYPE lvc_t_fcat.
DATA ls_fcat_so TYPE lvc_s_fcat.
DATA obj_cc_so TYPE REF TO cl_gui_custom_container.
DATA obj_grid_so TYPE REF TO cl_gui_alv_grid.
DATA lt_kna1 TYPE TABLE OF ty_kna1.
DATA ls_kna1 TYPE ty_kna1.
SELECT-OPTIONS s_kunnr FOR lv_kunnr.
CLASS lcl_so DEFINITION.
PUBLIC SECTION.
METHODS: ehm_so FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row
e_column.
ENDCLASS.
CLASS lcl_so IMPLEMENTATION.
METHOD ehm_so.
IF e_column-fieldname = 'KUNNR'.
READ TABLE lt_kna1 INTO ls_kna1 INDEX e_row-index.
CALL SCREEN 2223.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA obj_so TYPE REF TO lcl_so.
CREATE OBJECT obj_so.
CALL SCREEN 2222.
MODULE status_2222 OUTPUT.
SET PF-STATUS 'PF'.
CREATE OBJECT obj_cus_con
EXPORTING
container_name = 'CUST_CTRL'.
CREATE OBJECT obj_grid
EXPORTING
i_parent = obj_cus_con.
SELECT kunnr name1 ort01 FROM kna1 INTO TABLE lt_kna1 WHERE kunnr IN s_kunnr.
IF lt_kna1 IS NOT INITIAL.
PERFORM fill_fcat USING 'KUNNR' 'Customer'.
PERFORM fill_fcat USING 'NAME1' 'Customer Name'.
PERFORM fill_fcat USING 'ORT01' 'City'.
SET HANDLER obj_so->ehm_so FOR obj_grid.
CALL METHOD obj_grid->set_table_for_first_display
CHANGING
it_outtab
= lt_kna1
it_fieldcatalog = lt_fcat.
ENDIF.
ENDMODULE.
FORM fill_fcat
USING
VALUE(p_fname)
VALUE(p_value).
lv_count = lv_count + 1.
ls_fcat-fieldname = p_fname.
ls_fcat-col_pos = lv_count.
ls_fcat-coltext = p_value.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ENDFORM.
MODULE user_command_2222 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.
MODULE status_2223 OUTPUT.
SET PF-STATUS 'PF_SO'.
* SET TITLEBAR 'xxx'.
CREATE OBJECT obj_cc_so
EXPORTING
container_name = 'CC_SO'.
CREATE OBJECT obj_grid_so
EXPORTING
i_parent = obj_cc_so.
SELECT vbeln, kunnr FROM vbak INTO TABLE @DATA(lt_vbak) WHERE kunnr =
@ls_kna1-kunnr.
ls_fcat_so-fieldname = 'VBELN'.
ls_fcat_so-col_pos = 1.
ls_fcat_so-coltext = 'SO Num'.
APPEND ls_fcat_so TO lt_fcat_so.
CLEAR ls_fcat_so.
ls_fcat_so-fieldname = 'KUNNR'.
ls_fcat_so-col_pos = 2.
ls_fcat_so-coltext = 'Customer'.
APPEND ls_fcat_so TO lt_fcat_so.
CLEAR ls_fcat_so.
CALL METHOD obj_grid_so->set_table_for_first_display
CHANGING
it_outtab
= lt_vbak
" Output Table
it_fieldcatalog = lt_fcat_so.
" Field Catalog
ENDMODULE.
MODULE user_command_2223 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE TO SCREEN 0.
ENDIF.
ENDMODULE.

If we double click on customer 2000, sales information should display in the second screen.

Based on the given sales document number, fetch the sales information. Remove the
ascending and descending options from standard tool bar.

REPORT ztest_so2.
TYPES: BEGIN OF ty_so,
vbeln TYPE vbeln_va,
vbtyp TYPE vbtyp,
audat TYPE audat,
kunnr TYPE kunnr,
END OF ty_so.
DATA: lv_vbeln
TYPE vbak-vbeln,
obj_so_cc TYPE REF TO cl_gui_custom_container,
obj_so_gr TYPE REF TO cl_gui_alv_grid,
lt_fcat
TYPE lvc_t_fcat,
ls_fcat
TYPE lvc_s_fcat,
lt_so
TYPE TABLE OF ty_so,
ls_so
TYPE ty_so,
lt_tool
TYPE ui_functions,
ls_tool
TYPE ui_func.
SELECT-OPTIONS s_vbeln FOR lv_vbeln.
START-OF-SELECTION.
CALL SCREEN 1234.
MODULE status_1234 OUTPUT.
SET PF-STATUS 'PF_SO'.
CREATE OBJECT obj_so_cc
EXPORTING
container_name = 'CC_SO'.
CREATE OBJECT obj_so_gr
EXPORTING
i_parent = obj_so_cc.
SELECT vbeln
vbtyp
audat
kunnr
FROM vbak INTO TABLE lt_so
WHERE vbeln IN s_vbeln.
PERFORM fill_fcat. "Fill field catalog
PERFORM toobar_excl. "Toolbar excluding icons list
CALL METHOD obj_so_gr->set_table_for_first_display
EXPORTING
it_toolbar_excluding = lt_tool
Functions
CHANGING
it_outtab
= lt_so
" Output Table
it_fieldcatalog
= lt_fcat.
ENDMODULE.


FORM fill_fcat.
ls_fcat-fieldname = 'VBELN'.
ls_fcat-col_pos = 1.
ls_fcat-coltext = 'SO NUM'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'AUDAT'.
ls_fcat-col_pos = 2.
ls_fcat-coltext = 'Doc Date'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'VBTYP'.
ls_fcat-col_pos = 3.
ls_fcat-coltext = 'Doc Type'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'KUNNR'.
ls_fcat-col_pos = 4.
ls_fcat-coltext = 'Customer'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ENDFORM.
FORM toobar_excl.
ls_tool = cl_gui_alv_grid=>mc_fc_sort_asc.
APPEND ls_tool TO lt_tool.
ls_tool = cl_gui_alv_grid=>mc_fc_sort_dsc.
APPEND ls_tool TO lt_tool.
ENDFORM.
MODULE user_command_1234 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.

Based on the given sales document number, fetch Sales and Billing information and
display both information in the single screen.

REPORT ztest_so2.
TYPES: BEGIN OF ty_so,
vbeln TYPE vbeln_va,
vbtyp TYPE vbtyp,
audat TYPE audat,
kunnr TYPE kunnr,
END OF ty_so,
BEGIN OF ty_bill,
vbeln TYPE vbrk-vbeln,
posnr TYPE vbrp-posnr,
matnr TYPE matnr,
fkimg TYPE fkimg,
netwr TYPE vbrp-netwr,
END OF ty_bill.
DATA: lv_vbeln TYPE vbak-vbeln,
obj_so_cc TYPE REF TO cl_gui_custom_container,
obj_so_gr TYPE REF TO cl_gui_alv_grid,
obj_bl_cc TYPE REF TO cl_gui_custom_container,
obj_bl_gr TYPE REF TO cl_gui_alv_grid,
lt_fcat
TYPE lvc_t_fcat,
ls_fcat
TYPE lvc_s_fcat,
lt_fcat2 TYPE lvc_t_fcat,
ls_fcat2 TYPE lvc_s_fcat,
lt_so
TYPE TABLE OF ty_so,
ls_so
TYPE ty_so,
lt_bill
TYPE TABLE OF ty_bill,
ls_bill
TYPE ty_bill,
lt_tool
ls_tool
TYPE ui_functions,
TYPE ui_func.
SELECT-OPTIONS s_vbeln FOR lv_vbeln.
START-OF-SELECTION.
CALL SCREEN 1234.
MODULE status_1234 OUTPUT.
SET PF-STATUS 'PF_SO'.
CREATE OBJECT obj_so_cc
EXPORTING
container_name = 'CC_SO'.
CREATE OBJECT obj_so_gr
EXPORTING
i_parent = obj_so_cc.
CREATE OBJECT obj_bl_cc
EXPORTING
container_name = 'CC_BILL'.
CREATE OBJECT obj_bl_gr
EXPORTING
i_parent = obj_bl_cc.
SELECT vbeln
vbtyp
audat
kunnr
FROM vbak INTO TABLE lt_so
WHERE vbeln IN s_vbeln.
IF lt_so IS NOT INITIAL.
SELECT vbeln,
posnr
FROM vbap INTO TABLE @DATA(lt_vbap)
WHERE vbeln IN @s_vbeln.
IF lt_vbap IS NOT INITIAL.
SELECT vbeln
posnr
matnr
fkimg
netwr
FROM vbrp INTO TABLE lt_bill
FOR ALL ENTRIES IN lt_vbap
WHERE aubel = lt_vbap-vbeln
AND aupos = lt_vbap-posnr.
ENDIF.
ENDIF.

PERFORM fill_fcat. "Fill field catalog
PERFORM toobar_excl. "Toolbar excluding icons list
CALL METHOD obj_so_gr->set_table_for_first_display
EXPORTING
it_toolbar_excluding = lt_tool
Functions
CHANGING
it_outtab
= lt_so
" Output Table
it_fieldcatalog
= lt_fcat.
CALL METHOD obj_bl_gr->set_table_for_first_display
CHANGING
it_outtab
= lt_bill
it_fieldcatalog = lt_fcat2.
ENDMODULE.

FORM fill_fcat.
*SO field catalog
ls_fcat-fieldname = 'VBELN'.
ls_fcat-col_pos = 1.
ls_fcat-coltext = 'SO NUM'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'AUDAT'.
ls_fcat-col_pos = 2.
ls_fcat-coltext = 'Doc Date'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'VBTYP'.
ls_fcat-col_pos = 3.
ls_fcat-coltext = 'Doc Type'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ls_fcat-fieldname = 'KUNNR'.
ls_fcat-col_pos = 4.
ls_fcat-coltext = 'Customer'.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
*Billing Fieldcatalog
ls_fcat2-fieldname = 'VBELN'.
ls_fcat2-col_pos = 1.
ls_fcat2-coltext = 'Billing Num'.
APPEND ls_fcat2 TO lt_fcat2.
CLEAR ls_fcat2.
ls_fcat2-fieldname = 'POSNR'.
ls_fcat2-col_pos = 2.
ls_fcat2-coltext = 'Billing Item'.
APPEND ls_fcat2 TO lt_fcat2.
CLEAR ls_fcat2.
ls_fcat2-fieldname = 'MATNR'.
ls_fcat2-col_pos = 3.
ls_fcat2-coltext = 'Material'.
APPEND ls_fcat2 TO lt_fcat2.
CLEAR ls_fcat2.
ls_fcat2-fieldname = 'FKIMG'.
ls_fcat2-col_pos = 4.
ls_fcat2-coltext = 'Quantity'.
APPEND ls_fcat2 TO lt_fcat2.
CLEAR ls_fcat2.
ls_fcat2-fieldname = 'NETWR'.
ls_fcat2-col_pos = 5.
ls_fcat2-coltext = 'Net Price'.
APPEND ls_fcat2 TO lt_fcat2.
CLEAR ls_fcat2.
ENDFORM.

FORM toobar_excl.
ls_tool = cl_gui_alv_grid=>mc_fc_sort_asc.
APPEND ls_tool TO lt_tool.
ls_tool = cl_gui_alv_grid=>mc_fc_sort_dsc.
APPEND ls_tool TO lt_tool.
ENDFORM.
MODULE user_command_1234 INPUT.
IF sy-ucomm = 'BACK'.
LEAVE PROGRAM.
ENDIF.
ENDMODULE.

Output:

Leave a Comment