我如何通过将某个类/接口/与其命名空间SAP.NET封装在一起来进行引用

请注意,您必须确保使用的是.NET Framework,而不是.NET 4.0客户端。

首先,创建一个实现IDestinationConfiguration的类。 VB.NET代码如下所示。

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

然后,创建一个使用nco3.0对象模型的web应用程序、控制台应用程序、web服务等等。调用支持RFC的函数模块非常简单。请参见下面的控制台应用程序示例:

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
您不必定义输入或输出结构,这种方式非常贴心。这些都是在幕后完成的。