ALV Spaltenbreite optimieren

Bei der Ausgabe einer ALV Tabelle ist die Spaltenbreite oftmals sehr ungünstig (zu breit oder zu schmal), so dass die Daten beispielsweise abgeschnitten werden. Die Spaltenbreite kann per Code auf ein optimales Maß gebracht werden. Dabei werden die Spalten so breit dargestellt, dass der längste vorhandene Wert einer Spalte optimal dargestellt wird (vergleichbar mit einem Doppelklilck zwischen zwei Spalten in Excel).

In diesem Beispiel wird das Anpassen der Spaltenbreite in der Methode SET_COLUMN_OPTIMIZE der Klasse Z_TEST_VIEW implementiert.

Deklaration

 CLASS z_test_view DEFINITION.
   PUBLIC SECTION.
     METHODS set_column_optimize
          IMPORTING icl_alv TYPE REF TO cl_salv_table.
 
 ENDCLASS.

Implementation

 CLASS z_test_view IMPLEMENTATION. 
 *&---------------------------------------------------------------------*
 *        Breite der Spalten optimieren
 *----------------------------------------------------------------------*
   METHOD set_column_optimize.
     DATA: lcl_columns_table TYPE REF TO cl_salv_columns_table.
 
     IF icl_alv IS NOT INITIAL.
       lcl_columns_table = icl_alv->get_columns( ).
       lcl_columns_table->set_optimize( abap_true ).
 
     ENDIF.
   ENDMETHOD. 
 ENDCLASS.

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 optimalen Spaltenbreite
     gcl_view->set_column_optimize( icl_alv = gcl_alv ). 

   " Ausgabe der Tabelle
    gcl_alv->display( ).

Ergebnis

ALV Ausgabe ohne Spaltenoptimierung
ALV Ausgabe ohne Spaltenoptimierung
ALV Ausgabe mit optimierten Spalten
ALV Ausgabe mit optimierten Spalten