SAP NetWeaver AS ABAP Release 750, ©Copyright 2016 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation → ABAP - Releaseabhängige Änderungen → Änderungen zu Release 7.40 und seinen SPs → Änderungen zu Release 7.40, SP05 →
Open SQL zu Release 7.40, SP05
2. Fluchtsymbol für Hostvariablen
4. Umschalten der automatischen Mandantenbehandlung
6. Auswertung von INTO CORRESPONDING
8. Strikter Modus der Syntaxprüfung
9. Strengere Überprüfung von Syntaxregeln
Kommaseparierte Listen
Alle Auflistungen von Operanden in Open SQL können und sollten ab Release 7.40, SP05 als kommaseparierte Listen angegeben werden. Bislang war eine kommaseparierte Liste nur bei der Angabe einzelner Zielfelder in den runden Klammern hinter INTO bei SELECT und bei der Angabe von Datenobjekten in runden Klammern hinter WHERE möglich. In Unicode-Programmen, in denen die Programmeigenschaft Festpunktarithmetik eingeschaltet ist, sind kommaseparierte Liste jetzt auch möglich:
Die Angabe von leerzeichenseparierten Listen wird dadurch obsolet. Wenn eine dieser Listen durch Kommata getrennt ist, wird die Syntaxprüfung in einem strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Die Einschränkung, dass bei den kommaseparierten Listen hinter INTO
und IN hinter der öffnenden Klammer kein Leerzeichen stehen darf,
wenn mindestens ein Komma vorkommt, d.h. mehr als ein Datenobjekt angegeben ist, besteht ab SP05 nicht mehr.
Fluchtsymbol für Hostvariablen
ABAP-Datenobjekte, die in Open-SQL-Anweisungen verwendet werden (in der Regel Variablen), werden jetzt wie im statisch eingebetteten Native SQL als Hostvariablen aufgefasst. Hostvariablen können und sollen ab Release 7.40, SP05 mit dem Fluchtsymbol @ gekennzeichnet werden. Die Angabe von Hostvariablen ohne Fluchtsymbol wird dadurch obsolet. Wenn das Fluchtsymbol vor einem Bezeichner einer Open-SQL-Anweisung verwendet wird, wird die Syntaxprüfung in einem strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Das Fluchtsymbol ist nur in Unicode-Programmen
möglich, in denen die Programmeigenschaft
Festpunktarithmetik eingeschaltet ist. Die Verwendung des Fluchtsymbols
bedingt eine strengere Syntaxprüfung der gesamten Anweisung, bei der Fehler, die ansonsten nur als Syntaxwarnung erscheinen, als Syntaxfehler gemeldet werden.
SQL-Ausdrücke
Ab Release 7.40, SP05 können SQL-Ausdrücke in einer kommaseparierten SELECT-Liste angegeben werden. Das Ergebnis eines solchen Ausdrucks, dessen Operanden die Namen von Spalten oder Hostvariablen sein können, wird vom Datenbanksystem bestimmt und in der entsprechende Spalte der Ergebnismenge an den Applikationsserver übergeben.
Die Verwendung von SQL-Ausdrücken ist nur in
Unicode-Programmen
möglich, in denen die Programmeigenschaft
Festpunktarithmetik eingeschaltet ist. Die Verwendung von SQL-Ausdrücken bedingt, dass die Syntaxprüfung in einem
strikten Modus ausgeführt wird, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Umschalten der automatischen Mandantenbehandlung
Der neue Zusatz USING CLIENT clnt, der in allen Anweisungen von Open SQL alternativ zu CLIENT SPECIFIED angegeben werden kann, stellt die automatische Mandantenbehandlung auf den in clnt angegebenen Mandanten um.
Wenn der Zusatz USING CLIENT verwendet wird, wird die Syntaxprüfung in einem
strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Regeländerungen für Joins
Folgende bisherigen Einschränkungen für Joins wurden aufgehoben:
In einer SELECT-Anweisung, die obige Regeländerungen ausnutzt, wird die Syntaxprüfung in einem
strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Auswertung von INTO CORRESPONDING
Wenn alle benötigten Komponenten statisch erkennbar sind, wird die Zuordnung der Felder beim Zusatz CORRESPONDING hinter INTO jetzt bereits bei der Programmgenerierung und nicht erst zur Laufzeit bestimmt.
Der Zusatz INTO CORRESPONDING beeinflusst jetzt auch die
SELECT-Liste, die tatsächlich an die Datenbank übergeben
wird, und damit die Ergebnismenge der SELECT-Anweisung. Wenn es mindestens
eine Namensübereinstimmung gibt, werden alle Spalten, für die es keine Namensübereinstimmung
gibt, implizit aus der SELECT-Liste entfernt. Wenn es keine Namensübereinstimmung
gibt, werden keine Spalten aus der Ergebnismenge entfernt. Bei der Angabe von *
für die SELECT-Liste kann dies zu impliziten Umsetzung in eine Liste von Spalten führen.
Zugriff auf CDS-Entitäten
Mit SELECT kann auf CDS-Entitäten zugegriffen werden. Mögliche CDS-Entitäten sind derzeit CDS-Views, die mit der DDL der ABAP CDS über DEFINE VIEW definiert werden.
Bei mandantenabhängigen CDS-Views wird eine automatische Mandantenbehandlung durchgeführt. Wenn diese mit dem Zusatz CLIENT SPECIFIED abgeschaltet wird, ist die Mandantenspalte Teil der Ergebnismenge, obwohl sie kein Element der CDS-View ist. Mit dem neuen Zusatz CLIENT SPECIFIED der Anweisung TYPES kann hierfür ein geeigneter Zielbereich deklariert werden. Neue Zusätze zu CLIENT SPECIFIED hinter FROM erlauben es, die Spalte in der SELECT-Anweisung anzusprechen.
Wenn für den Zugriff wie empfohlen der Name der
CDS-Entität und nicht der Name der
CDS-Datenbank-View verwendet wird, wird die Syntaxprüfung in einem
strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Strikter Modus der Syntaxprüfung
Wenn eine der obigen Neuerungen in einer Open-SQL-Anweisung verwendet wird, wird die Syntaxprüfung in einem
strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Strengere Überprüfung von Syntaxregeln
Zu Release 7.40, SP02 wurde ein neuer SQL-Parser für Open SQL eingeführt. Dieser Parser überprüft einige Regeln strenger als der alte Parser. Insbesondere wird jetzt auch der gleiche Parser für statisch angegebenes Open SQL und für den Inhalt dynamischer Tokens verwendet. Dieser Parser wurde zu Release 7.40, SP02 vorerst nur für die Anweisung SELECT eingesetzt. Ab Release 7.40, SP05 wird der neue Parser für alle Open-SQL-Anweisungen eingesetzt. Als Konsequenz daraus führen jetzt folgende Syntaxkonstrukte, die schon immer fehlerhaft waren, zu Syntax- oder Laufzeitfehlern:
Angabe dynamischer Tokens
Ab Release 7.40, SP05 können als dynamische Tokens angegebene interne Tabellen auch in
ändernden Open-SQL-Anweisungen Sekundärschlüssel haben.