Neue Syntax für das Select Statement in OpenSQL
Ist Ihnen aufgefallen, dass sich die empfohlene Syntax des zentralen Select Statements von OpenSQL geändert hat, die für Sie und Ihre Mitarbeiter relevant sind? Mir ist durch Zufall aufgefallen, dass mir einige Elemente in der SAP Help Dokumentation neu waren. In diesem Beitrag möchte ich Ihnen einen Überblick über die Neuerungen geben und ein paar Hinweise für Clean Coding geben.
Integration von ABAP Source Code
Innerhalb der SAP Help zu Inner Joins beim Select Statement bin ich zuerst durch die oben abgebildete Testumgebung aufmerksam geworden. Durch diese Integration kann der ABAP Code im ABAP Editor (SE38) geöffnet, gedebuggt und ausgeführt werden. Vor allem die Funktion zum Debuggen erleichtert Entwicklern das Verständnis bei komplizierteren Beispielen. Das Ergebnis der Ausführung wird für ein besseres Verständnis entsprechend aufbereitet.
Syntax des Select Statements
Welche Punkte sind Ihnen in der ersten Abbildung aufgefallen? Was sieht ungewohnt aus?
- Seit SAP NetWeaver 7.4 Support Package Stack 05 ist die Trennung in Listen in der OpenSQL Syntax mit Leerzeichen obsolet und wird durch die Trennung via Komma abgelöst. Dadurch ist zumindest klarer erkennbar, wann eine neue Spalte des Ergebnisses beginnt.
- In den Ausdrücken von SQL sollen ABAP Host Variablen (im ABAP Programm deklarierte lokale oder globale Datenobjekte) mit dem Fluchtsymbol @ markiert werden. In den strikten Syntaxprüfungen ist dies sogar verpflichtend. Die Fluchtsymbole gab es schon in früheren Releases, nun leben sie wieder auf.
- Warum? Unter anderem könnte die folgende Änderung dafür verantwortlich sein. Ab sofort ist es nicht mehr erforderlich, dass bei allen Bedingungen im ON Teil eines Joins auf der rechten Seite eine Spalte steht. Daraus folgt, dass nun innerhalb der Bedingungen des Joins auch Vergleich mit ABAP Hostvariablen gemacht werden können. Somit ergibt eine Kennzeichnung mit dem Fluchtsymbol @ auch für Clean Coding Sinn. Die Abbildung 3 zeigt ein Code Beispiel.
- Wer sicht jetzt fragt, warum er Bedingungen von der WHERE Klausel auslagern sollte, dem hilft die folgende Notiz. Bei einem LEFT OUTER JOIN sind diese nämlich verboten und sollten in die Bedingungen des Joins verlagert werden.
Vorschlag für Clean Code
Wie ein SELECT Statement mit der neuen Syntax aussehen könnte, sehen Sie in der folgenden Abbildung. Ich persönlich nutze seit einiger Zeit die Vorgehensweise, dass ich in dem Statement von OpenSQL immer eine neue Zeile pro Schlüsselwort, eine neue Zeile pro Bedingung, Kommata in den Listen und die Fluchtsymbole benutze. Dies verschafft meiner Meinung nach eine große Übersichtlichkeit und meidet die obsoleten Darstellungen.
Fazit
Regelmäßiges Prüfen der Release Notes, gerade wenn Sie vor einem Release Wechsel stehen, hilft Ihnen in der Entwicklung das Maximum der Möglichkeiten auszuschöpfen und Neuerungen mitzubekommen. Auch wenn die hier vorgestellten Änderungen zumeist eher kosmetischer Natur sind, ist es ratsam früh genug zu beginnen seine Gewohnheiten zu ändern.
Wie reagieren Sie auf diese oder ähnliche Änderungen? Wie werden Sie in Zukunft mit Release Notes umgehen? Wenn Ihnen mein Artikel gefallen hat, oder Sie Fragen haben, hinterlassen Sie gerne einen Kommentar oder melden Sie sich per E-Mail.