This is a test message to test the length of the message box.
Login
ABAP RAP Generator
Erstellt von Software-Heroes

RAP - Generator (ADT)

277

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.

Werbung


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


Enthaltene Themen:
RAPBTPRAP GeneratorADT
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


RAP - Popup Defaultwerte

Kategorie - ABAP

Wie kannst du im Popup einer Aktion in RAP dem User Defaultwerte zur Verfügung stellen? In diesem Artikel erweitern wir unsere Anwendung.

21.01.2025

RAP - Popup Pflichtfelder

Kategorie - ABAP

Wie kannst du eigentlich Pflichtfelder für ein Popup in RAP definieren? In diesem Artikel werden wir etwas genauer auf die Details eingehen.

14.01.2025

RAP - Deep Table Action

Kategorie - ABAP

Ist die Übergabe von Tabellen an Aktionen in RAP aktuell möglich? Dieser Artikel soll einen besseren Einblick in das Thema gewähren.

07.01.2025

ABAP Cloud - Programmiermodell

Kategorie - ABAP

Welches Programmiermodell kommt mit ABAP Cloud zum Einsatz und was können wir aus dem Vorgänger lernen? Mehr Details im Artikel.

03.01.2025

RAP - Side Effects

Kategorie - ABAP

Wie kannst du Teile der Fiori UI aktualisieren, ohne einen kompletten Refresh zu machen? Mit Side Effects ist das in ABAP und RAP ganz leicht möglich.

27.12.2024