SAP Screen Personas – Easy Selection mittels Scripting

Mit diesem Blogbeitrag möchte ich euch mit dem Scripting innerhalb von SAP Screen Personas vertraut machen. Mittels Scripting ist es z.B. möglich, Bearbeitungen vom SAP-Standard im Hintergrund durchzuführen, Informationen von mehreren Transaktionen auf einer Maske zu verbinden und noch vieles mehr. Um euch aber erstmal im kleinen Rahmen mit dem Scripting vertraut zu machen, habe ich ein sehr einfaches Beispiel ausgesucht. Gearbeitet habe ich dieses mal in einem S/4HANA-System, um euch zu zeigen, dass es kaum Unterschiede im Vergleich zu R/3-Systemen im Umgang mit SAP Screen Personas gibt. Für das Beispiel werde ich euch zunächst das Set-up beschreiben, bevor es dann richtig zur Sache geht.

Set-up

Für mein kleines Beispiel habe ich mir einen Mitarbeiter vorgestellt, der sehr häufig mit der Transaktion ME2N (Einkaufsbelege nach Belegnummer) arbeitet.

Diese Transaktion ist ein Standardreport zum Anzeigen von beispielsweise Bestelldetails. Sie besteht aus zwei Teilen. Zum einen aus einer Selectionsmaske und zum Anderen aus einer Ergebnisansicht. Wenn ihr die Transaktion im Standard öffnet, so gelangt ihr zunächst auf eine unübersichtliche und sehr große Selektionsmaske.

In der Selektionsmaske ist das einzige Pflichtfeld Listumfang. Dieses Selektionskriterium bestimmt das Format des Reports. Für dieses Beispiel stelle ich mir einen Mitarbeiter vor, der lediglich mit den Selektionskriterien Belegart, Einkäufergruppe und Werk arbeitet und im Listumfang immer „ALV“ als Standardanzeige auswählt. Wenn ich meine Selektionen vorgenommen habe und den Report ausführe, so komme ich auf folgende Ergebnisansicht:

Möchte ich nun meine Selektionsbedingungen verändern, so muss ich immer wieder zurück auf den Selektionsbildschirm springen. Um genau das jedoch nicht machen zu müssen, können wir Screen Personas benutzen. Ziel soll es sein die neue Selektion direkt aus der Ergebnisansicht neu starten zu können. Dazu müssen wir zunächst die Transaktion optisch aufbereiten und danach mittels Scripting die Funktionalitäten ergänzen.

Transaktion optisch vorbereiten

Zunächst einmal habe ich die Selektionsmaske auf die Kriterien Belegart, Einkäufergruppe und Werk beschränkt und die Maske etwas aufgehübscht:

Wenn ihr nicht genau wisst, wie ihr mit SAP Screen Personas Transaktionen optisch bearbeiten und Objekte entfernen bzw. hinzufügen könnt, dann schaut doch nochmal hier vorbei:

https://developers4sap.blog/deine-ersten-schritte-mit-sap-screen-personas/

Ebenso habe ich in der Ergebnisansicht Felder und Labels hinzugefügt und optisch angepasst, sodass es erstmal so aussieht, als ob die Selektionsbedingungen auch von hier neu gestartet werden können:

Um nun das ganze mit Leben zu füllen, also die Selektion auch von der Ergebnisansicht aus zu ermöglichen, müssen wir in das Scripting einsteigen.

Das Scripting-Tool von SAP Screen Personas

Zunächst müsst ihr das Scripting Tool im Menü von SAP Screen Personas öffnen:

Gesagt getan – schon landet ihr auch direkt auf dem Scripting Menü:

Um ein neues Script zu erstellen müsst ihr einfach auf das + Symbol (1) klicken, dem Script einen Namen geben und schon kann es losgehen. Das Script könnt ihr natürlich komplett manuell runtercoden. Eine andere Möglichkeit wäre jedoch, das Script einfach durch das Bedienen der Transaktion wie von Zauberhand entstehen zu lassen. Dazu nutzt ihr einfach den Button Aufzeichnung starten (2). Möchtet ihr auf Eigenschaften von Objekten eingehen, z.B. um einen Wert zu kopieren oder die Hintergrundfarbe dynamisch zu wechseln, so nutzt ihr den Objektselektor (3.). Ein einfacher klick auf den Objektselektor, gefolgt von einem Klick auf des jeweilige Objekt genügt.

Wenn ihr nun schon etliche Zeilen gecoded habt, vergesst bloß nicht zwischendurch auch mal zu speichern (4) 😉

Easy Selection mittels Scripting

Als erstes werden wir ein kurzes Script für den Go-Button in der Selektionsmaske erstellen und dieses mit dem Button verbinden:

Als nächstes wollen wir die Selektion auch von der Ergebnisansicht her starten können. Dafür legt ihr euch ein neues Script an. Dann müsst ihr euch drei Variablen erstellen, in denen ihr die Werte der Selektionsmaske der Ergebnisansicht zwischenspeichern könnt. Diesen Variablen müsst ihr dann, wie im folgenden Gif gezeigt, mittels des Objektselektor den Inhalt der Textfelder zuordnen:

Im nächsten Schritt müsst ihr diese Werte in die eigentliche Selektionsmaske bringen und die Selektion neu starten. Hierzu nutzt ihr am besten die Möglichkeit Aufzeichnung starten, wechselt einmal zurück in die Selektionsmaske und beendet die Aufzeichnung wieder. Dann nutzt ihr den Objektselektor und übertragt den Inhalt der Variablen in das jeweilige Textfeld. Zum Abschluss geht ihr wieder auf Aufzeichnung starten, drückt den Go-Button und beendet dann eurer Script. Ihr solltet nun noch manuell folgende Codezeile hinzufügen:

session.findById("wnd[0]/usr/ctxtLISTU").text = "ALV";

Als kleine Übung könnt ihr – bevor ihr weiterlest – überlegen an welche Stelle im Code die Zeile muss und wofür diese Zeile gut ist…

Richtig! Wie zu Anfang beschrieben, ist in der Selektionsmaske das Pflichtfeld Listumfang, welche mittels der Codezeile mit dem Wert „ALV“ gefüllt wird. Wenn euer Code nun genau so aussieht, wie im Folgenden, dann habt ihr alles richtig gemacht.

var bgart = session.findById("wnd[0]/usr/subPersonas_159888175457714/boxPersonas_159887725488965/txtPersonas_159888188832820").text;
var ekgrp = session.findById("wnd[0]/usr/subPersonas_159888175457714/boxPersonas_159887725488965/txtPersonas_159888185323181").text;
var plant = session.findById("wnd[0]/usr/subPersonas_159888175457714/txtPersonas_159888185842577").text;

session.findById("wnd[0]/tbar[0]/btn[3]").press();

// An OnLoad script wnd[0]/scrptPersonas_0050568768B71EDABAF05D1B1E1E640A was executed.
// session.utils.executeScript("wnd[0]/scrptPersonas_0050568768B71EDABAF05D1B1E1E640A");

session.findById("wnd[0]/usr/ctxtLISTU").text = "ALV";

session.findById("wnd[0]/usr/ctxtS_BSART-LOW").text = bgart;
session.findById("wnd[0]/usr/ctxtS_EKGRP-LOW").text = ekgrp;
session.findById("wnd[0]/usr/ctxtS_WERKS-LOW").text = plant;

session.findById("wnd[0]/tbar[1]/btn[8]").press();

Jetzt müsst ihr das Script nur noch an den den Go-Button der Ergebnisansicht anbinden. Schon habt ihr mit einem einfachen Script eine „Easy Selection“ für die Transaktion ME2N gebaut, die wie folgt funktionieren dürfte:

Was geht sonst noch so?

Das Scripting bietet natürlich noch eine Fülle an Möglichkeiten. In den nächsten Blogartikeln werden wir zusammen ein Dashboard bauen und Informationen von verschiedenen Transaktionen auf einem Bildschirm mittels Scripting vereinen.

Nun wünsche ich euch erstmal fröhliches Ausprobieren und Scripten.

Wenn ihr noch irgendwelche Fragen oder Anregungen habt, dann nutzt doch einfach die Kommentarfunktion oder schreibt mir direkt via Mail: paul.holst@cgi.com

Über den Autor

Paul Holst

Liebe SAP'ler, Ich bin Paul, studierter Wirtschaftsingenieur und arbeite bei CGI als SAP-Consultant. Falls ihr irgendwelche Fragen oder Anregungen habt, dann freue ich mich über eure Kommentare. :-)

Kommentar verfassen