Ansicht
Dokumentation

ABENCDS_COMPOSITION_V2 - CDS COMPOSITION V2

ABENCDS_COMPOSITION_V2 - CDS COMPOSITION V2

ROGBILLS - Synchronize billing plans   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- CDS-View-Entität, COMPOSITION

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

Wirkung

Eine CDS-Komposition in ABAP CDS ist eine spezialisierte CDS-Assoziation, die die aktuelle CDS-View-Entität als Elternentität des Kompositionsziels definiert. Das Kompositionsziel ist die Kindentität und sie muss eine To-Parent-Assoziation zu ihrer Elternentität 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 ENTITY 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 Views mit Mengenoperatoren nicht unterstützt.

Beispiel

Die unten gezeigte CDS-View-Entität DEMO_SALES_CDS_SO_I_VE 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-Entität DEMO_SALES_CDS_SO_I_SL_VE.

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.






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

Length: 11388 Date: 20240523 Time: 163252     sap01-206 ( 121 ms )