ECATT
From Sapwiki
Mittels eCATT lassen sich Tests automatisiert durchführen, dabei können die einzugebenden Daten als Parameter mitgegeben werden. Auf diese Art und Weise lassen sich auch Massendaten eingeben, allerdings ist dies nicht sehr effizient, für diese Zwecke ist die LSMW besser geeignet.
Man kann die Ergebnisse eines Tests als Eingabeparameter für den nächsten Test verwenden und so komplette Geschäftsfälle durchspielen.
Das grundsätzliche Vorgehen ist dabei:
- Aufzeichnen eines Testscriptes für einen Untervorgang
- Parametrisieren der Ein- und Ausgabe
- Aufzeichnen eines Testscriptes für den nächsten Vorgang
- Parametrisieren der Ein- und Ausgabe
- Erstellen eines Übergeordneten Scriptes, das die Einzelscripte aufruft und die Datenübergabe zwischen den Scripten steuert
Inhaltsverzeichnis |
Voraussetzungen
- In der GUI muß Scripting erlaubt sein. Zwar können die Geschäftsfälle auch mit TCD aufgezeichnet werden, allerdings fehlt dann die Möglichkeit mittels GETGUI Werte aus den Dynpros auszulesen. (In diesem Fall muß man die Dynpro Simulation verwenden.)
- eCATT muß auf dem Server erlaubt sein
Siehe dazu SAP-Hinweis 519858.
Vorüberlegungen
Wenn man nur einen Geschäftsvorgang testen will, ist das Vorgehen relativ einfach, aufzeichnen, ein paar Parameter definieren und den Fall immer wieder abspielen. Allerdings sollte man auch hier vor der Aufzeichnung etwas nachdenken. Insbesondere sollte man sich auch über Sicherheitsaspekte Gedanken machen, da eCATT einige Berechtigungen unterläuft, von der SAP gibt es dazu eine Zusammenfassung unter https://websmp204.sap-ag.de/~sapidb/011000358700003043282003E .
- Als erstes muß man überlegen, welche Art der Aufzeichnung gewählt werden soll. Es gibt einmal TCD, also Transaction code, dieser ist schneller und kann später im Hintergrund abgespielt werden. TCD kann aber nicht mit Controls umgehen, die einzelnen Dynpros können nur als aktiv oder nicht aktiv gekennzeichnet werden. Die neuere Methode ist SAPGUI Recording, diese kann mit Controls umgehen, läßt sich sehr leicht beliebig fein aufteilen, die einzelnen Dynpros können als optional gekennzeichnet werden, was eine sehr viel bessere Behandlung von Warn- und Fehlermeldungen zuläßt.
- Danach sollte man sich den gesamten Geschäftsfall durchdenken, um geeignete Punkte zur Aufteilung der Dynpros in Scriptelemente vornehmen zu können. So ist es bei einer Aufzeichnung mit SAPGUI-Recording sinnvoll, potentielle Dynpros zu provozieren, um diese in der Aufzeichnung zu haben. So kann das Dynpro zu Verfügbarkeitsprüfung innerhalb eines Verkaufsauftrages mitaufgezeichnet werden, später wird es als optional gekennzeichnet und das Abspielen des Scriptes geht in wesentlich mehr Fällen gut.
- Alle Daten zurechtlegen, um nicht später irgendwelche F4-Hilfen mit aufzuzeichnen. Dabei ist zu berücksichtigen, daß alle relevanten Felder von Hand gefüllt werden müssen. Sind diese Felder bspw. durch Parameter gefüllt, dann werden diese nicht mit aufgezeichnet.
- Wenn in den Masken Dropdown-Listen vorhanden sind, dann sollte man im Expertenmenü der Optionen die folgenden Einstellungen treffen, ansonsten trifft das Script beim Abspielen u.U. den falschen Eintrag.
- Schlüssel in allen Dropdown-Boxen anzeigen
- Einträge nach Schlüssel sortieren
- Welche Daten zwischen den Scripten importiert und exportiert werden sollen, so heißt die Belegnummer in Auftrag und Lieferung vbeln, somit kann es leicht zu Verwechslungen kommen. Generell ist es gut, sich vor dem ersten Script auf eine allgemeine Namenskonvention zu einigen.
Beispiel
Erstellen der Vorgangsscripte
Unter der Transaktion SECATT findet man alle Funktionen für die Tests.
Aufzeichnen einer Transaktion
Als erstes legen wir ein Testscript an indem wir einen Namen angeben und auf Anlegen klicken. Da wir nur grundlegende Test durchführen wollen, verzichten wir auf einen Systemdatencontainer und ein Zielsystem. Dann können wir das Script zwar nur auf dem lokalen Server ausführen, aber das reicht erstmal. Als nächstes fügen wir ein Muster ein, in diesem Fall eines SAPGUI Aufzeichnung, um später den GETGUI-Befehl nutzen zu können. Danach stellen wir ein paar Parameter zur Aufzeichnung ein, in diesem Fall wollen wir bei jedem Dynprowechsel eine neue Zeile mit einem neuen SAPGUI-Befehl erhalten. Mit "Start der Aufzeichnung" geht es los und die Transaktion VA01 wird gestartet und sofort vom nächsten ecatt-Dynpro Überdeckt. Dieses soll zunächst nicht interessieren, wir arbeiten erstmal den Verkaufsauftrag komplett ab.
Nach dem Sichern des Verkaufsauftrages wollen wir die Nummer des Verkaufsauftrages für die weitere Verarbeitung sichern. Die Nummer des Verkaufsauftrages steht in der Statuszeile, ist dort aber leider in einen Text eingebettet. So rufen wir zunächst die Transaktion VA03 auf, in deren Startdynpro die Nummer des zuletzt angelegten Verkaufsbeleges drinsteht. Nun wechseln wir wieder auf das eben mißachtete ECATT-Dynpro und klicken auf das "GETGUI" Kommando, anschließend navigieren wir mit der Maus auf die Auftrasgnummer in der Transaktion VA03. Dabei sehen wir, wie das jeweils unter Maus liegende Feld oder Dynpro mit einem roten Rahmen versehen wird. Wenn wir mit der Maus dann auf die Auftragsnummer klcken, so erhalten wir das folgende Bild.
Wir markieren die Zeile, die wir übernehmen wollen, in diesem Fall eben die Auftragsnummer. Danach beenden wird die Aufzeichnung.
Nachbearbeiten und Parametrisieren des Scriptes
Im Zuge der Aufzeichnung des Scriptes kam im Beispiel eine Informationsmeldung, die nicht immer erschent, um das Script trotzdem ausführen zu können, kann man dieses Dynpro auf optional schalten, d.h. das Dynpro wird nur berücksichtigt, wenn es beim Abspielen tatsächlich vorkommt. Dazu navigieren wir foldermaßen: In der Kommandoschnittstelle oder in der Liste der Dynpros doppelklicken wir auf das Dynpro, in der mittleren Ansicht doppelklicken wir auf die hervorgehobene Zeile und ändern das Element "Active" von 'X' auf 'O'.
= Testen des Scriptes
Erstellen des übergeordneten Scriptes
Erstellen eines Datencontainers
Erstellen einer Testkonfiguration
Tipps und Tricks
- Datum
- ähnlich wie bei Batch-Input muß das Systemdatum umgewandelt werden, um richtig übernommen zu werden. Dies kann man durch den folgendne ABAP-Code innerhalb des Scriptes erreichen.
ABAP.
V_DATE_TEMP = sy-datum.
CONCATENATE V_DATE_TEMP+6(2) '.' V_DATE_TEMP+4(2) '.' V_DATE_TEMP(4) INTO V_DATE.
ENDABAP.
- ALV oder Table Control
- Niemals scrollen, immer die Suchfunktion benutzen und anschließend zum Wert springen, die Wahrscheinlichkeit, daß dieses Scrollen beim nächste Abspielen passt ist nicht sonderlich hoch. genauso beim Einfügen neuer Werte nicht zur nächsten freien Zeile springen, sondern den das Icon zum Einfügen nutzen, dann ist man immer auf der nächsten freien Zeile.

