I created a script that runs through orders in SAP and changes their date. For this, it has to select first all of the items within the order and then proceed to change the date.
The script has several IF statements that deal with expected pop-ups on steps of the process. As you can notice, some of them are exactly the same because it might happen that two pop-up windows identical in structure appear one after the other.
My question is, can I somehow make a list of the IF statements and then ask the scrip to run over it everytime it finds a pop-up window? I tried the OnError GoTo but it seems it looped throughout the list without selecting one of the IF statements.
I hope someone can shed some light on this. Here is my code, the OnError GoTo is inactive:
Sub Roller()
Dim ws As Worksheet
Dim i As Long
Dim maxi As String
Set ws = Excel.ThisWorkbook.Worksheets("Roll")
i = 2
maxi = ws.Cells(Rows.Count, 1).End(xlUp).Row
Do While i < maxi + 1
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)
If Cells(4, 10) = "YES" Then
' On Error GoTo PopUpHandler
If Cells(2, 5) = "" Then
session.StartTransaction "va02" 'To directly Open a SAP transaction
session.findById("wnd[0]/usr/ctxtVBAK-VBELN").Text = Cells(i, 1)
session.findById("wnd[0]").sendVKey 0
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
session.findById("wnd[0]/usr/subSUBSCREEN_HEADER:SAPMV45A:4021/btnBT_HEAD").press
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\16").Select
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\16/ssubSUBSCREEN_BODY:SAPMV45A:4323/subCUSTOMER_SCREEN:SAPLZV444_PRIMARY:9100/ctxtGX_VBAK-VDATU").Text
= Cells(i, 2)
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\16/ssubSUBSCREEN_BODY:SAPMV45A:4323/subCUSTOMER_SCREEN:SAPLZV444_PRIMARY:9100/ctxtGX_VBAK-ZZWADAT").SetFocus
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\16/ssubSUBSCREEN_BODY:SAPMV45A:4323/subCUSTOMER_SCREEN:SAPLZV444_PRIMARY:9100/ctxtGX_VBAK-ZZWADAT").caretPosition
= 0
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\17").Select
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
session.findById("wnd[0]").sendVKey 11
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\17/ssubSUBSCREEN_BODY:SAPMV45A:4323/subCUSTOMER_SCREEN:SAPLZV444_PRIMARY:9200/tblSAPLZV444_PRIMARYTC_RC/ctxtGX_REASON_CODES-REASON_CODE[5,0]").Text
= Cells(i, 4)
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\17/ssubSUBSCREEN_BODY:SAPMV45A:4323/subCUSTOMER_SCREEN:SAPLZV444_PRIMARY:9200/tblSAPLZV444_PRIMARYTC_RC/ctxtGX_REASON_CODES-REASON_CODE[5,0]").caretPosition
= 4
session.findById("wnd[0]/titl/shellcont/shell").pressContextButton "%GOS_TOOLBOX"
session.findById("wnd[0]/titl/shellcont/shell").selectContextMenuItem "%GOS_PCATTA_CREA"
session.findById("wnd[1]/usr/ctxtDY_PATH").Text = Cells(2, 10)
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = Cells(i, 7)
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]").sendVKey 11
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/usr/btnZSPOP_PRIMARY-OPTION1").press 'Outstanding issues present
End If
Else
session.StartTransaction "va02" 'To directly Open a SAP transaction
session.findById("wnd[0]/usr/ctxtVBAK-VBELN").Text = Cells(i, 1)
session.findById("wnd[0]").sendVKey 0
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
session.findById("wnd[0]/usr/subSUBSCREEN_HEADER:SAPMV45A:4021/btnBT_HEAD").press
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\16").Select
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\16/ssubSUBSCREEN_BODY:SAPMV45A:4323/subCUSTOMER_SCREEN:SAPLZV444_PRIMARY:9100/ctxtGX_VBAK-VDATU").Text
= Cells(i, 2)
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\17").Select
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
session.findById("wnd[0]").sendVKey 11
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/usr/btnZSPOP_PRIMARY-OPTION1").press 'Outstanding issues present
End If
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\17/ssubSUBSCREEN_BODY:SAPMV45A:4323/subCUSTOMER_SCREEN:SAPLZV444_PRIMARY:9200/tblSAPLZV444_PRIMARYTC_RC/ctxtGX_REASON_CODES-REASON_CODE[5,0]").Text
= Cells(i, 4)
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\17/ssubSUBSCREEN_BODY:SAPMV45A:4323/subCUSTOMER_SCREEN:SAPLZV444_PRIMARY:9200/tblSAPLZV444_PRIMARYTC_RC/ctxtGX_REASON_CODES-TAGGED_ITEMS[6,0]").Text
= Cells(i, 5)
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_HEAD/tabpT\17/ssubSUBSCREEN_BODY:SAPMV45A:4323/subCUSTOMER_SCREEN:SAPLZV444_PRIMARY:9200/tblSAPLZV444_PRIMARYTC_RC/txtGX_REASON_CODES-TAGGED_QTY[7,0]").Text
= Cells(i, 6)
session.findById("wnd[0]/titl/shellcont/shell").pressContextButton "%GOS_TOOLBOX"
session.findById("wnd[0]/titl/shellcont/shell").selectContextMenuItem "%GOS_PCATTA_CREA"
session.findById("wnd[1]/usr/ctxtDY_PATH").Text = Cells(2, 10)
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = Cells(i, 7)
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]").sendVKey 11
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/usr/btnZSPOP_PRIMARY-OPTION1").press 'Outstanding issues present
End If
End If
Else
' On Error GoTo PopUpHandlerNONFTFE
session.StartTransaction "va02" 'To directly Open a SAP transaction
session.findById("wnd[0]/usr/ctxtVBAK-VBELN").Text = Cells(i, 1)
session.findById("wnd[0]").sendVKey 0
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/subSUBSCREEN_BUTTONS:SAPMV45A:4050/btnBT_MKAL").press
session.findById("wnd[0]/mbar/menu[1]/menu[1]/menu[3]").Select
session.findById("wnd[1]/usr/ctxtRV45A-S_ETDAT").Text = Cells(i, 2)
session.findById("wnd[1]/usr/ctxtRV45A-S_EZEIT").SetFocus
session.findById("wnd[1]/usr/ctxtRV45A-S_EZEIT").caretPosition = 0
session.findById("wnd[1]/tbar[0]/btn[7]").press
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
If session.ActiveWindow.Name = "wnd[2]" Then
session.findById("wnd[2]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
session.findById("wnd[0]/titl/shellcont/shell").pressContextButton "%GOS_TOOLBOX"
session.findById("wnd[0]/titl/shellcont/shell").selectContextMenuItem "%GOS_PCATTA_CREA"
session.findById("wnd[1]/usr/ctxtDY_PATH").Text = Cells(2, 10)
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = Cells(i, 7)
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]").sendVKey 11
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
session.findById("wnd[0]").sendVKey 11
session.findById("wnd[1]/usr/tblSAPLZV01_IBERIATC_OTIFVAL/ctxtX_OTIFVAL-RCODE[3,0]").Text
= Cells(i, 4)
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[8]").press 'Consider subsequent documents pop-up
End If
If session.ActiveWindow.Name = "wnd[1]" Then
session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
End If
End If
Range("H" & i) = "RDD updated And attachment added."
i = i + 1
Loop
MsgBox "RDDs have been updated accordingly To the request."
Exit Sub
'PopUpHandler:
'
' If session.ActiveWindow.Name = "wnd[1]" Then
' session.findById("wnd[1]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
' End If
'
' If session.ActiveWindow.Name = "wnd[1]" Then
' session.findById("wnd[1]/usr/btnZSPOP_PRIMARY-OPTION1").press 'Outstanding issues present
' End If
'
' Resume
'PopUpHandlerNONFTFE:
'
' If session.ActiveWindow.Name = "wnd[2]" Then
' session.findById("wnd[2]/tbar[0]/btn[0]").press 'Credit check (maximum % for open items exceeded pop-up
' End If
'
' If session.ActiveWindow.Name = "wnd[2]" Then
' session.findById("wnd[2]/tbar[0]/btn[0]").press 'Consider subsequent documents pop-up
' End If
'
' Resume
End Sub
Aucun commentaire:
Enregistrer un commentaire