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