Hallo Forumsgemeinde,
ist zwar nur am Rand guixt aber bisher hat die Hilfe zu gui scrippting hier immer funktioniert 😁 . Möchte gerne die Kundenauftragsanlage für größere Projekte in der va01 automatisieren. Das habe ich zwar bisher auch schon gemacht aber auf einem anderen Weg.
Basis sollten 2 Excel Listen sein bei denen ich einerseits die Kopfdaten und andererseits die Positionsdaten habe.
Hauptsächlich geht es darum, dass ich 2 Schleifen ineinander verschachteln muss.
Kundenauftrag 1 (Kopfdaten)
Position 1
Position 2
Positon 3
….
Kundenauftrag 1 speichern
next
Kundenauftrag 2 (Kopfdaten)
Position 1
Position 2
Positon 3
….
Kundenauftrag 2 speichern
usw.
So schaut der Code bis dato aus. Leider funktioniert das aber nicht. 😕
'---Kopfdaten aus Excel abrufen--
Set xclapp = CreateObject("Excel.Application")
Set xclwbk = xclapp.Workbooks.Open("Pfad für die Kopfdatei")
set xclsht = xclwbk.Sheets("Tabelle1")
for i = 2 to xclapp.ActiveCell.SpecialCells(11).Row
for j = 1 to xclapp.ActiveCell.SpecialCells(11).Column
if j=1 then X_PSP = xclsht.Cells(i,j).Value
if j=2 then X_DAT = xclsht.Cells(i,j).Value
next
'--Anfang Kopfdaten übertragen--
session.findById("wnd[0]/usr/txtGuiXT_X_DAT").text = X_DAT
session.findById("wnd[0]/usr/txtGuiXT_X_PSP").text = X_PSP
session.findById("wnd[0]/usr/txtGuiXT_X_PSP").setFocus
session.findById("wnd[0]/usr/txtGuiXT_X_PSP").caretPosition = 19
usw.
'--Positionsdaten aus Excel abrufen--
?muss hier das Excel neuerlich gestartet werden?
'Set xclapp = CreateObject("Excel.Application")
Set xclwbk = xclapp.Workbooks.Open("Pfad für die Positionsdatei")
set xclsht = xclwbk.Sheets("Tabelle1")
?müssen die Variablen anders lauten?
for i = 2 to xclapp.ActiveCell.SpecialCells(11).Row
for j = 1 to xclapp.ActiveCell.SpecialCells(11).Column
if j=1 then X_Nr = xclsht.Cells(i,j).Value
if j=2 then X_Material = xclsht.Cells(i,j).Value
usw.
next
'--Positionsdaten übertragen - Schleife bis Ende Excelliste--
session.findById("wnd[0]").sendVKey 2
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\02/ssubSUBSCREEN_BODY:SAPMV45A:4401/sub
SUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG/ctxtRV45A-MABNR[1,0]").text = X_Material
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\02/ssubSUBSCREEN_BODY:SAPMV45A:4401/sub
SUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG/ctxtVBAP-WERKS[7,0]").caretPosition = 4
session.findById("wnd[0]").sendVKey 0
usw.
'--Ende Positionsdaten Kundenauftrag -----
next
'muss ich den Code auch für die Positionen nehmen oder nur für Kopf, wenn fertig?
'Set xclwbk = Nothing
'Set xclsht = Nothing
'xclapp.Quit
'set xclapp = Nothing
'--Kundenauftrag speichern - wenn Positionsdaten vollständig-
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press
session.findById("wnd[1]/usr/btnSPOP-VAROPTION2").press
'---------------Ende----------
next
msgbox "All " & cstr(xclapp.ActiveCell.SpecialCells(11).Row - 1) & " Excel rows have been processed."
Set xclwbk = Nothing
Set xclsht = Nothing
xclapp.Quit
set xclapp = Nothing
Wäre echt toll wenn mir jemand helfen könnte.
mfg
newgui