如何使用 .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 次浏览

开启您的 职业生涯

完成课程以取得认证

开始使用
广告