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

