SAP Jobsuche bei DV-Treff
Johnymaroni
vor 5 Jahre
Hallo Community

Ich muss in über 1400 Arbeitsplänen eine gewisse Position löschen.

Über ein Query konnte ich die Positionen im Arbeitsplan erkennen.

Die Position wird in der CA02 richtig ausgewält, Mülleimer angeclickt, und dann kommt ein Warnfeld, ob ich wirklich löschen möchte.

Dieser ist Standartmässig auf nein gestellt.

Nun meine Frage

Wie kann ich per Script von Nein auf Ja wechseln?

Unten stehend mein Script.

Set MyFile = fso.CreateTextFile(filePath, True)

MyFile.WriteLine ("If Not IsObject(Application) Then")

MyFile.WriteLine ("Set SapGuiAuto = GetObject(""SAPGUI"")")

MyFile.WriteLine ("Set Application = SapGuiAuto.GetScriptingEngine")

MyFile.WriteLine ("End If")

MyFile.WriteLine ("If Not IsObject(Connection) Then")

MyFile.WriteLine ("Set Connection = Application.Children(0)")

MyFile.WriteLine ("End If")

MyFile.WriteLine ("If Not IsObject(session) Then")

MyFile.WriteLine ("Set session = Connection.Children(0)")

MyFile.WriteLine ("End If")

MyFile.WriteLine ("If IsObject(WScript) Then")

MyFile.WriteLine ("WScript.ConnectObject session, ""on""")

MyFile.WriteLine ("WScript.ConnectObject Application, ""on""")

MyFile.WriteLine ("End If")

MyFile.WriteLine ("session.findById(""wnd[0]"").maximize")

MyFile.WriteLine ("session.findById(""wnd[0]/tbar[0]/okcd"").Text = ""/nca02""")

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

For i = 2 To 3

If Trim(Range("A" & i)) <> "" Then

MyFile.WriteLine ("session.findById(""wnd[0]/usr/ctxtRC27M-MATNR"").Text = """ & Range("B" & i) & """")

MyFile.WriteLine ("session.findById(""wnd[0]/usr/ctxtRC27M-WERKS"").Text = ""1000""")

MyFile.WriteLine ("session.findById(""wnd[0]/usr/ctxtRC27M-WERKS"").setFocus")

MyFile.WriteLine ("session.findById(""wnd[0]/usr/ctxtRC27M-WERKS"").caretPosition = 4")

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

MyFile.WriteLine ("session.findById(""wnd[0]/usr/tblSAPLCPDITCTRL_1400/txtPLPOD-VORNR[0," & Range("K" & i) & "]"").SetFocus ")

MyFile.WriteLine ("session.findById(""wnd[0]/usr/tblSAPLCPDITCTRL_1400/txtPLPOD-VORNR[0," & Range("K" & i) & "]"").caretPosition = 0")

MyFile.WriteLine ("session.findById(""wnd[0]/tbar[1]/btn[14]"").press")

MyFile.WriteLine ("session.findById(""wnd[1]/usr/btnSPOP-OPTION1"").press")

MyFile.WriteLine ("session.findById(""wnd[0]"").sendVKey 11 ")

Vielen Dank

Freundliche Grüsse

Johny

Alpmann
vor 5 Jahre
Hallo Johny,

das geht auch sehr einfach ohne Script. Schau dir mal die Transaktion CEWB (PP: Engineering Workbench) an.

Mit freundlichen Grüßen

Matthias Alpmann

Johnymaroni
vor 5 Jahre
Hallo Matthias

Ich glaube ich hab mich falsch ausgedruckt.

Ich muss in 1400 Materialien, eine Position im Arbeitsplan löschen.

Diese kann mal Position 10, mal Position 50 sein.

So wie ich gesehen habe, kann ich in der CEWB nur ein Material gleichzeitig bearbeiten.

So könnte ich ja direkt über die CA02 gehen.

Freundliche Grüsse

Johny

ScriptMan
vor 5 Jahre
Hallo Johny,

leider arbeite ich nicht mit derartigen Transaktionen. Ich könnte mir

aber vorstellen, wenn der Standard ein "Nein" ist,

MyFile.WriteLine ("session.findById(""wnd[1]/usr/btnSPOP-OPTION1"").press")

dass dann ein "Ja" folgendes sein könnte.

MyFile.WriteLine ("session.findById(""wnd[1]/usr/btnSPOP-OPTION2"").press")

Man muss es halt ausprobieren!

Grüße, ScriptMan

Alpmann
vor 5 Jahre
Hallo Johny,

mit der CEWB kann man definitiv mehrere Arbeitspläne auf einmal selektieren und bearbeiten. Du kannst da deine 1400 Artikel in die Mehrfachauswahl packen.

Ich habe erst neulich damit ca. 3000 Positionen gelöscht. Da war das so, dass ein Vorgang eines Arbeitsplatzes rausfallen sollte. Da man hier auch nach einem Arbeitsplatz selektieren kann, war das Thema in fünf Minuten erledigt.

Mit freundlichen Grüßen

Matthias Alpmann

Johnymaroni
vor 5 Jahre
Hallo Matthias

Jetzt hab ich die Mehrfachselektion entdeckt.😊

Das ist ja Perfekt, so kann ich die Arbeitsplätze und Steuerschlüssel welche gelöscht werden müssen, direkt suchen.

Danke das du dir die Zeit genommen hast, einen zweiten Anlauf zu starten :)

Hat geholfen 😁

Freundliche Grüsse

Johny