VBA脚本-是否可以通过SID而不是名称登录

2020-09-22 17:29发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有一个VBA脚本,该脚本登录到...

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

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


我有一个VBA脚本,该脚本登录到SAP,从Excel工作表中输入一些数据,提取一些结果并将其复制回Excel。 该脚本在我的机器上可以正常运行,但是在其他机器上却不能正常运行,我发现这是因为在每台机器上,系统连接参数中指定的"描述"都不相同(不知道为什么)。 为了解决这个问题,我想知道是否可以改用System ID字段,因为这里的所有计算机上都一样:

代码的相关部分在这里:

如果不是IsObject(SAPguiApp),则
出错时恢复下一个
设置SAPguiAuto = GetObject(" SAPGUI")
如果Err.Number <> 0则
出错时转到0
设置WshShell = CreateObject(" WScript.Shell")
设置oExec = WshShell.Exec(" C:\ Program Files(x86)\ SAP \ FrontEnd \ SAPgui \ saplogon.exe")

不是WshShell.AppActivate(" SAP Logon 750")
睡眠1
循环
设置SAPguiAuto = GetObject(" SAPGUI")
其他
出错时转到0
结束If
设置SAPguiApp = SAPguiAuto.GetScriptingEngine
结束,如果
如果不是IsObject(Connection),则
设置连接= SAPguiApp.OpenConnection(" 此处为字符串",为True)
如果If
If不是IsObject(session),则结束。
设置会话= Connection.Children(0)
如果,则

结束。

如果session.Children.Count> 1,则
session.findById(" wnd [1]/usr/radMULTI_LOGON_OPT2")。选择
session.findById(" wnd [1]/usr/radMULTI_LOGON_OPT2") .SetFocus
session.findById(" wnd [1]/tbar [0]/btn [0]")。按
如果结束

我还包括了允许多个会话的部分,因为我花了很长时间才弄清楚今天该怎么做,这可能对某人有所帮助。

4条回答
三十六小时_GS
2020-09-22 18:17

很抱歉回复很长! 不幸的是,不,我也无法访问SM51! 我确实到处找了您提到的文件,似乎大多数的配置文件都存储在本地,但是我找不到特定的文件。 但是,我认为我找到了一个简单的解决方法; 我将其添加到vb脚本的登录部分的末尾:

如果session.Children.Count> 1然后
     session.findById(" wnd [1]/usr/radMULTI_LOGON_OPT2")。Select
     session.findById(" wnd [1]/usr/radMULTI_LOGON_OPT2")。SetFocus
     session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 如果结束

...并且已经解决了这个问题,现在它只是模拟选择创建另一个会话的用户选项,默认情况下它似乎变为活动会话,因此可以正常工作。 我在这里只能想到的唯一弱点是,如果已经打开了最大数量的会话,则可能会崩溃,但是有人不太可能让这么多会话保持活动状态,因此我可以继续使用它。

一周热门 更多>