VB.NET 连接 SAP RFC(SAP Connection 3.0)

来源:互联网 发布:淘宝企业店铺出售转让 编辑:程序博客网 时间:2024/05/14 13:03

  

SAP 3.0 定义: 

    引用:SAP.Middleware.Connector

    引用文件:sapnco,sapnco_utils

    Public Destination As RfcDestination     'SAP Connector3.0 的RFC源
    Public SapFunction As IRfcFunction       'SAP RFC函数调用

    Public table As IRfcTable                          '调用到的RFC SAP table

 

SAP 3.0 配置连接类:(也可以放在APP.Config里面)

  Public Class MyConfig
        Implements IDestinationConfiguration   '继承接口

        Public Function ChangeEventsSupported() As Boolean Implements SAP.Middleware.Connector.IDestinationConfiguration.ChangeEventsSupported
            Return False
        End Function

        Public Event ConfigurationChanged(destinationName As String, args As SAP.Middleware.Connector.RfcConfigurationEventArgs) Implements SAP.Middleware.Connector.IDestinationConfiguration.ConfigurationChanged  '事件

        Public Function GetParameters(destinationName As String) As SAP.Middleware.Connector.RfcConfigParameters Implements SAP.Middleware.Connector.IDestinationConfiguration.GetParameters
            Dim parms As RfcConfigParameters = New RfcConfigParameters()
            If ("dev_000".Equals(destinationName)) Then
                parms.Add(RfcConfigParameters.AppServerHost, "11,11,11,11")  'SAP主机IP
                parms.Add(RfcConfigParameters.SystemNumber, "00")  'SAP实例
                parms.Add(RfcConfigParameters.User, "user")      ' 用户名
                parms.Add(RfcConfigParameters.Password, "123")  '密码
                parms.Add(RfcConfigParameters.Client, "300")       ' Client
                parms.Add(RfcConfigParameters.Language, "EN")      '登陆语言
                parms.Add(RfcConfigParameters.PoolSize, "5")
                parms.Add(RfcConfigParameters.MaxPoolSize, "10")
                '  parms.Add(RfcConfigParameters.IdleTimeout, "60")

               parms.Add(RfcConfigParameters.Codepage, "8400")   ‘中文编码
                Return parms
            ElseIf ("prd_000".Equals(destinationName)) Then
                parms.Add(RfcConfigParameters.AppServerHost, "11,11,11,11")  'SAP主机IP
                parms.Add(RfcConfigParameters.SystemNumber, "00")  'SAP实例
                parms.Add(RfcConfigParameters.User, "user")      ' 用户名
                parms.Add(RfcConfigParameters.Password, "123")  '密码
                parms.Add(RfcConfigParameters.Client, "800")       ' Client
                parms.Add(RfcConfigParameters.Language, "EN")      '登陆语言
                parms.Add(RfcConfigParameters.PoolSize, "5")
                parms.Add(RfcConfigParameters.MaxPoolSize, "10")
                '  parms.Add(RfcConfigParameters.IdleTimeout, "60")

             parms.Add(RfcConfigParameters.Codepage, "8400")   ‘中文编码
                Return parms
            Else
                Return Nothing
            End If
        End Function

    End Class

 

SAP3.0 连接SAP

    Public Sub ConnectSAP()

        Dim ID As IDestinationConfiguration = New MyConfig()         '继承
        RfcDestinationManager.RegisterDestinationConfiguration(ID)

        Try
            If GetSapValue = "DEV" Then
                Destination = RfcDestinationManager.GetDestination("dev_000")          '连接SAP, SAPConnector 3.0方式 DEV SYSTEM

            ElseIf GetSapValue = "PRD" Then
                Destination = RfcDestinationManager.GetDestination("prd_000")          '连接SAP, SAPConnector 3.0方式 PRD SYSTEM
            End If
        Catch ex As Exception
            MyMsgBox("提示", ex.Message.ToString)
            Exit Sub
        End Try

    End Sub

 

SAP 3.0 使用:

        Try
            SapFunction = Destination.Repository.CreateFunction("YRFC001")     '建立一个函数对象
            SapFunction.SetValue("P_MATNR", txtMaterialNo.Text)                    '传递参数
            SapFunction.SetValue("P_WERKS", "1000")

            SapFunction.Invoke(Destination)                                        '激活提交

            GetTable = SapFunction.GetTable("YTABLE")                   '返回表 The backend has added one more line to it.
                Catch ex As Exception
            MyMsgBox("提示", ex.Message.ToString)

            Exit Sub
        End Try

 

SAP 3.0客户端运行库:

     NCo303_Net40_x86    FOR.NET 4.0

 

相关文档:NCo_30_ProgrammingGuide

 

 

原创粉丝点击