Verwendung des SALV zum Generieren eines Feldkatalog für das ALV

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

Verwendung des SALV zum Generieren eines Feldkatalog für das ALV

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Hallo zusammen.

Nachdem ich nun schon des Öfteren über Programme gestolpert bin, in denen versucht wird die Vorteile des SALV (einfaches Handling) mit denen des ALV (Editierbarkeit) zu verbinden, die aber nach meinem Verständnis eher schlecht als recht implementiert wurden, hier eine kurze Hilfestellung wie man es besser machen kann.

Ein Hauptproblem beim ALV, zumindest für mich, ist das möglichst effiziente Generieren des Feldkatalogs. Als ein Entwickler der von der Pieke auf mit Klassen gearbeitet hat, war mir die Verwendung von Funktionsbausteinen schon immer sehr suspekt. Von daher ist meine Abneigung zu LVC_FIELDCATALOG_MERGE oder wie die ganzen Funktionsbausteine zu dem Thema auch heißen mögen, die intern noch dazu mit GENERATE SUBROUTINE POOL arbeiten, hoffentlich verständlich.

Was also tun?
Der Dreh- und Angelpunkt der Spalten im SALV generell ist die Klasse CL_SALV_COLUMNS und für den SALV-Table im Speziellen ist es die Klasse CL_SALV_COLUMNS_LIST. Die kann man auch außerhalb der FACTORY-Methode instanzieren und so für eigene Zwecke verwenden. Bleiben noch die Fragen wie man die Instanz möglichst effizient mit Daten befüllen kann und wie man daraus einen Feldkatalog kreiert bekommt. Bei ersterer hilft die FACTORY-Methode des SALV bzw. die dort aufgerufene Methode SET_DATA sehr gut weiter. Die kleine, unscheinbare aber nicht minder mächtige Klasse CL_SALV_DATA_DESCR wird dort für die Erzeugung der Spalten verwendet. Bleibt noch die Frage wie man im Anschluss daraus den Feldkatalog erzeugen kann. Nun, der SALV verwendet intern zur Darstellung der Daten ein gewöhnliches ALV. Von daher muss es doch irgendwo eine Methode geben die den Feldkatalog für das ALV generiert, oder? Bingo. CL_SALV_CONTROLLER_METADATA.

Wenn man nun diese drei Klassen kombiniert erhällt man einen brauchbaren Feldkatalog:

Code: Alles auswählen.

FORM get_fieldcat USING    ut_table    TYPE ANY TABLE
                  CHANGING ct_fieldcat TYPE lvc_t_fcat.

  DATA:
    lr_table        TYPE REF TO data,
    lr_aggregations TYPE REF TO cl_salv_aggregations,
    lr_columns      TYPE REF TO cl_salv_columns_list.

  GET REFERENCE OF ut_table INTO lr_table.
  CREATE OBJECT lr_columns EXPORTING r_data = lr_table.
  cl_salv_data_descr=>describe_table( r_columns = lr_columns
                                      r_table   = lr_table ).
  ct_fieldcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog( r_columns      = lr_columns
                                                                   r_aggregations = lr_aggregations ).

ENDFORM.
Zum allgemeinen Verständnis hab ich die Implementierung in einer FORM-Routine und in der "klassischen" Syntax ausgeführt. Natürlich spricht nichts dagegen, aus dem Codeschnippsel eine Methode zu machen und mit weiteren Goodies anzureichern.
Die Instanz von CL_SALV_AGGREGATIONS wird hier nur als Platzhalter verwendet, weil die Schnittstelle von GET_LVC_FIELDCATALOG den Parameter zwingend verlangt.

so long.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag (Insgesamt 4):
ewxtm987456Oscar WildeTron

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Verwendung des SALV zum Generieren eines Feldkatalog für das ALV

Beitrag von Oscar Wilde (ForumUser / 2 / 1 / 0 ) »
Hi,
Danke ! Gerade mache ich Amateurforschungen auf dem Gebiet ALV, SALV als "Berater in contemplation".
Ich dachte Feldkatalog im DDIC war praktischer als endlos - fieldcat - coding.
Das muß ich mal ausprobieren an Tagen wie Diesen...
Cheers und Danke Olaf
Olaf (aka 'Archibald Tuttle')

Seite 1 von 1

Vergleichbare Themen

20
Antw.
12734
Views
ALV Feldkatalog automatisch generieren
von Pinguincommander » 04.12.2012 14:48 • Verfasst in ABAP® Core
6
Antw.
3405
Views
Verwendung von includes
von 1337 » 05.12.2013 09:11 • Verfasst in ABAP® für Anfänger
1
Antw.
1398
Views
Verwendung von Loop at
von bob_sheknowdas » 08.09.2014 17:54 • Verfasst in ABAP® für Anfänger
4
Antw.
1853
Views
Verwendung ABAPDoc
von Icke0801 » 10.01.2022 09:54 • Verfasst in SAP - Allgemeines
2
Antw.
2168
Views
Verwendung von RC1SDDIS?
von bapimueller » 09.08.2018 20:41 • Verfasst in Sales and Distribution

Aktuelle Forenbeiträge

Regex in where
vor 2 Stunden von edwin 7 / 162
Daten an Tabelle binden
vor 16 Stunden von Bright4.5 3 / 1486

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 2 Stunden von edwin 7 / 162
Daten an Tabelle binden
vor 16 Stunden von Bright4.5 3 / 1486

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821