This is a test message to test the length of the message box.
Login
|
Fiori für ABAP Navigation
Erstellt von Software-Heroes

Fiori für ABAP - Navigation

121

In RAP haben wir unterschiedliche Entitäten mit Navigationen und Object Pages definiert, doch in unserer Fiori Elements sind diese nicht vorhanden? Schauen wir uns das Verhalten und die Lösung an.

Werbung


In diesem Artikel schauen wir uns die Generierung von Navigationen und Objektseiten einmal im Detail an und was es mit dem Generierungsprozess auf sich hat.

 

Einleitung

Unsere Sales App besteht aus verschiedenen Bestandteilen und Entitäten. Auf der Object Page haben wir drei zusätzliche Entitäten eingebunden: die Informationen, die Verkäufer und die verkauften Positionen. All diese Informationen sind als eigenständige Entitäten modelliert und verfügen im Standard über eine eigene Object Page. Wenn wir uns die Objekte in unserer RAP-Applikation im Preview anschauen, stellen wir fest, dass im hinteren Bereich der Tabellenzeilen eine Navigation angezeigt wird. Diese Navigation deutet darauf hin, dass wir direkt auf die jeweilige Object Page der untergeordneten Entitäten navigieren können.

 

Schauen wir uns im Gegenzug die generierte Anwendung in Fiori Elements an. Im Preview aus dem Business Application Studio sehen wir, dass an der Tabelle das Navigationsattribut fehlt. Im Grunde können wir diesen Datensatz daher nicht anklicken und keine Navigation auf die Object Page ausführen.

 

Hintergrund

Im Preview-Modus unseres Services, der RAP-Applikation, können wir alle Navigationen automatisch verwenden und müssen hier nichts weiter nachmodellieren. Dies dient vor allem Testzwecken und ist sehr komfortabel. Es bringt jedoch auch Nachteile mit sich, wenn wir beispielsweise eine Navigation ausschalten wollen, ist und bleibt diese im Preview standardmäßig aktiv. Wechseln wir anschließend in das Business Application Studio, um unsere eigentliche Hauptanwendung zu generieren, definieren wir dort den UI-Status. Bei der Ausführung des Fiori Elements Generators wählen wir im Schritt der Hauptentität die eigentliche List Report View aus. Standardmäßig wird dabei automatisch die Object Page generiert.

 

In diesem Schritt hatten wir zudem die Möglichkeit, eine Navigationsentität zu definieren. Das bedeutet, es wird eine Navigation zu einer entsprechenden Object Page aufgebaut. Wir hatten dieses Feld bei der initialen Generierung leer gelassen, um zunächst andere Dinge testen zu können. Grundsätzlich lässt sich an dieser Stelle eine Navigationsentität definieren. Da wir jedoch drei zusätzliche Entitäten in unserer Anwendung haben, müssten wir theoretisch ohnehin manuell nacharbeiten.

 

Navigation

In diesem Kapitel schauen wir uns den Aufbau der Navigation an. Wir gehen die verschiedenen Schritte durch, die notwendig sind, um die Navigation zu aktivieren und die Object Page einzubinden.

 

Page Map

Für die Erweiterung unserer Anwendung möchten wir eine neue Object Page hinzufügen und nutzen hierfür das Tool Page Map innerhalb der SAP Fiori Tools. Allerdings besteht aktuell die Herausforderung, dass der Button zum Hinzufügen von neuen Entitäten und Seiten deaktiviert ist.

 

Damit wir den Button wieder aktivieren können, müssen wir zuerst in der Metadata Extension ZBS_C_SASALE die UI-Annotation für den Create-Button anpassen. Ursprünglich wollten wir die standardmäßige Create-Action im OData-Service unterbinden, um ausschließlich unsere eigenen Factory Actions zu verwenden. Es hat sich jedoch herausgestellt, dass eine aktive Create-Berechtigung auf Ebene der Metadaten eine Voraussetzung für die Verwendung der Page Map ist, um neue Seiten und Entitäten hinzufügen zu können.

//@UI.createHidden: true
@UI.lineItem: [{criticality: 'DataCriticality'}]
annotate view ZBS_C_SASALE with

 

Sobald wir diese Anpassungen abgeschlossen haben, müssen wir im nächsten Schritt die Metadaten des Services in unserem Projekt aktualisieren. Dazu klickst du mit der rechten Maustaste auf die manifest.json und wählst den "Service Manager" aus.

 

Dieser öffnet den Manager zur Verwaltung der vorhandenen Services. Über das Stift-Icon editierst du den entsprechenden Service und wählst anschließend den Button "Refresh & Save" aus. Dieser Vorgang lädt den Service sowie die Metadaten neu, aktualisiert die lokalen Annotationen und speichert den Eintrag im Projekt. Damit sollten neue Änderungen für Git sichtbar werden.

 

Startest du die Page Map neu sollte nun der Button für das Hinzufügen wieder aktiv sein.

 

Neue Seite

Klicke nun auf das Hinzufügen (Plus-Button) der Object Page. Es erscheint ein entsprechendes Popup, das uns zum Hinzufügen einer neuen Seite führt. Dort wählen wir das Template Object Page aus, da wir eine neue Detailseite anlegen wollen. Als Datenquelle wählen wir die Assoziation _SASold aus, um die entsprechende Beziehung herzustellen. Danach kannst du über den Add-Button die Aktion abschließen.

 

Nach der Generierung wird die neue Object Page unterhalb der bestehenden Object Page in der Hierarchie angezeigt. Zudem wird eine entsprechende Navigation zwischen den beiden Seiten erstellt, die die Beziehung widerspiegelt.

 

manifest.json

Im letzten Artikel hatten wir uns die Datei "manifest.json" einmal im Detail angeschaut und die Wichtigkeit der einzelnen Bestandteile geprüft. Die nun durchgeführte Aktion über die Page Map hat hier wesentliche Änderungen hervorgerufen. Dabei wurden verschiedene Bestandteile der Manifest-Datei angepasst bzw. neue Bestandteile generiert:

  • Neue "Routes" - Es wurde eine neue Route für die übergeordnete Object Page mit den entsprechenden Targets angelegt. Damit ist die strukturelle Erreichbarkeit der neuen Seite innerhalb der App-Navigation sichergestellt.
  • Anpassung der Navigation - Für die Object Page der Verkäufe wurde eine neue Navigation definiert und zwar zu unserer neuen Object Page für die verkauften Materialien.
  • Neues "Target" - Es wurde ein neues Target für die Object Page mit einer eindeutigen ID, einer passenden Beschreibung sowie den erforderlichen Navigationsattributen für die korrekte Darstellung generiert.

 

Hinweis: Eine manuelle Anpassung der Datei ist ebenfalls möglich. Du musst nicht zwingend über die Page Map gehen, sondern kannst die Änderungen auch händisch vornehmen. Dies ist jedoch mit deutlich mehr Aufwand verbunden, da du genau wissen musst, an welcher Stelle im Routing und in den Targets du welche Änderung einfügen musst.

 

Test

Nach Abschluss der Anpassung können wir unsere Anwendung aufrufen. Dazu starten wir die Anwendung in der Preview und wählen einen Datensatz aus, um auf die Object Page zu gelangen. Hier sehen wir nun die entsprechenden Materialien, wobei die Navigation zur zweiten Object Page bereits aktiv ist. Klicken wir auf ein Material, wird die Object Page als dritte Spalte geladen. Das liegt vor allem daran, dass wir aktuell mit einem Flexible Column Layout arbeiten. Würden wir stattdessen eine separate Navigation nutzen, würden wir nun im Vollbild auf die zweite Seite navigieren.

 

Staging

Nachdem wir die Änderungen vorgenommen haben, findest du im Source Control Tab eine Übersicht der modifizierten Dateien. Mit einem Klick kannst du dorthin navigieren und siehst alle Dateien, die sich durch unsere Anpassungen verändert haben. Hier kannst du im Detail prüfen, welche Änderungen vorgenommen wurden oder bei Bedarf bestimmte Dateien direkt auf den Originalzustand zurücksetzen (Discard Changes). In unserem Fall müssen wir alle Änderungen in unser GitHub Repository committen, damit der aktuellste Stand wieder verfügbar ist, das ist besonders wichtig, wenn andere Kollegen ebenfalls damit arbeiten möchten. Dazu gibst du eine Commit-Message ein und drückst den Commit-Button, um den lokalen Commit durchzuführen.

 

Durch diesen lokalen Commit sind jedoch noch keine Änderungen in unserem GitHub Repository angekommen. Dazu müssen wir den blauen Button "Sync Changes" drücken, damit die Änderungen an das zentrale Git-Repository übertragen werden. Je nach Authentifizierungsmethode musst du dich eventuell noch einmal gegenüber GitHub authentifizieren, um zu bestätigen, dass du über die entsprechenden Entwicklerberechtigungen verfügst. Nach Abschluss des Push-Vorgangs sind die Änderungen im Repository vorhanden und für alle Teammitglieder sichtbar.

 

Vollständiges Beispiel

Die gespeicherten Ressourcen zu unserer Anwendung findest du in unserem GitHub Repository. Damit kannst du in Zukunft alle Anpassungen an der Fiori App mit nachvollziehen oder die Ressourcen für ein Deployment nutzen. Die aktuellen Änderungen findest du in diesem Commit wieder.

 

Fazit

Bei einer hohen Anzahl von Entitäten werden nicht immer alle Navigationen und Object Pages direkt bei der Initialisierung und Generierung des Projekts angelegt. Daher ist es wichtig, über die Page Map nachträglich die zusätzlichen Object Pages und Navigationen anzulegen. Ansonsten wirst du nach dem Deployment feststellen, dass nur ein Teil der Navigation funktioniert, obwohl in der lokalen RAP Preview scheinbar alles korrekt war.


Enthaltene Themen:
FioriABAPNavigationREX7
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.


Fiori für ABAP - Übersetzung (i18n)

Kategorie - ABAP

Wie sieht es eigentlich mit Mehrsprachigkeit bei unserer Fiori App aus? Bisher hatten wir uns nicht um Texte und Übersetzungen gekümmert, daher schauen wir uns diesen Punkt im Detail an.

12.06.2026

Fiori für ABAP - Excel Upload

Kategorie - ABAP

Du möchtest über Excel Daten in deine Fiori Anwendung importieren und nicht unbedingt die komplette Logik im Backend entwickeln? Schauen wir uns den Spreadsheet Importer und die Funktion an.

09.06.2026

Fiori für ABAP - Änderungsbelege

Kategorie - ABAP

Wie können wir eigentlich die Änderungsbelege in unsere Anwendung einblenden, die aktuell nur auf der Datenbank vorhanden sind? Dazu schauen wir uns eine weitere Re-Use Komponente an.

05.06.2026

Fiori für ABAP - Application Log

Kategorie - ABAP

Wie bekommen wir eigentlich die Daten unseres Application Logs in unsere Fiori Anwendung? Dazu erweitern die Anwendung durch eine Re-Use Komponente und schauen uns die Konfiguration an.

02.06.2026

Fiori für ABAP - Deployment

Kategorie - ABAP

Wie sieht es eigentlich mit dem Deployment von unserer Fiori Anwendung aus? Schauen wir uns verschiedene Einstellungen einmal im Detail an und stellen die App zur Verfügung.

22.05.2026