
RAP - Importance
Schauen wir einmal auf die Wichtigkeit von Informationen innerhalb einer SAP Fiori Anwendung und wie wir damit die Sichtbarkeit in der RAP Anwendung steuern können.
Inhaltsverzeichnis
In diesem Artikel schauen wir uns das Thema Wichtigkeit bzw. Importance an und wie du damit Elemente im UI priorisieren kannst.
Einleitung
SAP Fiori Apps können auf verschiedenen Devices (PC, Tablet, Smartphone) dargestellt werden. So unterschiedlich wie die Geräte sind, so unterschiedlich sind auch die dargestellten Auflösungen und damit auch am Ende die UIs. Daher ist es umso entscheidender, dass wir uns Gedanken über die Wichtigkeit von Informationen machen. Welche Informationen sind wichtig und welche weniger, wenn es um die Anzeige in einem begrenzten Raum geht. Dafür verwenden wir Importance, also die Wichtigkeit, um verschiedene Elemente unterschiedlich zu gewichten. Damit geben wir dem UI die Möglichkeit zu entscheiden, welche Elemente bis zum Schluss angezeigt werden und welche als Erstes aus dem UI verschwinden können. Dazu verwenden wir als Beispiel wieder unsere Sales App und erweitern diese um die entsprechenden Bestandteile.
Grundlagen
Schauen wir uns erst einmal im ersten Blick einige Grundlagen zur Wichtigkeit an.
Verfügbarkeit
Da die Importance vor allem im UI greift, schauen wir uns die verschiedenen UI Annotationen an, wo uns die Eigenschaft zur Verfügung steht. Dazu rufen wir in Eclipse per STRG + SHIFT + A die Suche auf und suchen nach "UI". Damit können wir uns die UI Annotationen anschauen.
Gehen wir einmal durch die Liste der verschiedenen Elemente, wo Importance zum Einsatz kommt:
- Elemente - Verschiedene Elemente die mit "identification", "lineItem" oder "fieldGroup" beginnen können direkt beeinflusst werden.
- Facet - Ebenso kann eine komplette "facet", welche eine Sammlung von Feldern definiert, beeinflusst werden.
- Weitere Eigenschaften - Daneben steht das Attribut noch bei "statusInfo", "dataFieldDefault" und "connectedFields" zur Verfügung.
Werte
Grundsätzlich sind in dem ENUM aktuell drei Werte definiert:
- LOW
- MEDIUM
- HIGH
Dabei ist der Standard in der Anwendung laut Definition NONE, welches MEDIUM entspricht. Das heißt im Endeffekt, dass alle Elemente erst einmal als MEDIUM definiert sind und wir eine entsprechende Abstufung nach oben oder unten durchführen können. Wollen wir ein Element lange sehen, dann setzen wir es auf HIGH. Ist die Information weniger wichtig, setzen wir das Element auf LOW und es verschwindet als erstes vom Bildschirm, wenn der Platz nicht mehr reicht.
Beispiele
Schauen wir uns in diesem Abschnitt einmal zwei Beispiele für die Verwendung und Funktionsweise an.
List Report
Im klassischen List Report können wir in der angezeigten Tabelle die verschiedenen Spalten mit einer Wichtigkeit ausstatten. Hier kommt es aber auch auf die verwendete Tabelle an. Verwenden wir eine "Grid Table", dann erhalten wir horizontales Scrollen und die Wichtigkeit spielt hier keine Rolle. Im Standard erhalten wir normalerweise aber die "Responsive Table", diese stellt so viele Spalten dar, wie Platz verfügbar ist. Daher definieren wir im Test drei Spalten mit einer Wichtigkeit. Das Verkaufsjahr und der Monat sind eigentlich redundante Informationen, die sich aus dem Verkaufsdatum ableiten lassen. Daher setzen wir die beiden Spalten über "lineItem" auf LOW. Das Material am Ende ist uns besonders wichtig und damit setzen wir es auf HIGH.
@UI.lineItem: [ { position: 32, importance: #LOW } ]
SalesYear;
@UI.lineItem: [ { position: 33, criticality: 'DataCriticality', criticalityRepresentation: #WITH_ICON, importance: #LOW } ]
SalesMonth;
@UI.lineItem: [ { position: 160, value: '_SASold.MaterialId', importance: #HIGH } ]
_SASold;
Im Browser verwenden wir das Feature, um uns eine Webseite im Responsive Design anzuzeigen (F12 - Entwicklertools). Nun verkleinern wir den vorhandenen Bildschirmbereich stückweise und beobachten das Verhalten des UI. Dabei werden die Spalten mit LOW direkt als erstes in der Liste ausgeblendet. Dann werden alle nicht definierten Spalten (NONE/MEDIUM) Spalte für Spalte ausgeblendet bis nur noch unsere wichtige Spalte sichtbar ist.
Schlüsselfeld
Wie sieht es eigentlich mit Schlüsselinformationen innerhalb der Tabelle aus? Laut Definition sollen die Schlüsselfelder ebenfalls sichtbar sein, da diese automatisch die Wichtigkeit HIGH bekommen. Schauen wir uns dazu einmal zwei Elemente an, die als Schlüssel gesehen werden können:
- Semantischer Schlüssel - Der sematische Schlüssel ist ein eindeutiger Schlüssel, der meist lesbar ist, aber nicht unbedingt der auf der Datenbank definierte Schlüssel ist. Diesen definieren wir im Core Data Service im Header.
@ObjectModel.semanticKey: [ 'PartnerNumber', 'SalesDate' ]
- Tabellenschlüssel - Der eigentliche Schlüssel auf der Datenbank. In RAP Anwendungen wird dafür in vielen Fällen eine nicht gut merkbare UUID verwendet. In den UI Annotationen aktivieren wir die Anzeige und setzen das Feld ans Ende.
@UI.lineItem: [
{ position: 300 }
]
UUID;
In diesem Fall führen wir das gleiche Experiment durch. Dabei fällt auf, dass der Tabellenschlüssel auch sehr schnell ausgeblendet wird. Die Regel gilt also für den semantischen Schlüssel und dieser bleibt bis zum Schluss bestehen. Am Ende werden weiterhin alle drei Felder angezeigt, das System bricht die Information allerdings auf die nächste Zeile um, einfach da nicht mehr genug Platz zur Verfügung steht.
Vollständiges Beispiel
Das vollständige Beispiel findest du in GitHub im entsprechenden Paket für die Sales App. Die Änderungen aus diesem Artikel findest du in diesem Commit und kannst damit die Änderungen, plus die Zusatzinformationen, nachvollziehen.
Fazit
Wie wichtig ist dir ein Feld? Mit dem heutigen Artikel solltest du einen Einblick in das Element bekommen haben und wie es dir dabei hilft dein UI noch besser zu steuern.


