Ansicht
Dokumentation

ABENCDS_EXCEPT_V2 - CDS EXCEPT V2

ABENCDS_EXCEPT_V2 - CDS EXCEPT V2

RFUMSV00 - Advance Return for Tax on Sales/Purchases   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- CDS-View-Entität, SELECT, EXCEPT

... EXCEPT select_statement ...

Wirkung

Der Mengenoperator EXCEPT gibt alle Zeilen einer SELECT-Anweisung einer, die nicht Teil der Ergebnismenge der folgenden SELECT-Anweisungen sind, zurück. Als Voraussetzung muss die Ergebnismenge die gleiche Anzahl an Elementen haben und die Elementenpaare, die an derselben Position der Ergebnismenge vorkommen, müssen einen kompatiblen Datentyp haben. Es werden alle Datentypen unterstützt, mit Ausnahme von STRING, RAWSTRING, LCHR, LRAW, und GEOM_EWKB. Eine EXCEPT-Ergebnismenge kann selbst die linke Seite einer anderen EXCEPT sein.

Eine Voraussetzung zur Verwendung der Anweisung EXCEPT in einer CDS-View-Entität ist die Angabe der CDS-View-Entitätsannotation Metadata.ignorePropagatedAnnotations: true.

Regeln für die Elemente einer View mit EXCEPT

Die erste SELECT-Anweisung definiert die Signatur der EXCEPT-View. Die Elemente der Ergebnismenge der EXCEPT-View haben die folgenden Eigenschaften:

  • Elementnamen
Die direkten oder mit AS definierten alternativen Elementnamen müssen für jede Spalte in den SELECT-Listen aller SELECT-Anweisungen übereinstimmen und werden verwendet.
  • Schlüsselelemente
Die Schlüsselelemente aller SELECT-Listen müssen übereinstimmen. Andernfalls kommt es zu einem Fehler bei der Syntaxprüfung.
  • Elementannotationen
Nur die SELECT-Liste der ersten SELECT-Anweisung kann Elementannotationen definieren. In allen nachfolgenden Verzweigungen sind Elementannotationen verboten.
  • Datentyp
  • Die SELECT-Liste der ersten SELECT-Anweisung bestimmt den DDIC-Datentyp von jedem Element der CDS-Entität.

  • Der Datentyp mit dem die Ergebnismenge auf der Datenbank gebildet wird, ist ein Datentyp dessen Wertebereich die Datentypen der zugehörigen Spalten aller beteiligten Ergebnismengen umfasst.

Die folgende Tabelle zeigt, welche Datentypen in einer View mit EXCEPT zusammengeführt werden können. Auf der linken Seite werden die Datentypen der SELECT-Liste der ersten SELECT-Anweisung aufgelistet, während die anderen Spalten angeben, mit welchen Datentypen der folgenden SELECT-Liste sie zusammengeführt werden können.

Erster/folgende INT1 INT2 INT4 INT8 DEC DF16_... DF34_... CURR QUAN FLTP CHAR SSTRING STRING NUMC DATS DATN TIMS TIMN UTCL ACCP CLNT LANG UNIT CUKY RAW GEOM_EWKB
INT1 x w w w w - - - w w - - - - - - - - - - - - - - - -
INT2 x x w w w - - - w w - - - - - - - - - - - - - - - -
INT4 x x x w w - - - w w - - - - - - - - - - - - - - - -
INT8 x x x x w x - - w w - - - - - - - - - - - - - - - -
DEC w w w w w w w - w w - - - - - - - - - - - - - - - -
DF16_... w w w w w x - - w w - - - - - - - - - - - - - - - -
DF34_... w w w w w x x - w w - - - - - - - - - - - - - - - -
CURR - - - - - - - w - - - - - - - - - - - - - - - - - -
QUAN w w w w w w w - w w - - - - - - - - - - - - - - - -
FLTP x x x w w w w - w x - - - - - - - - - - - - - - - -
CHAR - - - - - - - - - - w w - l w - w - - l - l - - - -
SSTRING - - - - - - - - - - w w - - - - - - - - - - - - - -
STRING - - - - - - - - - - - - w - - - - - - - - - - - - -
NUMC - - - - - - - - - - w - - l l - l - - l - l - - - -
DATS - - - - - - - - - - w - - l x - - - - - - - - - - -
DATN - - - - - - - - - - - - - - - x - - - - - - - - - -
TIMS - - - - - - - - - - w - - l - - x - - - - - - - - -
TIMN - - - - - - - - - - - - - - - - - x - - - - - - - -
UTCL - - - - - - - - - - - - - - - - - - x - - - - - - -
ACCP - - - - - - - - - - l - - l - - - - - x - - - - - -
CLNT - - - - - - - - - - - - - - - - - - - - x - - - - -
LANG - - - - - - - - - - l - - l - - - - - - - x - - - -
UNIT - - - - - - - - - - - - - - - - - - - - - - x - - -
CUKY - - - - - - - - - - - - - - - - - - - - - - - x - -
RAW - - - - - - - - - - - - - - - - - - - - - - - - x -
GEOM_EWKB - - - - - - - - - - - - - - - - - - - - - - - - - x

Bei Kombinationen mit "x" sind keine weiteren Einschränkungen zu beachten. Bei den übrigen Kombinationen gelten folgende Regeln:

  • Bei Kombinationen mit "w" sollte die Länge bzw. der Wertebereich des Datentyps in der ersten SELECT-Liste ausreichend für alle folgenden SELECT-Listen sein. Es kommt zu einer Warnung von der Syntaxprüfung, wenn dies nicht der Fall ist.
  • Bei Kombinationen mit "l" müssen die Längen der Datentypen genau übereinstimmen.

Wenn bei einer Kombination mit "w" die Länge bzw. der Wertebereich des ersten Elements nicht die folgenden Elemente abdeckt, kann der von der Datenbank zurück gegebene Wert zu groß für den Datentyp des Elements der CDS-Entität sein. Die View ist dann zwar aktivierbar, bei einem Zugriff mit einer Query in kann es aber gemäß der Zuweisungsregeln der INTO-Klausel zum Abschneiden von Inhalt oder zu Ausnahmen kommen, falls mit einem Typbezug auf die Entität gearbeitet wird. Zuweisungen an ABAP-Datenobjekte mit genügend großem Wertebereich sind dagegen problemlos möglich.

Assoziationen in Views mit EXCEPT

Eine CDS-View-Entität, in der mit EXCEPT Ergebnismengen gebildet werden, kann CDS-Assoziationen definieren und exponieren. Eine solche Assoziation muss auf die gleiche Weise in allen SELECT-Anweisungen, die mit EXCEPT kominiert sind, definiert und exponiert werden. Das heißt, dass CDS-Assoziationen, die in den entsprechenden SELECT-Listen exponiert sind, in allen SELECT-Anweisungen, die mit EXCEPT kominiert sind, vorkommen und die folgenden Anforderungen erfüllt werden müssen:

  • Sie müssen an der gleichen Position der SELECT-Liste über einen Pfadausdruck exponiert werden.
  • Sie müssen die gleichen ON-Bedingungen haben, d.h.:
  • Die Bedingungen müssen sich auf die gleichen Felder in Assoziationsquelle und -ziel beziehen und für diese die gleiche Logik ausdrücken.

  • Die in der ON-Bedingung aufgeführten Felder der Assoziationsquelle müssen jeweils an identischen Positionen in der SELECT-Liste stehen.

  • Es ist nicht erforderlich, dass die Assoziationen mit demselben Aliasnamen definiert werden.

Diese Regeln gelten auch, wenn eine CDS-Assoziation in einer Datenquelle einer SELECT-Anweisung definiert ist und von der aktuellen Anweisung exponiert wird. Die in den einzelnen SELECT-Listen exponierten gleichnamigen CDS-Assoziationen wirken von außen wie eine von der EXCEPT-Ergebnismenge exponierte CDS-Assoziation. Für CDS-Assoziationen, die nicht in den SELECT-Listen exponiert werden, gibt es keine Einschränkungen.

Schachtelung von EXCEPT-Verzweigungen

In CDS-View-Entitäten ist die Schachtelung von EXCEPT-Klauseln möglich. Um eine EXCEPT-Klausel innerhalb einer anderen EXCEPT-Klausel zu schachteln, verwenden Sie Klammern ( ... ). Eine geschachtelte EXCEPT-Klausel wird zuerst zusammengeführt und ihre Ergebnismenge wird anschließend erneut mit den Ergebnismengen der anderen EXCEPT-Verzweigungen zusammengeführt.

Das zweite Beispiel unten zeigt die Verschachtelung von EXCEPT-Verzweigungen.

  • Die Definition neuer CDS-Kompositionen und To-Parent-Assoziationen ist in einer View mit EXCEPT nicht möglich. Das Exponieren von CDS-Kompositionen und To-Parent-Assoziationen, die in der Datenquelle der SELECT-Anweisung defineirt wurden, ist möglich.
  • Annotationen sind nur in der SELECT-Liste der ersten SELECT-Anweisung erlaubt. In allen folgenden Verzweigungen sind Annotationen nicht erlaubt.

Hinweise

  • Wenn die Länge oder der Wertebereich eines Elements aus der SELECT-Liste der ersten SELECT-Anweisung nicht die der zugehörigen Elemente der folgenden SELECT-Anweisungen abdeckt, wird empfohlen, einen ausreichenden Typ mit einem geeigneten CAST-Ausdruck festzulegen.
  • Die maximale Anzahl verschiedener SELECT-Anweisungen, die mit EXCEPT zusammengeführt werden können, hängt vom Datenbanksystem ab. Wenn diese Anzahl überschritten wird, kann die CDS-View-Entität nicht aktiviert werden.
  • Der Zusatz ALL ist für den Mengenoperator EXCEPT nicht verfügbar.

Beispiel

Mit folgender CDS-View-Entität werden die Ergebnismengen von zwei SELECT-Anweisungen über EXCEPT kombiniert. Es werden nur von der ersten Query zurückgegebene eindeutige Zeilen zurückgegeben und keine von der zweiten Query. In diesem Beispiel werden alle Flüge, die weniger als 2000 kosten zurückgegeben mit Ausnahme von allen Flügen, die zwischen 600 und 900 kosten.

Das Programm DEMO_CDS_EXCEPT greift mit SELECT auf die View zu und stellt das Ergebnis dar.

Beispiel - Schachtelung von EXCEPT-Verzweigungen

Die folgende CDS-View-Entität schachtelt eine EXCEPT-Klausel innerhalb einer anderen EXCEPT-Klausel.

Das Programm DEMO_CDS_EXCEPT_NESTING befüllt zuerst die zugrundeliegenden Datenbanktabellen und greift anschließend mit SELECT auf die View zu. Die Ergebnismenge besteht aus 9 Zeilen.

Ohne Schachtelung und die Klammerung ( ) um die letzten beiden EXCEPT-Verzweigungen, würde die Ergebnismenge nur eine Zeile zurückgeben.






BAL Application Log Documentation   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 41296 Date: 20240523 Time: 160726     sap01-206 ( 313 ms )