ABAP - Der neue Select
Die Anpassung der Sprache ABAP haben auch Auswirkungen und Verbesserungen für den alt bekannten und wichtigen Select. In diesem Artikel wollen wir dir kurz beschreiben, was sich so alles geändert hat und was du für Vorteile erlangst.
Inhaltsverzeichnis
Wie schon in einem früheren Artikel beschrieben, hat sich auch der Select etwas geändert. Es gibt nun zwei Varianten bei der Ausführung und Schreibweise. Die bisherige Variante bleibt bestehen und ändert sich nicht, dadurch bleiben alle alten Programme aktuell.
Änderungen
Was hat sich also mit dem Modernen ABAP alles verändert? Im Grunde lässt sich das mit einigen wenigen Punkten beschreiben:
- Es können beim Aufruf nun Funktionen an den Select bzw. die Ergebnisse dieser Funktionen übergeben werden. Viele Funktionen wurden auch komplett neu, nur für den Select, implementiert.
- Es können dynamische Rückgabetabellen/-variablen zur Laufzeit erzeugt werden.
- Die Reihenfolge des Aufbaus hat sich etwas gändert.
Für dich heißt das, es gibt einige neue Features die du unbedingt mit dem Select probieren solltest.
Beispiele
Dazu zwei Beispiele um die neuen Funktionen einmal etwas näher bringen. Im ersten Beispiel gehen wir vor allem auf die Erzeugung von internen Tabellen mit Dummy Feldern ein und wie du diese dynamisch zur Laufzeit erzeugen kannst.
" Erstellung Select-Option
SELECT
'I' AS sign,
'EQ' AS option,
bukrs AS low,
' ' AS high
FROM t001
WHERE land1 <> 'DE'
INTO TABLE @DATA(lt_range).
Wie du anhand der Felder schon richtig vermutet hast, bekommen wir als Ergebnis eine Select-Option die fertig befüllt ist mit den Buchungskreisen, die sich nicht in Deutschland befinden.
- Mit dem AS Zusatz geben wir den Felder neue Namen, was bereits mit dem "alten" Select möglich war. Die einzelnen Felder werden nun mit Komma getrennt.
- Wir geben den Feldern einen Defaultwert und weisen sie dem Feld zu. Für einen leeren Wert muss in dem Literal zwingend ein Leerzeichen enthalten sein, ein leeres Literal wird vom Kompiler als Fehler angezeigt.
- Es wird per Escape-Zeichen und DATA eine Tabelle zur Laufzeit erzeugt. Diese Tabelle hat genau die Felder, die wir im Select angegeben werden.
- Der INTO Befehl ist nun ans Ende der Anweisung gerutscht, die ist soweit von SAP auch so vorgesehen als neue Stelle der Anweisung.
Als zweites Beispiel wollen wir vor allem auf die vielen neuen Inline-Fuktionen hinweisen, die vor allem für den Select implementiert wurden.
" Erstellung der Variable
DATA(ld_waers) = 'eur'.
" Select mit Funktionen
SELECT
bukrs AS bukrs,
CAST( kokfi AS CHAR( 20 ) ) AS text,
CASE WHEN stceg = ' ' THEN '-'
ELSE stceg
END AS tax
FROM t001
WHERE bukrs LIKE 'A%'
AND waers = @( to_upper( ld_waers ) )
INTO TABLE @DATA(lt_bukrs).
Bei diesem Beispiel sind vor allem die Funktionen interessant, die die Werte an den Select übergeben oder bestimmte Abfragen auf die Daten des Selects machen.
- Die Cast Funktion konvertiert das Zahlenfeld in ein Textfeld mit 20 Zeichen, damit kann direkt bei der Rückgabe der Datentyp ins Zielformat gebracht werden.
- Mit einer Case Anweisung wird der Steuerschlüssel geprüft, ist dieser nicht leer, wird er übernommen, sollte er aber leer sein, dann wir ein einfacher Minus gesetzt.
- In der Where-Clause konvertieren wir noch das Währungsfeld mit UPPER auf Großbuchstaben, bevor wir es an den Select übergeben. Wie immer wird ein Escape-Zeichen verwendet, um die Funktion aufzurufen.
Auf den Punkt
Das beste Feature ist die dynamische Generierung der Zielstruktur beim Select. Damit befinden sich nur die ermittelten Felder in der Tabelle, die Tabelle bleibt im Speicher klein und es muss kein spezieller Typ vorher definiert werden und nicht mal die Zielvariable.
" einfacher Select
SELECT bukrs, butxt, stceg, waers
FROM t001
WHERE land1 <> 'DE'
INTO TABLE @DATA(lt_bukrs).
Immer wichtig ist die Verwendung des Komma zwischen der Aufzählung der Felder und der Escape der DATA Anweisung, um die Tabelle zu erstellen.
Fazit
Am Select hat sich viel geändert, auch weil die CDS Views nun in Konkurenz zu diesen stehen und ebenfalls sehr mächtig sind. Wir hoffen wir konnten dich neugierig machen? Dann schau dir in der SAP Dokumentation doch mal die neuen Funktionen zum Open SQL an.
Quelle:
SAP Dokumentation - Open SQL