Ansicht
Dokumentation
ABENCDS_PATH_EXPRESSION_V2 - CDS PATH EXPRESSION V2
CL_GUI_FRONTEND_SERVICES - Frontend Services General Data in Customer MasterDiese Dokumentation steht unter dem Copyright der SAP AG.
- CDS-View-Entität, path_expr
... $[source.$]_assoc1$[
parameters$]$[attributes$]
$[._assoc2$[
parameters$]$[attributes$] ... $] ...
Wirkung
Gibt einen SQL-Pfadausdruck an, der in einer SELECT-Anweisung einer CDS-View-Entität verwendet werden kann. Ein Pfadausdruck der CDS DDL ist eine Folge von durch Punkte (.) getrennter CDS-Assoziationen, deren Namen mit _assoc1, _assoc2, ... angegeben werden. Wenn die erste CDS-Assoziation in einer anderen CDS-Entität exponiert wird, kann der Name dieser CDS-Entität als source. vor dem Pfadausdruck angegeben werden.
Ein Pfadausdruck kann aus einer Mischung aus Kompositionen, To-Parent-Assoziationen und „normalen“ CDS-Assoziationen bestehen.
Die erste CDS-Assoziation eines Pfadausdrucks muss entweder in der aktuellen CDS-View-Entität definiert, oder als Element der SELECT-Liste oder der Elementliste in einer CDS-View-Entität oder CDS-Hierarchie exponiert werden, die eine Datenquelle der aktuellen View ist.
Alle weiteren CDS-Assoziationen müssen im Assoziationsziel der im Pfadausdruck jeweils direkt vorangehenden CDS-Assoziation exponiert sein. Eine CDS-Assoziation kann nicht in einem Pfadausdruck verwendet werden, der in einer abstrakten CDS-Entität oder CDS-Custom-Entität definiert ist.
attributes kann für die Angabe von Attributen in spitzen Klammern nach jeder CDS-Assoziation verwendet werden. Diese Attribute definieren die folgenden Eigenschaften aus diesem Abschnitt des Pfadausdrucks:
- Bei Verwendung implementierter Join-Typ
Wenn das Assoziationsziel einer angegebenen CDS-Assoziation eine CDS-Entität mit Eingabeparametern ist, dann müssen Aktualparameter über parameters nach dem Namen _assoc an sie übergeben werden. Nur in einem Anwendungsfall ist es nicht möglich, Werte für die Aktualparameter anzugeben, nämlich wenn eine CDS-Assoziation in einem Pfadausdruck als ein Element einer SELECT-Liste angegeben wird.
Verwendung von Pfadausdrücken
Pfadausdrücke können in der CDS DDL von ABAP CDS wie folgt verwendet werden:
- Sie können ihre finalen CDS-Assoziationen als Elemente von SELECT-Listen für die Verwendung in CDS-Entitäten oder in exponieren.
- Pfadausdrücke mit CDS-Assoziationen, deren Assoziationsziel keine abstrakte CDS-Entität oder CDS-Custom-Entität ist, können wie folgt verwendet werden:
- zur Angabe des Assoziationsziels der letzten CDS-Assoziation als Datenquelle data_source hinter FROM. Der Pfadausdruck repräsentiert standardmäßig einen Inner-Join.
- zur Angabe eines Elements .element des Assoziationsziels der letzten CDS-Assoziation als Element einer SELECT-Liste. Der Pfadausdruck repräsentiert standardmäßig einen Left-Outer-Join.
- zur Angabe eines Elements .element des Assoziationsziels der letzten CDS-Assoziation als Operand von WHERE-, HAVING- oder WHEN--Bedingungen. Der Pfadausdruck repräsentiert standardmäßig einen Left-Outer-Join.
- zur Angabe eines Elements .element des Assoziationsziels der letzten CDS-Assoziation nach GROUP BY. Der Pfadausdruck repräsentiert standardmäßig einen Left-Outer-Join.
- zur Angabe eines Elements .element des Assoziationsziels der letzten CDS-Assoziation als ein Operand eines Aggregatausdrucks, eine eingebaute Funktion, ein Fallausdruck, oder ein Cast-Ausdruck. Der Pfadausdruck repräsentiert standardmäßig einen Left-Outer-Join.
- Für eine Selbstassoziation, bei der das Assoziationsziel gleich der Assoziationsquelle ist, sind diese Verwendungen nicht in der CDS-Entität möglich, in der sie definiert ist.
Für ein nicht aggregiertes Element einer SELECT-Liste mit Aggregatausdrücken und in einer WHERE- oder HAVING-Bedingung muss das Ergebnis des Pfadausdrucks eindeutig sein. D.h. die Kardinalität aller verwendeten CDS-Assoziationen ist entweder zu 1 oder der Pfadausdruck darf nur Filterbedingungen enthalten, die mit dem Zusatz 1: als eindeutig deklariert sind.
Beim Zugriff mit einem Pfadausdruck auf eine CDS-Entität, wird folgendes ausgewertet:
- Die durch die CDS-Assoziationen definierten Joins, von links nach rechts.
- Alle sonstigen Bedingungen der beteiligten CDS-Entitäten.
Der Pfadausdruck adressiert das gesamte Ergebnis dieser Auswertung oder ein Einzelelement .element.
Hinweise
- Der einfachste Pfadausdruck ist der Name einer einzigen CDS-Assoziation.
- Beachten Sie bei Joins der in Pfadausdrücken verwendeten CDS-Assoziationen, dass ihre linke Seite immer die CDS-Entität ist, die die CDS-Assoziation exponiert. Dies gilt insbesondere für CDS-Assoziationen, die in Datenquellen von CDS-Entitäten exponiert sind und weitergereicht werden.
- Pfadausdrücke der CDS DDL können auch für die Angabe von Bedingungen der ABAP CDS DCL von ABAP CDS verwendet werden.
- Auf eine CDS-Assoziation, deren Assoziationsziel keine CDS-Assoziation exponiert, kann in einem Pfadausdruck keine weitere CDS-Assoziation folgen. Genauer gesagt können für CDS-Assoziationen, deren Assoziationsziele DDIC-Datenbanktabellen oder DDIC-Views sind, keine weiteren CDS-Assoziationen in einem Pfadausdruck angegeben werden.
- Wenn CDS-Assoziationen der Pfadausdrücke einer View als Joins implementiert werden, werden sie automatisch auf so wenig Join-Ausdrücken wie möglich abgebildet. CDS-Assoziationen mit semantisch identischen Filterbedingungen werden automatisch in einen einzelnen Join-Ausdruck zusammengefasst.
- Pfadausdrücke mit CDS-Assoziationen, deren Assoziationsziel eine nicht-SQL-CDS-Entität ist, können an keiner Stelle verwendet werden, an der es zu einer Ausprägung von Join-Ausdrücken käme.
Beispiel
Die folgende CDS-View-Entität enthält den einfachen Pfadausdruck _scarr[inner].carrname in ihrer SELECT-Liste. Das Attribut INNER steuert den Join-Typ. Das Programm DEMO_FROM_JOIN_TO_ASSOC_VE demonstriert, dass diese View das gleiche Ergebnis wie ein direkt programmierter innerer Join in ABAP CDS oder in liefert.
Beispiel
Die CDS-View-Entität DEMO_SALES_CDS_PATH_EXPR verwendet eine eigene Assoziation und Assoziationen aus anderen CDS-Entitäten in Pfadausdrücken:
- Die CDS-Assoziation _SalesOrder der DDIC-basierten View DEMO_SALES_CDS_SO_I wird hinter FROM als Datenquelle angegeben. Eine Filterbedingung sorgt dafür, dass nur bestimmte Aufträge als Datenquelle dienen.
- Die CDS-Assoziation invoice_header, die in der View DEMO_SALES_CDS_PATH_EXPR selbst definiert ist, wird in einem Pfadausdruck als Operand in der WHERE-Bedingung verwendet.
- Die CDS-Assoziation _Buyer der CDS-View DEMO_SALES_CDS_SO wird über einen Pfadausdruck in der SELECT-Liste exponiert. Dadurch ist diese CDS-Assoziation auch in CDS-View-Entitäten verwendbar, die DEMO_SALES_CDS_PATH_EXPR als Datenquelle verwenden.
Pfadausdrücke, Verwendung in der SELECT-Liste
SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up General Data in Customer Master
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 16185 Date: 20240523 Time: 182025 sap01-206 ( 183 ms )