下面我有一个非常简单直接的脚本,用于更新 SAP 中的协议/合同的有效期。我的脚本运行良好,但如果我想要更改的日期已经相同,那么...
下面我有一个非常简单和直接的脚本,用于更新 SAP 中协议/合同的有效期。
我的脚本运行良好,但如果我想要更改的日期已经相同,那么就没有任何可更改/保存的内容,因此脚本停止......
此步骤后, session.findById("wnd[1]/usr/btnSPOP-OPTION1").press
系统会显示“ 无数据更改” ,并且脚本在此步骤后停止。 消息编号 06022
脚本中的录制部分基于您可以保存的内容,但是当由于日期已经相同而出现“无变化”的情况时,就没有任何内容可保存并且脚本停止。
我如何向脚本添加功能,以便即使当前协议/合同中没有任何内容可保存,它仍会继续执行下一个协议/合同。我还想在这种情况下添加注释“无变化”。当它确实更新时,我有 objSheet.Cells(i, 3) = \'已更新\',但是当没有任何内容可保存(无法保存)时,我希望在第 3 列中添加注释“无数据更改\”。
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
REM ADDED BY EXCEL *************************************
Dim objExcel
Dim objSheet, intRow, i
Set objExcel = GetObject(,"Excel.Application")
Set objSheet = objExcel.ActiveWorkbook.ActiveSheet
For i = 2 to objSheet.UsedRange.Rows.Count
COL1 = Trim(CStr(objSheet.Cells(i, 1).Value)) 'Column1 Agreement/Contract number
COL2 = Trim(CStr(objSheet.Cells(i, 2).Value)) 'Column2 New Valid to date
if isEmpty(objSheet.cells(i,3)) then
session.findById("wnd[0]/tbar[0]/okcd").text = "/nme32k"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRM06E-EVRTN").text = COL1
session.findById("wnd[0]/usr/ctxtRM06E-EVRTN").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[1]/btn[6]").press
session.findById("wnd[0]/usr/ctxtEKKO-KDATE").text = COL2
session.findById("wnd[0]/usr/ctxtEKKO-KDATE").setFocus
session.findById("wnd[0]/usr/ctxtEKKO-KDATE").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press
session.findById("wnd[1]/usr/btnSPOP-OPTION1").press
objSheet.Cells(i, 3) = "Updated"
REM FINALIZATION CONTROL CHECK ************************
aux=col1 & " " & COL2
CreateObject("WScript.Shell").run("cmd /c @echo %date% %time% " & aux & " >> C:\SCRIPT\PlOrCreationLog.txt")
End if
next
msgbox "Process Completed"
REM FINALIZATION CONTROL CHECK ************************ ```
经过多次尝试并在评论部分寻求帮助后,我终于解决了这个问题:)
session.findById("wnd[0]/tbar[0]/btn[11]").press
If session.ActiveWindow.Name = "wnd[1]" then
session.findById("wnd[1]/usr/btnSPOP-OPTION1").press
objSheet.Cells(i, 3) = "Updated"
else
objSheet.Cells(i, 3).Value = session.findById("wnd[0]/sbar").Text
End if