SAP Jobsuche bei DV-Treff
Mr_Venom
  • Mr_Venom
  • SAP Forum - Neuling Thema Starter
vor 5 Jahre
Hallo Zusammen,

ich habe mal eine Frage.

Wie kann ich bei Guiscripting über VBA sicherstellen, dass mein VBA-Makro updatesicher ist.

Beispiel:

ich habe ein GuiScrollContainer (72) mit der ID:

/app/con[0]/ses[1]/wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020

nächste Woche wird ein Update gemacht und hier ändert sich die Bezeichnung nur ein wenig.

von SAPLCOIH:1107 auf SAPLCOIH:1113

/app/con[0]/ses[1]/wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:[color=red]1113[/color]/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020

Grüße

Venom

ScriptMan
vor 5 Jahre
Hallo Venom,

ich arbeite bereits seit über 10 Jahren mit SAP GUI Scripting und GuiXT, die aber in keinem Fall zu verwechseln sind. Die beiden Technologien ergänzen sich einfach. GuiXT-Skripte sind auf alle Fälle gegen SAP-Updates resistenter als VB-Skripte, die meistens vom SAP GUI Scriptrecorder stammen.

Bei GuiXT werden entweder Feldnamen oder technische Namen verwendet, die sich sehr selten oder überhaupt nicht ändern. Ich konnte in den letzten 10 Jahren nur eine einzige Änderung verzeichnen, die es aber in sich hatte. Die betreffenden Skripte funktionieren dann einfach nicht mehr. Eine Fehleranzeige bei GuiXT gibt es nicht, es sein denn, man programmiert selbst welche.

Anders verhält sich es bei VB-Skript / VBA. Die Skripte sind sehr von eventuellen Updates abhängig und bleiben an einer fehlerhaften Stelle einfach stehen. Diesen Umstand habe ich mir zunutze gemacht, indem ich am Anfang jedes VB-Skriptes einen Eintrag im Journal- und im Fehler-Ordner vermerkt habe. Lief das betreffende Skript bis zum Ende, wurde der Eintrag im Fehler-Ordner wieder gelöscht. Somit habe ich zentral immer eine aktuelle Übersicht über die angewandten Skripte und eventuelle Fehler bei ihrer Ausführung. Die einzelnen Einträge setzen sich aus der Transaktion, dem Usernamen und dem Datum mit der Uhrzeit zusammen.

Wenn dann wie in dem beschriebenen Fall eine Änderung stattfindet, bleibt bei mir als erstes ein betroffenes Skript im Fehler-Ordner hängen. Dieses wird an der fehlerhaften Stelle untersucht, indem eine neue Zeile aufgezeichnet wird. Diese neue Zeile wird dann mit der alten verglichen und dadurch eine Änderung erkannt. Es wird nicht gewartet, bis auch noch andere Skripte im Fehler-Ordner landen. Stattdessen werden alle Skripte (z.B. mit *.vbs inhalt:SAPLCOIH:1107) mit Windows-Explorer zusammengesucht und dort die betreffenden Parameter gleichermaßen korrigiert.

Wie man sieht, es ist ziemlich mühsam. Eine andere Methode habe ich aber bis jetzt noch nicht gefunden.

Grüße,

ScriptMan

Mr_Venom
  • Mr_Venom
  • SAP Forum - Neuling Thema Starter
vor 5 Jahre
Hallo Scriptman,

vielen Dank für deine Antwort. Die Fehlersuche und Scriptänderung erfolgt also manuell durchs auslesen des Fehlerprotokoll oder?

Saptimierer
vor 5 Jahre
Zitat von: ScriptMan 

Eine andere Methode habe ich aber bis jetzt noch nicht gefunden.

Doch. Hast du😁. SimDia² lässt sich dadurch nicht irritieren.

Zur Not - und nur bedingt - lässt sich dies auch erreichen, indem man Session.FindByName anstelle von Session.FindByID benutzt. FindByName kommt ohne den kompletten Pfad aus, benötigt zusätzlich den Element-Typ und funktioniert nur, wenn Feldname/Typ im Dynpro eindeutig ist.

Beispiel:

Session.ActiveWindow.findbyname("RP50G-PERNR","GuiCTextField").text

Alternativ:

Session.ActiveWindow.findbynameEx("RP50G-PERNR",32).text