Ansicht
Dokumentation

ABENBDL_DET_ACTION_EXT_ABEXA - BDL DET ACTION EXT ABEXA

ABENBDL_DET_ACTION_EXT_ABEXA - BDL DET ACTION EXT ABEXA

Fill RESBD Structure from EBP Component Structure   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- 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

Ausführen

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 )