使用RFC将Excel与SAP连接

时间:2017-01-02 03:55:05

标签: excel vba sap rfc saprfc

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

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

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

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

2 个答案:

答案 0 :(得分:4)

无法远程调用任何标准事务,因为它们中的大多数都是传统的,并且不会直接返回任何内容。 有几种方法可以从任何事务中获取数据,但它们超出了这个问题的范围。
从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
    
  4. P.S。要使所有这些在VBA项目中起作用,您应该添加对SAP ActiveX控件的引用,这些控件位于%ProgramFiles%\ SAP \ FronEnd \ SAPgui 目录中:

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

    因此,您的VBA项目的引用列表应如下所示

    enter image description here

答案 1 :(得分:0)

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