【发布时间】:2020-10-07 21:40:27
【问题描述】:
我想使用 Excel VBA 创建到 SAP 的静默 SAP.FUNCTIONS 连接。每当我设置密码时,连接对象都会被丢弃。这甚至可能吗?
Sub Connect_to_SAP()
Dim myConnection As Object
Set myConnection = CreateObject("SAP.Functions.unicode")
With myConnection
.Connection.System = "SID" 'Systemname
.Connection.client = "800" 'Client
.Connection.APPLICATIONSERVER = "192.111.222.333"
.Connection.user = "MYUSERNAME" 'User
.Connection.Password = "MYPASSWORD" ' <=== after that, myConnection.connection object is trashed
.Connection.Language = "EN" 'Language
.Connection.systemnumber = "00" 'Systemnumber
End With
'Establish connection.
If myConnection.Connection.logon(0, True) <> True Then Exit Sub
'System Logoff
myConnection.Connection.LOGOFF
End Sub
注意:这是在 SAPGUI 7.6 pl4 下。我们正在使用 MYSAPSSO 票证(门户 SSO)通过 7.60 pl6 连接到 SAP。
【问题讨论】:
-
您能描述一下具体的症状吗?发生在哪一行?
-
如果您有一个打开的 sap.function 连接对象 (myConnection) 并将其放在 VBA 监视窗口中,您会发现只要设置 myConnection.connection.password = "mypassword" myConnection.connection 对象被丢弃。这是在 SAPGUI 7.6 pl4 下。
-
我遇到了这个问题,并认为使用
SAP.Functions而不是SAP.LogonControl解决了这个问题。无论如何,您可以尝试删除.Unicode部分,以防万一吗?如果它不起作用,并且如果您使用 64 位版本的 Office,您是否可以尝试通过编辑 Windows 注册表来将 SAP.Functions(.Unicode) 的 32 位版本委托给 64 位,如 here 解释的那样? -
我们已经使用 SAP.FUNCTIONS 和 SAP.FUNCTIONS.UNICODE 有一段时间了。事情从 SAPGUI 7.40 -> 7.50 发生了变化。 SAPGUI 7.50 的连接层建立在 NWRFC 之上,很长一段时间以来,它都不能与消息服务器一起使用(直到 7.50 pl9)。我们使用 MYSAPSSO 票证(门户 SSO)通过 7.60 pl6 连接到 SAP。票不是这个问题。自从 NWRFC 出现以来,必须为消息服务器填写参数。
-
您没有说您是否有 64 位 Office 版本以及是否尝试在 Windows 注册表中定义 DLLSurrogate。只是看看。我可以在 SAPGUI 7.6 pl1(没有 SSO)中成功地与您的代码进行静默连接。