Display ALV List easily in ABAP using CL_SALV_TABLE Part VI. - Display Settings

Get FREE Access to the CL_SALV_TABLE Bonus Content

Updated on 17.11.2015

In this post series, I show you how to display a simple list with a flight schedule. I also show you the most common ALV settings that you might need. However, I don't show you how to handle events in CL_SALV_TABLE, and how to add custom buttons at the top of your ALV. But, I have good news for you! I re-wrote the complete source code in OO ABAP way with the help of the 7.4 language elements.

What is covered in the bonus content:

  • Source Code in 7.4 OO ABAP Version
  • Handling Hotspot Click Event
  • Adding Custom Button to the Toolbar
  • Handling Custom Button Clicks [NEW]


Overview

I think, we are getting closer to have a nice, feature-rich ALV list week by week. In the previous post, I showed you that how to enable the standard toolbar on the top of our ALV list.

Today, we are going to work on the appearance, namely I'm going to show you that how set the header of the ALV list, and how to set the rows striped. Alright, we have the requirements, but how to satisfy them? Easy, and you already know it, we have another subclass of the CL_SALV_TABLE, called CL_SALV_DISPLAY_SETTINGS that is responsible for the appearance of our ALV list.


Display Settings

As always, we are going to place the call of our new subroutine, called DISPLAY_SETTINGS in the usual INITIALIZE_ALV subroutine.

...
*&---------------------------------------------------------------------*
FORM initialize_alv.
*&---------------------------------------------------------------------*
  DATA message   TYPE REF TO cx_salv_msg.

  TRY.
      cl_salv_table=>factory(
      IMPORTING
        r_salv_table = alv
      CHANGING
        t_table      = flight_schedule ).

      columns = alv->get_columns( ).

      PERFORM enable_layout_settings.
      PERFORM optimize_column_width.
      PERFORM hide_client_column.
      PERFORM set_departure_country_column.
      PERFORM set_toolbar.
      PERFORM display_settings.
      " ...
      " PERFORM setting_n.
...


The DISPLAY_SETTINGS subroutine is responsible for two things: set the pattern of the rows to striped, and set the header of the ALV list. You can guess. We are going to use the GET_DISPLAY_SETTINGS() method of the CL_SALV_TABLE class that returns back a reference to its CL_SALV_DISPLAY_SETTINGS object. Then, we are going to save this reference into a variable, called display_settings with the type CL_SALV_DISPLAY_SETTINGS.

Next, we call the method SET_STRIPED_PATTERN() on the display_settings reference variable with the parameter true, and as a result, we get the rows with striped pattern.

At last, we call the method SET_LIST_HEADER() on the display_settings reference variable that is responsible to set the header of the ALV list. Cool & Easy, isn't it?

...
*&---------------------------------------------------------------------*
FORM display_settings.
*&---------------------------------------------------------------------*
  DATA display_settings TYPE REF TO cl_salv_display_settings.

  display_settings = alv->get_display_settings( ).
  display_settings->set_striped_pattern( if_salv_c_bool_sap=>true ).
  display_settings->set_list_header( 'Flight Schedule' ).
ENDFORM.                    " DISPLAY_SETTINGS
...


Complete Source Code

Get the complete source code:

************************************************************************
* Program:        ZDEMO_ALV06                                          *
* Request ID:     RXXXXXX                                              *
* User ID:        ALEXGONCZY                                           *
* Date:           2014.10.22.                                          *
* Description:    -                                                    *
************************************************************************
REPORT zdemo_alv06.

************************************************************************
* GLOBAL DATA DEFINITIONS                                              *
************************************************************************
*----------------------------------------------------------------------*
* INCLUDE - definitions                                                *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CONSTANT - definitions                                               *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* TYPE - definitions                                                   *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* DDIC - TABLE / STRUCTURE / VIEW definitions                          *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* STRUCTURE definitions                                                *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* RANGE definitions                                                    *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* REFERENCE definitions                                                *
*----------------------------------------------------------------------*
DATA alv     TYPE REF TO cl_salv_table.
DATA columns TYPE REF TO cl_salv_columns_table.
DATA column  TYPE REF TO cl_salv_column.

*----------------------------------------------------------------------*
* INTERNAL TABLE definitions                                           *
*----------------------------------------------------------------------*
DATA flight_schedule TYPE STANDARD TABLE OF spfli.

*----------------------------------------------------------------------*
* OTHER GLOBAL DATA definitions                                        *
*----------------------------------------------------------------------*
************************************************************************
* GLOBAL DATA DEFINITIONS - END                                        *
************************************************************************

************************************************************************
* SELECTION SCREENS                                                    *
************************************************************************
************************************************************************
* SELECTION SCREENS - END                                              *
************************************************************************

************************************************************************
* EVENTS                                                               *
************************************************************************
*----------------------------------------------------------------------*
* INITIALIZATON event                                                  *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST FOR event                       *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* START-OF-SELECTION event                                             *
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM get_flight_schedule.

  PERFORM initialize_alv.

  PERFORM display_alv.

*----------------------------------------------------------------------*
* END-OF-SELECTION event                                               *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* AT LINE-SELECTION event                                              *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* AT USER-COMMAND event                                                *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* TOP-OF-PAGE event                                                    *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* END-OF-PAGE event                                                    *
*----------------------------------------------------------------------*
************************************************************************
* EVENTS - END                                                         *
************************************************************************

************************************************************************
* SUBROUTINES                                                          *
************************************************************************
*&---------------------------------------------------------------------*
FORM get_flight_schedule.
*&---------------------------------------------------------------------*
  SELECT * FROM spfli INTO TABLE flight_schedule UP TO 100 ROWS.
ENDFORM.                    " GET_FLIGHT_SCHEDULE

*&---------------------------------------------------------------------*
FORM initialize_alv.
*&---------------------------------------------------------------------*
  DATA message   TYPE REF TO cx_salv_msg.

  TRY.
      cl_salv_table=>factory(
      IMPORTING
        r_salv_table = alv
      CHANGING
        t_table      = flight_schedule ).

      columns = alv->get_columns( ).

      PERFORM enable_layout_settings.
      PERFORM optimize_column_width.
      PERFORM hide_client_column.
      PERFORM set_departure_country_column.
      PERFORM set_toolbar.
      PERFORM display_settings.
      " ...
      " PERFORM setting_n.

    CATCH cx_salv_msg INTO message.
      " error handling
  ENDTRY.
ENDFORM.                    " INITIALIZE_ALV

*&---------------------------------------------------------------------*
FORM display_alv.
*&---------------------------------------------------------------------*
  alv->display( ).
ENDFORM.                    " DISPLAY_ALV

*&---------------------------------------------------------------------*
FORM enable_layout_settings.
*&---------------------------------------------------------------------*
  DATA layout_settings TYPE REF TO cl_salv_layout.
  DATA layout_key      TYPE salv_s_layout_key.

  layout_settings = alv->get_layout( ).

  layout_key-report = sy-repid.
  layout_settings->set_key( layout_key ).

  layout_settings->set_save_restriction( if_salv_c_layout=>restrict_none ).
ENDFORM.                    "ENABLE_LAYOUT_SETTINGS

*&---------------------------------------------------------------------*
FORM optimize_column_width.
*&---------------------------------------------------------------------*
  columns->set_optimize( ).
ENDFORM.                    "OPTIMIZE_COLUMN_WIDTH

*&---------------------------------------------------------------------*
FORM hide_client_column.
*&---------------------------------------------------------------------*
  DATA not_found TYPE REF TO cx_salv_not_found.

  TRY.
      column = columns->get_column( 'MANDT' ).
      column->set_visible( if_salv_c_bool_sap=>false ).
    CATCH cx_salv_not_found INTO not_found.
      " error handling
  ENDTRY.
ENDFORM.                    " HIDE_CLIENT_COLUMN

*&---------------------------------------------------------------------*
FORM set_departure_country_column.
*&---------------------------------------------------------------------*
  DATA not_found TYPE REF TO cx_salv_not_found.

  TRY.
      column = columns->get_column( 'COUNTRYFR' ).
      column->set_short_text( 'D. Country' ).
      column->set_medium_text( 'Dep. Country' ).
      column->set_long_text( 'Departure Country' ).
    CATCH cx_salv_not_found INTO not_found.
      " error handling
  ENDTRY.
ENDFORM.                    " SET_DEPARTURE_COUNTRY_COLUMN

*&---------------------------------------------------------------------*
FORM set_toolbar.
*&---------------------------------------------------------------------*
  DATA functions TYPE REF TO cl_salv_functions_list.

  functions = alv->get_functions( ).
  functions->set_all( ).
ENDFORM.                    " SET_TOOLBAR

*&---------------------------------------------------------------------*
FORM display_settings.
*&---------------------------------------------------------------------*
  DATA display_settings TYPE REF TO cl_salv_display_settings.

  display_settings = alv->get_display_settings( ).
  display_settings->set_striped_pattern( if_salv_c_bool_sap=>true ).
  display_settings->set_list_header( 'Flight Schedule' ).
ENDFORM.                    " DISPLAY_SETTINGS

************************************************************************
* SUBROUTINES - END                                                    *
************************************************************************


Summary

After running our program we get the following results: the title says 'Flight Schedule', and the rows are striped. That's it! :) I hope you liked it!


Stay tuned, I'm working on the next post!


blog comments powered by Disqus