SAP Jobsuche bei DV-Treff
JürgenH.
  • JürgenH.
  • SAP Forum - Neuling Thema Starter
vor 6 Jahre
Hallo,

ich hatte da ein lauffähiges SAP Makro das machte was es sollte.

Leider hab ich das durch ein Windoof Update verloren :-(

Kurzum es hat aus vielen Tabellen über SQVI bereits vorgegebene Selektionen aus Excel in SAP selektiert und dann nach Ausführung einen Zelleninhalt ausgelesen und in die Excel Zeile eingefügt wo ausgelesen wurde.

Ich hab das mal einfacher in der MM03 dargestellt:

(bitte keinen Hinweis das ich das auch über SE16 machen kann, ich möchte es nur einfacher beschreiben)

Ich möchte über eine Produktnummer aus Excel die MM03 starten, dann das Feld MARA-NTGEW auslesen. Im Scrpit hab ich es als msgbox dargestellt

und in Excel soll es einfach in die Celle i,4 eingetragen werden. Leider gibt es mir immer die "0" aus.

Ich vermute das mein GetcellValue irgendwie falsch aufgesetzt ist:


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

Set xclapp = CreateObject("Excel.Application")

Set xclwbk = xclapp.Workbooks.Open("C:\Daten\ausschuß_neu.xls")

'Set xclwbk = xclapp.Workbooks.Open("C:\Daten\ausschuß.xls")

set xclsht = xclwbk.Sheets("Tabelle1")

for i = 2 to xclapp.ActiveCell.SpecialCells(11).Row

for j = 1 to xclapp.ActiveCell.SpecialCells(11).Column - 1

if j=1 then PRODUCT = xclsht.Cells(i,j).Value

if j=2 then Charge = xclsht.Cells(i,j).Value

if j=3 then Wert = xclsht.Cells(i,j).Value

next

'myTransaction = "xyz"

session.findById("wnd[0]/tbar[0]/okcd").text = "MM03"

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

on error resume next

session.findById("wnd[0]/usr/. . .").text = PRODUCT

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

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

session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP09/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2161/txtMARA-NTGEW").setFocus

session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP09/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2161/txtMARA-NTGEW").caretPosition = 5

MARA-NTGEW = session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP09/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2161/txtMARA-NTGEW").getcellvalue '(i,"MARA-NTGEW")

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

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

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

msgbox MARA-NTGEW

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

xclsht.Cells(i,4).Value = MARA-NTGEW

on error goto 0

next

msgbox "Alle " & cstr(xclapp.ActiveCell.SpecialCells(11).Row - 1) & " Excel Zeilen eingelesen"

Set xclwbk = Nothing

Set xclsht = Nothing

xclapp.Quit

set xclapp = Nothing


es läuft alles nur eben der Inhalt wird nicht ausgelesen. Irgendwie hab ich das schon mal geschafft, aber leider komme ich nicht mehr auf die Lösung :-(

Was mach ich falsch ?

Danke im Voraus !!!

Förderer

ScriptMan
vor 6 Jahre
Hallo Jürgen,

leider habe ich z.Z. keinen Zugriff auf SAP, um es zu testen. Ich vermute aber, dass der Fehler in dem Parameter i liegt. Ein ALV-Grid fängt normalerweise mit der Zeile = 0 an. Demnach könntest du es wie folgt ausprobieren:

MARA-NTGEW = session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP09/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2161/txtMARA-NTGEW").getcellvalue '(i - 2,"MARA-NTGEW")

Grüße, ScriptMan

newgui
vor 6 Jahre
Hallo Jürgen,

da ist mir scriptman wohl zuvorgekommen 😁

Würde so auch funktionieren.

MARA-NTGEW =

session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2000/subSUB4:SAPLMGD1:2007/txtMARA-NTGEW").Text

Habs getestet und bei mir funktionierts.

mfg

newgui