Generische Select Tabellennamen

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Siehe Schlüsselbefehl Select.

Siehe Dynamische/Generische Programmierung.

Siehe Kategorie: Dynamische/Generische Programmierung.

Hier sind die Tabellennamen erst zur Laufzeit bekannt. Der Tabellenname wird mit einem Parameter P_TAB im Selektionsbildschirm abgefragt und mit (p_tab) dem Select-Statement übergeben. Um einen Laufzeitfehler zu vermeiden, wenn es in der Tabelle das Feld ADRNR nicht gibt oder die Tabelle nicht existiert, wird mit einem Try-Endtry-Befehl eine Fehlerbehandlung durchgeführt.


Coding

PARAMETERS: p_tab(30) type c.

DATA: oerror TYPE REF TO cx_root,
      lv_txterror TYPE string.

TRY.
    SELECT adrnr
      INTO CORRESPONDING FIELDS OF TABLE p_ct_itab
      FROM (p_tab).

  "Klasse cx_sy_dynamic_osql_semantics ist für das Abfangen von Fehlern bei dynamischen Open SQL-Anweisungen zuständig
  "und gibt entsprechende Fehlermeldungen zurück, z. B. "Ausnahme: Die Datenbanktabelle 'VBAKK' ist unbekannt."
  CATCH cx_sy_dynamic_osql_semantics INTO oerror.
    lv_txterror = oerror->get_text( ).
    MESSAGE i531(0u) WITH lv_txterror.
ENDTRY.

Vorteil generischer Tabellennamen

  • Es kann Fälle geben, wo erst zur Laufzeit eines Programms bekannt ist von welcher Tabelle gelesen werden muss und eine Aufsplittung mit If-/Case-Bedingungen sehr viel redundantes Coding erzeugen würden. Die verschiedenen Tabellen sollten dann sehr ähnlich sein in ihren Feldern.
  • Hier kann es kann man kompaktes und übersichtliches Coding mit generischen Tabellennamen schreiben.

Nachteil generischer Tabellennamen

  • Bei generischen Tabellennamen kann man leicht einen Laufzeitfehler produzieren, wenn man einen unbekannten Tabellennamen, bzw unbekannte Tabellenfelder abfragt. Da die Tabelle(n) erst zur Laufzeit bekannt sind, hilft hier meist die Syntaxprüfung nicht, um Schreibfehler beim Codieren zu erkennen.
  • Man kann nicht mit einem Blick auf das Coding erkennen welche Tabellennamen abgefragt werden, bzw. Bei einer Volltextsuche werden mögliche Tabellennamen nicht gefunden. Hier kann man sich noch behelfen, indem bei einer überschaubaren Anzahl von Tabellen diese in den Codee als Kommentar hinzugeschrieben werden.

Literatur