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

RAP - UI Annotationen (Teil 2)

883

Schauen wir uns für die komplexe Entität noch einmal den Aufbau der UI Annotationen vor und was wir damit beeinflussen können.

Werbung


Wenn du mehr zu den UI Annotationen erfahren willst, dann schau einfach in den ersten Teil der Serie, dort erklären wir dir im Detail den Aufbau der Bilder. In diesem Artikel erwartet dich das Delta zur komplexen Entität und was du eigentlich noch mit den Annotationen machen kannst.

 

Einleitung

Wie solltest du deine UI Annotationen aufbauen, um auch mit komplexen Entitäten und RAP Objekten umzugehen? Dabei werden wir vor allem auf den Aufbau des List-Reports eingehen, der aus einer Liste und einer Objektseite besteht. Die Liste zeigt die einzelnen Einträge, meist mit einer verringerten Anzahl an Informationen. Die Detailseite bereitet die Informationen auf und stellt sie dem Benutzer in einer ansprechenderen Weise zur Verfügung.

 

Metadaten

Legen wir nun im ersten Schritt einmal die Metadaten für die beiden Entitäten an, diese lagern wir wieder in die Metadata-Extension Files aus. Die Rechnungen sehen nun wie folgt aus:

@Metadata.layer: #CUSTOMER
@UI: {
  headerInfo: {
    typeName: 'Invoice',
    typeNamePlural: 'Invoices',
    title: { value: 'Document' },
    description: { label: '(Description)' },
    typeImageUrl: 'sap-icon://my-sales-order'
  }
}
annotate entity ZBS_C_RAPCInvoice with
{
  @UI.facet      : [
    {
      id         : 'FacetControlHeader',
      label      : 'Header',
      type       : #FIELDGROUP_REFERENCE,
      purpose    : #HEADER,
      targetQualifier: 'CONTROL_HEADER'
    },
    {
      id         : 'FacetFieldArea',
      label      : 'Information',
      type       : #FIELDGROUP_REFERENCE,
      purpose    : #STANDARD,
      targetQualifier: 'FIELD_AREA'
    },    
    {
      id         : 'controlSection',
      type       : #LINEITEM_REFERENCE,
      position   : 20,
      targetElement: '_Position'
    }
  ]

  @UI            : {
    selectionField : [ { position: 10 } ],
    lineItem     : [{ position: 10 }]
  }
  Document;
  @UI            : {
    lineItem     : [{ position: 20 }],
    fieldGroup   : [{ position: 20, qualifier: 'FIELD_AREA', label: 'Date' }]
  }
  DocDate;
  @UI            : {
    lineItem     : [{ position: 30 }],
    fieldGroup   : [{ position: 30, qualifier: 'FIELD_AREA', label: 'Time' }]
  }
  DocTime;
  @UI            : {
    selectionField : [ { position: 20 } ],
    lineItem     : [{ position: 40 }],
    fieldGroup   : [{ position: 40, qualifier: 'CONTROL_HEADER', label: 'Partner' }]
  }
  Partner;
}

 

Für die Positionen erzeugen wir ebenfalls die Extension, hier fällt als Erstes auf, dass es keine Selection-Fields gibt. Diese werden im Detailbild nicht unterstützt.

@Metadata.layer: #CUSTOMER
@UI: {
  headerInfo: {
    typeName: 'Position',
    typeNamePlural: 'Positions',
    title: { value: 'PositionNumber' },
    description: { value: 'Material' }
  }
}
annotate entity ZBS_C_RAPCPosition with
{
  @UI.facet      : [
    {
      id         : 'FacetMaterialGroup',
      label      : 'Material',
      type       : #FIELDGROUP_REFERENCE,
      targetQualifier: 'MATERIAL_AREA'
    },
    {
      id         : 'FacetPriceGroup',
      label      : 'Information',
      type       : #FIELDGROUP_REFERENCE,
      targetQualifier: 'PRICE_AREA'
    }
  ]

  @UI.hidden: true
  Document;
  @UI            : {
    lineItem     : [{ position: 10 }]
  }
  PositionNumber;
  @UI            : {
    lineItem     : [{ position: 20 }]
  }
  Material;
  @UI            : {
    lineItem     : [{ position: 30 }],
    fieldGroup   : [{ position: 30, qualifier: 'MATERIAL_AREA', label: 'Quantity' }]
  }
  Quantity;
  @UI            : {
    lineItem     : [{ position: 40 }],
    fieldGroup   : [{ position: 40, qualifier: 'MATERIAL_AREA', label: 'Unit' }]
  }
  Unit;
  @UI            : {
    fieldGroup   : [{ position: 50, qualifier: 'PRICE_AREA', label: 'Price' }]
  }
  Price;
  @UI            : {
    fieldGroup   : [{ position: 60, qualifier: 'PRICE_AREA', label: 'Currency' }]
  }
  Currency;
}

 

Hinweis: Über die LINEITEM_REFERENCE kann dann die zweite Entität auf das Detailbild eingebunden werden. So wird eine Liste, ähnlich dem Einstiegsbild, angezeigt.

 

Erklärung

Dazu die folgende Erklärung, um einmal die Annotationen im Detail sich anzuschauen. Zuerst einmal die Einstiegsliste der App (Rechts Oben) und die Detailliste (Recht Unten):

 

Dann die Liste der zweiten Entität im Detailbild der Rechnungen (Rechts Oben) und die dazugehörige Detailseite der Positionen:

 

In diesem Beispiel haben wir ebenso mit der HEADERINFO gearbeitet, um Informationen im Kopfbereich zu zeigen. Hier werden meist Schlüssel verwendet, die du meist sowieso nicht bearbeiten kannst.

 

Änderungsmodus

Aktivierst du im Detailbild der Rechnungen den Änderungsmodus, so werden alle änderbaren Felder der Entität auf Eingabe geschaltet. Mit neueren Fiori Elements Versionen werden aber ebenso die Felder der Unterentitäten in den Bearbeitungsmodus versetzt, somit kannst du alle Informationen auf einen Schlag bearbeiten.

 

Fiori Elements Showcase App

SAP hat Ende letzten Jahres eine Showcase App für RAP und CAP veröffentlicht, damit hast du die Möglichkeit einfach alle aktuellen Funktionen von Fiori Elements zu sehen und diese zu testen. Die App wird jeweils um die aktuellen Features der Frameworks ergänzt und ist somit auf dem aktuellen Stand. Mehr zur Installation, zur Doku und den Funktionen kannst du dem Blog in der Quellenangabe entnehmen.

Die einzelnen Features kannst du mit Hilfe des Tags (#BEISPIEL) in der Dokumentationen, aber auch im Quellcode, finden. So kannst du sehen, wie das Feature implementiert wurde und wie du es sinnvollerweise nutzen kannst.

 

Fazit

UI Annotationen sind ein sehr leichter Weg den Anwendungen ein Aussehen und eine Funktion zu geben. Mit Fiori Elements wird die Entwicklung von standardisierten Fiori Anwendungen um ein Vielfaches beschleunigt und spart einen reinen Fiori Entwickler. Als ABAP Entwickler bist du mit Fiori Elements sehr gut aufgestellt. Den aktuellsten Stand der App findest du bei uns im Repository.

 

Quelle:
SAP Blog - SAP Fiori Showcase App
SAP Icon Explorer


Enthaltene Themen:
RAPBTPUI AnnotationREX2
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 - Sales App Learnings

Kategorie - ABAP

Das Tutorial für die Sales App ist zu Ende und dieses Mal wurde eine große Bandbreite an Themen und Bereichen adressiert. In diesem Artikel schauen wir auf das Gelernte und wichtige Punkte.

08.09.2026

052: 10 Minutes from Start to Launchpad

Kategorie - YouTube

In dieser Folge schauen wir uns an, wie wir innerhalb von 10 Minuten eine RAP Anwendung erstellen können, diese generieren und bereitstellen und am Ende fertig im Launchpad aufrufen.

07.09.2026

RAP - Navigation (App to App)

Kategorie - ABAP

Wie kannst du eigentlich innerhalb deiner Fiori Anwendung auf eine andere Anwendung navigieren, ohne das der User die App manuell wechseln muss? Schauen wir uns die Navigation zwischen Fiori Apps an.

01.09.2026

ABAP in der Praxis - Setup App erstellen

Kategorie - ABAP

Keine SAP GUI mehr? Wie erstellen wir dann eigentlich eine statische Setup App und bleiben auf ABAP Seite trotzdem flexibel für die weitere Implementierung? Hier ein praktisches Beispiel.

28.08.2026

RAP - Singleton Pattern

Kategorie - ABAP

Das Singleton Pattern in RAP gibt es schon länger, doch wie genau funktioniert es und wie kannst du es auch für andere Use-Cases nutzen? Schauen wir uns dazu die Details in diesem Artikel an.

25.08.2026