WebRFC Bausteine in SAP Screen Personas 3.0
Mit SAP Screen Personas 3.0 stellt uns SAP ein relativ simples Tool bereit, um individuelle Screens an unternehmensspezifische Anforderungen anzupassen und umzugestalten. Dies geschieht einerseits über einen intuitiven Drag&Drop-Ansatz und auf der anderen Seite können wir Benutzerinteraktion durch das Einbinden von JavaScript imitieren und automatisieren.
JavaScript? Das muss doch noch mehr können, werden Sie denken. Und das stimmt auch. In diesen Blogeintrag möchte ich Ihnen vorstellen, wie Sie durch den Einsatz von JavaScript & JSON auf einfache Weise WebRFC-Bausteine in SAP Screen Personas 3.0 aufrufen können und Ihnen ein Werkzeug an die Hand geben, das SAP Screen Personas 3.0 noch mächtiger macht.
Administration im Backend
Theoretisch kann jeder Funktionsbaustein aus dem ABAP-Backend aus einem Skript heraus angesprochen werden. Dazu gibt es zwei Voraussetzungen, die erfüllt werden müssen:
- Der Baustein muss als remotefähig markiert sein.
Dazu öffnen wir die Transaktion SE37 und legen dort entweder einen Baustein an und stellen im Reiter Eigenschaften (1) sicher, dass “remotefähiger Baustein” (2) markiert ist oder wählen einen Baustein aus der remotefähig ist.
In unserem Beispiel wählen wir den Standard Funktionsbaustein “BAPI_USER_GET_DETAIL”, mit dem wir benutzerbezogene Daten abfragen können. Der Baustein muss über SAP Screen Personas als erlaubt geführt werden.Spezial Tipp: Wenn wir einen SAP Standard Baustein aufrufen möchten, der nicht remotefähig ist, können wir uns in vielen Fällen behelfen, indem wir einen remotefähigen Baustein erstellen, der den gewünschten Baustein aufruft.
- Zum anderen müssen Sie den Baustein auf der Whitelist der SAP Screen Personas 3.0 Administration ausführen. Dazu gehen wir in die Transaktion /n/personas/admin und öffnen dort den Menüpunkt “Whitelist der Flavor-Pflege” über den Pfad “Springen -> Whitelists -> Whitelist der Flavor-Pflege”. Im Folgebild kann der Baustein als erlaubt eingepflegt werden.
Dort geben wir den Namen des Funktionsbausteins und das gewünschte Framework an.
Arbeiten im SAP Screen Personas Script Editor
Die WebRFC-Verbindung setzen wir wie folgt ab:
- Im Script Editor müssen wir nun zunächst den RFC Web Request aufbauen. Dies bewerkstelligen wir mit folgender Zeile:
var rfc = session.createRFC(“<BAPI_NAME>”);
In unserem Beispiel heißt das:
var rfc = session.createRFC(“BAPI_USR_GET_DETAIL”); - Anschließend übergeben wir alle notwendigen Exportparameter, d.h. also die Importparameter des Bausteins.
rfc.setParameter(<ParameterName>, <ParameterWert>);
In diesem Beispiel übergebe ich als Parameter z.B. den Benutzer “KRIST”, welcher im BAPI mit dem Parameternamen “USERNAME” deklariert ist. Also:
rfc.setParameter(“USERNAME”,”KRIST”); - Nun können wir noch die Rückgabeparameter einschränken, um nicht unnötig viel Traffic zwischen ABAP-Backend und Browser zu erzeugen. Da es sich um einen Web-Request handelt, brauchen wir ein JSON-Format.
rfc.requestResults(<String list im JSON Format>);
Am Beispiel können wir durch
rfc.requestResults(JSON.stringify([“ADDRESS”,”RETURN”]));
die beiden Export-Strukturen “Address” und “Return” des Funktionsbausteins anfordern. Zum Schonen der Ressourcen sollten wir nur die Parameter anfordern, die wir auch wirklich benötigen. - Absetzen des RFC-Calls:
rfc.send();
Wie bei HTTP-Requests üblich, gibt es einen Request und eine Response. Wenn der Befehl ausgeführt ist, können die Ergebnisse in der Reponse über die Request-Variable rfc abgefragt werden - Die Ergebnisse können zum Schluss über den Befehl getResult abgefragt werden
var address = rfc.getResult(<ParameterName>);
in unserem Beispiel also
var address = JSON.parse(rfc.getResult(“ADDRESS”));
Wichtig hierbei ist, dass mit rfc.getResult ein JSON-String zurückgeliefert wird. Dieser muss für JavaScript-Zugriffe wieder geparst werden. Auch hier hilft die JSON-Bibliothek.
Der vollständige Text sieht dann etwa wie folgt aus:
Einbinden in die SAP Gui
Durch das Erzeugen von einer geeigneten Ausgabeoberfläche und durch das Binden des Skripts an das onLoad-Event in einem Flavor kann dies beispielsweise beim Öffnen der SAP WebGui wie folgt aussehen:
Welche Funktionsbausteine rufen Sie über SAP Screen Personas 3.0 im WebRFC auf? Hinterlassen Sie mir gerne Ihre Kommentare.