How to display color for each row in SAP ALV List?

The old SAP ALV Display facilitates the user to color the cells, lines of record, columns etc. Every color is uniquely identified through a colour code. The following table illustrates the different colour codes.

Type of ColorCode
BlueC110
YellowC310
OrangeC711
GreenC510
RedC610
fig. Table of Colour Codes.

There are three important steps involved in colouring a line of record.

  1. Extend the internal table with the field (colour code) of Type C
  2. Set the value of field ‘info_fname’ of the layout.
  3. Assign the colour code to each line of record.
  • Extension of Internal table.

In order to colour the complete line of record, a new field must be added. This field is of Data type c. The field holds the colour code of the particular line of record.

TYPES: BEGIN OF ty_contact.

              INCLUDE STRUCTURE ztt_db_table2.

TYPES: line_of_record (4) TYPE c,

              END OF ty_contact.

DATA lt_contact TYPE TABLE OF ty_contact.

  • ASSIGNMENT of field INFO_FNAME in the layout.

The ALV List can be able to identify the newly added field (like above) through the field ‘INFO_FNAME’ of layout.

The Assignment is as shown below.

DATA ls_layout TYPE lvc_s_layo.

ls_layout-info_fname = ‘LINE_OF_RECORD’.

Please remember that the value assigned must be in capital letters. Otherwise it will not be able to identify correctly.

  • ASSIGNMENT OF COLOUR CODE TO EACH LINE OF RECORD.

The last and final step involved is to colour each line of record with the unique colour code. Each line of record is read through ‘LOOP AT’ loop. The Rows can be filtered through additional constraints. Let us look at the following example.

FIELD-SYMBOLS <ls_contact> TYPE ty_contact.

LOOP AT lt_contact ASSIGNING <ls_contact> WHERE contact_age > 30.

<ls_contact> – line_of_record = ‘C310’.

ENDLOOP.

              As shown in above code, each line of records in SAP ALV List is set with the colour code ‘C310’. This colour code indicates the colour ‘YELLOW’.

How to set the cell type as hotspots or Links in SAP ALV Display

The cell type of CL_GUI_ALV_GRID->MC_STYLE_HOTSPOT enables the user to navigate to a new page or session. It can also open a new window or display a list. It appears as a Link in the SAP ALV List.

The following steps are necessary to implement the HOTSPOT / LINKS

  1. Extent the Internal table with the additional field of type lvc_t_styl.
  2. Set the fields fieldname, style of lvc_t_Styl to each row of the ALV List. The column is specified in the fieldname.
  3. The stylename field of the layout is assigned with the fieldstyle component.

  • Extension of Internal table with Fieldstyle component

TYPES: BEGIN OF ty_contact_link.

              INCLUDE STRUCTURE ztt_db_table2.

TYPES: fieldstyle TYPE lvc_t_styl,

              END OF ty_contact_link.

  • Set the column in the SAP ALV List with the field style ‘CL_GUI_ALV_GRID=>mc_style_hotspot’.

DATA lt_contact TYPE TABLE OF ty_contact_link.

DATA ls_style TYPE lvc_s_styl.

FIELD SYMBOLS <ls_contact> TYPE ty_contact_link.

LOOP AT lt_contact ASSIGNING <ls_contact>.

ls_style-fieldname = ‘CONTACT_NAME’.

ls_style-style = cl_gui_alv_grid => mc_style_hotspot.

APPEND ls_style TO <ls_contact>-fieldstyle.

ENDLOOP

  • Setting the stylename field of the layout.

ls_layout-stylename = ’FIELDSTYLE’.

Note: The hotspot can be activated throught the field HOTSPOT of field catalog. The field HOTSPOT of the field catalog is set to ‘X’. The key advantage of this field is that the user does not have to add any additional field to the Internal table.

How to set the cell type as button in the SAP ALV List?

Button: The cell type of cl_gui_alv_grid=>mc_style_button resembles as a button in the user interface of the SAP ALV list. As the user clicks this button, any event can be executed like opening up a new window.

Dropdown List: It is used to provide a list of values as a dropdown list.

IMPLEMENTATION OF BUTTON:

              The following steps are necessary to implement the Button

  1. Extend the Internal table with the additional field of type LVC_T_STYL.
  2. Set the fields fieldname, style of lvc_t_styl to each row of the ALV List. The column is specified in the fieldname.
  3. The stylename field of the layout is assigned with the field style component.
  • Extension of Internal table with Fieldstyle component.

TYPES: BEGIN OF ty_contact.

              INCLUDE STRUCTURE ztt_db_table2.

TYPES: fieldstyle TYPE lvc_t_styl.

              END OF ty_contact.

  • Set the column in the SAP ALV List with the field style ‘cl_gui_alv_grid=>mc_style_button’.

DATA lt_contact TYPE TABLE OF ty_contact.

DATA ls_style TYPE lvc_s_styl.

FIELD_SYMBOLS <ls_contact> TYPE ty_contact.

LOOP AT lt_contact ASSIGNING <ls_contact>.

              ls_style-fieldname = ‘CONTACT_NAME’.

              ls_style-style = cl_gui_Alv_grid =>mc_style_button.

              APPEND ls_style TO <ls_contact>-fieldstyle.

ENDLOOP.

  • Setting the stylename field of the layout.

ls_layout-stylename = ’FIELDSTYLE’.

How to set the cell of the ALV List as a Dropdown list in SAP ABAP?

It is used to provide a list of values as a Drop down List.

There are three important steps involved in setting the cell as a drop down list.

  1. Filling the internal table lvc_t_dral.
  2. Setting the fields drdn_hndl, drdn_alias of field catalog.
  3. Call the method set_drop_down_table of the ALV object.
  • Filling the internal table lvc_t_dral.

Handle: The field Handle holds the value, which can be used to refer to the value mentioned in the field drdn_hndl of field catalog. Therefore it connects to the field catalog.

Value: It is considered as the Display name. It holds the value to be used in the Drop down list. If the field DRDN_ALIAS of the field catalog is initial, then this value is considered for the Drop down list.

INT_VALUE: It is considered as the Technical name. It also holds the value to be displayed in the Drop down List. If the field DRDN_ALIAS of the field catalog is ‘X’, then the value from the int_value field is used in the Drop down list.

Let us consider the following example:

DATA lt_dral TYPE lvc_t_dral.

DATA ls_dral TYPE lvc_s_dral.

ls_dral-handle = 3.

ls_dral-value = ‘Street1_value’.

ls_dral-int_value = ‘Street1_int_value’.

APPEND ls_dral TO lt_dral.

ls_dral-value = ‘Street2_value’.

ls_dral-int_value = ‘Street2_int_value’.

APPEND ls_dral TO lt_dral.

  • Setting the ‘DRDN’ fields of Field Catalog.

FIELD-SYMBOLS <ls_field_cat> TYPE lvc_s_fcat.

LOOP AT lt_field_cat ASSIGNING <ls_field_cat> WHERE fieldname = ‘CONTACT ADDRESS’.

<ls_field_cat> – drdn_hndl = 3.

<ls_field_cat> – drdn_alias = ‘X’.

ENDLOOP.

              In the above field catalog assignment, the field ‘DRDN_ALIAS’ is set to ‘X’, which means the value of field ‘INT_VALUE’ is considered in the Drop down list. The value of field ‘VALUE’ is ignored. If the field ‘DRDN_ALIAS’ is initial like <ls_field_cat> – drdn_alias = ‘ ‘, Then the value of field ‘VALUE’ is considered in the Drop down list.

  • Passing the internal table values lvc_t_dral to the ALV object.

The method set_drop_down_table of the ALV object is used to set the drop down values (Internal table) to the partical column ‘CONTACT_ADDRESS’ of the ALV List.

CALL METHOD lr_gui_alv_grid -> set_drop_down_table(

              EXPORTING

                            it_drop_down_alias = lt_dral ).

The above method call must happen before the method ‘SET_TABLE_FOR_FIRST_DISPLAY’ is called.

How to set the position of column in SAP ALV List using Field catalog

The column position in the SAP ALV List can be changed using the COL_POS field of the field catalog.

In the below example, the ‘contact_address’ column is set in the first position of the SAP ALV List.

Field-SYMBOLS: <ls_field_cat> TYPE lvc_s_fcat.

LOOP AT lt_field_cat ASSIGNING <ls_field_cat> WHERE fieldname = ‘CONTACT_ADDRESS’.

     <ls_field_cat> -col_pos = 1.

ENDLOOP.

How to rename the column in the SAP ALV List through field catalog

The column names can be changed with the help of the fields REPTEXT, SCRTEXT_L, SCRTEXT_M and SCRTEXT_L of field catalog. If you wish to use only text of field ‘scrtext_l’, then fill the text only in this field ‘SCRTEXT_L’. The other texts can be ignored as the ALV takes the filled text automatically.

FIELD-SYMBOLS: <ls_field_cat> TYPE lvc_s_fcat.

LOOP AT lt_field_cat ASSIGNING <ls_field_cat> WHERE fieldname = ‘CONTACT_ADDRESS’.

              <ls_field_cat> – reptext = ‘New Contact address’.

              <ls_field_cat> – scrtext_l = ‘New Contact add’.

              <ls_field_cat> – scrtext_m = ‘New Contact’.

              <ls_field_cat> – scrtext_s = ‘New Con’.

ENDLOOP.

How to delete a column from the SAP ALV List

The column can be deleted from the SAP ALV List using the field catalog. Column deletion is constrained based on the fieldname of the field catalog.

Let us look at the following example:

DELETE lt_field_cat WHERE fieldname = ‘Contact_address’.

Once it is deleted through the field catalog, it cannot be further added using the layout button of the toolbar.

How to insert a new column in to the SAP ALV list

A new column can be inserted in to the SAP ALV list by adjusting the following two entities.

  1. Structure or Type of the table.
  2. New entry in the field catalog internal table.
  • Structure or Type of the Table.

A local type is created with the new column.

              TYPES: BEGIN OF ty_contact.

                                INCLUDE STRUCTURE ztt_db_table2.

                                TYPES: new_contact_address TYPE char0064.

                            END OF ty_contact.

  • Insertion of new column details entry in field catalog.

DATA ls_field_cat TYPE lvc_s_fcat.

ls_field_cat -col_pos = 5.

ls_field_cat -fieldname = ‘NEW_CON_ADD’.

ls_field_cat -inttype = ‘C’.

ls_field_cat -datatype = ‘CHAR’.

ls_field_cat -intlen = 64.

ls_field_cat -scrtext_s= ‘New’.

ls_field_cat -scrtext_m= ‘New Contact’.

ls_field_cat -scrtext_l= ‘New Contact Address’.

APPEND ls_field_cat TO lt_field_cat.

How to hide the column of the SAP ALV List using Field Catalog field ‘NO_OUT’

The column can be hidden in the SAP ALV List using the field ‘NO_OUT’ of the field Catalog.

This field value is set to ABAP_TRUE in order to hide the column.

FIELD_SYMBOLS <ls_field_cat> TYPE lvc_s_fcat.

LOOP AT lt_field_cat ASSIGNING <ls_field_cat> WHERE fieldname = ‘CONTACT_ADDRESS’.

<ls_field_cat>-no_out = abap_true.

ENDLOOP.

The column can be shown once again using the layout button of the SAP ALV toolbar.

What are the different events of the class CL_GUI_ALV_GRID?

The class CL_GUI_ALV_GRID of the old ALV model provides different events. It is available in the Tab EVENTS of the class CL_GUI_ALV_GRID.

EventParameterDescription
BUTTON_CLICKE_ROW -> Row
E_COLUMN -> Column
E_ROW_NO -> Row id
It is triggered when a button is clicked.
USER_COMMANDE_UCOMM -> Function codeIt is triggered when a function is triggered,
DOUBLE_CLICK E_ROW -> Row
E_COLUMN -> Column
E_ROW_NO -> Row Id
It is triggered when a cell of the ALV Table is double clicked.
HOT_SPOT_CLICKE_ROW -> Row
E_COLUMN -> Column
E_ROW_NO -> Row Id
It is triggered when a Hotspot is clicked.
TOOLBARE_OBJECT -> It is an object of type CL_ALV_EVENT_TOOLBAR_SETIt is triggered when any entity on the toolbar is clicked.
Events of class CL_GUI_ALV_GRID

The implementation of the above events is similar for all events. It involves definition of Eventhandler, registering the Event handler with the SET HANDLER command.

The implementation of Double click event is shown below

CLASS zcl_handler DEFINITION PUBLIC.

PUBLIC SECTION.

CLASS_METHODS double_click_method FOR EVENT double_click

OF cl_gui_alv_grid IMPORTING e_row e_column es_row_no.

ENDCLASS.

CLASS zcl_handler IMPLEMENTATION.

METHOD double_click_method.

CALL FUNCTION ‘POPUP_TO_CONFIRM’

EXPORTING

titlebar = ‘Double Click occurred’

text_question = e_column-fieldname

text_button_1 = ‘Yes’

text_button_2 = ‘No’.

ENDMETHOD.

ENDCLASS.

Registration of Double Click event through SET HANDLER

SET HANDLER zcl_handler => double_click_method FOR lr_gui_alv_grid.

The class CL_GUI_ALV_GRID provides three methods to register events.

REGISTER_DELAYED_EVENT ( ) : If the cell of the ALV table or the line of record is changed, then this event can be used.

REGISTER_EDIT_EVENT ( ) :

If the data in the ALV is changed, then this event can be triggered automatically. The key benefit here is user does not have to click the ‘ENTER’ Button explicitly.

Let us look at this event with an example:

The edit event is registered with the help of the REGISTER_EDIT_EVENT method of the ALV object like below.

CALL METHOD lr_gui_alv_grid -> register_edit_event

EXPORTING

i_event_id = cl_gui_alv_grid => mc_evt_modified.

The parameter i_event_id is set to mc_evt_modified. By setting this event_id, the variable m_cell_edit is set explicitly to ‘X’. Even if the user forgets to click the enter key, then this variable m_cell_edit is set automatically.

REGISTER_F4_FOR_FIELDS ( ) :

If the F4- Value help for a field is clicked, then this event can be used.