
RAP - Kritikalität
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.
Inhaltsverzeichnis
In diesem Artikel schauen wir uns die Möglichkeiten an, die du mit der Kritikalität in RAP steuern kannst und was du damit an UI Features umsetzen kannst.
Einleitung
Im letzten Artikel haben wir unsere Sales App mit Icons verschönert und etwas lebendiger gemacht. Daher wollen wir uns in diesem Artikel noch einmal die Kritikalität im Detail anschauen und was du damit noch anpassen kannst. Dabei ist das Ziel, einen gewissen Status per Farbe und/oder Icon zu symbolisieren.
Vorbereitung
In der Vorbereitung benötigen wir ein Feld, welches die Kritikalität abbildet. Dazu verwenden wir wie in den meisten Fällen bisher ein virtuelles Element. Wir möchten die Information direkt aus dem errechneten Monat ableiten, diese Information aber nicht auf der Datenbank oder im Draft ablegen. Vom Datentyp her benötigen wir nur ein INT1 Feld, da wir nur sehr wenige Werte damit abbilden müssen.
@ObjectModel.virtualElementCalculatedBy: 'ABAP:ZCL_BS_DEMO_RAP_SALES_VE'
virtual DataCriticality : abap.int1,
Dazu erweitern wir die Methode CALCULATE. In diesem Fall ergänzen wir aber die Information, wenn wir auch den Monat ableiten, da wir über diesen die Farbe bestimmen wollen, um die möglichen Werte zu überprüfen. Dazu binden wir an die verschiedenen Monate die verschiedenen Werte und befüllen damit das neue Feld. Als Test verwenden wir hier die Werte von 0-6, die wir an die verschiedenen Zeiten hängen.
original->DataCriticality = SWITCH #( original->SalesMonth
WHEN '01' THEN 0
WHEN '02' THEN 1
WHEN '03' THEN 2
WHEN '10' THEN 3
WHEN '11' THEN 4
WHEN '12' THEN 5
ELSE 6 ).
Feld
Um nun einem Feld die Kritikalität zuzuordnen, stehen dir zwei Annotationen zur Verfügung. Über "criticality" ordnest du das Feld zu, welches den Wert für die Farbe definiert. Über "criticalityRepresentation" kannst du bei einem Feld noch bestimmen, ob ein Icon zusätzlich angezeigt wird. Die Information können wir bei den gängigen Ausgaben mitgeben und so das Feld in der Ausgabe verändern.
@UI.lineItem: [ { position: 33, criticality: 'DataCriticality', criticalityRepresentation: #WITH_ICON } ]
@UI.identification: [ { position: 33 , qualifier: 'GENERAL', criticality: 'DataCriticality', criticalityRepresentation: #WITH_ICON } ]
SalesMonth;
Als Ergebnis erhalten wir dafür die Monate in verschiedenen Farben und zusammen mit Icons. Über "criticalityRepresentation" kannst du noch steuern, ob ein Icon angezeigt wird oder nur der Text farblich hervorgehoben wird.
Im Gegensatz zu einigen Quellen im Internet, hat sich die Farbskala im Laufe der Zeit etwas verändert. Null oder andere Werte ohne Bedeutung, werden nun ganz normal dargestellt und nicht mehr Grau. Neben den anderen Werten ist auch noch Blau dazugekommen. In der Tabelle findest du eine kurze Übersicht.
| Kritikalität | Farbe | Icon (Text) | Icon (Symbol) |
|---|---|---|---|
| 0 | Keine | - | |
| 1 | Rot | Kreuz | ❌ |
| 2 | Orange | Ausrufezeichen | ⚠️ |
| 3 | Grün | Haken | ✅ |
| 5 | Blau | Info | ℹ️ |
Zeile
Im List Report kannst du auch die Zeile markieren und bist nicht von einem Feld abhängig. Dies hilft, wenn du nicht sicher bist, ob die benötigte Information auch in der Liste angezeigt wird. Dazu definierst du auf Header Ebene des Core Data Service die Annotation für LineItem und setzt dort die Kritikalität.
@UI.lineItem: [{criticality: 'DataCriticality'}]
Damit wird im vorderen Teil der Zeile eine farbliche Markierung gesetzt. Diese folgt den gleichen Regeln wie bei den Feldern, wenn es um die verschiedenen Farben geht.
Button
Bereits in dem Artikel für die verschiedenen Positionen der Buttons, hatten wir die Farbe eines Buttons im UI verändert. Dazu kannst du ebenfalls die Kritikalität verwenden und in den Eigenschaften des Buttons angeben.
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
Sollte auf eine Position mehr geschaut werden, dann kannst du diese per Kritikalität hervorheben. Die Eigenschaft hilft deinem Anwender, wichtige Positionen oder Dringlichkeiten besser zu verstehen und zu erkennen. Die Umsetzung ist recht leicht gemacht und per UI-Annotation kann diese einfach eingebunden werden.


