Ansicht
Dokumentation

ABENBDL_DETERMINATION_ABEXA - BDL DETERMINATION ABEXA

ABENBDL_DETERMINATION_ABEXA - BDL DETERMINATION ABEXA

Addresses (Business Address Services)   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Determinierung

In diesem Beispiel wird das Definieren, Implementieren und Konsumieren von Determinierungen in einem verwalteten RAP-BO demonstriert.

Datenmodell

Das CDS-Datenmodell besteht aus der Wurzelentität DEMO_SALES_CDS_SO_2 und ihrer untergeordneten Entität DEMO_SALES_CDS_SO_I_2. Die Wurzelentität stellt einen Kundenauftrag und die Kindentität eine Kundenauftragsposition dar.

Wurzelentität:

Kindentität:

Verhaltensdefinition

Die CDS-Verhaltensdefinition DEMO_SALES_CDS_SO_2 wird in CDS BDL wie folgt definiert:

Definition der Determinierungen

Folgende Determinierungen werden in der Wurzelentität definiert:

  • setID ist eine on save-Determinierung, die jedes Mal beim Anlegen einer neuen Instanz der Wurzelentität ausgelöst wird. Sie weist dem semantischen Schlüsselfeld SalesOrderId während der Sicherungssequenz Werte zu. Das technische Schlüsselfeld SoKey wird über interne Nummerierung durch die Anweisung numbering:managed gefüllt.
  • Mit setStatustoNew wird der Status eines neu angelegten Kundenauftrags auf O wie open gesetzt. Dies wird bei jedem Anlegen eines neuen Kundenauftrags ausgelöst.
  • Mit TotalPrice wird der Gesamtpreis aller Positionen eines Kundenauftrags berechnet. Dies wird bei jedem Anlegen eines neuen Kundenauftrags ausgelöst.

Die Kindentität definiert eine on modify-Determinierung:

  • TotalPrice_1 ist das Pendant zu TotalPrice. Falls ein Kundenauftrag ganz ohne Positionen angelegt wird, gewährleistet diese Determinierung die Berechnung des Gesamtpreises eines Kundenauftrags direkt nachdem Positionen hinzugefügt werden.

Verhaltensimplementierung

Für die genannte CDS-Verhaltensdefinition wurde ein ABAP-Behavior-Pool (ABP) angelegt. Die globale Klasse des Behavior-Pools ist BP_DEMO_SALES_CDS_SO_2. Die eigentliche Implementierung findet in BP_DEMO_SALES_CDS_SO_2========CCIMP statt und funktioniert wie folgt:

  • Mit setID wird ein Zufallswert vom Typ i für das Feld SalesOrderId jeder BO-Instanz generiert.
  • Mit setStatustoNew wird der Wert O wie Open in die Spalte Status für jede neue BO-Instanz eingefügt.
  • Mit TotalPrice werden die Felder GrossAmount und Quantity über eine read-by-association-Operation aus der Kindentität gelesen. Es wird zuerst den vollen Preis pro Position und dann die Summe aller Positionspreise für jeden Kundenauftrag berechnet, um den Gesamtpreis zu erhalten.
  • TotalPrice_1 funktioniert genau wie TotalPrice, hat aber andere Auslösebedingungen.

Quelltext

Ausführen

Beschreibung

Zugriff mit ABAP über EML

Der obige Quelltext verwendet EML, um auf das RAP Business-Objekt aus einem ABAP-Programm zuzugreifen:

  • Es werden zwei BO-Instanzen mit der Anweisung MODIFY ENTITY angelegt. Es werden zwei Kindentitäten für jede Wurzelentitätsinstanz angelegt, damit beide Kundenaufträge zwei Kundenauftragspositionen haben.
  • Alles drei Determinierungen der Wurzelentität werden durch das Anlegen der neuen Instanzen ausgelöst und fügen in die Felder ID, LIFECYCLE_STATUS und AMOUNT_SUM Werte ein.
  • Das technische Schlüsselfeld SO_KEY wird über interne Nummerierung gefüllt.





General Material Data   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6128 Date: 20240523 Time: 170248     sap01-206 ( 95 ms )