ALV Farbe einer Spalte setzen

Um eine bessere Lesbarkeit in einem ALV Grid zu erreichen, kann es sinnvoll sein, die Farben (Hintergrund und Schrift) einer Spalte zu verändern. Der folgende Code Abschnitt beschreibt die Vorgehensweise. Die Farbgestaltung wird in der Methode SET_COLUMN_COLOR der Klasse Z_TEST_VIEW implementiert.

Deklaration

 CLASS z_test_view DEFINITION.
   PUBLIC SECTION.
 
    METHODS set_column_color
      IMPORTING
        icl_alv    TYPE REF TO cl_salv_table
        iv_column  TYPE lvc_fname
        iv_color   TYPE int4
        iv_intense TYPE int1
        iv_inverse TYPE int4 .
 
 ENDCLASS.

Implementation

CLASS z_test_view IMPLEMENTATION.

*----------------------------------------------------------------------*
*        Spaltenfarbe setzen
*----------------------------------------------------------------------*
  METHOD set_column_color.

    DATA: lcl_columns_table TYPE REF TO cl_salv_columns_table,
          lcl_column        TYPE REF TO cl_salv_column_table,
          ls_color          TYPE lvc_s_colo.

    IF icl_alv IS NOT INITIAL.
      TRY.
          lcl_columns_table = icl_alv->get_columns( ).
          lcl_column ?= lcl_columns_table->get_column( iv_column ).

          ls_color-col = iv_color.
          ls_color-int = iv_intense.
          ls_color-inv = iv_inverse.


          IF ls_color IS NOT INITIAL AND
            lcl_column IS NOT INITIAL.
            lcl_column->set_color( ls_color ).
          ENDIF.

        CATCH cx_salv_not_found.
      ENDTRY.

    ENDIF.
  ENDMETHOD.

Aufruf

 DATA: gcl_alv TYPE REF TO cl_salv_table,    " Objektreferenz für ALV Grid
       gcl_view type ref to z_test_view,     " Objektreferenz auf View Objekt 

...

   create OBJECT gcl_view. 

...

   " erzeugen des ALV Objekts
   cl_salv_table=>factory(
      IMPORTING
        r_salv_table = gcl_alv       " Referenz auf ALV Grid
       CHANGING
         t_table = gcl_model->gt_flights ).  " Tabelle mit Daten für Ausgabe 
...

   " Setzen der Farbe für die Spalte PRICE
  gcl_view->set_column_color( icl_alv = gcl_alv
                              iv_column = 'PRICE'
                              iv_color = 6
                              iv_intense = 0
                              iv_inverse = 0 ).

  " Ausgabe der Tabelle
  gcl_alv->display( ).

Ergebnis

ALV Grid ohne gesetzte Spaltenfarbe
ALV Grid ohne gesetzte Spaltenfarbe

ALV Grid mit gesetzter Spaltenfarbe
ALV Grid mit gesetzter Spaltenfarbe