Ansicht
Dokumentation

ABENNEWS-740_SP08-ABAP_SQL - NEWS-740 SP08-ABAP SQL

ABENNEWS-740_SP08-ABAP_SQL - NEWS-740 SP08-ABAP SQL

Vendor Master (General Section)   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

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:

  • 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:

  • 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 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 )