2017-01-02 216 views
0

我需要知道如何使用RFC将Excel与SAP连接。我尚未设法使用迄今发现的代码将任何SAP数据导入Excel。使用RFC将Excel与SAP连接使用RFC

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

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

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

回答

0

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

  1. 你不需要特殊的帐户,你只需要为RFC-调用适当的授权,主要包括S_RFCauthorization 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 
    

P.S.对于这一切都在您的VBA项目的工作,你应该添加对SAP的ActiveX控件,分别位于的%ProgramFiles%\ SAP \ FronEnd \ SAPGUI目录:

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

所以您的VBA项目的引用列表看起来应该像这样

enter image description here

+0

感谢森卡彻抽出时间来帮我。我有三个问题需要帮助:BAPI和支持远程的FM有什么区别?任何这些方法都可以从任何SAP事务中读取数据吗?我工作的公司中的每个员工都可以根据员工角色访问特定的SAP事务,因此我需要请求访问开发人员事务 – Arturo

+0

我需要访问哪些事务? – Arturo

+0

在你的问题中:1.在你的任务中 - 没有区别,在其他情况下阅读[help](https://help.sap.com/saphelp_nw73ehp1/helpdata/en/c2/0da27f769e4c7d99f119110f6a24f4/frameset.htm)。不,请仔细阅读我的介绍。不,请仔细阅读我的介绍。您需要为每个员工tcode找到相应的BAPI或编写自己的包装。 – Suncatcher