SAP Jobsuche bei DV-Treff
newgui
  • newgui
  • SAP Forum - Experte Thema Starter
vor 12 Jahre
Hallo Forumsgemeinde,

aufgrund des letzten Beitrages im guixt-Forum von novice ist mir das Thema gui-scripting wieder ins Bewusstsein gekommen (hab es irgendwann mal probiert hat aber nicht funktioniert).

Da das Thema für mich nach wie vor sehr interessant klingt und ich jetzt mal die ersten Gehversuche unternommen habe, sind natürlich gleich die ersten Problemchen/Fragen aufgetaucht (leider kann man zum Thema gui-scripting nicht gerade sehr viel im Inet finden).

1. Wenn ich das script aufzeichne und direkt über den recorder abspiele funktioniert es einwandfrei. Wenn ich das script über den windows-explorer öffnen möchte komm[img]null[/img][img]null[/img][img]null[/img]t die Fehlermeldung „Ein Skript versucht sich an das SAP-GUI anzubinden“. Wenn ich die Häckchen aus den Scripting-Benutzereinstellungen rausnehme kommt die Meldung zwar nicht mehr aber funktionieren tut es auch nicht.

2. das führt auch gleich zum 2ten. Würde das vb-script gerne über einen guixt-Button starten. Das funktioniert aber aufgrund Nr. 1 nicht.

3. das ist eigentlich mein größtes Anliegen – ist es möglich eine Massenänderung aus einem excel-sheet zu machen?

Habe zb folgendes script aufgezeichnet (mm02 Materialänderung)


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/ctxtRMMG1-MATNR").text = "3E202200R12"

session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").caretPosition = 11

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

session.findById("wnd[1]").sendVKey 0

session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP07").select

session.findById("wnd[1]").sendVKey 0

session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP07/ssubTABFRA1:SAPLMGMM:2004/subSUB3:SAPLMGD1:2207/ctxtMARC-HERKL").text = "AT"

session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP07/ssubTABFRA1:SAPLMGMM:2004/subSUB3:SAPLMGD1:2207/ctxtMARC-HERKL").setFocus

session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP07/ssubTABFRA1:SAPLMGMM:2004/subSUB3:SAPLMGD1:2207/ctxtMARC-HERKL").caretPosition = 2

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

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


Würde jetzt gerne aus einer Excel-Liste eine Materialnummer nach der anderen in die mm02 übernehmen und diese dann genauso ändern wie im Beispiel.

Hoffe auf eure Unterstützung.

lg newgui

P.S.: möchte mich auch für die bisherige Unterstützung bedanken (speziell bei scriptman) - werde, sobald ich die Möglichkeit habe (geht in der Arbeit leider nicht) mal ein Bild meiner mittels guixt erstellten SAP-Einstiegsmaske hier reinstellen, damit sich auch Neuankömmlinge ein besseres Bild machen können was guixt kann (die guixt-Forumsgemeinde könnte ruhig noch ein wenig wachsen, ausserdem soll man ja nicht nur nehmen sondern auch ab und zu mal geben 😁 )

newgui
  • newgui
  • SAP Forum - Experte Thema Starter
vor 12 Jahre
Guten Morgen,

wie gestern versprochen hier der Link zum Bild. Mit dieser per guixt erstellten Maske kann man in die diversesten Transaktionen oder queries direkt reinspringen. Weiters ist es möglich über Eingabe einer Nr. in SAP eine externe Anwendungen (excel, html) mit dieser Nr. zu öffnen. Schulungsunterlagen (hier nicht im Bild) werden von mir auch nur mehr ins Menü verlinkt und ist für alle User, die das Menü installiert haben, mittels Button aufrufbar.

Das ganze erleichtert generell die Arbeit und ist vor allem für neuen Mitarbeiter wesentlich einfacher zu handeln als Standard-SAP. Hoffe das zeigt mal was guixt so kann (ist natürlich noch bei weitem nicht alles).

http://www.pictureupload.de/originals/pictures/150312064924_Schnellstartmenue.jpg 

Übrigens für die Nr. 3 meines Beitrages habe ich so quasi eine Lösung gefunden. Ist zwar nicht die elegante Lösung über excel aber es geht.

Habe ein query gebastelt in dem man die Materialnrn. aufrufen kann. Aus diesem query kann man in den Materialstamm abspringen. Der Rest war Aufzeignung mittels gui-scripting. Die Schleife für den Absprung habe ich in diesem Forumsbeitrag gefunden. Geht natürlich nur wenn man immer das gleiche Feld mit dem gleichen Wert ändert.

http://www.dv-treff.de/sap-community/yaf_postst6700_Schleife-in-Script-Aufzeichnung-eingeben.aspx 

Interessant wäre jetzt natürlich trotzdem noch eine Liste aus excel abzuarbeiten, in der zB die Materialnummer steht und nebenbei der zu ändernde Wert eines Feldes. Somit könnte man eine kpl. Liste abarbeiten ohne vorher jede einzelne Änderung aufzuzeichnen.

lg newgui

hk2305
vor 12 Jahre
Hallo,

zu deiner Frage per Excel änderungen durchführen:

Mit Trasnaktion SHDB einmal die gewünschte Aktion ausführen und Aufzeichenen. Dann erhält man den Codeschnipsel. Diesen nun kopieren und in Word einfügen. Alle zu verändernden Felder als variablen markieren und per Serienbrieffunktion Excel Verknüpfen mit den Feldern. Die Erzeugte Batch-Input-Mappe nun in SM35 importieren und einspielen. Habe damals sehr viele Daten so migriert. (Auch unter MM02).

Vielleicht kennt einer die Funktionen und kann es nachvollziehen oder besser erklären.

Dieses ist natürlich nur eine von vielen Möglichkeiten.

Gruß

newgui
  • newgui
  • SAP Forum - Experte Thema begonnen von
vor 12 Jahre
Hallo hk,

danke für deine rasche Antwort. Bei deiner Variante scheitert es leider schon am Grundsätzlichen - ich habe keine Berechtigung für die Transaktion SHDB.

Vielleicht sollte ich hinzufügen, dass ich kein Programmierer bin, sondern "nur" Key User 🤤

lg newgui

hk2305
vor 12 Jahre
Hallo,

wie hast du dein Script aufgenommen. Mit Excel ?

Wenn ich mit GuiXT den Recorder benutze sehen meine Codeschnipsel doch ein wenig anders aus.

Dein Startbildschrim sieht toll aus ! Kannst du mir die Gui-Scripte zur Verfügung stellen ? Gern auch per PM.

Zu deinem Problem Excel ins I-SU...

Wahrscheinlich wird hier der Scriptman helfen.

Ich würde mir ein paar Felder (variablen) ins SAP basteln, Input-Script aufzeichnen, Script auf variablen anpassen. Dann Änderungen aus Excel ins die Felder (variablen) kopieren und script loslaufen lassen. Ist aber eher Laienhaft :-)

Gruß

newgui
  • newgui
  • SAP Forum - Experte Thema Starter
vor 12 Jahre
Hallo Hk,

das skript habe ich mit gui-scripting aufgenommen, nicht mit guixt. Aus meiner laienhaften Sicht eine recht gute Ergänzung zu guixt.

PM hast du erhalten.

Ich hoffe auch das scriptman hier ne Lösung hat.

mfg

newgui

hk2305
vor 12 Jahre
Danke...

GUI-SCRIPTING ist bei uns leider deaktiviert 🤬

ScriptMan
vor 12 Jahre
Hallo newgui,

erst mal möchte ich dir eine Anerkennung für das schöne und praktische Layout, das du uns hier präsentiert hast, auch meinerseits aussprechen. Ich bin fest davon überzeugt, dass du damit deinen Kollegen eine große Unterstützung leistest. Und das ist noch lange nicht alles ...

Wie du schon aber selbst erkannt hast, SAP GUI Scripting ist nicht nur interessant sondern auch fast unumgänglich. Das GuiXT Scripting ist nämlich an einigen Stellen überfordert oder sogar nicht realisierbar. Daher bietet sich die Kombination der beiden förmlich an. Man darf diese zwei Skript-Techniken als eine Symbiose ansehen. Ich versuche zuerst alles mittels GuiXT zu lösen, weil es einfacher und schneller geht. Erkenne ich aber, dass das aufgezeichnete InputScript nicht lauffähig ist, wird kurzerhand ein VBScript als eine Ergänzung aufgezeichnet und drangehangen.

Aber jetzt zu deinen Fragen:

1. Bitte nur die untersten zwei Häkchen entfernen bei Melden, wenn ein Script versucht ...

Das obere Häkchen bei Scripting aktiviert muss bleiben.

2. Danach dürfte es hier keine Probleme mehr geben.

3. Sehe dir dazu folgenden Link an. Es könnte sein, dass du dort die Antwort findest.

http://scn.sap.com/thread/1699675 

Freundliche Grüße 👍

ScriptMan

newgui
  • newgui
  • SAP Forum - Experte Thema Starter
vor 12 Jahre
Hallo scriptman,

ein Lob von deiner Seite freut mich ganz besonders. Ohne deine Hilfe hätte ich sicherlich einiges dieses Menüs nicht umsetzen können.

Ich muss mich abermals bedanken. Die Punkte 1 u. 2 funktionieren jetzt.

Zu Punkt 3.: Ich hätte es nicht für möglich gehalten, dass es tatsächlich funktioniert.

Ich kann nun Kundenaufträge automatisiert anlegen:

1. Die sich ändernden Kopfparameter kommen aus dem excel-sheet (Nr. + Lieferdatum)

2. Die Eingabe der Kundenauftragspositionen zeichne ich mittels gui-scripting einmalig auf.

3. Beides in ein script gepackt (bin kein Genie habe es aber aufgrund deines Links relativ schnell geschafft)

4. script starten 😁 😁 😁

Ich bin kpl. hin und weg. Ich glaub ich muss jetzt mal um eine Lohnerhögung ansuchen 🤤

Vielen Dank nochmal.

lg newgui