SAP Jobsuche bei DV-Treff
newgui
  • newgui
  • SAP Forum - Experte Thema Starter
vor 9 Jahre
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

newgui
  • newgui
  • SAP Forum - Experte Thema Starter
vor 9 Jahre
Hallo zusammen,

das Thema hat sich erledigt. Habe inzwischen selbst die Lösung gefunden 😁.

?muss hier das Excel neuerlich gestartet werden? -> Ja

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? -> Ja, hab diese mit k,l definiert

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.

nach dem Speichern muss das excel nochmals aufgerufen werden.

Set xclapp = CreateObject("Excel.Application")

Set xclwbk = xclapp.Workbooks.Open("Pfad für die Kopfdatei")

set xclsht = xclwbk.Sheets("Tabelle1")

Muss das ganze noch ausführlicher testen aber hat zumindest im ersten Step mal funktioniert.

mfg

newgui