In RAP ist eine Action eine nicht-standardmäßige Änderungsoperation, die Teil der Business-Logik ist. Sie wird typischerweise genutzt, um bestimmte Felder einer Business-Objekt-Entität zu ändern. Anders als beim Standard-Update wird dabei nicht die Update-Operation selbst aufgerufen, sondern die Action mit der vordefinierten Logik. In einer Fiori-Anwendung bedeutet das, dass der Anwender den Zustand eines Objekts, etwa den Status einer Reiseinstanz, direkt per Button ändern kann, ohne in den Bearbeitungsmodus wechseln zu müssen. Actions sind jedoch nicht auf das Ändern einzelner Werte beschränkt, sondern können auch Instanzen erzeugen oder komplexere Abläufe ausführen. Technisch werden sie in der Behavior Definition definiert und im Behavior Pool implementiert. Sie werden über Methoden mit FOR MODIFY und typisierten Parametern umgesetzt und sind durch die Syntax FOR ACTION als solche gekennzeichnet.
...
define behavior for DEMO_CDS_ACTION_INPUT_PARAM alias PurchaseItem
{
action updateDiscount parameter DEMO_CDS_ABSTRACT_DISCOUNT result [1] $self;
...
}
...
define behavior for DEMO_CDS_ACTION_INPUT_PARAM alias PurchaseItem
{
action >> Action Keyword
updateDiscount >> Action Name
parameter >> Parameter Keyword
DEMO_CDS_ABSTRACT_DISCOUNT >> Type Parameter
"Result 1 result vom selben Type, wie der Host-Type
result [1] $self;
...
}
In RAP gibt es verschiedene Typen von Actions mit speziellen Einsatzbereichen. Eine interne Action ist nur innerhalb des Business-Objekts nutzbar, etwa für interne Statusänderungen, und kann von außen nicht per OData oder EML aufgerufen werden. Eine statische Action ist nicht an eine einzelne Instanz gebunden, sondern bezieht sich auf die gesamte Entität. Mit einer repeatable Action lässt sich dieselbe Instanz mehrfach in einem Request oder Changeset bearbeiten, wobei jede Ausführung über eine Content-ID (%CID) unterscheidbar ist. Factory Actions dienen zur Erzeugung neuer Instanzen, entweder instanzgebunden mit Übernahme bestimmter Werte oder statisch mit Standardwerten, wobei die vom Konsumenten übergebene %CID dem endgültigen Schlüsselwert zugeordnet wird. Schließlich gibt es Save Actions, die ausschließlich in der RAP-Save-Sequenz, konkret in den Phasen FINALIZE oder ADJUST\_NUMBERS, ausgeführt werden dürfen und nicht während der normalen Interaktion aufgerufen werden können.
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.