SAP Jobsuche bei DV-Treff
FrankEisermann
vor 10 Jahre
Ich habe folgendes Problem.

Ich binde ein VBS Script ein, mit dem ich aus einer Excel Tabelle die Daten von verschiedenen TechnPlätzen auslese. Ich brauche das für unsere internen ´Schulungen, damit jeder Teilnehmer eine Inst Meldung für sein Auto hat.

Ich nehme dafür die IW21.

Das Script läuft auch alleine durch.

Wenn ich sie aber mit der Excel ausführe, bekomme ich eine Fehlermeldung:

This control can not be found by id.-

Wenn ich die Fehlermeldung jetzt wegklicke und die VBS nochmal durchführe, geht es auch bei der 2. Meldung. Dann bleibt er aber bei der 3. Meldung stehen.

Klicke ich die Fehlermaldung weg und führe das Scrip nochmal aus, geht es bei der 1., 2., und dritten Meldung. usw.

Das heißt, wenn ich das immer weiter so mache, läuft es durch.

Hat es dann bei allen funktioniert, läuft es auch auf dem Schulungsmandanten immer wieder durch.

Ich füge das Script mal ein. Vielleicht hat ja jemand eine Lösung.

Gruß aus dem Norden

Frank

'**************************************************************

' allg. SAPScript-Parameter

'**************************************************************

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

'**************************************************************

' Parameter für XLS-Datei

'**************************************************************

Dim ExcelApp, ExcelWB, ExcelWS

set ExcelApp=createobject("Excel.Application")

ExcelApp.visible=true

set ExcelWB=ExcelApp.Workbooks.Open("p:\motor\motor.xls")

set ExcelWS=ExcelWB.Worksheets("Tabelle1")

'**************************************************************

' Aufruf der Transaktion iw21

'**************************************************************

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

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

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

'**************************************************************

' XLS-Datei einlesen

'**************************************************************

zeile=1

do while true

zelle1=ExcelApp.Cells(zeile,1).Value

zelle2=ExcelApp.Cells(zeile,2).Value

zelle3=ExcelApp.Cells(zeile,3).Value

if zelle1 <> "ENDE" Then

call doit (zelle1,zelle2,zelle3)

else

msgbox "Sie haben jetzt alle Meldungen angelegt!!!"

exit do

end if

zeile=zeile+1

loop

ExcelWB.Close

ExcelApp.Quit

'**************************************************************

' Trancation einlesen

'**************************************************************

sub doit (kurztext,technplatz,equi)

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

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

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

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

session.findById("wnd[0]/usr/ctxtRIWO00-QMART").text = "a2"

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

session.findById("wnd[0]/usr/subSCREEN_1:SAPLIQS0:1050/txtVIQMEL-QMTXT").text = kurztext

session.findById("wnd[0]/usr/subSCREEN_1:SAPLIQS0:1050/txtVIQMEL-QMTXT").caretPosition = 28

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

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7715/cntlTEXT/shellcont/shell").setSelectionIndexes 0,0

session.findById("wnd[0]/usr/subSCREEN_1:SAPLIQS0:1050/btnANWENDERSTATUS").press

session.findById("wnd[1]/usr/tblSAPLBSVATC_E/radJ_STMAINT-ANWS[0,1]").selected = true

session.findById("wnd[1]/usr/tblSAPLBSVATC_E/radJ_STMAINT-ANWS[0,1]").setFocus

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

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7715/cntlTEXT/shellcont/shell").setSelectionIndexes 0,0

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

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7715/cntlTEXT/shellcont/shell").text = "Ort:" + vbCr + "Zeit:" + vbCr + "weitere Meldungen:" + vbCr + "Hinweise:" + vbCr + "" + vbCr + ""

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7715/cntlTEXT/shellcont/shell").setSelectionIndexes 40,40

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02").select

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-TPLNR").text = technplatz

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-TPLNR").setFocus

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-TPLNR").caretPosition = 17

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

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

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

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-EQUNR").text = equi

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-EQUNR").setFocus

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB02/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7322/subOBJEKT:SAPLIWO1:0120/ctxtRIWO1-EQUNR").caretPosition = 8

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

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

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

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10").select

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/tblSAPLIQS0POSITION_VIEWER/ctxtVIQMFE-FEGRP[4,0]").setFocus

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/tblSAPLIQS0POSITION_VIEWER/ctxtVIQMFE-FEGRP[4,0]").caretPosition = 0

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

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").expandNode " 2"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").topNode = " 1"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").selectItem " 8","3"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").ensureVisibleHorizontalItem " 8","3"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").doubleClickItem " 8","3"

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/tblSAPLIQS0POSITION_VIEWER/txtVIQMFE-FETXT[7,0]").text = "Ventile einstellen"

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/tblSAPLIQS0POSITION_VIEWER/txtVIQMFE-FETXT[7,0]").setFocus

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB01/ssubSUB_GROUP_20:SAPLIQS0:7110/tblSAPLIQS0POSITION_VIEWER/txtVIQMFE-FETXT[7,0]").caretPosition = 18

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB02").select

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB02/ssubSUB_GROUP_20:SAPLIQS0:7115/tblSAPLIQS0URSACHEN_VIEWER/ctxtVIQMUR-URGRP[1,0]").setFocus

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB10/ssubSUB_GROUP_10:SAPLIQS0:7210/tabsTAB_GROUP_20/tabp20\TAB02/ssubSUB_GROUP_20:SAPLIQS0:7115/tblSAPLIQS0URSACHEN_VIEWER/ctxtVIQMUR-URGRP[1,0]").caretPosition = 0

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

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").expandNode " 2"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").topNode = " 1"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").expandNode " 28"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").topNode = " 1"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").selectItem " 30","3"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").ensureVisibleHorizontalItem " 30","3"

session.findById("wnd[1]/usr/cntlTREE_CONTROL_AREA/shellcont/shell").doubleClickItem " 30","3"

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB22").select

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB22/ssubSUB_GROUP_10:SAPLIQS0:8200/subDFPS_SCREEN:/ISDFPS/SAPLPM0_XQQM:0116/tabs/ISDFPS/FG_XQQM/tabp/ISDFPS/FG_XQQM_FC2").select

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB22/ssubSUB_GROUP_10:SAPLIQS0:8200/subDFPS_SCREEN:/ISDFPS/SAPLPM0_XQQM:0116/tabs/ISDFPS/FG_XQQM/tabp/ISDFPS/FG_XQQM_FC2/ssub/ISDFPS/FG_XQQM_SCA:/ISDFPS/SAPLPM0_XQQM:0202/txtGSCR_TRP-TA_ANSPAR").text = "Schirrmeister 1./215"

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB22/ssubSUB_GROUP_10:SAPLIQS0:8200/subDFPS_SCREEN:/ISDFPS/SAPLPM0_XQQM:0116/tabs/ISDFPS/FG_XQQM/tabp/ISDFPS/FG_XQQM_FC2/ssub/ISDFPS/FG_XQQM_SCA:/ISDFPS/SAPLPM0_XQQM:0202/txtGSCR_TRP-TA_PLZORT").text = "27711 OHZ"

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB22/ssubSUB_GROUP_10:SAPLIQS0:8200/subDFPS_SCREEN:/ISDFPS/SAPLPM0_XQQM:0116/tabs/ISDFPS/FG_XQQM/tabp/ISDFPS/FG_XQQM_FC2/ssub/ISDFPS/FG_XQQM_SCA:/ISDFPS/SAPLPM0_XQQM:0202/txtGSCR_TRP-TA_STRNR").text = "Bremer Strasse 111"

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB22/ssubSUB_GROUP_10:SAPLIQS0:8200/subDFPS_SCREEN:/ISDFPS/SAPLPM0_XQQM:0116/tabs/ISDFPS/FG_XQQM/tabp/ISDFPS/FG_XQQM_FC2/ssub/ISDFPS/FG_XQQM_SCA:/ISDFPS/SAPLPM0_XQQM:0202/txtGSCR_TRP-TA_STAAT").text = "Niedersachsen"

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB22/ssubSUB_GROUP_10:SAPLIQS0:8200/subDFPS_SCREEN:/ISDFPS/SAPLPM0_XQQM:0116/tabs/ISDFPS/FG_XQQM/tabp/ISDFPS/FG_XQQM_FC2/ssub/ISDFPS/FG_XQQM_SCA:/ISDFPS/SAPLPM0_XQQM:0202/txtGSCR_TRP-TA_TELNR").text = "0123-456789"

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB22/ssubSUB_GROUP_10:SAPLIQS0:8200/subDFPS_SCREEN:/ISDFPS/SAPLPM0_XQQM:0116/tabs/ISDFPS/FG_XQQM/tabp/ISDFPS/FG_XQQM_FC2/ssub/ISDFPS/FG_XQQM_SCA:/ISDFPS/SAPLPM0_XQQM:0202/txtGSCR_TRP-TA_EMAIL").setFocus

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB22/ssubSUB_GROUP_10:SAPLIQS0:8200/subDFPS_SCREEN:/ISDFPS/SAPLPM0_XQQM:0116/tabs/ISDFPS/FG_XQQM/tabp/ISDFPS/FG_XQQM_FC2/ssub/ISDFPS/FG_XQQM_SCA:/ISDFPS/SAPLPM0_XQQM:0202/txtGSCR_TRP-TA_EMAIL").caretPosition = 0

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01").select

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7715/cntlTEXT/shellcont/shell").setUnprotectedTextPart 0,"Ort:" + vbCr + "Zeit:" + vbCr + "weitere Meldungen:" + vbCr + "Hinweise:" + vbCr + ""

session.findById("wnd[0]/usr/tabsTAB_GROUP_10/tabp10\TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_1:SAPLIQS0:7715/cntlTEXT/shellcont/shell").setSelectionIndexes 77,77

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

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

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

end sub

ScriptMan
vor 10 Jahre
Hallo Frank,

nur so ein Tipp von mir: Das Kommando Application ist ein geschütztes Wort in VBA.

An dieser Stelle könnte man z.B. folgendes machen:

If Not IsObject(SAP_application) Then

Set SapGuiAuto = GetObject("SAPGUI")

Set SAP_application = SapGuiAuto.GetScriptingEngine

End If

If Not IsObject(connection) Then

Set connection = SAP_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 SAP_application, "on"

End If

. . .

Danach müsste man weiter sehen. 😕

Grüße aus dem Osten

ScriptMan

FrankEisermann
vor 10 Jahre
Hat geklappt.

Woher weißt du sowas 😕 .

Vielen Dank