SAP Jobsuche bei DV-Treff
Lutz Fricke
vor 5 Jahre
Hallo wertes Forum,

ich scheitere mal wieder an offensichtlich einfachen Dingen...

Ich habe aus Excel ein Feld mit Daten. Dieses möchte ich in eine Mehrfachselektion der LT22 einfügen.

Ich verwende folgenden VBA-Code in Excel:

For No = 1 To UBound(Einlesen)
    SAPSession.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/txtRSCSEL_255-SLOW_I[1," & CStr(No - 1) & "]").Text = Einlesen(No, 1)
Next
Das funktioniert für die ersten 8 Positionen einwandfrei, dann bekomme ich jedoch eine Laufzeitfehler 619: "The control could not found by id" (Die übliche kryptische SAP-Fehlermeldung...).

Scheinbar bekomme ich die Werte nur eingelesen, bis das sichtbare Feld gefüllt ist.

Wie kann ich mehr als die sichtbaren Felder per Code beschreiben?

Vielen Dank für Eure Hilfe,

Lutz

Förderer

SAPNeuling1285
vor 5 Jahre
Hallo welches Feld möchtest du denn befüllen?
SAPNeuling1285
vor 5 Jahre
Hab dir hier mal ne Lösung gepostet:

Sub etc2()

Set SapGuiAuto = GetObject("SAPGUI") 'Get the SAP GUI Scripting object

Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI

Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected

Set session = SAPCon.Children(0) 'Get the first session (window) on that connection

session.findById("wnd[0]").resizeWorkingPane 144, 18, False

session.findById("wnd[0]/tbar[0]/okcd").Text = "/nlt22"

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

session.findById("wnd[0]/usr/btn%_T3_LGTYP_%_APP_%-VALU_PUSH").press

startinexcel = 5

zaehler = 0

Stop

For no = 0 To 20

session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1," & zaehler & "]").Text = Cells(startinexcel, 2)

zaehler = zaehler + 1

If zaehler > 6 Then

Stop

session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1," & zaehler & "]").SetFocus

session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1," & zaehler & "]").caretPosition = 0

session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE").verticalScrollbar.Position = no

zaehler = 1

End If

startinexcel = startinexcel + 1

Next no

End Sub

Lutz Fricke
vor 5 Jahre
Hallo,

vielen Dank für den Code.

Das zu füllende Feld ist in der LT22, dynamic selections, Transfer order item, delivery.

Über den Recorder habe ich die Feldbezeichnung in den Code bekommen, den ich modifiziert und gepostet habe.

Ich habe den Code noch nicht probiert, wundere mich aber über die Zeile "STOP".

Was passiert da?

Grundsätzlich glaube ich den Code zu verstehen:

Du gibst in jedem Durchlauf eine Excel-Zelle in das Feld ein, nach 6 Durchläufen scrollst Du das Eingabefeld auf die aktuelle Zeile.

Richtig?

Bleibt nur die Frage nach dem "STOP".

Gruß,

Lutz Fricke