Ansicht
Dokumentation

ABENCDS_COMPOSITION_V1 - CDS COMPOSITION V1

ABENCDS_COMPOSITION_V1 - CDS COMPOSITION V1

ABAP Short Reference   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DDIC-basierte View, COMPOSITION

... COMPOSITION $[ [min..max] $] OF target $[AS _compos$] ...

Wirkung

Eine CDS-Komposition in ABAP CDS ist eine spezialisierte CDS-Assoziation, die die aktuelle als Elternentität des Kompositionsziels definiert. Das Kompositionsziel ist die Kindentität. Sowohl Eltern- als auch Kindentität müssen gegenseitige Assoziationen definieren. CDS-Kompositionen definieren den CDS-Kompositionsbaum eines RAP Business-Objekts im Kontext des ABAP-RESTful-Anwendungsprogrammiermodells.

Eine Komposition wird in einer SELECT-Anweisung einer CDS-View-Entität mit dem Schlüsselwort COMPOSITION definiert. Eine CDS-Komposition verknüpft die aktuelle abstrakte CDS-Entität als Kompositionsquelle mit der in der Definition der Komposition angegebenen Kompositionsziel target.

Die Kindentität (das Kompositionsziel) muss bereits über eine To-Parent-Assoziation zur Elternkomposition verfügen, bevor eine Komposition in der Elternentität definiert werden kann.

Regeln

CDS-Kompositionen werden ähnlich wie CDS-Assoziationen definiert. Im Folgenden werden die Gemeinsamkeiten und Unterscheide aufgeführt:

  • Gemeinsamkeiten

  • Unterschiede
  • Eine ON-Bedingung wird für eine Komposition nicht explizit definiert. Die ON-Bedingung wird automatisch mithilfe der ON-Bedingung der To-Parent-Assoziation des Kompositionsziels generiert.

  • Es kann kein Standardfilter für eine Komposition definiert werden. Die Syntax ... WITH DEFAULT FILTER ... ist nicht erlaubt.

Folgendes gilt für das Kompositionsziel target:

  • Eine Kindentität darf das Ziel genau einer Komposition sein. Daraus folgt, dass eine Kindentität genau eine Elternentität hat.
  • Das Kompositionsziel kann nicht über einen Pfadausdruck angegeben werden. Folgendes ist nicht erlaubt:
COMPOSITION OF _path._to_child
  • Selbstkompositionen sind nicht erlaubt. Das Ziel einer Komposition kann nicht die CDS-Entität sein, in der diese Komposition definiert ist.

Exponierung:

  • Der Name der Komposition _compos muss genau einmal ohne Attributen und Alias zur select_list der CDS-View-Entität hinzugefügt werden, in der sie definiert ist. Wenn kein Name der Komposition definiert ist, ist der Name der Komposition der Name der Zielentität target, und dieser Name muss in der SELECT-Liste verfügbar gemacht werden.

Verwendung:

  • Felder aus einem Kompositionsziel können nicht lokal in Pfadausdrücken verwendet werden. Felder aus dem Kompositionsziel können nicht in der SELECT-Liste, einer WHERE-Klausel oder an anderer Stelle der View-Entität verwendet werden, in der es definiert ist.
Dies gilt auch für die CDS-View-Erweiterung. Es ist nicht möglich, ein Feld aus einem Kompositionsziel über EXTEND VIEW einer CDS-View-Entität hinzuzufügen.
  • Eine Komposition kann in Datendefinitionen propagiert werden, in denen sie nicht definiert ist. In diesem Fall verwendet die Komposition ihre spezielle Semantik und wird als normale CDS-Assoziation behandelt.
  • Wenn eine Komposition in einer Datendefinition, Metadatenerweiterung oder View-Erweiterung verwendet wird, in der sie nicht definiert ist, kann sie in einem Pfadausdruck verwendet werden. Die Übergabe von Parametern und das Definieren von Attributen ist in diesem Fall ebenfalls möglich.
  • Kompositionen können in Annotationswerten (z. B. AnnotationRef, ElementRef) in den CDS-Entitäten verwendet werden, in denen sie definiert sind, da dies nicht zu einem SQL-Join führt.

Kompositionen and Joins:

Hinweise

  • Bei der Verwendung von Kompositionen sollten zyklische Abhängigkeiten vermieden werden, um Probleme bei der Massenaktivierung von CDS-Entitäten zu vermeiden.
  • Kompositionen können in der element_list der CDS-Entität, in der sie definiert sind, mit Annotationen versehen werden.
  • Das Definieren neuer Kompositionen wird in UNION-Views nicht unterstützt.

Beispiel

Die unten gezeigte CDS-View DEMO_SALES_CDS_SO_I gibt Information über Kundenauftragspositionen zurück. Sie definiert drei Assoziationen, wobei eine davon eine Komposition ist. Das Kompositionsziel (d.h. die Kindentität) ist die CDS-View DEMO_SALES_CDS_SO_I_SL.

Erklärung: Eine Kundenauftragsposition kann eine oder mehrere Einteilungen haben, Einteilungen jedoch können nur in Verbindung mit Kundenauftragspositionen existieren.

In der SELECT-Liste wird die Komposition _ScheduleLine exponiert, damit externe CDS-Entitäten auf sie zugreifen kann.






CPI1466 during Backup   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 11205 Date: 20240606 Time: 045332     sap01-206 ( 128 ms )