CDS View Associations

Relationen in CDS Views


Association - Relation zwischen zwei CDS-View

Wir Joinen also auf eine andere Tabelle.


define view ZI_Order as select from vbak
  association [0..*] to ZI_OrderItem as _Items
    on $projection.vbeln = _Items.vbeln
{
  key vbeln,
  erdat,
  _Items
}

- keine automatische Lösung usw.

- Typisches Beispiel: Header → Items, aber die Items könnten auch ohne Header existieren.

Composition - Kein Child ohne Parent

- Wenn der Parent gelöscht wird, werden die Children automatisch mitgelöscht

- Pflicht für Managed RAP BOs (z. B. Fiori-OData mit Draft Handling).


define root view entity ZI_Order
  as select from vbak
  composition [0..*] of ZI_OrderItem as _Items
{
  key vbeln,
  erdat,
  _Items
}

Kardinalität

Beziehung Parent-Seite (Association) Kind-Seite (Association) Beschreibung
1:n (optional) [0..*] → „0 bis n Kinder“ [1..1] → „genau 1 Parent“ Ein Parent kann 0 bis n Kinder haben; jedes Kind gehört genau zu einem Parent.
1:n (mind. 1) [1..*] → „1 bis n Kinder“ [1..1] → „genau 1 Parent“ Ein Parent hat mindestens ein Kind; jedes Kind gehört genau zu einem Parent.
1:0..1 (optional 1:1) [0..1] → „0 oder 1 Kind“ [1..1] → „genau 1 Parent“ Ein Parent hat optional genau ein Kind; jedes Kind hat genau einen Parent.
1:1 (streng) [1..1] → „genau 1 Kind“ [1..1] → „genau 1 Parent“ Exakt ein Kind pro Parent und umgekehrt.
n:1 (aus Kind-Sicht) [0..*] am Parent → „viele Kinder“ [1..1] am Kind → „genau 1 Parent“ Viele Kinder referenzieren denselben Parent (typisches FK-Szenario).
n:m (über Zwischentabelle) [0..*] zu Link-Entity [0..*] von Link-Entity In CDS mit einer Zwischentabelle/-View modelliert: zwei 1:n-Beziehungen.
Alias „[*]“ [*] ≙ [0..*] „Beliebig viele“ ist gleichbedeutend mit 0..n.

Get Started: Parent


@EndUserText.label: 'Header for Update SD Item Update'
define custom entity ZXX_I_CHAR_UPD_HDR
{
  key SalesOrder     : vbeln_va;
  key SalesOrderItem : posnr_va;
      ClassType      : klassenart;
      ClassNum       : klasse_d;
      
      _Items : association[0..*] to ZXX_I_CHAR_UPD_ITM
            on _Items.SalesOrder = $projection.SalesOrder and
            _Items.SalesOrderItem = $projection.SalesOrderItem;
};

Get Started: Child


@EndUserText.label: 'Update SD Item Update'
define custom entity ZXX_I_CHAR_UPD_ITM
{
  key SalesOrder     : vbeln_va;
  key SalesOrderItem : posnr_va;
  key ObjectMatNr    : char50;
  key NameChar       : atnam;
      ClassType      : klassenart;
      CharcValue     : char30;
      NumValueFrom   : abap.decfloat16;
      NumValueTo     : abap.decfloat16;
      Relation       : char2;
}