【问题标题】:How to access SAP using Excel VBA?如何使用 Excel VBA 访问 SAP?
【发布时间】:2018-04-19 00:35:24
【问题描述】:

我正在尝试登录 SAP。 Excel VBA 代码为我提供了一个弹出窗口来确认我的信息,但是当我提交表单时,它不会将我带到新的 SAP 窗口。

此外,有没有一种方法可以自动化所有要求确认我的信息的弹出框?我希望这段代码最终在一天中的某些时间运行,我可能无法输入任何数据。

Sub login1()
Dim sap As Object
Dim conn As Object

Set sap = CreateObject("SAP.Functions")
Set conn = sap.Connection
conn.System = "System Test Environment"
conn.client = "100"
conn.user = "user"
conn.Password = "password"
conn.Language = "EN"

If conn.logon(0, False) <> True Then
    MsgBox "Logon to the SAP system is not possible", vbOKOnly, "Comment"
Else

End If
End Sub

【问题讨论】:

标签: excel vba sap


【解决方案1】:

此宏永远不会打开 SAP 窗口 - 它会在 VBA 中创建一个 SAP-Object,您可以在其中使用 SAP-RFC-Functions。 (从 SAP 读取数据,将数据写入 SAP)

在您的版本中,“End Sub”后 SAP 连接将无法访问。您必须在子外部声明对象。

这对我来说是无声的(没有对话):

Dim sap As Object

Public Function login1() As Boolean

  Set sap = CreateObject("SAP.Functions")

  sap.Connection.System = "System Test Environment"
  sap.Connection.client = "100"
  sap.Connection.user = "user"
  sap.Connection.Password = "password"
  sap.Connection.Language = "EN"

  If sap.Connection.logon(0, False) <> True Then
    sap.RemoveAll
    MsgBox "Logon to the SAP system is not possible", vbOKOnly, "Comment"
  Else
    login1 = true
  End If

End Function

Public Function SAPLogoff()
    On Error Resume Next
    sap.RemoveAll
    sap.Connection.logoff

    LoggedOn = False
    Set sap = Nothing
    'Set conn = Nothing
End Function

【讨论】:

  • 感谢您的输入,不幸的是,额外弹出框的问题仍然存在。还有一个 sap 接口的实例没有打开,你知道有什么可以解释原因吗?
  • 正如我所写,这种 makro 永远不会打开“sap 接口”——它用于在 vba 中使用 sap 对象。你要的是另一回事!我会给你写第二个解决方案,它在一个单独的答案中从 VBA 中打开一个 SAP 接口。
【解决方案2】:

既然您想“打开一个新的 SAP 窗口”,您就必须采用不同的方法!

首先尝试使用“sapshcut”从 DOS 命令行打开新的 SAP 实例:

C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe -system="System Test Environment" -client="100" -user="user" -password="password" -language="EN"

如果您的 SystemName 没有空格(我相信是这样!),那么您也可以这样写:

C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe -system=SystemTestEnvironment -client=100 -user=user -password=password -language=EN

当此调用使用您的凭据时,您可以像这样将其传输到 Excel:

Sub login1()

  Call Shell("C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe -system=SystemTestEnvironment -client=100 -user=user -password=password -language=EN",vbNormalFocus)

End Sub

您还可以通过将“-command=your_tcode”添加到字符串来添加交易。

如果参数中有空格,并且只能从命令行使用 -system="System Test Environment" 启动它,则必须在 Excel 中使用 -system="""System Test Environment""" 对其进行转义(!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多