Ansicht
Dokumentation
ABENBDL_DET_ACTION_EXT_ABEXA - BDL DET ACTION EXT ABEXA
Fill RESBD Structure from EBP Component Structure ABAP Short ReferenceDiese Dokumentation steht unter dem Copyright der SAP AG.
- Determinierungsaktion erweitern
In diesem Beispiel wird die Erweiterung einer Determinierungsaktion über eine BDEF-Erweiterung demonstriert.
Datenmodell
Das CDS-Datenmodell besteht aus der Wurzelentität
DEMO_RAP_EXTENSIBILITY_DET_ACT und ihrer untergeordneten Entität DEMO_RAP_EXT_DET_ACT_CHILD.
Wurzelentität:
Untergeordnete Entität:
Verhaltensdefinition
Die CDS-Verhaltensdefinition
DEMO_RAP_EXTENSIBILITY_DET_ACT wird in
CDS BDL wie unten
definiert: Es wird die Determinierungsaktion trigger_all
definiert, die zwei Determinierungen auslöst. Die Verhaltensdefinition ist erweiterbar und erlaubt
explizit Erweiterungen der Determinierungsaktion trigger_all.
Verhaltenserweiterung
Die BDEF-Erweiterung DEMO_RAP_DET_ACT_EXT erweitert
die Determinierungsaktion trigger_all um eine neue On-Save-Determinierung.
Verhaltensimplementierung
Für die CDS-Verhaltensdefinition wurde ein ABAP-Behavior-Pool (ABP) angelegt. Die globale Klasse des Behavior-Pools ist BP_DEMO_RAP_EXTENSIBILITY_DET_, siehe BP_DEMO_RAP_EXTENSIBILITY_DET_CCIMP. Diese globale Klasse implementiert drei Methoden:
- get_instance_authorizations: Es wird der Wert des Feldes CompanyCode überprüft. Wenn der Buchungskreis ABCD ist, sind Verbuchungsaufträge nicht zulässig. Wenn der Buchungskreis einen anderen Wert hat, sind Aktualisierungen zulässig.
- setID: Eine On-Save-Determinierung, die eine zufällig generierte Ganzzahl in das Feld SalesOrderId einfügt.
- TotalPrice: Eine On-Save-Determinierung, die die Anzahl der Kundenauftragspositionen mit dem Preis multipliziert und das Ergebnis aller Kategorien addiert und so den Gesamtpreis aller Positionen eines Kundenauftrags berechnet.
Für die CDS-Erweiterungsverhaltensdefinition wird ein ABAP-Behavior-Pool (ABP) angelegt. Die globale Klasse des Behavior-Pools ist BP_DEMO_RAP_DET_ACT_EXT, siehe BP_DEMO_RAP_DET_ACT_EXT=======CCIMP. Diese globale Klasse implementiert die Determinierung setStatustoNew. Wenn diese Determinierung aufgerufen wird, fügt sie den Wert O (d.h. offen) in das Feld Status ein.
Dies ist ein einfaches Beispiel, das Demonstrationszwecken dient.
Quelltext
Beschreibung
Zugriff mit ABAP über EML
Der obige Quelltext verwendet und ABAP EML, um auf das RAP-Business-Objekt aus einem ABAP-Programm zuzugreifen:
- Er fügt zwei übergeordnete und zwei untergeordnete Instanzen direkt in die Datenbanktabellen mit -INSERT. Dadurch wird verhindert, dass die Determinierungen ausgelöst werden (alle drei werden durch EML- MODIFY ENTITIES CREATE ausgelöst).
- Es wird die Determinierungsaktion trigger_all ausgeführt.
- Mit der -SELECT-Anweisung wird der Inhalt der übergeordneten Tabelle vor und nach der Ausführung der Determinierungsaktion angezeigt. Die Felder SalesOrderId, AmountSum und Status haben Werte, die über die Determinierungen eingefügt wurden.
Das RAP-Framework führt die Implementierungen im ursprünglichen ABAP-Behavior-Pool und im Erweiterungs-ABAP-Behavior-Pool in der folgenden Reihenfolge aus:
- get_instance_authorizations: Prüft, ob die Operation auf dem Wurzelknoten berechtigt ist.
- setID, eine Determinierung aus dem Wurzelknoten der ursprünglichen BDEF.
- setStatustoNew, eine Ermittlung aus der Wurzelknotenerweiterung.
- get_instance_authorizations: Prüft, ob die Operation auf dem untergeordneten Knoten berechtigt ist.
- TotalPrice, eine Determinierung aus dem untergeordneten Knoten der ursprünglichen BDEF.
RFUMSV00 - Advance Return for Tax on Sales/Purchases General Data in Customer Master
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 7008 Date: 20240523 Time: 164139 sap01-206 ( 88 ms )