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