SAP Jobsuche bei DV-Treff
ScriptMan
vor 16 Jahre

Guten Tag,

nach einer langen Überlegung habe ich mich entschlossen, meine Idee vor den Fachleuten dieses Forums zu präsentieren.

Zur Vorgeschichte: Mein Unternehmen wendet seit 01.01.2007 eine SAP-basierte Lösung im Bereich Real Estate im ASP-Betrieb an. Diese stammt von einem Marktführer aus Mainz. Nach der Ablösung unserer alten ERP-Lösung stand ich vor der Herausforderung, automatisierte Datenerfassung auch unter SAP zu praktizieren.

Die Suche nach einer Lösung hat mich zu einer unscheinbaren Transaktion "Skriptaufzeichnung und -Playback" geführt. Ich habe sie aufgegriffen und daraus eine allgemeine Schnittstelle zwischen Excel und SAP geschaffen. Nach einer entsprechenden Testphase und Sammeln von Erfahrungen kann ich heute sagen, dass mein Unternehmen ohne dieses neue Tool nicht mehr auskommen könnte. Die Skripte laufen bei uns rund um die Uhr. Sie werden verwendet von normalen SAP-Usern, die keine ABAP-Kenntnisse und auch sonstige Programmiererfahrungen haben müssen. Wir haben mit dieser Technologie bis jetzt ca. 100.000 Datensätze im SAP kreiert oder verändert. Bis heute gab es noch keine Transaktion, die wir mit Excel-Daten von außen nicht bedienen konnten. Selbst das Miteinbeziehen von einzelnen Werten aus SAPGUI heraus in eine EXCEL-Mappe während der Skriptabspielung scheint kein Problem zu sein. Damit bekommen die "dummen Skripte" sogar ein wenig Intelligenz eingehaucht.

Gut, einige Experten von Ihnen werden sagen: Gibt's schon und außerdem viel zu langsam. Richtig, aber nicht für jeden Anwender an einem beliebigen Arbeitsplatz. Nicht für alle SAP-Transaktionen und u.U. nicht in das SAP Easy Access Menü integriert. Was die Geschwindigkeit angeht, könnte man recht haben. Aber die Skripte sind immer noch vielfach schneller als die manuelle Eingabe und vor allem können Sie 24 Stunden am Tag laufen. Sie machen auch keine sporadischen Fehler. Auf der anderen Seite muss ich zugeben, dass ich keine LSMW- oder Batch-Input-Erfahrungen machen konnte. Als ASP-Kunde werden wir von unserem Softwareanbieter mit solchen Möglichkeiten leider nicht ausgestattet.

Ich bitte alle um eine ehrliche Meinung zu diesem Thema.

Mit freundlichen Grüßen aus Dresden

ScriptMan

 

Karl
  • Karl
  • SAP Forum - Neuling
vor 15 Jahre
Hallo,

ist wohl ein Produkt aus dem Hause Aareon . GUI-Scripting ist zwar nicht die beste Variante, aber wenn nichts anderes zur Verfügung steht, muss das genügen. Alternativ ist GuiXT zu sehen. Der Vorteil bei GuiXT ist, dass die TAs bildlos prozessiert werden können, was einen Geschwindigkeitsvorteil darstellt. Beide Methoden können jedoch zu unerwarteten Abbrüchen führen - gerade dann, wenn die Verbindung zum Rechenzentrum abreißt. Da diese aber auf TA-Ebene ablaufen, dürfte dies kein Problem darstellen.

Zu überlegen wäre vielleicht, ob man in einigen Fällen direkt die BAPIs über die BAPI-Schnittstelle aufruft oder sich Import-Schnittstellen für den blauen Vogel programmieren lässt.

Gruß aus Rostock

Karl
ScriptMan
vor 15 Jahre

Hallo Karl,

vielen Dank für die dienlichen Hinweise. Es ist für mich gleichzeitig eine besondere Ehre, dass dein erster Beitrag in diesem Forum sich an mich richtet. Ich denke, dass das Rätsel mit dem Produkt nicht schwer zu lösen war. Es sollte auch nicht.

Der Gedanke mit "dunkel" ablaufenden TAs war mir schon eher aufgefallen. Ich habe gelesen, dass es eCATT gibt, wo so was möglich ist. Leider haben wir als Rechenzentrum-Kunde gar keine Berechtigungen für solche TAs. Nicht mal BAPI ist für uns zugelassen. GuiXT ist, wie ich weiß, auch kostenpflichtig. Wenn man sich irgendwelche Import-Schnittstellen programmieren lässt, nimmt es kein Ende. Wir haben bereits zig Tabellen mit GUI-Scripting angezapft. Und es geht immer weiter. Ich muss zugeben, dass ich nicht vermutet habe, dass SAP so viel Spaß machen kann.

Leider muss ich feststellen, dass man auf dem Gebiet GUI-Scripting ziemlich einsam ist. Das bezeugen auch meine Beiträge in diesem Forum, die zwar gelesen werden, aus den sich aber keine Fragen oder Diskussionen ergeben. Den größten Vorteil von GUI-Scripting sehe ich darin, dass dies auch für einen normalen SAP-User zugelassen ist und dieser gar keine Programmierkenntnisse besitzen muss. Eindeutig handelt es sich hierbei nicht um einen ICE, aber mit der Geschwindigkeit eines Personenzuges kommt man auch in einen Zielort. Bei größeren Entfernungen wie z.B. von Dresden nach Rostock empfiehlt es sich, auch einen Schlafwagen zu nehmen.

Ich werde aber auf alle Fälle noch mal die Möglichkeit, der bildlos ablaufenden TAs untersuchen und über meine Erfahrungen in diesem Forum berichten.

Freundliche Grüße 

ScriptMan

Karl
  • Karl
  • SAP Forum - Neuling
vor 15 Jahre
Hallo ScriptMan,

da wir im gemeinsamen Boot sitzen und ich auch die gleichen Probleme habe (auch ASP mit Rel. 5.1 ab demnächst), habe ich hier mal ein kleines Script für GuiXT, dass z. B. in Teilnahmegruppen die Bezeichnung ändert.

Die Datei, die die Datensätze enhält ist wie folgt aufgebaut: WE TG Bezeichnung - jeweils tab-getrennt. Die Scriptdatei als BATCHTG.txt speichern


PARAMETER InputDatei "i:\excel\input\tg_chg_test.txt"
Parameter FehlerLog "i:\excel\input\tg_log.txt"

OpenFile "&[InputDatei]"
OpenFile "&[FehlerLog]" "-Output"


label Schleife // Schleifenkopf


    // Daten aus Datei einlesen

    ReadFile "&[InputDatei]" we tg bez
    if not V[we]
        goto script_ende
    endif

    Screen .BE2.SAPLREPG_SEL.1000

      Set F[WE d. Teilnahmegrp.]     "&[we]"
      Set F[Teilnahmegruppe]         "&🇹🇬"
      Enter "/6"
 

    Screen .BE2.RFRECA_BEO.0100
      Set F[Bez. Teilnahmegruppe]     "&[bez]"
      Enter

    Screen .BE2.RFRECA_BEO.0100
    Enter "/11" // OnError="Continue"
    Screen .BE2.RFRECA_BEO.0100
    Enter "/3"
 
   
    AppendFile "&[FehlerLog]" we tg bez _message

Goto Schleife         // End Schleife

label script_ende

    CloseFile "&[Fehlerlog]"
    Closefile "&[InputDatei]"
    Return "Verarbeitung beendet"

Das ist das sogenannte Inputscript. Jetzt muss nur noch ein Knopf in das Einstiegsbild der TA geheftet werden, dass dieses Script onClick ausführt.:

Pushbutton (4,0) "@0Q@ Batchlauf TG ändern" process="batchtg.txt" size=(1,32)

ergibt im Bild von TA /BE2/REPG einen zusätzlichen Knopf, der dann das angesteckte Script ausführt.

GuiXT ist im SAP-Standard enthalten. Der InputAssistant ist lizenzierungspflichtig, wenn dieser über die Testphase hinaus genutzt wird.

Gruß Karl
ScriptMan
vor 15 Jahre

Hallo Karl,

vielen Dank für das Beispielskript. Es sieht sehr interessant aus. Nur wie gesagt, muss ich mich zuerst mit der Theorie beschäftigen. Wie lange läuft die Testphase von GuiXT?

Das Beispiel mit dem Ändern von Bezeichnungen in TG kann bei uns über GUI Scripting jeder MA in der Betriebskostenabteilung selbst aufzeichnen, mit einer EXCEL-Mappe automatisch verbinden und ausführen. Ich muss mich darum überhaupt nicht kümmern. Damit aber beim Abspielen keine Fehler vorkommen, muss man entweder bereits im Excel dafür sorgen, dass die neue TG-Bezeichnung max. 60 Zeichen beinhaltet oder man erweitert das aufgezeichnete Skript wie folgt:

If Not IsObject(application) Then
   Set SapGuiAuto  = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session    = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session,     "on"
   WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/ctxtRESC_PARTICIP_GROUP_X-BUKRS").text = "BK"
session.findById("wnd[0]/usr/ctxtRESC_PARTICIP_GROUP_X-SWENR").text = "WE"
session.findById("wnd[0]/usr/ctxtRESC_PARTICIP_GROUP_X-PGID").text = "TG"
'session.findById("wnd[0]/usr/ctxtRESC_PARTICIP_GROUP_X-PGID").setFocus
'session.findById("wnd[0]/usr/ctxtRESC_PARTICIP_GROUP_X-PGID").caretPosition = 5
session.findById("wnd[0]/tbar[1]/btn[6]").press

Bez = "Bezeichnung"
Bez = left(Bez, 60)

session.findById("wnd[0]/usr/subSUBSCREEN:/BE2/SAPLRECA_SUBBDT:0110/subSUB_BDT:/BE2/SAPLRECA_SUBBDT:1000/subSUB_BDT_MAIN:/BE2/SAPLRECA_SUBBDT:2001/subSUB_BDT_TAB:/BE2/SAPLRECA_SUBBDT:3000/tabsBDT_TABSTRIP/tabp/BE2/BEOTAB_01/ssubSUB_BDT_DYNPRO:SAPLBUSS:0028/ssubGENSUB:SAPLBUSS:7004/subA03P01:SAPLRESCPG:1002/txtRESC_PARTICIP_GROUP_S-XPG").text = Bez
'session.findById("wnd[0]/usr/subSUBSCREEN:/BE2/SAPLRECA_SUBBDT:0110/subSUB_BDT:/BE2/SAPLRECA_SUBBDT:1000/subSUB_BDT_MAIN:/BE2/SAPLRECA_SUBBDT:2001/subSUB_BDT_TAB:/BE2/SAPLRECA_SUBBDT:3000/tabsBDT_TABSTRIP/tabp/BE2/BEOTAB_01/ssubSUB_BDT_DYNPRO:SAPLBUSS:0028/ssubGENSUB:SAPLBUSS:7004/subA03P01:SAPLRESCPG:1002/txtRESC_PARTICIP_GROUP_S-XPG").caretPosition = 18
session.findById("wnd[0]/tbar[0]/btn[11]").press
session.findById("wnd[0]/tbar[0]/btn[3]").press

Die Auskommentierung hilft, bei tausenden von DS das Skript schneller ausführen zu lassen. Eine weitere Methode um Skripte zu beschleunigen ist, diese im minimierten Fenstermodus auszuführen. Dazu muss an folgender Stelle ein Parameter geändert werden:

...

'session.findById("wnd[0]").maximize

session.findById("wnd[0]").iconify

...


 Freundliche Grüße

ScriptMan