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)

718

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 - Kritikalität

Kategorie - ABAP

Für was brauchst du eigentlich die Kritikalität in deiner Anwendung und was kannst du damit erreichen? Schauen wir uns verschiedene Formen und Szenarien an.

17.03.2026

RAP - Icons

Kategorie - ABAP

Wie findest du eigentliche Icons im UI5 Umfeld und wie kannst du diese mit ABAP Mitteln in deine Fiori Elements Anwendung einbauen? Lass uns diese Frage im Artikel beantworten.

13.03.2026

RAP - Gruppierung von Aktionen

Kategorie - ABAP

Wie kannst du eigentlich deine verschiedenen Aktion in RAP unter einem Button gruppieren, vor allem wenn die Aktionen relativ ähnlich sind. In diesem Artikel schauen wir uns die Details zur Umsetzung mit ABAP an.

10.03.2026

ADT - RAP Extension Assistent [MIA]

Kategorie - ABAP

Du möchtest ein RAP Objekt erweitern und weißt nicht genau wo du starten sollst? Vielleicht hilft dir die Idee des Extension Assistant weiter und leitet dich Schritt für Schritt durch den Prozess.

06.03.2026

ADT - RAP Analyzer [MIA]

Kategorie - ABAP

Die Einarbeitung und Übersicht in bestehende RAP Objekte kann nicht immer einfach sein, vor allem wenn es sich um komplexe Objekte handelt. Fragen wie das verwendete Pattern und wichtige Objekte müssen sich meist erarbeitet werden.

24.02.2026