利用Visual Basic开发SAP接口程序初探
2008-02-23 06:39:07来源:互联网 阅读 ()
SAP R/3的接口方式主要有RFC、IDOC、BAPI三种,本文要介绍的是相对比较简单的RFC(Romote Function Call,远程函数调用)。SAP系统RFC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。下面是RFC调用的模型:
本文主要不是讨论SAP R/3函数的开发,因为使用SAP的公司一般都有专门的ABAP开发人员。大家如果有机会接触ABAP平台,可以通过事务代码SE37进入ABAP开发平台的"函数编制器"进行函数开发测试。如图:
下面主要以VB为例介绍一下SAP接口RFC的开发思路。在SAP客户端SAP Gui Client安装的时候,注意选择安装附带的SDK包(最保险是选择完全安装)。RFC接口程序开发,主要用的是"SAP.Functions"这个控件,通过控件在外部程序模拟SAP Gui Client的用户登录和函数调用,然后返回函数的值。请看下面的程序片段和重点注解(尤其是test_Click()):
Private Sub Command1_Click()
' 定义R/3用户名和密码变量(用户名应由SAP管理员开运行函数的权限)
Dim logname As String * 22, password As String * 22
Call logonr3(logname, password) ' 调用SAP登录界面程序
If logflag Then ' 调用生产、开发系统开关
StatusBar1.Visible = True
StatusBar1.SimpleText = "正在登录SAP R/3系统..."
Dim R3AppServer As String, R3Client As String, R3SystemNo As String
If Form2.opPRD.Value Then
' 以下服务器参数请根据客户配置情况更改
R3AppServer = "10.3.1.4" ' 生产系统服务器IP
R3Client = "800" '生产系统集团代码
R3SystemNo = "00" '生产系统号
Else
R3AppServer = "10.3.3.1" ' 开发系统服务器IP
R3Client = "101"
R3SystemNo = "00"
End If
Unload Form2 ' 释放 Form2 , 所有控件及值不可用
Set Functions = CreateObject("Sap.Functions") ' 创建RFC的本地对象
Set Connect = Functions.Connection ' 设置连接
Connect.ApplicationServer = R3AppServer ' 赋值服务器IP
Connect.Client = R3Client ' 赋值SAP集团代码
Connect.Language = "ZH" ' 置SAP系统界面中文
Connect.User = Trim(logname) ' 赋值SAP登录用户名
Connect.password = Trim(password) ' 赋值SAP登录用户密码
Connect.SystemNumber = R3SystemNo ' 赋值SAP系统号
If Not Connect.Logon(0, True) Then ' 软件登录SAP并判断
MsgBox "登录SAP R/3失败,请重新登录!", vbOKOnly vbExclamation, "系统提示"
Command1.SetFocus
Else ' 登录SAP成功
Command1.Enabled = False
Command2.Enabled = True
test.Enabled = True
End If
StatusBar1.SimpleText = ""
StatusBar1.Visible = False
End If
End Sub
Private Sub Command2_Click() ' 注销SAP登录
Connect.LogOff
Command2.Enabled = False
Command1.Enabled = True
test.Enabled = False
End Sub
Private Sub Command3_Click() ' 退出SAP接口演示程序
If Form1.Command2.Enabled Then
MsgBox "退出前请断开SAP R/3系统!", vbOKOnly vbInformation, "系统提示"
Else
End
End If
End Sub
Private Sub Form_Load()
Command2.Enabled = False
test.Enabled = False
logoflag = False
End Sub
Private Sub test_Click() ' SAP RFC远程调用处理主演示
Dim GetCustomers As Object
Dim Customers As Object
Dim i As Integer
' 通过RFC接口远程运行SAP内部函数RFC_CUSTOMER_GET
' 赋要调用的SAP内建函数名
Set GetCustomers = Functions.Add("RFC_CUSTOMER_GET")
GetCustomers.Exports("KUNNR") = "0000000103" ' 向函数入口赋值(客户代码)
' 向函数入口赋查询表名称
Set Customers = GetCustomers.Tables("CUSTOMER_T")
If GetCustomers.Call Then ' 调用成功遍历显示客户所有信息条目
For i = 1 To Customers.rowcount
MsgBox Customers(i, "KUNNR")
Next i
Else
MsgBox " 搜索出错! 出错信息: " GetCustomers.Exception
End If
End Sub
SAP的RFC调用是其接口技术中最简单和易用的一种方式,该方式开发比较简便,特别适合于外部报表开发,但对于大数据量的查询效率相对较低。大家在熟练掌握后,可以进一步学习高级的IDOC和BAPI接口开发技术。
上一篇: 在VB环境中操作三维模型的实现方法
下一篇: 基于Visual Basic 6的网络程序设计
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:定时提醒你休息的脚本
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash