当其他用户共享时,SAP脚本不起作用

2020-09-13 06:24发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我一直在为部门内的各种任务创建脚本,而GUI脚本却遇到问题。 当我尝试与工作组中的其他用户共享录制的脚本时,它们将无法工作。 我将它们的变量设置为与我的变量完全相同,因此我们的表对齐了,它们的ui可能缩放得比我的大,但是,表的布局仍然相同。

每当他们尝试使用我的脚本之一时,就会收到错误,并且脚本不会处理。 我将自己的脚本记录在自己的计算机上,单击相同的位置并输入相同的数据,它将在他们的计算机上运行。 由于我需要与他们共享40多个脚本,这让我发疯,试图找出这个问题。

我能够使用我的计算机上记录的脚本。

这是一个用于简单任务的脚本示例:

如果不是IsObject(application),则
    设置SapGuiAuto = GetObject(" SAPGUI")
    设置应用程序= SapGuiAuto.GetScriptingEngine
 万一
 如果不是IsObject(connection)然后
    设置连接= application.Children(0)
 万一
 如果不是IsObject(session)然后
    设置会话= connection.Children(0)
 万一
 如果IsObject(WScript)然后
    WScript.ConnectObject会话,"打开"
    WScript.ConnectObject应用程序,"打开"
 万一
 session.findById(" wnd [0]/usr/ctxtRIWO00-QMNUM")。text =" 409231479"
 session.findById(" wnd [0]/usr/ctxtRIWO00-QMNUM")。caretPosition = 9
 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_3:SAPLIQS0:7336/tblSAPLIQS0ERN)
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH  =" JP-2R"
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH]  =" 6046"
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH  =" 8"
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH  =" 4/24/18"
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH)
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH  = 0
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/btnFC_ERLEDIGTpress)。
 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_2:SAPLIQS0:7715/cntlTEXT/shellcont/shellIndex,设置为0。
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/btnDETAL")。按
 session.findById(" wnd [1]/tbar [0]/btn [5]")。按
 session.findById(" wnd [1]/usr/ctxtVIQMSM-MNCOD")。text =" EJPA"
 session.findById(" wnd [1]/usr/ctxtVIQMSM-MNCOD")。setFocus
 session.findById(" wnd [1]/usr/ctxtVIQMSM-MNCOD")。caretPosition = 4
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/usr/txtVIQMSM-MATXT")。text =" 8"
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。setFocus
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。caretPosition = 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。text =" ROMORD"
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。setFocus
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。caretPosition = 6
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/usr/btnFREIGEGEBEN")。press
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/usr/ctxtVIQMSM-PETER")。text =" 4/29/18"
 session.findById(" wnd [1]/usr/ctxtVIQMSM-PETER")。setFocus
 session.findById(" wnd [1]/usr/ctxtVIQMSM-PETER")。caretPosition = 7
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/tbar [0]/btn [6]")。按
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_2:SAPLIQS0:7715/cntlTEXT/shellcont/shellIndex,设置为0。
 session.findById(" wnd [0]/usr/subSCREEN_1:SAPLIQS0:1050/subNOTIF_TYPE:SAPLIQS0:1051/txtVIQMEL-QMTXT")。text =" E6079-409231479"
 session.findById(" wnd [0]/usr/subSCREEN_1:SAPLIQS0:1050/subNOTIF_TYPE:SAPLIQS0:1051/txtVIQMEL-QMTXT")。caretPosition = 0
 session.findById(" wnd [0]/usr/subSCREEN_1:SAPLIQS0:1050/btnANWENDERSTATUS")。按
 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 [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_2:SAPLIQS0:7715/cntlTEXT/shellcont/shellIndex,设置为0。
 session.findById(" wnd [0]")。sendVKey 8
 session.findById(" wnd [0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIOLU")。select
 session.findById(" wnd [0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/subSUB_KOPF:SAPLCOIH:1108/txtCAUFVD-KTEXT")。text =" E6079-409231479"
 session.findById(" wnd [0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/subSUB_KOPF:SAPLCOIH:1108/txtCAUFVD-KTEXT")。caretPosition = 15
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/tabsTS_1100/tabpIOLU/ssubSUB_AUFTRAG:SAPLIWOL:0300/tblSAPLIWOLOBJK_120/ctxtRIWOL-TPLNR [2 ,.  OH-4625705E"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [0]/btn [3]")。按
 session.findById(" wnd [0]/tbar [0]/btn [11]")。按

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我一直在为部门内的各种任务创建脚本,而GUI脚本却遇到问题。 当我尝试与工作组中的其他用户共享录制的脚本时,它们将无法工作。 我将它们的变量设置为与我的变量完全相同,因此我们的表对齐了,它们的ui可能缩放得比我的大,但是,表的布局仍然相同。

每当他们尝试使用我的脚本之一时,就会收到错误,并且脚本不会处理。 我将自己的脚本记录在自己的计算机上,单击相同的位置并输入相同的数据,它将在他们的计算机上运行。 由于我需要与他们共享40多个脚本,这让我发疯,试图找出这个问题。

我能够使用我的计算机上记录的脚本。

这是一个用于简单任务的脚本示例:

如果不是IsObject(application),则
    设置SapGuiAuto = GetObject(" SAPGUI")
    设置应用程序= SapGuiAuto.GetScriptingEngine
 万一
 如果不是IsObject(connection)然后
    设置连接= application.Children(0)
 万一
 如果不是IsObject(session)然后
    设置会话= connection.Children(0)
 万一
 如果IsObject(WScript)然后
    WScript.ConnectObject会话,"打开"
    WScript.ConnectObject应用程序,"打开"
 万一
 session.findById(" wnd [0]/usr/ctxtRIWO00-QMNUM")。text =" 409231479"
 session.findById(" wnd [0]/usr/ctxtRIWO00-QMNUM")。caretPosition = 9
 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_3:SAPLIQS0:7336/tblSAPLIQS0ERN)
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH  =" JP-2R"
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH]  =" 6046"
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH  =" 8"
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH  =" 4/24/18"
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH)
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/tblSAPLIQS0MNAH  = 0
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/btnFC_ERLEDIGTpress)。
 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_2:SAPLIQS0:7715/cntlTEXT/shellcont/shellIndex,设置为0。
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_3:SAPLIQS0:7336/btnDETAL")。按
 session.findById(" wnd [1]/tbar [0]/btn [5]")。按
 session.findById(" wnd [1]/usr/ctxtVIQMSM-MNCOD")。text =" EJPA"
 session.findById(" wnd [1]/usr/ctxtVIQMSM-MNCOD")。setFocus
 session.findById(" wnd [1]/usr/ctxtVIQMSM-MNCOD")。caretPosition = 4
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/usr/txtVIQMSM-MATXT")。text =" 8"
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。setFocus
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。caretPosition = 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。text =" ROMORD"
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。setFocus
 session.findById(" wnd [1]/usr/ctxtRQM02-NAME_QMSM")。caretPosition = 6
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/usr/btnFREIGEGEBEN")。press
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/usr/ctxtVIQMSM-PETER")。text =" 4/29/18"
 session.findById(" wnd [1]/usr/ctxtVIQMSM-PETER")。setFocus
 session.findById(" wnd [1]/usr/ctxtVIQMSM-PETER")。caretPosition = 7
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [1]/tbar [0]/btn [6]")。按
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_2:SAPLIQS0:7715/cntlTEXT/shellcont/shellIndex,设置为0。
 session.findById(" wnd [0]/usr/subSCREEN_1:SAPLIQS0:1050/subNOTIF_TYPE:SAPLIQS0:1051/txtVIQMEL-QMTXT")。text =" E6079-409231479"
 session.findById(" wnd [0]/usr/subSCREEN_1:SAPLIQS0:1050/subNOTIF_TYPE:SAPLIQS0:1051/txtVIQMEL-QMTXT")。caretPosition = 0
 session.findById(" wnd [0]/usr/subSCREEN_1:SAPLIQS0:1050/btnANWENDERSTATUS")。按
 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 [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/tabsTAB_GROUP_10/tabp10 \ TAB01/ssubSUB_GROUP_10:SAPLIQS0:7235/subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_2:SAPLIQS0:7715/cntlTEXT/shellcont/shellIndex,设置为0。
 session.findById(" wnd [0]")。sendVKey 8
 session.findById(" wnd [0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIOLU")。select
 session.findById(" wnd [0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/subSUB_KOPF:SAPLCOIH:1108/txtCAUFVD-KTEXT")。text =" E6079-409231479"
 session.findById(" wnd [0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/subSUB_KOPF:SAPLCOIH:1108/txtCAUFVD-KTEXT")。caretPosition = 15
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/tabsTS_1100/tabpIOLU/ssubSUB_AUFTRAG:SAPLIWOL:0300/tblSAPLIWOLOBJK_120/ctxtRIWOL-TPLNR [2 ,.  OH-4625705E"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/tbar [0]/btn [3]")。按
 session.findById(" wnd [0]/tbar [0]/btn [11]")。按

付费偷看设置
发送
4条回答
葫芦娃快救爷爷
1楼 · 2020-09-13 06:41.采纳回答

嗨,鲁本,

我敢打赌,这是一个具有动态子屏幕ID的应用程序。

我的建议是,您从一个脚本中选择一行,然后看一看 记录了另一个用户的操作

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

在许多情况下,这样的路径中的子屏幕编号会有所不同:
subCUSTOM_SCREEN:SAPLIQS0:7212/subSUBSCREEN_2:SAPLIQS0:7715

如果这是 这个问题,因为应用程序动态创建这些ID将很难解决,但是SAP GUI希望准确记录这些ID。

最诚挚的问候,
弗兰克

黑丝骑士
2楼-- · 2020-09-13 06:47

你好鲁本,

欢迎使用SAP社区。

您收到哪个错误消息? 您可以使用错误消息对话框上传图像吗? 如果我们有此信息,我们将更好地了解您的问题并为您提供帮助。

谢谢和问候!
Stefan

粗暴的香蕉
3楼-- · 2020-09-13 06:32

我在工作场所遇到同样的问题。 我们创建Excel宏来访问SAP以执行各种操作。 我运行宏,它们对我不起作用。 组中的所有其他命令都将运行Excel宏,并且这些宏将按预期工作并相应地更新SAP。 在一个实例中,从一个能够为我重新编程宏的人那里得知,它与宏试图在SAP中复制并粘贴某个字段有关,但是找不到该字段,并且宏 在那一步失败了。 他对代码的该部分进行了重新编程,以"单击"到该部分,"向下滚动","选择"字段,"复制"字段等。

我当前正在对照宏对其工作的其他用户检查SAP选项和配置。

如果您找到更多有关为什么此方法不适用于您的其他用户的信息,我希望听到您的发现。 我很想知道什么对您有用。

谢谢!

SAP小黑
4楼-- · 2020-09-13 06:46

此外,您正在描述做"同一件事"的录音之间的比较。

能够比较这两个脚本以查看所记录的代码中的差异将很有用。

旁注:通常, 不需要以.caretPosition = XX结尾的行。 这是输入光标的记录位置。 删除这些多余的步骤也可以帮助清理录音的可读性。

一周热门 更多>