This is a test message to test the length of the message box.
Login
|
BTP Pages and Spaces
Erstellt von Software-Heroes

BTP - Pages und Spaces (ADT)

364

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.

Werbung


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


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


RAP - Virtuelle Felder sortieren

Kategorie - ABAP

Haben wir virtuelle Felder in einer Entität im ABAP RESTful Application Programming Model implementiert, wie können wir dann eigentlich eine Sortierung verwenden? Schauen wir uns einmal den Prozess dazu an.

23.01.2026

RAP - Multi-Input Field

Kategorie - ABAP

Eine ganze Entität in einem Feld darstellen? Mit dem Multi-Input Field möglich. Heute schauen wir uns den Punkt in ABAP für die RAP Entwicklung an und schauen uns die Szenarien an.

20.01.2026

RAP - Generierung mit Template

Kategorie - ABAP

Die Generatoren in RAP sind mächtig, wenn es um die schnelle Bereitstellung von RAP Objekten geht. Über Templates kannst du die Entitäten noch einmal schneller anlegen, wenn du eine Schulung machst.

13.01.2026

BTP - Dynamic Tile Service (Teil 2)

Kategorie - ABAP

In diesem Artikel möchten wir ein Update zum Tile Service geben und wie du den Service noch leichter integrieren kannst. Dabei spielt die Custom Entity eine entscheidende Rolle.

12.12.2025

BTP - Business Configuration (Release 2511)

Kategorie - ABAP

Schauen wir einmal auf die Änderungen in der Business Configuration Erstellung und was sich technisch in ABAP geändert hat. Dabei ist nicht alles beim alten Stand geblieben, sondern wurde weiter optimiert.

02.12.2025