Benjamin Salmen
3. Mai 2021

CRUDes Zeug – Überblick über die CRUD-Methoden im SAP Backend

Individuelle SuccessFactors Entwicklung

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.

Unser Whitepaper zu 8 Gründe für das Scheitern von IT-Projekten

Whitepaper: 8 Gründe für das Scheitern von IT-Projekten

In diesem Whitepaper nennen wir 8 Gründe, warum IT-Projekte so häufig scheitern und geben Ihnen Werkzeuge, mit denen Sie dies verhindern und durchstarten können.

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.

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!



Das könnte Sie auch interessieren

ODATA und SAP UI5 SAP Fiori-Anwendungen sind aktuell in aller Munde. ODATA bildet hierbei die Schnittstelle zwischen dem UI5 Frontend und dem SAP Backend. Für den Entwickler

weiterlesen

Warum steht hier noch der alte Wert? Wieso werden so viele Anfragen ans Backend gesendet? Wenn Sie sich mit OData Entwicklung befassen, werden Sie sich vermutlich bereits ähnliche Fragen gestellt haben.

weiterlesen

In diesem Blogbeitrag möchte ich Ihnen zeigen, wie Sie einen ODATA-Service anlegen und testen können. Dabei erkläre ich zuerst einmal das ODATA Model mit Entitätstypen und EDM-Typen. Danach zeige ich Ihnen, wie Sie alle 5 Standard-Methoden des ODATA-Services implementieren und […]

weiterlesen

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Kontaktieren Sie uns!
Nadja Messer
Nadja Messer Kundenservice