SAP GUI 脚本如何测试消息的存在

SAP GUI script how to test the presence of a message

下面我有一个非常简单直接的脚本,用于更新 SAP 中 Agreement/Contract 的有效截止日期。

我的脚本运行正常,但如果我想更改的日期已经相同,那么 change/save 没有任何内容,因此脚本停止...

执行此步骤 session.findById("wnd[1]/usr/btnSPOP-OPTION1").press 后,来自系统的消息是 未更改数据 并且在执行此步骤后脚本停止。 06022号留言

脚本中的记录部分是基于你可以保存的,但是当“不变”的情况发生时,因为日期已经相同,那么没有什么可以保存,脚本停止。

如何向脚本添加功能,以便它仍然继续到下一个 Agreement/Contract,即使当前脚本没有任何可保存的内容。我还想在这种情况下添加评论“无变化”。当它确实更新时,我有 objSheet.Cells(i, 3) = "Updated" 但是当没有什么可以保存时(无法保存)我想在第 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