Sie sind auf Seite 1von 7

ajanzen.

com

ALV-Anzeige mit eigenen


Spaltenüberschriften und aktiven
Standardfunktionen
ajanzen.com

1 Einleitung
In dem vorliegenden Dokument wird anhand eines Beispiels auf die Möglichkeit einer
schnell programmierten Visualisierung von Informationen unter Verwendung der
Klasse CL_SALV_TABLE eingegangen. Zusätzlich wird gezeigt, wie die
Spaltenüberschriften angepasst und die SAP-Standardfunktionen aktiviert werden
können.

Das komplette Beispielcoding ist in Kapitel 3 enthalten. Nähere Informationen zum


Ablauf können Kapitel 2 entnommen werden.

1
ajanzen.com

2 Informationen zur Programmlogik


Im vorliegenden Beispiel werden die Informationen aus Tabelle SFLIGHT in eine
interne Tabelle selektiert und in Form eines ALVs (siehe Abbildung 1) visualisiert.

Im ersten Schritt des ALV-Aufrufes wird über die FACTORY-Methode der Klasse
CL_SALV_TABLE eine Instanz derselben Klasse erzeugt. Außerdem wird der Factory-
Methode die Tabelle mit den anzuzeigenden Informationen direkt mitgegeben. Eine
zusätzliche Angabe eines Feldkataloges ist nicht notwendig, da sich die
CL_SALV_TABLE-Klasse die Dictionary-Informationen anhand der Tabellenfelder
ermittelt.

Anschließend wird durch Aufruf von Methode SET_OPTIMIZE() der Klasse


CL_SALV_COLUMNS_TABLE die Spaltenbreite an den Inhalt angepasst.

Hinweis: Bei Klasse CL_SALV_COLUMNS_TABLE handelt es sich um das


Hauptobjekt zur Verwaltung von ALV-Spalten (plural!).

Im nächsten Schritt wollen wir die Spaltenüberschriften ändern. Dazu werden, unter
Verwendung von Methode GET der Spalten-Klasse, alle Spaltenobjekte in Form einer
internen Tabelle ermittelt. Mit einen LOOP über diese Tabelle kann für die einzelnen
Spaltenobjekte jetzt das Ändern der Spaltenüberschrift erfolgen. Für diese Aktivität
werden die Methoden

• SET_SHORT_TEXT(): Kurztext der Spaltenüberschrift ändern


• SET_MEDIUM_TEXT(): Text mittlerer Länge der Spaltenüberschrift ändern
• SET_LONG_TEXT(): Langtext der Spaltenüberschrift ändern

des jeweiligen Spaltenobjektes (singular!) angesprochen. Klasse CL_SALV_


COLUMN stellt das Spaltenobjekt dar.

Hinweis: Neben dem Ändern der Spaltenüberschriften stellt Klasse CL_SALV_


COLUMN unter anderem folgende Methoden bereit:

• Ausrichtung der Spalte ändern: SET_ALIGNMEN()


• Anzahl der Nachkommastellen ändern: SET_DECIMALS()
• Runden: SET_ROUND()
• …

2
ajanzen.com

Sofern einzelne Spaltenobjekte direkt angesprochen werden sollen kann das auch
über Methode CL_SALV_COLUMNS_TABLE-> GET_COLUMN( ‘SPALTENNAME‘ )
erfolgen. Das Ergebnis des Methodenaufrufes ist eine Instanz der Klasse CL_SALV_
COLUMN.

Zum Aktivieren aller Standardfunktionen wird Methode SET_ALL() der Klasse


CL_SALV_FUNCTIONS_LIST aufgerufen.

Abschließend findet die eigentliche Datenvisualisierung unter Verwendung der


Methode DISPLAY() statt.

Aus Abbildung 1 ist das Ergebnis des Reports ersichtlich. Dabei zeigt der rote Rahmen
die hinzugefügten Funktionen. Der grüne Rahmen zeigt die geänderten
Spaltenüberschriften.

Abbildung 1: Um Funktionen erweitertes ALV mit geänderten Spaltenüberschriften

3
3 Coding
*--------------------------------------------------------------------*
* Das vorliegende Programm dient der Demonstration eines SALV mit der
* Möglichkeit Spaltenüberschriften zu ändern. Zusätzlich werden alle
* Standardfunktionen aktiviert
*
* Date: 24.03.2015
*--------------------------------------------------------------------*
* Änderungen
*--------------------------------------------------------------------*

REPORT zaj_ren_con_funct_salv.

DATA: gr_salv TYPE REF TO cl_salv_table.


DATA: gr_columns TYPE REF TO cl_salv_columns_table.
DATA: gr_functions TYPE REF TO cl_salv_functions_list.
DATA: gt_sflight TYPE STANDARD TABLE OF sflight.
DATA: gr_err_salv TYPE REF TO cx_salv_msg.
DATA: gv_string TYPE string.
DATA: gt_columns TYPE salv_t_column_ref.
DATA: gs_columns TYPE salv_s_column_ref.

START-OF-SELECTION.
***************************************************************************
****
* Selktion der anzuzeigenden Daten
***************************************************************************
****
SELECT *
FROM sflight
INTO CORRESPONDING FIELDS OF TABLE gt_sflight.

IF sy-subrc NE 0.
* In diesem Fall wird eine leere Tabelle angezeigt
ENDIF.

***************************************************************************
****
* Daten anzeigen
***************************************************************************
****
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = gr_salv
CHANGING
t_table = gt_sflight.
CATCH cx_salv_msg INTO gr_err_salv.
* Fehler anzeigen
gv_string = gr_err_salv->get_text( ).
MESSAGE gv_string TYPE 'E'.
ENDTRY.

* Instanz für Spalten holen


gr_columns = gr_salv->get_columns( ).
* Spaltenbreite optimieren
gr_columns->set_optimize( abap_true ). " nur ein 'X'

***************************************************************************
****
* Umbenennen von Spalten
***************************************************************************
****
* Alle verfügbaren Spalten holen
gt_columns = gr_columns->get( ).

* und jetzt in LOOP die Überschrift ändern


LOOP AT gt_columns INTO gs_columns.

CASE gs_columns-columnname.
WHEN 'CARRID'.
gs_columns-r_column->set_short_text( 'CARRIDshor' ).
gs_columns-r_column->set_medium_text( 'CARRIDmedium' ).
gs_columns-r_column->set_long_text( 'CARRIDlong' ).
WHEN 'CONNID'.
gs_columns-r_column->set_short_text( 'CONNIDshor' ).
gs_columns-r_column->set_medium_text( 'CONNIDmedium' ).
gs_columns-r_column->set_long_text( 'CONNIDlong' ).
WHEN OTHERS.
* So lassen, wie diese sind
ENDCASE.

ENDLOOP.

***************************************************************************
****
* Alle Standard-Funktionen auf aktiv setzen
***************************************************************************
****
* Instanz für Funktionen holen
gr_functions = gr_salv->get_functions( ).
* Alle Standardfunktionen aktivieren
gr_functions->set_all( abap_true ). " nur ein 'X'

* Die eigentliche Anzeige


gr_salv->display( ).