Kleeno hat geschrieben:Mhm, kenn mich mit Visaul Basic jetzt nicht so aus, aber im grunde brauchst du ja nur über eine Schleife Arrays erstellen die dann mit den Werten gefüttert wird. Heißt das Material wirklich Material1,Material2,Material3 oder haben die unterschiedliche Namen? Ansonsten müsste man wirklich ein kleines Script erstellen das dir die eingabe erleichtert. Könnte dir eins in Java machen
weiß aber nicht ob dir das weiterhilft... Sry
Die Materialien bestehen jeweils aus einer nicht fortlaufenden Zahlenkombination mit 8 Stellen. Jedem Material ist ein Wert zugeteilt, der aus einer dreistelligen Buchtaben und Zahlenkombination besteht.
Ein Java Script wäre Nice, aber letztendlich sollte ich das auch reproduzieren bzw für andere Anwendungsfälle selbst anpassen können. Den aktuellen Fall kann ich in einer halben Stunde auch manuell erledigen. Allgemein möchte ich durch das ganze etwas lernen um mir in Zukunft einige Arbeiten zu erleichtern.
Vernochan hat geschrieben:@Link: Die Idee war ja auch im Script Excel zu oeffnen.
Ich hab halt noch nie mit SAP gearbeitet, daher hab ich auch keine Ahnung, wie/wo/womit das Script ausgefuehrt wird.
Sind das einfach nur .vbs Dateien, die man per Doppelklick ausfuehrt (windows scripting host)? Werden die im SAP Tool selbst gestartet? Denn je nach dem koennte es sein, dass es ja eine art Programmierschnittstelle zu Excel gibt. Oder Kannst du wenigstens Textdateien von der Festplatte einlesen? Dann koennte man die Daten aus Excel exportieren (csv) und dann in dem Script importieren und per Schleife durchlaufen lassen.
Ja, das sind einfach nur VBS Dateien die mit Windows Scripting Host außerhalb von SAP ausgeführt werden. Ob es eine Programmierschnittstelle zu Excel gibt, oder ob ich Textdateien einlesen kann, ist mir nicht bekannt. Bin ja leider nur Enduser und habe eigentlich keine Erfahrung mit Programmieren, außer vielleicht mit Basic als Grundschüler.
Das ganze Script bildet eigentlich auch nur ab, was ich in der GUI selbst zusammengeklickt und "recorded" hab. Das VBS welches am Ende bei rauskommt, kann ich dann im Notepad bearbeiten und mit WSH ausführen.
Letztendlich ist es aber auch egal wie das Script an sich funktioniert. Mir ist ja bekannt, wie der Code am Ende aussehen soll. Hier ein Beispiel:
5x Materialnummern + Wert
65671016 4FK
65785020 W1Z
65785023 4FG
99564888 W7K
99603609 W2Y
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]/tbar[0]/okcd").text = "/nmm02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "65671016"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").text = "4FK"
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").setFocus
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").caretPosition = 3
session.findById("wnd[0]").sendVKey 11
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "65785020"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").text = "W1Z"
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").setFocus
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").caretPosition = 3
session.findById("wnd[0]").sendVKey 11
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "65785023"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").text = "4FG"
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").setFocus
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").caretPosition = 3
session.findById("wnd[0]").sendVKey 11
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "99564888"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").text = "W7K"
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").setFocus
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").caretPosition = 3
session.findById("wnd[0]").sendVKey 11
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "99603609"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").text = "W2Y"
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").setFocus
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP12/ssubTABFRA1:SAPLMGMM:2000/subSUB3:SAPLMGD1:2482/ctxtMARC-DISPO").caretPosition = 3
session.findById("wnd[0]").sendVKey 11
@Simchen: Da hab ich mich bisher wohl etwas unglücklich ausgedrückt. Material plus fortlaufende Nummer hilft mir hier nicht.