
RAP - Side Effects
Wie kannst du Teile der Fiori UI aktualisieren, ohne einen kompletten Refresh zu machen? Mit Side Effects ist das in ABAP und RAP ganz leicht möglich.
Inhaltsverzeichnis
In diesem Artikel schauen wir uns die verschiedenen Arten von Seiteneffekten an und wie du sie sinnvoll in deinem Alltag einsetzen kannst.
Einleitung
Dazu werden wir unsere Anwendung aus der Reihe Report Pattern erweitern um zusätzliche Funktionalitäten. Wenn du bereits mit der Anwendung gearbeitet hast, wird dir sicherlich aufgefallen sein, dass bestimmte Bestandteil der Anwendung erst beim Aktualisieren geladen werden, wie nach der Verarbeitung der Excel Datei oder beim Hinzufügen eines neuen Landes.
Dazu können Side Effects erstellt werden. Diese definieren einen Auslöser, der dann wiederrum einen Effekt an einem Objekt auslöst. Dabei werden nur die beeinflussten Objekte neu geladen. Handelt es sich dabei zum Beispiel um ein Feld, dann wird nur dieses Feld neu geladen. Grundsätzlich war diese Funktion bereits in Fiori möglich, kannst du dies nun aus dem RAP Verhalten steuern.
Möglichkeiten
Aktuell können bestimmte Aktionen einen Side Effect auslösen, dazu zählen:
- Felder - Ein bestimmtes Feld wird im UI geändert.
- Aktionen - Eine Aktion wird ausgelöst, meist mit einem Button im UI verbunden.
- Ermittlung - Eine Ermittlung wird angestoßen, die Inhalte von Feldern automatisch ändert.
- SELF - Bezieht sich auf die eigene Entität.
Dabei können die folgenden Objekte im Anschluss beeinflusst werden:
- Felder - Aktualisierung einzelner Felder im UI, aber auch einzelne Felder von Assoziationen.
- Berechtigungen - Damit können zum Beispiel auch Buttons deaktiviert werden, wie eigene Aktionen und Standard Aktionen.
- Entität - Damit können komplette Assoziationen noch einmal geladen werden, wenn sich Daten in ganzen Knoten verändert haben.
- Nachrichten - Erzwingt das Neuladen der Nachrichten, die über REPORTED erzeugt wurden.
- SELF - Bezieht sich auf die eigene Entität.
Grundsätzlich kannst du Seiteneffekte in den RAP Business Objekten (Managed und Unmanaged) verwenden, sowie in der Projektionsschicht der Objekte. Weitere Details kannst du auch der technischen Dokumentation entnehmen, die wir unten verlinkt haben. Dazu brauchst du On-Premise allerdings ein S/4HANA 2023 System.
Beispiel
In diesem Beispiel wollen wir den Upload Button mit einer Aktion ausstatten. Dazu soll nach der Ausführung der Aktion die Entität der Länder aktualisiert werden und das Feld der Excel Datei, da diese nach dem Upload gelöscht wird. Schauen wir uns dazu an, wie es vor der Aktion aussieht.
Dazu erweitern wir die Projektion der Verhaltensdefinition und fügen unter der Aktion "LoadExcelContent" das neue Statement ein. Mit SIDE EFFECTS öffnest du den Bereich, wo du alle Seiteneffekte definieren kannst. Dazu definieren wir uns für unsere Aktionen einen Effekt, der Auswirkungen auf die Entität Country und das Feld ExcelAttachment hat. Da das Objekt nur einmal aufgeführt werden kann, trennen wir die Effekte mit Komma im hinteren Teil.
side effects {
action LoadExcelContent affects entity _Country, field ExcelAttachement;
}
Schauen wir uns nach dieser kleinen Änderung den Einfluss auf das UI an. Dabei fällt auf, dass nach Ausführung der Aktion bereits das Interface neu geladen wurde.
Änderungen
Alle in diesem Artikel durchgeführten Änderungen findest du im GitHub Repository unter dem entsprechenden Commit. Damit kannst du alle Änderungen besser nachvollziehen.
Fazit
Side Effects lassen sich mit sehr wenig Aufwand in die UI integrieren und erleichtern die Arbeit des Nutzers ungemein, da er sofort die aktualisierten Informationen visualisiert bekommt, ohne die Anwendung neu laden zu müssen.
Quelle:
SAP Help - Side Effects