如何使用 .NET 提供程式從 SAP 中提取資料。


要透過 SSIS 提取,你需要有權訪問後端系統。你可以使用 .NET 連結器並編寫 Windows 應用程式,該應用程式會使用函式模組從 SAP 系統中提取資料。

如需瞭解如何使用 .NET 連結器連線 SAP 的更多資訊,你可以參考這篇部落格- https://blogs.sap.com/2013/02/14/connecting-to-sap-with-nco-3/


藉助 BAPI,你可以允許外部應用程式訪問 R/3 系統中的業務流程和資料。以下程式碼用於呼叫 BAPI。首先,需要建立一個 IDestinationConfiguration 實現類-。

Imports SAP.Middleware.Connector
Public Class ECCDestinationConfig
   Implements IDestinationConfiguration
   Public Event ConfigurationChanged(ByVal destinationName As String, ByVal args As
RfcConfigurationEventArgs) Implements IDestinationConfiguration.ConfigurationChanged
   Public Function GetParameters(ByVal destinationName As String) As RfcConfigParameters Implements
IDestinationConfiguration.GetParameters
   Dim parms As New RfcConfigParameters
   Select Case destinationName
      Case "ECDCLNT140"
     parms.Add(RfcConfigParameters.AppServerHost, "10.1.1.1")
     parms.Add(RfcConfigParameters.SystemNumber, "00")
     parms.Add(RfcConfigParameters.SystemID, "ECD")
     parms.Add(RfcConfigParameters.User, "username")
     parms.Add(RfcConfigParameters.Password, "secret")
     parms.Add(RfcConfigParameters.Client, "140")
     parms.Add(RfcConfigParameters.Language, "EN")
     parms.Add(RfcConfigParameters.PoolSize, "5")
     parms.Add(RfcConfigParameters.MaxPoolSize, "10")
     parms.Add(RfcConfigParameters.IdleTimeout, "600")
    Case Else
 End Select
    Return parms
 End Function
   Public Function ChangeEventsSupported() As Boolean Implements IDestinationConfiguration.ChangeEventsSupported
      Return False
     End Function
    End Class

接下來,需要建立一個使用 .Net 3.0 連結器來呼叫 RFC 函式模組的 Web 服務。

Imports SAP.Middleware.Connector
   Module Driver
      Private _ecc As RfcDestination
      Sub Main()
         RfcDestinationManager.RegisterDestinationConfiguration(New ECCDestinationConfig)
         Try
         _ecc = RfcDestinationManager.GetDestination("ECDCLNT140")
         GetCompanyName()
      Catch ex As Exception
         System.Console.WriteLine(ex.Message)
         System.Console.ReadLine()
      End Try
      End Sub
      Private Sub GetCompanyName()
         System.Console.WriteLine(String.Format("Successfully connected to System {0} Client {1}.", _ecc.SystemID, _ecc.Client))
         System.Console.WriteLine("Enter a company ID:")
         Dim companyID As String = System.Console.ReadLine()
         While Not String.IsNullOrEmpty(companyID.Trim)
            Dim companyAPI As IRfcFunction =
           _ecc.Repository.CreateFunction("BAPI_COMPANY_GETDETAIL")
               companyAPI.SetValue("COMPANYID", companyID)
               companyAPI.Invoke(_ecc)
               Dim companyName As String =
           companyAPI.GetStructure("COMPANY_DETAIL").GetString("NAME1")
              If String.IsNullOrEmpty(companyName.Trim) Then
                 companyName = "Not found"
              End If
                 System.Console.WriteLine(companyName)
                 companyID = System.Console.ReadLine()
              End While
           End Sub
        End Module

更新時間:26-Feb-2020

870 次瀏覽

開啟您的 職業生涯

完成課程以取得認證

開始使用
廣告
© . All rights reserved.