RAP - Popup Defaultwerte
Wie kannst du im Popup einer Aktion in RAP dem User Defaultwerte zur Verfügung stellen? In diesem Artikel erweitern wir unsere Anwendung.
Inhaltsverzeichnis
Im letzten Artikel hatten wir das Popup in unserer Anwendung um Pflichtfelder erweitert, die im UI geprüft werden. In diesem Artikel schauen wir, dass wir Defaultwerte im Popup definieren.
Einleitung
Wenn ein Anwender im Fiori Elements UI eine Aktion auslöst, möchtest du meist noch einige Informationen vom Anwender haben. Um dem Anwender das Leben zu erleichtern, kannst du in vielen Situationen aber auch schon Standardwerte mitgeben, sodass der Anwender Vorschläge für die Eingabe erhält und somit schneller wird. Dazu erweitern wir unsere Report Pattern App um eine weitere Funktion.
Erweiterung
In diesem Abschnitt erweitern wir unsere bestehende Aktion und implementieren die Logik für die Werte. Zum Abschluss führen wir einen Test durch, um das Ergebnis zu validieren.
Verhaltensdefinition
Dazu erweitern wir unsere aktuelle Definition der Aktion "LoadExcelContent" in der Verhaltensdefinition. Aktuell verwenden wir hier eine einfache Aktion mit Parameter, dieser sorgt dafür, dass ein Popup beim Auslösen angezeigt wird.
action LoadExcelContent parameter ZBS_S_DRPExcelPopup;
Dazu ergänzen wir in geschweiften Klammern mit DEFAULT FUNCTION, um eine neue Funktion zu definieren, in der wie die Standardwerte setzen können.
action LoadExcelContent parameter ZBS_S_DRPExcelPopup { default function GetDefaultsForExcelPopup; }
Dabei muss der Name der Funktion mit "GetDefaultsFor" oder "GetDfltsFor" beginnen. Hier bekommst du aber bereits die Informationen
Verhaltensimplementierung
Wenn du den Cursor auf den Namen der Funktion setzt, kannst du über STRG + 1 die Methode in der Verhaltensimplementierung generieren lassen. Schauen wir uns dazu einmal die Signatur der neuen Methode an.
Wir erhalten die Schlüssel der aktuell ausgewählten Einträge und können über RESULT unsere Werte zurückgeben. Dort findest du neben dem Schlüssel wieder das Feld %PARAM, wo unsere Parameterstruktur definiert ist. Dazu definieren wir eine kleine Logik, die für den Kommentar einen Standard mit der aktuellen Währung definiert. Zusätzlich soll bei der Währung EUR immer das Testlauf Flag gesetzt sein.
LOOP AT keys INTO DATA(key).
INSERT VALUE #( %tky = key-%tky ) INTO TABLE result REFERENCE INTO DATA(new_line).
new_line->%param-EventComment = |Default event for { key-Currency }|.
new_line->%param-TestRun = SWITCH #( key-Currency
WHEN 'EUR'
THEN abap_true
ELSE abap_false ).
ENDLOOP.
Projektion
Nun kommt noch der wichtigste Schritt. Damit die Funktion von Frontend aufgerufen werden kann, müssen wir diese in der Projektion unseres RAP Objekts nach Außen freigeben. In diesem Fall handelt es sich nicht um eine Aktion, sondern eine Funktion. Entsprechend sie die Implementierung wie folgt aus:
use function GetDefaultsForExcelPopup;
Test
Da wir nun alles vorbereitet haben, können wir in unserer Anwendung den Test durchführen. Dazu öffnen wir die Währung EUR und lösen die Aktion aus. Das Ergebnis kannst du dir hier anschauen.
Vollständiges Beispiel
Die vollständige Anwendung findest du bei uns im GitHub Repository, die Änderungen dieses Artikels haben wir im folgenden Commit durchgeführt. Dort findest du alle Änderungen und geänderten Objekte auf einem Blick.
Fazit
Das Setzen der Defaultwerte ist mit der Funktion einfach und flexibel möglich, allerdings musst du auch etwas Logik implementieren als eine reine Zuweisung. Der Anwender wird nun entsprechend in seiner Arbeit mit deiner Anwendung beschleunigt.
Quelle:
SAP Help - Defaulting Input Parameters for Operations
SAP Community - Defaulting action parameters