首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >要打开或连接/保留在已打开的会话窗口中的VBA Sap脚本

要打开或连接/保留在已打开的会话窗口中的VBA Sap脚本
EN

Stack Overflow用户
提问于 2019-04-18 01:37:39
回答 1查看 8.1K关注 0票数 0

我已经可以使用VBA和SAP记录和播放.vbs脚本自动检索SAP事务数据,现在我面临着一个问题,我在Visual Basic Studio .NET的同一个程序中没有看到,如果SAP Easy Access for my connection : LA-6-Prod已经打开,那么多重登录窗口就会出现,并打破我的代码,从而导致整个事情失败。

如何让我的代码使用已经存在并打开的连接,或者在连接未打开的情况下将其打开?

如果LA-6-Prod没有打开,但不能告诉最终用户在执行宏之前没有打开任何连接窗口,那么它就可以完美地工作。

非常感谢

这是我的代码:

代码语言:javascript
复制
Sub my_sap
  Dim SapGui, Applic, connection, session, WSHShell

  strconnection = Worksheets("sap_info").Range("A2").Value
  Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe", vbNormalFocus
  Set WSHShell = CreateObject("WScript.Shell")

  Do Until WSHShell.AppActivate("SAP Logon ")
    application.Wait Now + TimeValue("0:00:01")
  Loop

  Set WSHShell = Nothing
  Set SapGui = GetObject("SAPGUI")
  Set Applic = SapGui.GetScriptingEngine

  Set connection = Applic.OpenConnection('LA-6-Prod', True)
  Set session = connection.Children(0)

'===============SAP SCRIPTING===========

'Execute SAP stuffs, I put in here what I recorded from sap record and it works OK

'=======================================

  Set session = Nothing
  connection.CloseSession ("ses[0]")
  Set connection = Nothing
  Set sap = Nothing

End Sub
EN

回答 1

Stack Overflow用户

发布于 2019-04-19 05:09:50

您可以使用一个函数来测试连接是否已经打开,方法如下:

代码语言:javascript
复制
Sub sap()

If SAP_Connection Then
MsgBox ("Sap is Open so just attached to session(0)")
Else
MsgBox ("Sap is NOT open so open Logon Window")
End If

End Sub

该函数将如下所示。

代码语言:javascript
复制
Function SAP_Connection() As Boolean

On Error GoTo ErrSap

If Not IsObject(SapApplication) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set SapApplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
   Set Connection = SapApplication.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 SapApplication, "on"
End If

SAP_Connection = True
Exit Function

ErrSap:
SAP_Connection = False

End Function
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55733193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档