SAP宏未正确记录

时间:2018-08-21 17:41:12

标签: vba sap

我刚刚开始学习SAP GUI,无法弄清楚为什么我的宏没有正确记录。

  1. 我试图一次记录一次交易的所有步骤。但是每次我执行脚本时,脚本只包含运行事务的那一行之前的部分。其余步骤不会被记录。

  2. 我决定分别录制两个部分,并手动组合它们。但这仍然行不通。

该宏仅运行“ / oCS15”事务,然后停止并返回错误消息:ID找不到控件。第20行,字符1

任何人都可以建议如何解决问题吗?我真的希望继续该项目的这一部分,并认为这只是一个小问题。请帮忙!

我有以下脚本:

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 = "/oCS15"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/chkRC29L-DIRKT").selected = true
session.findById("wnd[0]/usr/ctxtRC29L-MATNR").text = "EDG001001008"
session.findById("wnd[0]/usr/chkRC29L-DIRKT").setFocus
session.findById("wnd[0]").sendVKey 5
session.findById("wnd[0]/usr/ctxtRC29L-WERKS").text = "0600"
session.findById("wnd[0]/usr/ctxtRC29L-WERKS").setFocus
session.findById("wnd[0]/usr/ctxtRC29L-WERKS").caretPosition = 4
session.findById("wnd[0]").sendVKey 8
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").currentCellColumn = "DOBJT"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").selectedRows = "0"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").doubleClickCurrentCell
session.findById("wnd[0]/usr/tabsTS_ITEM/tabpPHPT/ssubSUBPAGE:SAPLCSDI:0830/btnP_BEZIEHUNG").press
session.findById("wnd[0]/usr/cntlSOURCE/shellcont/shell").setSelectionIndexes 0,28

1 个答案:

答案 0 :(得分:0)

我怀疑问题出在开始交易。事务之前的命令“ / o”同时打开一个新会话。

设置会话=连接。Children(0)=>它不再适用。

设置会话=连接。Children(1)=>如果以前只有一个会话处于活动状态,则这是新会话。

但是开始事务时不必一定要创建新会话。运行新事务,如下所示:

...
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "/nCS15"
session.findById("wnd[0]").sendVKey 0
...

脚本记录器仅记录会话中的命令。如果您将它们留下(请参阅“ / o”),则记录将在此时停止。

关于, 脚本人