This is a test message to test the length of the message box.
Login
|

034: Recycling-Heroes - Object and RAP Generator (Document)

84

In dieser Episode erstellen wir unsere neue Dokumenten-App mit Hilfe von Generatoren zur Erstellung des Datenmodells und anschließend zur Erstellung des RAP Objekts.

Werbung


Einleitung

In der letzten Folge hatten wir die Grundlagen unserer heutigen App gelegt und Business Configurations für Dokumenten Typen und Tags angelegt. Dazu wollen wir nun unsere neue Anwendung zum Upload und zur Anlage von Dokumenten erstellen und dabei greifen wir im ersten Schritt nur auf verschiedene Generatoren zurück, um das Datenmodell anzulegen.

 

Object Generator

Bereits in einem Blogartikel hatten wir den Object Generator vorgestellt. Er generiert verschiedene DDIC Artefakte für uns, sodass wir außer der Konfiguration keine weiteren Einstellungen mitgeben müssen. Damit sparen wir uns die Anlage von Tabellen, Datenelementen und Domänen und haben doch immer ein vollständiges Datenmodell zur Verfügung. Legen wir uns daher im ersten Schritt eine neue Klasse an, die uns die Konfiguration einlesen soll und daraus dann die Objekte generiert. In diesem Fall verwenden wir die ausführbare XCO Klasse, da sie besser mit XCO Objekte umgehen kann und ein eingebautes Fehlerhandling mitbringt. Anders als beim Interface erben wir von der Klasse und müssen die abstrakte MAIN Methode erst lokal redefinieren.

Als erstes legen wir eine GitHub Konfiguration an, da wir die Konfiguration als JSON in unserem GitHub Repository abgelegt haben. Die Konfiguration übergeben wir an den Test Container und holen uns im nächsten Schritt die Daten als JSON. Da wir hier eine Struktur für die Daten benötigen, definieren wir uns die Generator Konfiguration als lokale Variable. Als nächstes können wir dann eine Instanz des Object Generators erzeugen, die Übergabe der Variable SY-REPID ist wichtig, da wir aus der aktuellen Klasse den Transport ableiten wollen, ohne ihn manuell mitgeben zu müssen. Nun übergeben wir die Konfiguration an den Generator und lassen uns die DDIC Artefakte generieren. Das Ergebnis der Generierung übergeben wir dann an die Ausgabe der MAIN Methode. Das Ergebnisobjekt besitzt in den Findings das Interface NEWS, was eine einfache Ausgabe mit dieser ausführbaren Klasse erlaubt.

Wenn wir nun auf das GitHub Repository gehen, findest du im Ordner Data die passende Datei für den Generator. Hierbei handelt es sich um die Konfiguration und es sind Informationen enthalten, wie die Domänen mit ihren Datentypen, die entsprechenden Datenelemente, die die Domänen auch verwenden und die Definition der Tabellen. Bei den Tabellen ist wichtig, dass der Mandant vorhanden ist, ebenso wie die Verwaltungsfelder von RAP im unteren Bereich der Tabelle. Wir wollen uns gleich zwei Tabellen generieren lassen. Über den RAW Button bekommst du den Link zur JSON Datei, den wir auch gleich im Quellcode an die Container Konfiguration übergeben.

Damit wäre der Code so weit vollständig. Wir aktivieren die Klasse und starten die Generierung mit F9. Nach einem kurzen Moment sollten wir die Generierung ohne Fehlermeldung abgeschlossen haben und können das Paket einmal aktualisieren. Wir sollten nun 12 neue Objekte finden die vom Generator angelegt und direkt auch aktiviert wurden. Schauen wir uns einmal eine Domäne an. Der Typ von den Stream wurde korrekt übernommen. Unsere Tabelle für die Dokumente ist nun soweit vorhanden und aktiv und wir können uns den nächsten Generator anschauen.

 

RAP Generator

Beim letzten Mal hatten wir die Objekte der App von Hand angelegt. Dies ist ein sehr umständlicher Schritt, lohnt sich aber für Einsteiger, die sich das erste Mal mit RAP beschäftigen und die Konzepte lernen wollen. In diesem Schritt verwenden wir einen RAP Generator zur Generierung der Objekte und des Stacks. Das spart uns viel Zeit, ebenso wie der Object Generator. Direkt auf der Tabelle können wir den Generator starten und erhalten hier drei verschiedene Generatoren. Die Business Configuration haben wir bereits verwendet, um Objekte zu generieren, in diesem Fall wollen wir einen "OData UI Service" erzeugen. Für den Generator müssen wir noch ein Paket angeben, wo die Objekte generiert werden. Grundsätzlich würden wir eigentlich erwarten, dass das Paket der Tabelle übernommen wird.

Im nächsten Schritt geht es um die Konfiguration der verschiedenen Objekte, die erzeugt werden. Grundsätzlich könntest du die meisten Vorschläge des Generators übernehmen, wir möchten aber unsere Konventionen übernehmen. Auf der ersten Ebene machen wir allgemeine Angaben für den Generator, der Name des Projekts und wir möchten gern ein Präfix verwenden. Dabei musst du das Z für den Kundennamensraum nicht angeben, da es automatisch ergänzt wird. Auf der nächsten Ebene passen wir den Namen der ROOT Entität an und lassen den ALIAS leer, da wir keinen benötigen. Auf der Ebene definieren wir das Verhalten, hier müssen wir den Namen der Klasse anpassen, die normalerweise mit BP beginnen, wie "Behavior Pool". Ebenso passen wir noch den Namen der Draft Tabelle an. Als nächstes ist die Projektionsebene unseres RAP Objekts dran. Hier passen wir den Core Data Service passend zur Root Entität an, ebenso die Klasse für Verhaltensimplementierung. Die Service Definition wollen wir ohne den Zusatz anlegen und lassen das Service Binding wie es ist. Über Next lassen wir uns einen Preview der erzeugten Objekte anlegen und bestätigen die Generierung, die dann einige Minuten in Anspruch nimmt.

Ist die Generierung abgeschlossen erhalten wir eine Benachrichtigung und können zum Service Binding wechseln. Dort drücken wir den Button "Publish" und starten die Veröffentlichung des Service. Dieser Schritt kann auch wieder ein wenig dauern.

 

Zusammenfassung

Schauen wir uns einen ersten Preview der Anwendung an. Die Strukturen sind definiert, die Services aktiviert, aber leider noch viel zu viele Informationen im UI zu sehen. Mit Hilfe der Generatoren haben wir uns viel Zeit bei der Generierung des Datenmodells und er verschiedenen Artefakte gespart. DIe manuelle Arbeit wäre Zeitintensiv und könnte ebenfalls zu Fehlern führen, die wir später korrigieren müssten.

Um die weitere Entität, die Annotationen kümmern wir uns dann beim nächsten Mal. Bis dahin, danke für zuschauen und bis zum nächsten Mal.

 

YouTube
Video


Enthaltene Themen:
YouTubeSkriptRecycling-HeroesGeneratorRAPOpen Source
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und 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.


038: Recycling-Heroes - Annotations (Document)

Kategorie - YouTube

In dieser Folge schauen wir uns die Annotationen der Dokumenten App an und wie wir diese sehr einfach anlegen können. Dazu erweitern wir die App und fixen ein Problem mit dem Schlüssel.

30.03.2026

037: Core Data Service [Basics] - View and View Entity

Kategorie - YouTube

Schauen wir uns einmal die klassische View im Unterschied zur modernen View Entity an. Dabei gehen wir auf kleinere Unterschiede und die Migration in ABAP ein und wie du Core Data Services einfacher handhaben kannst.

16.03.2026

036: Core Data Service [Basics] - Analysis

Kategorie - YouTube

Wo findest du eigentlich weitere Informationen zu einem Core Data Service in ABAP, wenn es um die Analyse von bestehenden Objekten geht? Schauen wir uns dazu verschiedene Tools an.

09.03.2026

035: Recycling-Heroes - New entity (Document)

Kategorie - YouTube

Nach der Generierung der App geht es in die eigentliche Entwicklung. Die App muss für unsere Nutzung angepasst und ausgebaut werden, um unsere spezifischen Anforderungen zu erfüllen. Daher erweitern wir das Datenmodell um eine neue Entität.

23.02.2026

033: Core Data Service [Basics] - Consumption Modeling

Kategorie - YouTube

In dieser Folge schauen wir auf die Modellierung eines Consumption Views und schauen uns verschiedene Punkte, wie Funktionen, Assoziationen, Session Variablen und virtuelle Felder an.

26.01.2026