Ansicht
Dokumentation
ABENBDL_DETERMINE_ACTION - BDL DETERMINE ACTION
CL_GUI_FRONTEND_SERVICES - Frontend Services ABAP Short ReferenceDiese Dokumentation steht unter dem Copyright der SAP AG.
- determine action
$[internal$] determine action
$[(authorization:none
$| authorization:update)$]
DetermineActionName $[extensible$]
{
determination $[(always)$] MyDetermination1;
determination $[(always)$] MyDetermination2;
validation $[(always)$] MyValidation1;
validation $[(always)$] MyValidation2;
determination $[(always)$] Child~ChildDetermination;
validation $[(always)$] Child~ChildValidation;
...
}
Wirkung
Determine-Aktionen erlauben es dem RAP-BO-Consumer auf Anforderung Determinierungen und Validierungen auszuführen. Beim Ausführen einer Determine-Aktion werden die ihr zugeordneten Determinierungen und Validierungen ausgewertet und nur diejenigen Determinierungen und Validierungen mit erfüllten Auslösebedingungen ausgeführt. Eine Determine-Aktion kann als on save definierte Determinierungen und Validierungen umfassen. Als on modify definierte Determinierungen sind nicht erlaubt.
Falls der optionale Zusatz always verwendet wird, werden alle zur Determine-Aktion zugehörigen Determinierungen und Validierungen unabhängig von deren Auslösebedingungen ausgeführt. Nach Ausführung einer Determinierung mit dem Kennzeichen always, darf sie durch andere der gleichen Determine-Aktion zugehörigen Determinierungen ausgelöst werden.
Determinierungen und Validierungen von Kindentitäten können über die Syntax child~childDetermination oder child~childValidation eingeschlossen werden, solange diese Determinierungen und Validierungen die Auslöseoperationen delete nicht umfassen.
Reihenfolge der Ausführung: Es werden zuerst Determinierungen dann Validierungen ausgeführt. Die Reihenfolge der Ausführung unter Determinierungen oder Validierungen wird durch das RAP-Framework definiert und ist unabhängig von der innerhalb der Determine-Aktion angegebenen Reihenfolge.
Die folgenden CDS-BDL-Operationszusätze sind möglich:
- internal sorgt dafür, dass auf die entsprechende Determine-Aktion nur von innerhalb der Business-Objekt-Implementierung zugegriffen werden kann.
- authorization:none schließt die entsprechende Operation aus Berechtigungsprüfungen aus.
- authorization:update delegiert die Berechtigungssteuerung an die Berechtigungsprüfung, die für die Update-Operation implementiert ist.
Der optionale Zusatz extensible steht nur entwurfsfähigen BOs zur Verfügung. Hiermit darf ein RAP-BO-Verwender die jeweilige Determinierungsaktion über eine BDEF-Erweiterung um eigene Validierungen und Determinierungen erweitern. Weitere Details über das Einschalten von Erweiterbarkeit sind unter Erweiterbarkeitsaktivierung zu finden.
Verfügbarkeit
- Nicht verwaltete und entwurfsfähige RAP-BOs
- Nicht verfügbar für nicht verwaltete Nicht-Entwurfs-RAP-BOs
In einem verwalteten RAP-BO benötigen Determine-Aktionen keine Implementierung im ABAP-Verhaltens-Pool (ABP), aber die in einer Determine-Aktion enthaltenen Determinierungen und Validierungen müssen implementiert sein.
In einem nicht verwalteten RAP-BO erfordern Determine-Aktionen eine Implementierung in der RAP-Behandlermethode FOR MODIFY im ABAP-Verhaltens-Pool.
Determine-Aktionen aus der Basis-BDEF können in einer Projektions-BDEF wiederverwendet werden. Weitere Informationen über die Wiederverwendung finden Sie unter CDS BDL - Verwendung, Projektions-BDEF. Neue Determine-Aktionen können in einer Projektions-BDEF nicht angegeben werden.
Entwicklungsleitfaden für das ABAP-RESTful-Anwendungsprogrammiermodell, Abschnitt Action Definition
Hinweis
Die Entwurfs-Determine-Aktion Prepare ist das Entwurfspendant zu Determine-Aktionen. Es wird im Abschnitt CDS BDL - Entwurfsaktionen dokumentiert.
Beispiel
Im folgenden Beispiel wird eine auf der CDS-Wurzel-View-Entität DEMO_SALES_CDS_SO_3 basierte verwaltete BDEF gezeigt. Die Wurzel-View-Entität stellt einen Kundenauftrag und die Kindentität eine Kundenauftragsposition dar. Die Determine-Aktion trigger_all enthält die folgenden beiden Determinierungen, eine aus der Wurzelentität und eine aus der Kindentität.
- Mit setID werden beim Anlegen einer neuen Entitätsinstanz dem semantischen Schlüsselfeld SalesOrderId während der Sicherungssequenz Werte zugeordnet.
- Mit TotalPrice wird der Gesamtpreis aller Positionen eines Kundenauftrags berechnet. Dies wird bei jedem Anlegen eines neuen Kundenauftrags ausgelöst.
Diese Determinierungen sind im Verhaltens-Pool BP_DEMO_SALES_CDS_SO_3 implementiert.
Mit dem Programm DEMO_CDS_DETERMINE_ACTION wird über EML auf ein Business-Objekt aufgegriffen und folgende Schritte ausgeführt:
- Es wird zuerst über Daten in die persistenten Datenbanktabellen des BOs eingefügt. Das heißt, BO-Entitätsinstanzen sind in der Datenbank vorhanden, die Determinierungen wurden jedoch noch nicht ausgelöst.
- Die Determine-Aktion trigger_all wird mit der Anweisung MODIFY ENTITIES für zwei Entitätsinstanzen ausgeführt. Für diese beiden Entitätsinstanzen werden die Felder ID und TotalPrice ermittelt.
- Quelltextausschnitt:
- Die ermittelten Werte werden über die Anweisung COMMIT ENTITIES festgeschrieben.
Ergebnis: Werte werden für die Felder ID und TotalPrice ermittelt.
IMAGE @@ABDOC_DET_ACTION.png@@503@@263@@CPI1466 during Backup BAL Application Log Documentation
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 12121 Date: 20240523 Time: 183221 sap01-206 ( 125 ms )