RAP - Generator (ADT)
Schauen wir uns heute den RAP Generator an, der bereits in die ABAP Development Tools integriert ist und wie du damit ganz leicht neue RAP Apps aufbauen kannst.
Inhaltsverzeichnis
Das Erstellen von RAP Anwendungen per Hand und den Aufbau der einzelnen Objekte kann einiges an Zeit kosten. In diesem Artikel erfährst du mehr über den RAP Generator und wie er deine Geschwindigkeit beim Erstellen von Apps erhöhen kann.
Einleitung
Bisher haben wir vor allem RAP Objekte mit der Hand erstellt und immer wieder den Stack manuell aufgebaut. Zum Lernen ist diese Methode hervorragend geeignet, um die verschiedenen Objekte und die Nutzung kennenzulernen. Sobald du aber alle Grundlagen kennst, wird es Zeit, etwas Geschwindigkeit in die Entwicklung zu bekommen. Dafür gibt es zwei verschiedene RAP Generatoren, der in die ADTs integrierte und die Fiori Elements Anwendung, die man erst im System installieren muss. In diesem Artikel stellen wir dir den Generator aus dem ADT vor.
Tabelle
Die Entwicklung beginnt daher mit der Tabelle, die wir dem Generator zur Verfügung stellen müssen. Hier solltest du bereits alle nötigen Datenelemente angelegt haben, die du später für die Definition und die Texte der Anwendung benötigst. Zusätzlich müssen zwei Pflichtfelder zur Verfügung gestellt werden, diese können sich am Ende der Tabelle befinden.
local_last_changed : abp_locinst_lastchange_tstmpl;
last_changed : abp_lastchange_tstmpl;
Die Felder werden für das Sperren und den Draft benötigt und diese wird der Dialog später auch noch einfordern, falls du sie einmal vergessen hast. Für das nachfolgende Beispiel definieren wir einmal die folgende Tabelle im System:
@EndUserText.label : 'Easy RAP Generator'
define table zbs_dmo_gen1 {
key client : abap.clnt not null;
key uuid_key : zbs_demo_key not null;
description : zbs_demo_description;
@Semantics.amount.currencyCode : 'zbs_dmo_gen1.currency'
price : zbs_demo_price;
currency : abap.cuky;
local_last_changed : abp_locinst_lastchange_tstmpl;
last_changed : abp_lastchange_tstmpl;
}
Generator
Den Generator rufst du über das Kontextmenü der Tabelle auf. Mit dem Punkt " Generate ABAP Repository Objects ..." kannst du diesen nun für die gewählte Tabelle starten.
Auf dem nächsten Bild werden verschiedene Generatoren für verschiedene Szenarien angeboten. Möchtest du für RAP etwas generieren, stehen dir der UI und der API Generator zur Verfügung. Möchtest du mehr Konfiguration und Tabellenpflege machen, kannst du hier den Pflege-Generator verwenden. Wir machen aber mit dem UI Generator für RAP weiter.
Im nächsten Bild müssen wir nur das Paket bestätigen, standardmäßig wird hier das Paket der Tabelle vorgeschlagen. Solange wir vom Standard nicht abweichen, können wir dieses Bild überspringen. Im nächsten Bild konfigurieren wir die Objekte, die angelegt werden sollen und haben Einfluss auf die Namen.
Entsprechend müssen wir nun durch die verschiedenen Punkte des Baums navigieren und befüllen die Felder mit Informationen. Der Punkt "General" sieht wie folgt aus.
Unter dem Punkt "Data Model" definieren wir den Namen der Root Entität und dem vergebenen Alias. Dieser Alias kann später für den Zugriff über EML verwendet werden.
Beim Punkt "Behavior" wird alles mit dem Verhalten definiert, die Klasse für die Verhaltensimplementierung und der Name der Draft Tabelle. Auch das Szenario Managed ist bereits vorbelegt, kann aber nicht geändert werden.
Bei der "Service Projection" muss nur noch der Name des Projektions-Views definiert werden, es wird ein entsprechender Vorschlag vom System gemacht, kann aber auch überschrieben werden, um deinen Konventionen zu entsprechen.
Unter "Service Definition" wird der eigentliche Service ohne Protokoll definiert, unter dem Service werden alle benötigten Core Data Services freigegeben.
Beim letzten Punkt "Service Binding" musst du den Namen für den Service vergeben.
Zum Abschluss erhältst du die Liste aller Objekte, die generiert werden sollen, hier hast du noch einmal die Möglichkeit die Namenskonventionen und Objekte zu prüfen.
Nach Abschluss wird der Transport gewählt und die Generierung der Objekte startet. Die Generierung kann einige Sekunden in Anspruch nehmen, da einige Objekte angelegt werden müssen.
Aktivierung
Nachdem alle Objekte angelegt wurden, wir nun das Service Bindung des OData Service geöffnet. Hier musst du nur noch den "Publish" Button tätigen, damit der OData freigegeben wird und dann auch genutzt werden kann.
Die Aktivierung dauert meist etwas länger, im Anschluss können wir über den "Preview ..." Button unsere Anwendung testen.
Objekte
Wir hatten bereits im Generator einige Objekte benannt und angegeben, es wurden aber noch einige Objekte mehr generiert. So haben wir die beiden Verhaltendefinitionen und die Metadaten Erweiterung automatisch mit dazu bekommen. Das spart uns die Definition der Ausgabe und wir können die Demo-App direkt benutzen.
@Metadata.layer: #CORE
@UI: {
headerInfo: {
typeName: 'Simple',
typeNamePlural: 'Simples'
}
}
annotate view ZBS_C_DMOGEN1 with
{
@UI.facet: [ {
id: 'idIdentification',
type: #IDENTIFICATION_REFERENCE,
label: 'Simple',
position: 10
} ]
@UI.lineItem: [ {
position: 10 ,
importance: #MEDIUM,
label: ''
} ]
@UI.identification: [ {
position: 10 ,
label: ''
} ]
UuidKey;
@UI.lineItem: [ {
position: 20 ,
importance: #MEDIUM,
label: ''
} ]
@UI.identification: [ {
position: 20 ,
label: ''
} ]
Description;
@UI.lineItem: [ {
position: 30 ,
importance: #MEDIUM,
label: ''
} ]
@UI.identification: [ {
position: 30 ,
label: ''
} ]
Price;
@UI.lineItem: [ {
position: 40 ,
importance: #MEDIUM,
label: 'Currency'
} ]
@UI.identification: [ {
position: 40 ,
label: 'Currency'
} ]
Currency;
@UI.hidden: true
LocalLastChanged;
}
Nutzung
Der RAP Generator spart vor allem Zeit bei der Generierung des RAP Stacks, die x-te App manuell aufbauen bedeutet eigentlich nur noch Fleißarbeit. Diese Arbeit nimmt dir der Generator ab und schafft dir so mehr Zeit für die eigentliche Arbeit an der App, wie Aufbau der Suchhilfen, Gestaltung der Bilder und der App. Du erhälst vom Generator:
- Funktionierende OData v4 App
- Integriertes Draft Handling
- Ready-to-Use, Ready-To-Develop
- Maximal eine Entität generieren
Allerdings solltest du auch einige Dinge beachten. Der Generator stellt einmalig eine Anwendung zur Verfügung, er ist nicht für die Nachgenerierung gedacht. Alle Änderungen die du dann durchführst, bleiben soweit bestehen und die Weiterentwicklung findet dann über den Entwickler statt.
Beispiel
Das vollständige Beispiel findest du wie immer bei uns im GitHub Repository unter dem entsprechenden Commit, aber auch in dem Paket ZBS_DEMO_RAP_GEN1.
Fazit
Der RAP Generator bietet dir als RAP Experten einen schnellen Einstieg in die Entwicklung von neuen Applikationen und spart dir vor allem Zeit bei der Anlage der Objekte im System. Es werden dir verschiedene Standardfunktionalitäten geschenkt, die du bei der weiteren Entwicklung einsetzen kannst.
Tutorials:
Developers - Generate a RAP Business Service