Generische Select Feldlisten
Aus SAP-Wiki
(Weitergeleitet von Generische Feldlisten)
Zur Navigation springenZur Suche springen
Siehe Schlüsselbefehl Select.
Siehe Dynamische/Generische Programmierung.
Siehe Kategorie: Dynamische/Generische Programmierung.
Hier sind die Feldlisten einer Tabelle erst zur Laufzeit bekannt. Die Felder werden mit einem Parameter P_FELDER im Selektionsbildschirm abgefragt, in eine Tabelle GT_FELDER gefüllt und mit (gt_felder) dem Select-Statement übergeben. Die Feldlistentabelle GT_FELDER wird mit dem Befehl "GT_FELDER TYPE TABLE OF STRING" angelegt, um Feldnamen beliebiger Länge aufnehmen zu können.
Coding
PARAMETERS: p_felder(70) type c. DATA: oerror TYPE REF TO cx_root, txterror TYPE string, gt_felder type table of string, gt_sflight type table of sflight. append p_felder to gt_felder. TRY. SELECT (gt_felder) INTO CORRESPONDING FIELDS OF TABLE gt_sflight from sflight. CATCH cx_sy_dynamic_osql_semantics INTO oerror. txterror = oerror->get_text( ). MESSAGE i531(0u) WITH txterror. ENDTRY.
Vorteil generischer Tabellennamen
- Es kann Fälle geben, wo erst zur Laufzeit eines Programms bekannt ist von welcher Tabellefeldeern einer Tabelle gelesen werden muss und eine Aufsplittung mit If-/Case-Bedingungen sehr viel redundantes Coding erzeugen würden.
- Hier kann es kann man kompaktes und übersichtliches Coding mit generischen Feldnamen schreiben.
Nachteile generische Feldlisten
- Es können bei generischen Feldlisten leicht Laufzeitfehler produziert werden, da die Syntaxprüfung die Existenz der Feldnamen nicht überprüfen kann, da sie erst zur Laufzeit bekannt sind.
- Um einen Laufzeitfehler zu vermeiden, wenn in der Tabelle SFLIGHT ein oder mehrere dynamische Select-Felder nicht existieren, wird mit einem Try-Endtry-Befehl und der Klasse CX_SY_DYNAMIC_OSQL_SEMANTICS eine Fehlerbehandlung durchgeführt.
Literatur
- ABAP Best Practices, S. 101-105