【问题标题】:Connect Excel with SAP using RFC使用 RFC 将 Excel 与 SAP 连接
【发布时间】:2017-05-16 05:25:44
【问题描述】:

我需要知道如何使用 RFC 将 Excel 与 SAP 连接起来。到目前为止,我还没有设法使用找到的代码将任何 SAP 数据导入 Excel。

我希望能够从任何已知事务中导入数据(例如事务 CO03 中的物料清单)。从中我会尝试了解如何提取其他类型的表格。

我的目标是能够使用 RFC 在 Excel 电子表格中导入任何 SAP 数据。那将是一个好的开始。

我需要一个特殊的 SAP 帐户吗?如何验证我的帐户是否可以执行此类任务?

【问题讨论】:

    标签: excel vba saprfc


    【解决方案1】:

    不可能远程调用 任何 标准事务,因为它们中的大多数都是类似旧的并且不直接返回任何内容。 有几种方法可以从任何事务中获取数据,但它们超出了这个问题的范围。
    从 SAP 到 Excel 中检索数据最实用的方法是找到合适的 BAPI 或启用远程的 FM,(包括编写自己的包装器 FM),这就是我将在此处描述的方式。

    1. 您不需要特殊帐户,您只需要对 RFC 调用有适当的授权即可,主要包括 S_RFC authorization object

    2. 如果您使用 BAPI,则可以省略这一点。如果您创建了自己的包装器,那么您必须确保它是 remote-enabled。

    3. 然后您可以在 VBA 代码中调用您的 FM 并将结果返回到 Excel 簿。下面是示例代码:

       ' Logging in
      
         Dim retcd        As Boolean
         Dim SilentLogon  As Boolean
         Set LogonControl = CreateObject("SAP.LogonControl.1")
         Set objBAPIControl = CreateObject("SAP.Functions")
         Set R3Connection = LogonControl.NewConnection
         R3Connection.Client = "700"
         R3Connection.ApplicationServer = "server_address" 
         R3Connection.Language = "EN"
         R3Connection.User = "sap_user"
         R3Connection.Password = "sap_pass"
         R3Connection.System = "system_id"
         R3Connection.SystemNumber = "sys_num"
         R3Connection.UseSAPLogonIni = False
         retcd = R3Connection.Logon(0, SilentLogon)
         If retcd <> True Then MsgBox "Logon failed": Exit Sub
      
         ' Declaring FM interface
      
          objBAPIControl.Connection = R3Connection
          Set objgetaddress = objBAPIControl.Add("ZNM_GET_EMPLOYEE_DETAILS")
          Set objkunnr = objgetaddress.Tables("ET_KUNNR")
          Set objaddress = objgetaddress.Tables("ET_CUST_LIST")
      
          ' Filling select-options values table from sheet
      
          Dim sht As Worksheet
          Set sht = ThisWorkbook.ActiveSheet
          If sht.Cells(6, 2).Value <> " " Then
          objkunnr.Rows.Add
          objkunnr.Value(1, "SIGN") = sht.Cells(6, 2).Value
          objkunnr.Value(1, "OPTION") = sht.Cells(6, 3).Value
          objkunnr.Value(1, "LOW") = sht.Cells(6, 4).Value
          objkunnr.Value(1, "HIGH") = sht.Cells(6, 5).Value
          R3Connection.Logoff
      

    附:要使所有这些在您的 VBA 项目中工作,您应该添加对 SAP ActiveX 控件的引用,这些控件位于 %ProgramFiles%\SAP\FronEnd\SAPgui 目录中:

    • wdtaocxU.ocx
    • wdtfuncU.ocx
    • wdtlogU.ocx
    • wdobapiU.ocx

    所以你的 VBA 项目的引用列表应该是这样的

    【讨论】:

    • 感谢 Suncatcher 花时间帮助我。我有三个问题要问您: BAPI 和启用远程功能的 FM 有什么区别?这些方法中的任何一种都可以从任何 SAP 事务中读取数据吗?我工作的公司中的每个员工都可以访问特定的 SAP 事务,具体取决于员工角色,因此我需要请求访问开发人员事务
    • 我需要访问哪些交易?
    • 关于您的问题: 1. 在您的任务上下文中 - 没有区别,在其他情况下请阅读 help。 2.不,请仔细阅读我的介绍。 3. 不,请仔细阅读我的介绍。您需要为每个员工 tcode 找到等效的 BAPI 或编写自己的包装器。
    【解决方案2】:

    除了 Excel 解决方案,您还可以尝试这个我很久以前创建并多次使用的开源 MS Access 应用程序: https://blogs.sap.com/2013/08/16/read-data-from-sap-tables-into-ms-access-2003-database/

    【讨论】:

    • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    猜你喜欢
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多