RAP - Generator (Fiori)
In diesem Artikel schauen wir uns den komplexeren RAP Generator als Fiori Elements Anwendung an und welche Vorteile du damit hast.
Inhaltsverzeichnis
Letzte Woche hatten wir uns den RAP Generator angeschaut der mit den ABAP Development Tools ausgeliefert wird. Dabei fiel vor allem auf, dass man nur eine Entität damit generieren konnte. In diesem Artikel schauen wir uns ein anderes Projekt an, welches mehr Möglichkeiten für die Generierung zulässt.
Einleitung
Schon bevor der RAP Generator in den ABAP Development Tools entwickelt wurde, gab es den RAP Generator der durch Andre Fischer, einem Mitarbeiter bei SAP, entwickelt wurde. Am Anfang handelte es sich noch um einen HTTP Service der mit einer JSON Datei konfiguriert wurde, um anschließend Objekte im System zu generieren. Mittlerweile gibt es eine eigene, recht komplexe, Fiori Elements App die durch den Generierungsprozess führt und eine hübsche Eingabe für die Daten bietet. Da es sich um ein Open Source Projekt handelt, kannst es frei für die Erzeugung von RAP Objekten einsetzen.
Installation
Für die Installation auf deinem System benötigst du den abapGit Client für das On-Premise System oder das abapGit Plugn für Eclipse, wenn du in der Cloud arbeitest. Über das GitHub Repository kannst du dann die Installation durchführen, dort findest du auch noch einmal eine Anleitung, da es aktuell verschiedene Versionen für die verschiedenen Umgebungen gibt. Nach der Installation darauf achten, dass alle Objekte im System aktiviert sind und zum Abschluss den OData v4 Service noch über "Publish" im System freigeben. Wenn du die Anwendung starten möchtest, geschieht dies über den Wurzelknoten "Project".
Tabellen
In unserem Szenario setzen wir dieses Mal auf drei Tabellen, die miteinander verknüpft sind, um so einen Hierarchie zu erzeugen und den RAP Generator auf Herz und Nieren zu testen. Das Modell und die Beziehungen sehen daher wie folgt aus:
Kopf
define table zbs_dmo_gen2h {
key client : abap.clnt not null;
key uuid_key : zbs_demo_key not null;
description : zbs_demo_description;
is_active : abap_boolean;
local_last_changed : abp_locinst_lastchange_tstmpl;
last_changed : abp_lastchange_tstmpl;
}
Position
define table zbs_dmo_gen2p {
key client : abap.clnt not null;
key uuid_pos : zbs_demo_key not null;
uuid_key : zbs_demo_key;
@Semantics.amount.currencyCode : 'zbs_dmo_gen2p.currency'
price : zbs_demo_price;
currency : abap.cuky;
local_last_changed : abp_locinst_lastchange_tstmpl;
last_changed : abp_lastchange_tstmpl;
}
Unterposition
define table zbs_dmo_gen2s {
key client : abap.clnt not null;
key uuid_sub_pos : zbs_demo_key not null;
uuid_key : zbs_demo_key;
uuid_pos : zbs_demo_key;
description : zbs_demo_description;
local_last_changed : abp_locinst_lastchange_tstmpl;
last_changed : abp_lastchange_tstmpl;
}
Hinweis: Es sollte immer nur einen Schlüssel als UUID pro Tabelle geben, wenn man auf die automatische Schlüsselvergabe setzt, ansonsten kann die App nicht das korrekte Schlüsselfeld ableiten. Weiterhin wird Parent und Root in den unterliegenden Tabellen zur Verknüpfung benötigt.
Customizing
Um mit den Einstellungen zu beginnen, starten wir die App und können mit einem Klick auf "New Project" ein neues RAP Projekt anlegen. Zuerst einmal fallen die verschiedenen Wahlmöglichkeiten auf die wir im Moment haben. So können wir als Datenquelle Tabelle, CDS oder eine abstrakte Entität angeben. Ebenso ist es möglich zwischen Managed und Unmanaged zu entscheiden. Entsprechend nehmen wir nun die folgenden Einstellungen vor.
Im folgenden Detailbild erhalten wir Informationen über die aktuellen Entitäten im RAP Objekt, sowie eine Zusammenfassung der Implementierungsdetails, Namenskonventionen, Lifecycle Informationen, weitere Parameter und das Log.
Entität pflegen
Bevor wir allerdings speichern, um den Eintrag anlegen zu können, müssen wir noch die benötigten Informationen in der Entität hinterlegen. Dazu per Vorwärtsnavigation auf den Eintrag "DMOGen2H" in die Detailseite abspringen. Hier warten noch einige Pflichtfelder, die befüllt werden müssen. Im oberen Teil werden die Informationen für das Draft Handling hinterlegt, diese wurden bereits automatisch gezogen. Der semantische Schlüssel ist entweder eine eindeutige "sprechende" ID oder der Schlüssel der Tabelle.
Im unteren Teil kannst du die generierten Objekte noch einmal anpassen, um die Namenskonventionen in deinem Unternehmen umzusetzen. Zumindest werden zu Beginn Defaultwerte vorgeschlagen, sodass man direkt mit der Generierung fortfahren kann.
Im letzten Abschnitt sind alle Felder der Tabelle aufgelistet, hier kannst du die vorgeschlagenen Aliase noch einmal anpassen, wenn dir die Namen nicht passen oder zu kurz sind.
Entitäten hinzufügen
Um nun weitere Entitäten zu übernehmen, musst du in der Liste den Wurzelknoten markieren und kannst über den entsprechenden Button über der Liste einen weiteren Unterknoten anlegen.
Auf dem Popup musst du nun entsprechend den Namen der Entität angeben und die Tabelle als Datenquelle auswählen. Die Informationen reichen dann zum Generieren der Positionen.
Hinweis: Es kann sein, dass der neue Eintrag nicht sofort in der Liste erscheint, in diesem Fall am besten im Browser (F5) einmal den Refresh durchführen.
Auf der Objektseite der Entität muss nun wieder der semantische Schlüssel definiert werden. Dazu kommen noch Informationen zur darüber liegenden Entität, damit die Schlüsselbeziehungen sauber definiert sind.
Entsprechend der Methode legen wir nun noch eine Unterentität an und befüllen die entsprechenden Informationen. Zum Abschluss sollten in der Liste der Entitäten unsere drei neuen Entitäten auftauchen.
Generierung
Auf der Objektseite des Projekts findest du im oberen Bereich die verschiedenen möglichen Optionen. Wenn du alle Informationen hinterlegt hast und das Projekt gespeichert wurde, kannst du die Generierung der Objekte über "Generate repository objects" starten.
Im System wird dann ein Job eingeplant, der die Generierung der Objekte durchführt. Der Jobstatus wird entsprechend in der Anwendung angezeigt.
In diesem Fall der Job ca. 2 Minuten. Nach Abschluss der Generierung wird der Status und ein frischer ADT Link im Header des Projektes angezeigt.
Test
Der RAP Generator aktiviert automatisch das Service Binding, sodass wir direkt den Fiori Elements Preview aufrufen können.
Mit der Preview kann man nun entsprechend arbeiten und in den Entitäten navigieren. Die Oberflächen müssen noch hübsch gemacht werden, ebenso sollte die Logik um Validierungen ergänzt werden. Der Generator hat ca. 25 Objekte generiert, die wir nun erst einmal nicht per Hand anlegen mussten, was uns einiges an Arbeit gespart hat.
Löschen
Im RAP Generator gibt es auch einen Button zum Löschen der generierten Objekte, hilfreich zum Nachgenerieren oder wenn man am Anfang noch neue Entitäten integriert. Bevor man auf den Button klickt, sollte man allerdings das generierte Service Bindung wieder auf "Unpublish" setzen und das Objekt in den ADTs schließen. Diese Prüfung erfolgt aber auch vor dem Löschen und informiert dich über Problemen. Ist alles in Ordnung, wird wieder ein Job im System eingeplant, der mit dem Löschen der Objekte beginnt.
Fazit
Der RAP Generator nimmt dir viel Arbeit ab, vor allem wenn du komplexe RAP Objekte aufbauen möchtest. Wenn du dich bereits im Aufbau und dem Handling mit RAP auskennst, empfehlen wir dir die Nutzung, um noch schneller bei der Umsetzung von Anwendungen zu werden.
Quelle:
SAP Blog - RAP Generator
SAP Blog - New Version of RAP Generator