Ansicht
Dokumentation
ABENNEWS-740_SP08-ABAP_SQL - NEWS-740 SP08-ABAP SQL
Vendor Master (General Section) CL_GUI_FRONTEND_SERVICES - Frontend ServicesDiese Dokumentation steht unter dem Copyright der SAP AG.
zu Release 7.40, SP08
Neue Spaltenangabe dbtab~* hinter SELECT
Für die Definition der Ergebnismenge in der SELECT-Liste einer SELECT-Anweisung kann ab Release 7.40, SP08 data_source~* als Element der SELECT-Liste angegeben werden, um alle Spalten verschiedener hinter FROM verwendeter Datenbanktabellen bzw. Views in die Ergebnismenge aufzunehmen. Die Angabe data_source~* kann mit der Angabe einzelner Spalten col_spec ausgenommen Aggregatausdrücke kombiniert werden.
Wenn in der Ergebnismenge data_source~* angegeben ist, wird die Syntaxprüfung in einem
strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Inline-Deklarationen für Zielbereich von SELECT
Hinter dem Zusatz INTO einer SELECT-Anweisung können ab Release 7.40, SP08 Inline-Deklarationen mit dem Deklarationsoperator DATA(...) mit vorangestelltem Fluchtsymbol @ vorgenommen werden. Inline-Deklarationen sind für einzelne eingeklammerte Datenobjekte (@DATA(elem1),@DATA(elem2),...), für einzelne Arbeitsbereiche INTO @DATA(wa) und für interne Tabellen INTO TABLE @DATA(itab) möglich. Abhängig von der in der SELECT-Liste definierten Ergebnismenge und den hinter FROM verwendeten Datenbanktabellen wird entweder ein elementares Datenobjekt, eine Struktur oder eine interne Tabelle deklariert.
Die Verwendung einer Inline-Deklaration bedingt, dass die Syntaxprüfung in einem
strikten Modus ausgeführt wird, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
SQL-Ausdrücke
Bezüglich der zu Release 7.40, SP05 eingeführten SQL-Ausdrücke wurden folgende Erweiterungen eingeführt:
- Mit dem Operator CASE können neben einfachen jetzt auch komplexe Fallunterscheidungen (searched case) durchgeführt werden.
- SQL-Ausdrücke können hinter GROUP BY angegeben werden.
- SQL-Ausdrücke können in der SELECT-Liste gemeinsam mit Aggregatausdrücken angegeben werden.
- SQL-Ausdrücke können in der SELECT-Liste und der HAVING-Klausel als Argumente von Aggregatfunktionen außer avg angegeben werden.
Wenn eine der neuen Möglichkeiten verwendet wird, wird die Syntaxprüfung in einem
strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Lesezugriff auf CDS-Views mit Parametern
Seit Release 7.40, SP08 können CDS-Views mit Eingabeparametern definiert werden, denen bei ihrer Verwendung Aktualparameter zugewiesen werden müssen. Hierfür wurde die Angabe der Datenquelle der Anweisung SELECT um die Möglichkeit einer geklammerten kommaseparierten Liste für die Parameterübergabe ergänzt:
( pname1 = act1, pname1 = act2, ...)
Da nicht alle Datenbanksysteme Views mit Parametern unterstützen, gibt es eine neue Klasse
CL_ABAP_DBFEATURES mit einer Methode
USE_FEATURES, die es erlaubt festzustellen, ob dies für das aktuelle Datenbanksystem der Fall
ist. Weiterhin führt der Zugriff auf eine View mit Parametern zu einer Warnung von der Syntaxprüfung, die durch ein Pragma ausgeblendet werden kann.
Aufhebung von Einschränkungen
Folgende bisherigen Einschränkungen wurden aufgehoben:
- Für SQL-Ausdrücke:
- Ab Release 7.40, SP08 kann vor einem Operand eines arithmetischen Ausdrucks, der nicht direkt auf einen arithmetischen Operator folgt, ein negatives Vorzeichen - gestellt werden.
- Ab Release 7.40, SP08 kann ein Operand operand1, operand2, ... einer einfachen Fallunterscheidung jetzt auch ein SQL-Ausdruck sein.
- Ab Release 7.40, SP08 können SQL-Ausdrücke auch zusammen mit Aggregatausdrücken und dem Zusatz GROUP BY angegeben werden.
- Für Joins:
- Ab Release 7.40, SP08 können in ON-Bedingungen die Operatoren LIKE und IN (...) verwendet werden.
- Ab Release 7.40, SP08 können einzelne Vergleiche mit OR verknüpft und mit NOT negiert werden.
- Ab Release 7.40, SP08 muss bei einem äußeren Join nicht mehr mindestens ein Vergleich zwischen Spalten der linken und rechten Seite enthalten sein.
- Es ist jetzt auch die dynamische Angabe einer Subquery möglich.
Wenn eine der Regeländerungen ausgenutzt wird, wird die Syntaxprüfung in einem
strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Position der INTO-Klausel
Ab Release 7.40, SP08 kann und sollte die INTO-Klausel als letzte Klausel einer SELECT-Anweisung aufgeführt werden. In diesem Fall müssen die Zusätze UP TO, OFFSET und abap_options der SELECT-Anweisung hinter der INTO-Klausel aufgeführt werden.
Wenn die INTO-Klausel als letzte Klausel aufgeführt ist, 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
Ab Release 7.40, SP08 führen folgende Syntaxkonstrukte, die schon immer fehlerhaft waren, zu Syntax- oder Laufzeitfehlern:
- Korrektur für die HAVING-Bedingung
-
Alle Spalten, die in einer HAVING-Klausel
außerhalb eines Aggregatausdrucks angegeben werden, müssen auch hinter GROUP
BY aufgeführt werden. Vor Release 7.40, SP08 wurde dies nicht von der statischen Syntaxprüfung gemeldet, führte aber zu einer abfangbaren Ausnahme. Ab Release 7.40, SP08 führt dies außerhalb des
strikten Modus der Syntaxprüfung zu einer Warnung von der Syntaxprüfung und einer unbehandelbaren Ausnahme.
Beispiel
Ab Release 7.40, SP08 Syntaxwarnung und unbehandelbare Ausnahme für:
DATA itab TYPE TABLE OF scarr.
SELECT *
FROM scarr
INTO TABLE itab
HAVING carrid = 'LH'.
Strikter Modus der Syntaxprüfung
Wenn eine der hier aufgeführten Neuerungen in einer -Anweisung verwendet wird, wird die Syntaxprüfung in einem
strikten Modus ausgeführt, welche die Anweisung strenger behandelt als die normale Syntaxprüfung.
Vergleichbare Typen
Es wurde eine Tabelle vergleichbarer Typen aufgestellt, die für auf der Datenbank ausgeführte Vergleiche gilt. Das Ergebnis von Vergleichen nicht vergleichbarer Typen hängen vom Datenbanksystem ab und führen im strikten Modus der Syntaxprüfung zu einem Syntaxfehler und ansonsten zu einer Syntaxwarnung.
SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up RFUMSV00 - Advance Return for Tax on Sales/Purchases
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 11646 Date: 20240523 Time: 110347 sap01-206 ( 138 ms )