Willkommen zum zweiten Teil unserer Blogserie über ABAP RAP (ABAP RESTful Application Programming Model). Im ersten Teil (hier ansehen) haben wir die verschiedenen Programmiermodelle von ABAP besprochen und RAP samt seiner Schichten kennengelernt. In diesem Teil sehen wir uns ein Entwicklungsszenario an, das Ihnen hilft, RAP deutlich wirkungsvoller zu verstehen und einzusetzen. Doch halt, haben Sie Ihre Entwicklungsumgebung schon eingerichtet?
Für alle, die das noch nicht getan haben, hier der Link. Folgen Sie einfach der Anleitung und machen Sie alles startklar.
Hinweis: Der folgende Abschnitt setzt voraus, dass Ihr Basis-Setup steht!!
Sehr gut, jetzt wo Sie wissen, was ABAP RAP ist, und ein Basis-Setup läuft, tauchen wir mit einer praktischen Anwendung ein und verstehen die technischen Details.
Hinweis: Wir schauen uns ein End-to-End-Szenario an und verstehen Design, Architektur und Entwicklungsablauf. Natürlich wollen wir nicht losziehen, ohne eine Vorstellung davon zu haben, was wir eigentlich tun wollen. Deshalb nehmen wir ein kleines Hire-to-Retire-Szenario, besprechen einen Lösungsentwurf und beginnen dann entsprechend mit der Implementierung.
Szenario
Wir haben ein Einstellungsszenario, in dem HR die Berechtigung hat, Mitarbeiterdaten anzulegen, falls sie noch nicht existieren, oder die Angaben eines bestehenden Mitarbeiters zu aktualisieren. Der HR Manager hat die Berechtigung, den Status eingestellter oder aktualisierter Mitarbeiter auf aktiv oder inaktiv zu setzen. Letzterer kann außerdem bestimmte Informationen von Mitarbeitern aus den von HR bereitgestellten Datensätzen löschen und aktualisieren.
Neben Anlegen, Aktualisieren und Löschen (die automatisch umgesetzt werden, da wir ein Managed-Szenario implementieren) setzen wir Folgendes um:
Determination: Basierend auf der Position eines Mitarbeiters wird sein Gehalt hinzugefügt oder aktualisiert
Validation: Prüfung des Alters eines Mitarbeiters anhand seines Geburtsdatums; es muss mindestens 18 Jahre betragen.
Action: Der HR Manager kann den Mitarbeiterstatus auf aktiv oder inaktiv setzen, was Hire beziehungsweise Retire entspricht.
Damit Sie besser verstehen, wie unsere Anwendung aussehen wird, hier eine Vorschau der Fiori-UI-App:
HR
HR Manager
Ist es nicht großartig zu wissen, dass Sie nur minimal programmieren müssen und trotzdem so coole Anwendungen entwickeln können!!
Vorgehensweise
Teilen wir dieses Szenario in kleinere Teile auf und setzen jeden Teil nacheinander um. Bei der Analyse lassen sich folgende Schritte erkennen:
Anlegen eines Pakets zur Ablage der Projektressourcen.
Anlegen von drei Tabellen samt einem Datenelement, das tabellenübergreifend verwendet wird.
Tabelle mit Mitarbeiterinformationen: zur Ablage der Basisinformationen über einen Mitarbeiter.
Tabelle mit Beschäftigungsinformationen: zur Ablage von Beschäftigungsbestandteilen wie Eintrittsdatum und Gehalt.
Tabelle mit Positionsinformationen: zur Ablage positionsbezogener Informationen (wird als Wertehilfe- bzw. Prüftabelle verwendet).
Anlegen eines CDS Interface View, um eine Basissicht ohne umfangreiche Informationen zu erzeugen, die von verschiedenen Services genutzt werden kann.
Anlegen eines CDS Projection View, der eine Teilmenge der Elemente des CDS Interface View bereitstellt. Er ist serviceagnostisch.
Anlegen einer Metadata Extension für UI-Elemente sowie Anlegen von Behavior Definition und Projection zur Definition der auf dem Service möglichen Aktionen. Beispiel: Create, Update, Delete, Determination usw.
Anlegen der Behavior Implementation, um die Geschäftslogik zu Aktionen wie Validation, Action und Determination zu schreiben.
Anlegen des Binding Service zur Definition des vom Service genutzten Protokolls. Beispiel: OData V2 - UI, OData V2 - WebAPI usw.
Bereitstellen des Service.
Nachdem wir uns die notwendigen Schritte angesehen haben, beginnen wir mit ihrer Umsetzung. Wir setzen voraus, dass Sie ein Grundverständnis von ABAP RAP und seinen Schichten haben. Falls Sie sich dabei noch unsicher fühlen, empfehlen wir Ihnen unseren vorherigen Blog.
Datenbankdesign
Hier ist die Tabelle PositionInfo eine eigenständige Tabelle und dient als Prüf- bzw. Wertehilfetabelle, während die Tabelle Employment eine Composition zur Tabelle Employee bildet.
Es ist Zeit, mit dem Aufbau unseres End-to-End-Szenarios zu beginnen. Der erste Schritt dafür ist das Anlegen eines Pakets.
Legen Sie ein Paket an. Ein Paket wird benötigt, damit alle Entwicklungen und Projektressourcen unter einem Namen abgelegt werden können. Es wirkt wie ein Ordner, der alle erforderlichen Entwicklungen eines bestimmten Projekts zusammenhält.
Öffnen Sie den Project Explorer und klicken Sie mit der rechten Maustaste auf ‚Favorite Packages‘. Wählen Sie New→ ABAP Package.
Vergeben Sie Name und Beschreibung und setzen Sie ‚Add to favorite packages‘. Dadurch bleibt Ihr Paket oben und ist leicht erreichbar.
Klicken Sie auf Next und geben Sie die ‚Software Component‘ an. Gehen Sie zum nächsten Schritt, erzeugen oder wählen Sie einen Transportauftrag für das Paket und klicken Sie auf Finish. Ihr Paket wird angelegt.
Nun legen wir Datenbanktabellen und ein Datenelement an.
Datenelement anlegen
Um ein Datenelement anzulegen, klicken Sie mit der rechten Maustaste auf das erstellte Paket und wählen New→ Other ABAP Repository Object→ Data Element.
Vergeben Sie den Namen ZRAP_E2E_ID und eine passende Beschreibung.
Klicken Sie auf Next, geben Sie einen Transportauftrag an und klicken Sie dann auf Finish. Sie erhalten einen Bildschirm zur Angabe der Datentypinformationen, wie unten gezeigt.
Sichern und aktivieren.
Hinweis: Gemäß unserem Szenario müssen wir drei Tabellen anlegen. Im folgenden Abschnitt sehen Sie die Schritte zum Anlegen einer der Tabellen und können für die anderen beiden genauso vorgehen. Falls Unklarheiten bestehen, finden Sie in unserem GitHub-Repository die Schritte zum Anlegen aller Tabellen einzeln aufgeführt.
Tabelle mit Mitarbeiterinformationen
Diese Tabelle speichert Details zu einem Mitarbeiter wie Mitarbeiter-ID, Vor- und Nachname, Geburtsdatum usw.
Um diese Tabelle anzulegen, klicken Sie mit der rechten Maustaste auf das erstellte Paket und wählen New→ Other ABAP Repository Object→ Database Table.
Vergeben Sie den Namen ZRAP_E2E_AEMP und eine passende Beschreibung.
Klicken Sie auf Next, geben Sie einen Transportauftrag an und klicken Sie dann auf Finish. Sie erhalten ein vordefiniertes Codegerüst, in das Sie den untenstehenden Code eintragen können.
Sichern und aktivieren.
Annotationen wie @AbapCatalog.deliveryClass, @AbapCatalog.dataMaintenance sind Attribute der Tabelle, ähnlich denen, die beim Anlegen einer Tabelle über die GUI angegeben werden.
In RAP wird für das Anlegen einer Tabelle eine Kombination aus ABAP CDS und SQL verwendet.
Tabelle mit Beschäftigungsinformationen:
Tabelle mit Positionsinformationen
Wir haben die ersten beiden Schritte unserer Lösung abgeschlossen. Legen wir hier eine Pause ein, damit wir uns nicht mit zu vielen Informationen auf einmal überladen. In diesem Blogbeitrag haben wir die Architektur, das Datenbankdesign, das Anlegen des Pakets und das Anlegen der Tabellen für unser Szenario gesehen.
In den kommenden Teilen unseres Blogs lernen wir mehr über CDS Views (Interface und Projection View), Behavior Definition und Implementation, während wir sie zur Lösung des vorliegenden Szenarios einsetzen. Es empfiehlt sich, ein Verständnis für alle Schichten von RAP und die in diesem Teil besprochenen Elemente aufzubauen. Das war es fürs Erste, wir setzen unsere Lernreise zu ABAP RAP bald fort. Bis dahin: auf Wiedersehen und viel Freude beim Lernen!!