Common Table Expressions in ABAP

Im Jahr 1999 wurde die vierte Überarbeitung von SQL unter dem Namen SQL:1999 bzw. SQL3 publiziert.  Unter anderem wurden mit SQL:1999 das WITH Konstrukt zur Verwendung von Common Table Expression eingeführt.

Eine Common Table Expression (CTE) erzeugt eine tabellarische Ergebnisliste welche nur temporär innerhalb einer SQL-Operation zur Verfügung steht.

Die Verwendung ist dann sinnvoll, wenn man z.B. Zwischenergebnisse benötigt, eine komplexe SQL-Anweisung übersichtlicher strukturieren will oder wenn die Zwischenergebnisse mehrfach benötigt werden.

Gerade wenn man sich um Clean Code bemüht, sollten auch CTE zur besseren Lesbarkeit eingesetzt werden.

Ab dem ABAP Release 7.51 stehen die Common Table Expressions nun auch für uns ABAP Entwickler zur Verfüfung.

Syntax

Die Syntax ist recht einfach. Eingeleitet  werden CTEs mit WITH:

  • Durch die optionale Angabe der Spaltennamen mit ( name1, name2, … ) direkt im Anschluss an den CTE Namen, können die Spaltennamen in der CTE Ergebnisliste überschrieben werden
  • Die CTEs müssen in der Hauptabfrage verwendet werden

Beispiele

Im nachfolgenden Beispiel werden Personen und Unternehmen mit CTEs gelesen. Im SELECT werden diese beiden CTEs mit der Relationstabelle BUT050 verknüpft.

In diesem Beispiel wird das Ergebnis der CTE als Subselect im SELECT verwendet.

Ergänzende Hinweise

  • Mit dem WITH Kommando wird die SAP-Pufferung umgangen
  • Sobald man WITH verwendet, wird die Syntaxprüfung mit strikten Modus 7.51 ausgeführt
  • ENDWITH ist ggf. gleich einzusetzen wie ENDSELECT
  • In der SAP Dokumentation sind die CTEs als „allgemeine Tabellenausrücke“ übersetzt

Links

Posted in High-Class Development and tagged , , .