2017-01-02 202 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