
BTP - Pages und Spaces (ADT)
Kannst du eigentlich auch das Launchpad mit den Pages und Spaces über die ABAP Development Tools konfigurieren? In diesem Artikel schauen wir uns die aktuellen Möglichkeiten an.
Inhaltsverzeichnis
In einem älteren Artikel hatten wir uns das Customzing des Fiori Launchpads über die Fiori Apps angeschaut und wie du damit dein Launchpad gestalten kannst. In diesem Artikel gehen wir auf den Weg ein, wie du Inhalte bereits mit der Entwicklung ausliefern kannst.
Einleitung
Wofür du Pages und Spaces brauchst und wie du sie einrichtest, findest du in diesem Artikel. Dabei wollen wir unserem Anwender Inhalte direkt zur Verfügung stellen, wenn er sich am Launchpad anmeldet. Über die Homepage kann jeder Anwender seine eigene Ansicht einrichten.
In diesem Artikel schauen wir uns verschiedene Templates in diesem Bereich an. Wenn du über die ABAP Development Tools ein neues Objekt anlegst, findest du im Bereich Launchpad einige Objekte.
Page
Legen wir uns dazu eine Page an, die wir später wieder mit Anwendungen befüllen wollen. Dem Objekt geben wir einen Namen und eine Beschreibung. Im unteren Teil gibst du den Text an, der später in der Oberfläche angezeigt wird.
Space
Im nächsten Schritt definieren wir uns einen Space. Wie auch bei der Page geben wir dem Objekt einen Namen und eine Beschreibung. Ein Titel ist auch hier Pflicht, da dieser für die Anzeige benötigt wird.
Haben wir das Objekt angelegt, sollten wir eine Sortierreihenfolge angeben. Diese hat Einfluss auf die Anzeige im Launchpad, eine hohe Nummer wird dann weit rechts angezeigt. Dem Space können wir nun unsere Page zuordnen, wenn du noch weitere Pages hast, kannst du diese einfügen.
Inhalt
Nun wollen wir die Page mit Inhalten befüllen. Möchtest du ein neues Objekt hinzufügen, wird sich das erst einmal ungewohnt anfühlen, da es hier keinen "Add" Button gibt, wie sonst üblich in dieser Art von Views. Du arbeitest in der Liste per Rechts-Klick und das Kontextmenü. Am Ende des Artikels findest du einen Link, wie du mit dem View in ADT arbeitest. Fügen wir im ersten Schritt eine Section hinzu. Der Section können wir einen Titel geben, dieser wird als Überschrift innerhalb des Bereichs angezeigt. Die ID der Section kannst du ebenfalls anpassen, wenn du sie sprechender Benennen willst.
Unterhalb der Section findest du die "Visualizations", hier kannst du Kacheln zuordnen, die in diesem Abschnitt zugeordnet werden sollen. Grundsätzlich kannst du hier viele Kacheln zuordnen. Die ID der Kachel kannst du anpassen, ebenfalls das Aussehen im Launchpad mit den verschiedenen Stilen. Mehr Informationen findest du im letzten Artikel zu dem Thema. Um eine Kachel zuzuordnen, wählen wir ein App Descriptor Item aus, in diesem Fall das Item, das wir zuletzt angelegt hatten. Über "Tile ID" können wir nach der definierten Kachel suchen. Da unser App Descriptor Item vier Kacheln im Bauch hat, müssen wir uns eine davon aussuchen.
Insgesamt legen wir zwei Abschnitte an und ordnen drei Anwendungen zu. Die Page sollte nun wie folgt aussehen:
Scoping
Prüfst du nun die Konfiguration im Launchpad, dann wirst du aktuell die Page und den Space nicht finden. Hier musst du das sogenannte Scoping durchführen. Hierbei handelt es sich um eine ähnliche Aktion wie das "Publish Locally", wir müssen dem System mitteilen, dass es zusätzliche Optionen für die Konfiguration gibt. Aktuell gibt es dafür keinen Button im UI, sondern wir müssen wir Objekte über eine ABAP API dem System bekannt geben. Dazu kannst du die folgende ausführbare Klasse verwenden.
CLASS zcl_bs_demo_scope_launchpad DEFINITION
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun.
PRIVATE SECTION.
TYPES object_name TYPE c LENGTH 40.
TYPES objects TYPE STANDARD TABLE OF object_name WITH EMPTY KEY.
DATA scope_state TYPE c LENGTH 1 VALUE if_aps_bc_scope_change_api=>gc_scope_state-on.
METHODS scope_content
IMPORTING !pages TYPE objects
spaces TYPE objects
!out TYPE REF TO if_oo_adt_classrun_out.
ENDCLASS.
CLASS zcl_bs_demo_scope_launchpad IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
scope_content( pages = VALUE #( ( 'ZBS_DEMO_ADT_PAGE' ) )
spaces = VALUE #( ( 'ZBS_DEMO_ADT_SPACE' ) )
out = out ).
ENDMETHOD.
METHOD scope_content.
DATA scopes TYPE if_aps_bc_scope_change_api=>tt_object_scope_sorted.
DATA(scope_api) = cl_aps_bc_scope_change_api=>create_instance( ).
LOOP AT spaces INTO DATA(new_space).
INSERT VALUE #( pgmid = if_aps_bc_scope_change_api=>gc_tadir_pgmid-r3tr
scope_state = scope_state
object = if_aps_bc_scope_change_api=>gc_tadir_object-uist
obj_name = new_space ) INTO TABLE scopes.
ENDLOOP.
LOOP AT pages INTO DATA(new_page).
INSERT VALUE #( pgmid = if_aps_bc_scope_change_api=>gc_tadir_pgmid-r3tr
scope_state = scope_state
object = if_aps_bc_scope_change_api=>gc_tadir_object-uipg
obj_name = new_page ) INTO TABLE scopes.
ENDLOOP.
scope_api->scope( EXPORTING it_object_scope = scopes
iv_simulate = abap_false
iv_force = abap_false
IMPORTING et_object_result = DATA(results)
et_message = DATA(messages) ).
out->write( results ).
out->write( messages ).
ENDMETHOD.
ENDCLASS.
Der Quellcode stammt aus der Dokumentation, die du unten verlinkt findest. Wir haben die Klasse noch einmal aufgebohrt, damit du verschiedene Objekte übergeben kannst und diese dann aktiviert werden. Über das Klassenattribut kannst du diese auch wieder deaktivieren. Hast du das Scoping durchgeführt, findest du die Objekte im Bereich "Predefined Content" und kannst damit den Space ohne viel Customizing direkt der Rolle zuordnen:
Hinweis: Laut Dokumentation muss die Aktion nur auf dem Entwicklungssystem durchgeführt werden. Beim Import in Test und Produktion, wird es automatisch veröffentlicht.
Ergebnis
Nachdem wir die Konfiguration und das Scoping durchgeführt haben, können wir den Space unserer Rolle zuordnen und finden nach dem Neuladen bzw. Ab-/Anmelden den Space in unserem Vorrat. Der oben definierte Space sieht im System nun wie folgt aus:
Übersetzung
Möchtest du die verschiedenen Überschriften und Abschnitte übersetzen, steht dir hier wieder der Standard für ABAP Cloud zur Verfügung. Über die App kannst du die Texte laden, übersetzen und wieder zur Verfügung stellen. Welches Tools du zur Übersetzung der XLIFF Datei nutzt, kannst du dabei selbst entscheiden.
Vollständiges Beispiel
Alle angelegten Objekte findest du im entsprechenden GitHub Repository, wenn sie bereits von abapGit unterstützt werden. Alle Änderungen findest du in folgendem Commit. Bist du auf der Suche nach der Partner App, dann findest du sie auch im Repository.
Fazit
Pages und Spaces als Entwickler selbst anlegen? Kein Problem über die verschiedenen Objekte und Optionen im System. Damit kannst du gleich noch einen Standard für deine Anwendungen ausliefern.
Zusätzliche Links:
SAP Help - Editing Launchpad Page Templates
SAP Help - Scoping