ALV-Vorlage CL SALV*

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Mit der Klasse CL_SALV und seinen Unterklassen hat SAP ein vollständig objektorientes ALV-Modell herausgebracht, mit dem sich sehr schnell eine ALV-Liste auf den Bildschirm bringen lässt, wenn man weiß, welche Klassen und Methoden hier zu nutzen sind.

Screenshot

SALV1.jpg

Codevorlage

REPORT  zrebalvom_demo1.

DATA: gt_spfli     TYPE TABLE OF spfli.                  "Flugdaten

DATA: go_functions TYPE REF TO cl_salv_functions.        "Symbolleiste

DATA: go_table     TYPE REF TO cl_salv_table.            "Klasse

DATA: go_display   TYPE REF TO cl_salv_display_settings. "Displayeinstellungen

DATA: go_columns   TYPE REF TO cl_salv_columns_table.    "Spaltenmanipulation
DATA: go_column    TYPE REF TO cl_salv_column_table.

DATA: color        TYPE lvc_s_colo.                      "Farbe

DATA: go_sorts     TYPE REF TO cl_salv_sorts.            "Sortierung
DATA: go_agg       TYPE REF TO cl_salv_aggregations.     "Aggregation

DATA: go_filter    TYPE REF TO cl_salv_filters.          "Filter

DATA: go_layout    TYPE REF TO cl_salv_layout.           "Layout

DATA: key          TYPE salv_s_layout_key.


**********************
* Start-Of-Selection *
**********************
START-OF-SELECTION.

* Selektion Flugdaten
  SELECT * INTO TABLE gt_spfli FROM spfli.


* Entscheidung welche Darstellung erfolgen soll, hier Vollscreen Dynpro
  cl_salv_table=>factory( IMPORTING r_salv_table = go_table
                          CHANGING t_table = gt_spfli ).


* Symbolleiste wird eingeblendet
  go_functions = go_table->get_functions( ).
  go_functions->set_all( abap_true ).

  go_display = go_table->get_display_settings( ).
  go_display->set_striped_pattern( cl_salv_display_settings=>true ).
  go_display->set_list_header( 'Flugdatenmodell' ).

  go_columns = go_table->get_columns( ).
  go_column ?= go_columns->get_column( 'CITYTO' ).


* Überschriftenbezeichnung ändern
  go_column->set_long_text( 'Lange Überschrifte' ).      "max. 40 Zeichen
  go_column->set_medium_text( 'Mittlere Überschrift' ).  "max. 20 Zeichen
  go_column->set_short_text( 'Überschr.' ).              "max. 10 Zeichen


* Sortierung
  go_sorts = go_table->get_sorts( ).
 "gr_sorts->add_sort( 'CITYTO' ).


* Filter
  go_filter = go_table->get_filters( ).
  go_filter->add_filter( columnname = 'CARRID' low = 'LH' ).


* Layout (Layoutänderungen abspeicherbar)
  go_layout = go_table->get_layout( ).
  key-report = sy-repid.
  go_layout->set_key( key ).
  go_layout->set_save_restriction( cl_salv_layout=>restrict_none ).


*******************
* Anzeige Tabelle *
*******************
  go_table->display( ).

Editierbarkeit

  • Leider ist die SALV-Klasse standardmäßig nicht fähig Felder editierbar zu machen. Das schränkt den Gebrauch deutlich ein und hier sollte SAP Funktionalitäten in die Klasse einbauen, die dies möglich machen.
  • Jakob Mainka beschreibt in Xing einen Workaround, wie man einen SALV doch eingabefähig bekommen kann.

YouTube

SALV-Tutorial am Beispiel SFLIGHT-Tabelle von Sonikro Coding (EN).

Web-Links