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


要使用 SSIS 進行提取,需要能夠訪問後端系統。你可以使用 .NET 聯結器並編寫一個使用函式模組從 SAP 系統提取資料的 Windows 應用程式。

若要了解有關如何使用 .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

更新於: 2020-2-26

870 次瀏覽

你的 職業生涯從此開始

完成課程即可獲得認證

開始行動
廣告
© . All rights reserved.