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条回答
宇峰
2020-09-22 18:14

马克你好,

我的建议是使用替代方法。 尝试使用IP地址和系统编号,而不是系统说明,例如 像这样

'----------------------------------------------  --------------------- 
'-/H/和系统的IP地址
'-/S/3200 +系统号, 在此示例中2
'------------------------------------------ ------------------------- 设置连接= SAPguiApp.OpenConnectionByConnectionString("/img/H/10.100.200.300/S/3202",对,错)

IP地址和系统号始终相同。 要获取系统编号,请使用TAC SE37调用FM GET_SYSTEM_NUMBER。

干杯
Stefan

一周热门 更多>