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)

233

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 Annotation
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden 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 - Mehrere Filter und Einstellungen

Kategorie - ABAP

Wie sieht es eigentlich aus, wenn wir in RAP mehrere Filter und Felder als Standard setzen wollen und dazu noch eine standardmäßige Sortierung benötigen?

16.05.2025

RAP - Länge von Meldungen

Kategorie - ABAP

Deine Meldung wird bei der Ausgabe mit RAP abgeschnitten? Lass uns das Problem und eine Lösung anschauen.

13.05.2025

RAP - Suchhilfe und Schlüssel optimieren

Kategorie - ABAP

In diesem Artikel optimieren wir unsere Suchhilfen im Custom Pattern, verwenden das Additional Binding und machen unsere RAP Anwendung fit für den Endanwender.

06.05.2025

RAP - Festwert-Filter

Kategorie - ABAP

Wie verwendest du Festwerte aus einer Domäne für einen Filter und passt diesen nach deinen Bedüfnissen in RAP an? Mehr dazu hier.

02.05.2025

RAP - Custom Pattern (Verhalten)

Kategorie - ABAP

In diesem Artikel erweitern wir das Custom Pattern in RAP um zusätzliche Daten und Verhalten. Damit können wir Mehrwerte in der Implementierung schaffen.

29.04.2025