Relationen in CDS Views
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.
- 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
}
| 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. |
@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;
};
@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;
}
ABAP Core Data Services (CDS) sind eine moderne Möglichkeit in SAP ABAP, Datenbankabfragen und Datenmodelle zu definieren.
Sie sind ein semantisches Schichtmodell auf der Datenbank, mit dem man Daten deklarativ beschreibt, statt rein prozedural in ABAP zu programmieren.