
RAP - Aktion (Verarbeitungsoptionen)
Wie aktivierst du eigentlich den Multi-Select in RAP und steuerst die verschiedenen Verarbeitungsoptionen? Hier schauen wir uns die verschiedenen Möglichkeiten im Framework an.
Inhaltsverzeichnis
Im Artikel letzte Woche hatten wir uns eine Aktion im Bereich der Custom Entity angeschaut, in diesem Artikel geben wir noch einige Details zur Verarbeitung und zur Generierung in BAS.
Einleitung
Nicht alle Optionen stehen als Annotationen bei der Modellierung zur Verfügung. So werden bestimmte Optionen erst bei der Generierung der Fiori Applikation eingestellt, wie zum Beispiel der Autoload, Erweiterungen oder UI Aktionen. Um die verschiedenen Verarbeitungsoptionen validieren zu können, müssen wir daher im ersten Schritt den Multi-Select in der Tabelle aktivieren und im Anschluss können wir uns das Verhalten der App anschauen.
Vorbereitung
Als Vorbereitungsschritt müssen wir zuerst die App generieren, um sie im Anschluss anpassen und testen zu können. Dabei verwenden wir das Business Application Studio als Standard in der Entwicklung, da es ohne weitere Konfiguration für uns Out-of-the-Box zur Verfügung steht. Hier generieren wir uns über die Tool Bridge das Projekt. Nun sollten wir die Übersichtsseite sehen:
Multi Select
Über den OData v2 erhalten wir nur Radiobuttons in der Liste, können aber über das BAS den Multi-Select aktivieren. Dazu können wir das Guided Development starten und suchen hier nach der Option "Configure Multiple Selection for a Table".
Im nächsten Schritt starten wir den Wizard und müssen im unteren Bereich die Option auf "True" setzen, um die Mehrfachauswahl zu aktivieren. Über den Button "Insert Snippet" wird die Einstellung in der App aktiviert.
Wurde die Datei nun erweitert, dann sollte im Preview nun eine Mehrfachauswahl von Einträgen möglich sein. Mit dieser kleinen Anpassung hat unsere App nun die volle Flexibilität, wenn wir mehrere Datensätze prozessieren wollen.
Verarbeitungsoptionen
In diesem Kapitel schauen wir uns einmal die Verarbeitungsoptionen an, die für Aktionen zur Verfügung stehen. Über den Zusatz "invocationGrouping" in der UI Annotation, können wir zwei verschiedene Zustände einer Aktion steuern.
ISOLATED
Hierbei handelt es sich um die Standard Einstellung, wenn du eine Aktion definierst, den Zusatz aber nicht angibst. Dieser bewirkt, dass jeder markierte Datensatz in der Liste eine eigene Abfrage generiert. Führen wir unsere "Custom Action" aus, dann wird diese so oft aufgerufen, wie Datensätze markiert sind. Mit jedem Durchlauf erhalten wir aber nur einen Schlüssel für die Verarbeitung.
Etwas merkwürdig wird es dann bei der statischen Aktion "Reset", die sich unterschiedlich verhält, wenn wir keine Datensätze markiert haben oder Datensätze in der Liste gewählt haben. Ist kein Datensatz gewählt, dann wir die Aktion genau einmal aufgerufen, so wie wir es erwarten. Wählen wir zum Beispiel zwei Datensätze aus, dann wird die Aktion zweimal ausgeführt, was zum Beispiel für den Reset keinen Sinn macht.
CHANGE_SET
Die zweite Option ist das Change-Set und wie der Name sagt, wird hier ein Set aus Änderungen gebildet. Dazu setzen wir bei beiden Aktionen einmal die Option und schauen uns das Verhalten im Detail an. Markieren wir in der Liste alle drei Einträge und rufen die "Custom Action" auf, dann wird unsere Implementierung genau einmal aufgerufen. Allerdings erhalten wir alle Schlüssel an die Methode geliefert.
Nun zur statischen Aktion. Auch hier erhalten wir genau einen Aufruf der Aktion, egal ob wir Datensätze markiert haben oder nicht. Dieses Verhalten würden wir eigentlich standardmäßig von der statischen Aktion erwarten, da die selektierten Datensätze eigentlich keine Relevanz haben.
Verwendung
Mit dem Wissen von oben können wir damit die beiden Aktionen für das UI definieren. Damit die statische Aktion wie gewünscht funktioniert, würden wir hier mit dem Change-Set arbeiten. Bei der Custom Action kannst du selbst entscheiden, ob die Datensätze als Gruppe verarbeitet werden sollen.
@UI.lineItem: [{ position: 10 },
{ type: #FOR_ACTION, dataAction: 'myCustomAction', label: 'Custom Action', invocationGrouping: #ISOLATED },
{ type: #FOR_ACTION, dataAction: 'resetAllIcons', label: 'Reset', invocationGrouping: #CHANGE_SET } ]
Hinweis: Grundsätzlich sollten Aktionen so implementiert werden, dass sie auch mit mehreren Datensätzen umgehen können.
Vollständiges Beispiel
Das vollständige Beispiel des Services und der App findest du im GitHub Repository im Paket ZBS_DEMO_RAP_CUSTOM_ACTION. Die kleinen Änderungen aus diesem Artikel wirst du dort allerdings nicht finden.
Fazit
Du weißt nun, wie du auch den Multi-Select über das Business Application Studio aktivieren kannst und wie du die Aktion in der richtigen Art und Wise konfigurierst, damit sie zu deiner Verarbeitung passt.
Quelle:
SAP Help - invocationGrouping