点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,我是新手,我正在尝试打开一个SAP部分,并使用Excel VBA启动事务。
假设:
在SAP中,我具有以下系统列表:
此刻,我正在使用对我有用的这段代码:
Dim SapGui 昏暗的应用 暗淡的连接 昏暗的会议 昏暗的WSHShell 外壳程序" C:\ Program Files(x86)\ SAP \ FrontEnd \ SAPgui \ saplogon.exe",vbNormalFocus 设置WSHShell = CreateObject(" WScript.Shell") 直到WSHShell.AppActivate(" SAP Logon")执行 Application.Wait Now + TimeValue(" 0:00:01") 循环 设置WSHShell = Nothing Set SapGui = GetObject(" SAPGUI")'获取SAP GUI脚本对象 Set Applic = SapGui.GetScriptingEngine'获取当前正在运行的SAP GUI 设置连接= Applic.OpenConnection(" 01。TEST1",True) 设置会话= connection.Children(0) session.findById(" wnd [0]")。maximize session.findById(" wnd [0]/usr/txtRSYST-MANDT")。Text =" 100" session.findById(" wnd [0]/usr/txtRSYST-BNAME")。Text =" myusername" session.findById(" wnd [0]/usr/pwdRSYST-BCODE")。Text =" mypassword" session.findById(" wnd [0]/usr/txtRSYST-LANGU")。Text =" EN" session.findById(" wnd [0]")。sendVKey 0 session.SendCommand("/img/nSLG1")'启动SLG1事务 session.findById(" wnd [0]/usr/ctxtBALHDR-OBJECT")。Text =" YESMAN"'填充"对象"字段 session.findById(" wnd [0]")。sendVKey 8'发送F8命令 MsgBox"当您完成使用SAP时,请在下面单击"确定"。 设置会话=无 connection.CloseSession(" ses [0]") 设置连接=无 设置SAP = Nothing
不幸的是,此代码不适用于我的同事,因为他在系统列表中的名字是" 1。 TEST1",而不是我的" 01。 TEST1"。
是否可以修改代码字符串" 设置连接= Applic.OpenConnection(" 01。TEST1",True)",以便使用相关的SID设置连接(在这种情况下) " ST1 ")对所有用户都一样?
在此先感谢大家的贡献!
最大
(10.8 kB)
我在excel模板中所做的工作是根据可用内容读取saplandscape.xml文件或saplogon.ini文件。
然后提供连接列表,这些列表将呈现给特定于最终用户的环境。
那时,我测试它们是否已经连接到该环境,以及是否未生成连接字符串并实例化一个新连接。
它的代码多于注释,但是主要的问题是可用的方法是:
参数"描述"应包含SAP Logon中显示的描述之一,例如" XYZ [PUBLIC]"。 如果要创建新的SAP GUI实例并将其放置在应用程序中,则可以添加后缀"/img/INPLACE"。
如果管理员或用户禁用了脚本支持,则此函数将引发异常E_ACCESSDENIED。
备注:手动打开连接时,SAP GUI异步执行请求,因此,在请求新连接后,SAP登录对话框将保持响应状态。 这也是SAP GUI脚本的默认行为。 在脚本上下文中,这意味着对openConnection的调用可能会在新连接打开之前返回。 这样做的副作用是,当打开连接失败时,SAP GUI会显示无法从脚本处理的错误弹出窗口。 可以通过将sync参数设置为True来解决此问题。 然后,直到建立连接或检测到错误,对openConnection的调用才会返回。 如果将sync设置为True并发生错误,则除非参数raise设置为False,否则会引发异常。
具有应用程序服务器的主机名的示例( iwdf8997.wdf.sap-ag.de )和端口号(3200):
/H/ iwdf8997.wdf.sap-ag.de/ S/3200
有关SAP GUI脚本API的大量帮助文本>对象> GuiApplication对象>方法OpenConnectionByConnectionString
但是TL; DR-不,没有通过SID的访问。
一周热门 更多>