SAP Jobsuche bei DV-Treff
wolbeck
  • wolbeck
  • SAP Forum - Neuling Thema Starter
vor 8 Jahre
Hallo zusammen,

ich habe ein Script aufgezeichnet, welches leider nicht richtig funktioniert und SAP + Excel zum Absturz bringt.

Konkrekt möchte ich per MM01 automatisiert Teilenummern anlegen. Per VBA in Excel starte ich SAP -> System P01 -> Transaktion MM01 und lasse per Schleife alle zuvor in der Exceltabelle eingetragenen Teilenummern eintragen.

Dies funktioniert soweit recht gut so lange ich mich mit der Enter Taste im Programmiertext, also mit

session.findById("wnd[0]").sendVKey 0[/code] bewege und die ganzen Pflichtfelder befüllen lasse.
Das läuft für 1000 Teilenummern einwandfrei durch so lange ich keinen Reiter direkt anspreche.

Hier nun mein Problem:

Folgender Programmiertext, Zeile 3 klappt nicht immer beim auswählen des Reiters:

[code=vb]
....
session.findById("wnd[0]/tbar[1]/btn[30]").press 'Wählt den Button "Zusatzdaten"
session.findById("wnd[0]/usr/tabsTABSPR1/tabpZU05").Select 'Wählt den 5. Reiter "Grunddatentext" aus
session.findById("wnd[0]/usr/tabsTABSPR1/tabpZU05/ssubTABFRA1:SAPLMGMM:2110/subSUB2:SAPLMGD1:2031/cntlLONGTEXT_GRUNDD/shellcont/shell").Text = Variable_Grunddatentext
session.findById("wnd[0]/tbar[0]/btn[11]").press 'Enter zum SPEICHERN
....
Meine Schleife läuft leider weniger als 5x durch wenn ich zusätzlich unter dem Button "Zusatzdaten" und dann im Reiter "Grunddatentext" ein paar Informationen noch einpflegen möchte. SAP inkl Excel friert ein.

Irgendwie scheint das Auswählen von Reitern ein grundsätzliches Problem zu sein. Da es ja ein paar mal in der Schleife funktioniert, verhaspelt sich SAP irgendwie. Ich habe aber auch schon in VBA mittels Application.Wait Pausen eingebaut, dies bringt aber leider keinen Erfolg.

Kann mir irgendjemand sagen ob wer das gleiche Problem hat und wie ich dies beheben kann?

Vielen Dank für jeden Ratschlag, ich bin wirklick am verzweifeln.. 😕

Sebbi
  • Sebbi
  • SAP Forum - Neuling
vor 8 Jahre
Hm, ich hatte ab und zu auch ein paar Probleme bei der Registerauswahl, jedoch eigentlich nur dann, wenn sich die Anzahl der Register verändert haben und damit die Adresse nicht mehr übereingestimmt hat. Habe das dann so gelöst

Registername = "Zentrale Daten"

For t = z To 1 'Erste Registerzahl

For k = x To 9 'zweite Registerzahl

register_Tab = "tabpSCREEN_1100_TAB_" & t & k 'Register zusammengesetzt

register_Dynpro = Session.FindById("wnd[0]/usr/subSCREEN_3000_RESIZING_AREA:SAPLBUS_LOCATOR:2036/subSCREEN_1010_RIGHT_AREA:SAPLBUPA_DIALOG_JOEL:1000/ssubSCREEN_1000_WORKAREA_AREA:SAPLBUPA_DIALOG_JOEL:1100/ssubSCREEN_1100_MAIN_AREA:SAPLBUPA_DIALOG_JOEL:1101/tabsGS_SCREEN_1100_TABSTRIP/" & register_Tab).Text ' RegisterID

If register_Dynpro = Registername Then

Session.FindById("wnd[0]/usr/subSCREEN_3000_RESIZING_AREA:SAPLBUS_LOCATOR:2036/subSCREEN_1010_RIGHT_AREA:SAPLBUPA_DIALOG_JOEL:1000/ssubSCREEN_1000_WORKAREA_AREA:SAPLBUPA_DIALOG_JOEL:1100/ssubSCREEN_1100_MAIN_AREA:SAPLBUPA_DIALOG_JOEL:1101/tabsGS_SCREEN_1100_TABSTRIP/" & register_Tab).Select

GoTo Erfassung

End If

Next

x = 0 'Wichtig, weil sonst Registernummer 10 übersprungen werden würde

Next