CRUDes Zeug – Überblick über die CRUD-Methoden im SAP Backend
CRUD ist ein Akronym und steht für Create, Read, Update, Delete. Das beschreibt die vier Operationen, die uns das OData-Framework zur Verfügung stellt. Mit diesen vier Operationen können Sie aus der Fiori-Anwendung heraus Daten im Backend erstellen, lesen, updaten und löschen. Wie Sie die CRUD-Methoden im Frontend auf dem Model aufrufen, ist in den meisten Unternehmen klar. Aber welche Methoden gibt es dafür im Backend und wie implementieren Sie diese? Hier erfahren Sie es.
Entitästyp <> Entitätsmenge <> CRUD Methoden – Wie hängen die drei Begriffe zusammen?
Ein Entitätstyp beschreibt, welche Felder ein Objekt (= eine Entität), das wir über unsere Schnittstelle austauschen wollen, hat und wie diese aussehen. Er bestimmt die Feldernamen und die entsprechenden Datentypen und definiert die Schlüsselattribute. Ein OData Service hat einen oder mehrere Entitätstypen.
Eine Entitätsmenge ist erstmal nur eine abstrakte Sammlung von Entitäten. Wir erinnern uns: einen Entität ist eine Art Repräsentant eines Entitätstypen. Zu einem Entitätstypen kann es mehrere Entitätsmengen geben, meist existiert aber nur eine Entitätsmenge zu einem Entitätstypen.
Die CRUD Methoden lassen sich jeweils für die Entitätsmengen implementieren. An dieser Stelle offenbart sich auch, weshalb es mehrere Entitätmengen zu einem Entitätstypen geben kann: Wollen wir beispielsweise mehrere gleichartige Datenobjekte auf unterschiedliche Arten auslesen, können wir dies damit abbilden. Beispielsweise können wir zum Entitätstyp Person die beiden Entitätsmengen Mitarbeiter und Bewerber erstellen. Beide sind strukturell gleich aufgebaut (benötigen also nur einen Entitätstypen), stammen aber aus unterschiedlichen Quellen oder werden anders verbucht. Es braucht also unterschiedliche CRUD Methoden. Genau diesen Fall können wir mit unterschiedlichen Entitätsmengen zu einem Entitätstypen abbilden.
Zusammengefasst: Zu einem Entitätstypen kann es eine oder mehrere Entitätsmengen geben. Zu einer Entitätsmenge gibt es eine Implementierung der CRUD Methoden.
So legen Sie die CRUD-Methoden an
Der Gateway Service Builder (Transaktion SEGW) legt die CRUD Methoden automatisch an. In dieser Transaktion erstellen wir unseren OData Service und definieren die Entitätstypen. Nachdem wir unsere Entitätstypen und die zugehörigen Entitätsmengen angelegt haben, müssen wir die Laufzeitobjekte generieren, indem wir auf den Button mit dem rot-weißen Schirm oben links klicken. Dadurch legt das System folgende Klassen an:
- Datenprovider-Klasse (DPC)
- Datenprovider-Erweiterungsklasse (DPC_EXT)
- Modelprovider-Klasse (MPC)
- Modelprovider-Erweiterungsklasse (MPC)
Die Klassen beginnen alle mit einer einheitlichen Namenskonvention und beinhalten den Namen des OData Services selbst. Sie enden auf die oben in Klammern aufgeführten speziellen Bezeichner.
Für uns zentral sind die Datenprovider-Klassen. In diesen geschieht nun die wirkliche „Magie“ – hier werden die CRUD Operationen implementiert.
Was ist der Unterschied zwischen DPC und DPC_EXT?
Wichtig zu verstehen ist der Unterschied zwischen der DPC und der DPC_EXT Klasse. Die DPC Klasse wird immer dann neu generiert, wenn auch die Laufzeitobjekte von Grund auf neugeneriert werden. Jede Änderung, die wir hier vornehmen, würde also verloren gehen. Daher nehmen wir alle unsere Entwicklungen in der DPC_EXT vor. Das bedeutet konkret, dass wir die DPC Klasse so gut wie nie öffnen – sie dient uns nur als technischer Unterbau. In der DPC Klasse redefinieren wir die benötigten CRUD Methoden.
Welche CRUD-Methoden gibt es?
In einem OData Service gibt es zu jeder Entität fünf Methoden, die wir in der DPC_EXT redefinieren können:
- GET_ENTITY
- GET_ENTITYSET
- CREATE_ENTITY
- UPDATE_ENTITY
- DELETE_ENTITY
Alle Methodennamen sind wieder nach einer speziellen Konvention aufgebaut: Zu Beginn steht der Name der Entitätsmenge und anschließend einer der Bezeichner aus der Liste weiter oben.
Wozu dienen die verschiedenen Methoden und welche Parameter haben sie?
GET_ENTITY
Diese Methode dient dazu, eine bestimmte Entität aus dem Backend auszulesen. Wir rufen die Methode also mit den Schlüssel-Attributen aus der Fiori App auf, um an einen bestimmten Datensatz zu kommen.
Typischerweise wird hierbei die IT_KEYTAB befüllt.
GET_ENTITYSET
Auch hierbei handelt es sich um eine Read Methode. Diese Methode nutzen wir, wenn wir mehrere Entitäten aus dem Backend auslesen wollen. So können wir mit einem Aufruf ohne Parameter beispielsweise alle vorhandenen Datensätze auslesen. Die ausgelesene Menge können wir mittels Filtern beschränken.
Beim Aufruf müssen wir keine Importparameter befüllen. Es kann jedoch beispielsweise die IT_FILTER_SELECT_OPTIONS Tabelle für Filter befüllt sein. Manche Browser befüllen stattdessen auch den IV_Filterstring.
CREAT_ENTITY
Diese Methode dient dazu, einen Datensatz im Backend anzulegen.
Der neue Datensatz wird im Objekt IO_DATAPROVIDER übergeben.
UPDATE_ENTITY
Mit dieser Methode kann ein Datensatz, der bereits existiert, aktualisiert werden. Wichtig ist hierbei, dass die entsprechende GET_ENTITY Methode definiert ist, da die SAPUI5 App nach dem updaten eines Datensatzes die GET_ENTITY Methode automatisch aufruft.
Der aktualisierte Datensatz wird im Objekt IO_DATAPROVIDER übergeben.
REMOVE_ENTITY
Diese Methode dient dazu, einen Datensatz im Backend zu löschen.
Um das zu löschende Objekt zu identifizieren, befüllt das System die IT_KEYTAB befüllt.
SAP Fiori HCM - Quickstart
Innerhalb von nur 2 Wochen können Sie mit uns in die mobile Welt starten. Wir setzen in 5 Schritten Ihre erste HCM-App produktiv.
Haben Sie noch Fragen?
Das war schon der kurze Überblick über die CRUD Methoden im SAP Backend: So einfach können Sie alle CRUD Methoden in einem OData-Service implementieren. Haben Sie noch weitere Fragen zu OData Services oder anderen Themen, bei denen ich helfen kann? Schreiben Sie mich gerne an, ich freue mich auf Ihre Nachricht!