SAP/R3由于其强大的可扩展性,用户可以很轻松的运用多种语言工具(Java, Delphi, DoNet等)、手段做SAP的外围工作,诸如在办公系统里进行流程审核,然后通过接口将流程数据传输到SAP等等。Excel由于其优秀的灵活性和易用性已成为国内最受欢迎的表格工具,很多ERP软件、供应链软件等商业软件,都能找到借鉴或者使用Excel的痕迹。因此,利用Excel将R3的数据读取出来,然后进行报表展示、或者深加工处理,然后将处理完之后的数据再写入R3系统,能很好地弥补R3用户界面的不友好性及R3操作不便性,同时还能更好地提高业务处理效率。本文讨论的是Excel如何与R3进行数据交互,包括Excel读取R3数据和Excel写入R3数据两部分内容。
1、 Excel与R3数据交互原理
|
Excel |
|
SAP/R3 |
|
SAPLogonControl |
|
RFC Read Data |
|
RFC Write Data |
Excel与SAP/R3通信有多种手段,本文只讨论RFC的实现方式。Excel调用SAPLogonControl进行连接SAP/R3操作,连接成功后通过在R3预编制好的RFC读取数据函数获取R3系统数据,也可以通过预编制好的RFC写数据函数,将数据写入R3系统。
2、 Excel与R3数据交互实现
限于篇幅,本文不讨论在R3里面RFC函数如何编写,关于RFC函数编写问题,大家可以参考ABAP编程。这里,先建立一个SAPConnector基础类,类图如下:
|
SAPConnector,类名 | |
|
+Boolean LogOnWithDialog() |
弹出R3登录对话框,用户正确输入用户名和密码后即可登陆R3,连接成功返回T,否则F |
|
+Boolean LogOff() |
注销成功返回T,否则F |
|
+Boolean IsConnected() |
判断Excel是否已经与R3建立连接,是返回T,否则返回F |
|
+Boolean LogOn(String user, String pwd) |
传入用户名和用户口令进行R3连接,连接成功返回T,否则F |
SAPConnector的具体代码如下:
|
Option Explicit '登陆到SAP R3 Public Function LogOn(strUser As String, strPwd As String) As Boolean Dim strStatus As String Dim blnResult As Boolean Dim oLogon As Object ' On Error GoTo Handle ' Set oLogon = CreateObject("SAP.LogonControl.1") Set oConnection = oLogon.NewConnection '设置各集团号的相关信息 oConnection.Client = “修改为具体的配置信息” oConnection.Language = “修改为具体的配置信息” oConnection.SystemNumber = “修改为具体的配置信息” oConnection.ApplicationServer = “修改为具体的配置信息” oConnection.User = strUser oConnection.Password = strPwd 'connect blnResult = oConnection.LogOn(0, True) blnConnected = blnResult LogOn = blnResult Exit Function Handle: MsgBox Err.Description, vbOKOnly + vbCritical, str_Title blnConnected = False LogOn = False End Function
'登录到R3,弹出登录对话框 Public Function LogOnWithDialog() As Boolean Dim strStatus As String Dim oLogon As Object
On Error GoTo ErrorHandler:
'Set oLogon = CreateObject("SAP.LogonControl.1") Set oLogon = New SAPLogonControl Set oConnection = oLogon.NewConnection Set oLogon = Nothing
blnConnected = oConnection.LogOn() LogOnWithDialog = blnConnected
Exit Function
'出错处理 ErrorHandler: MsgBox Err.Description, vbOKOnly + vbCritical, str_Title blnConnected = False LogOnWithDialog = False End Function
'logoff release R3 connection Public Function LogOff() As Boolean If blnConnected = True Then oConnection.LogOff Set oConnection = Nothing End If End Function
Public Property Get IsConnected() As Boolean IsConnected = blnConnected End Property |
未完,待续。。。
3、 Excel与R3数据交互难点
本文探讨了如何利用Excel与SAP/R3系统进行数据交互,包括数据读取和写入两个方面。通过Excel调用SAPLogonControl进行连接,并利用预设的RFC函数实现数据交换,有效提升了业务处理效率。
4340

被折叠的 条评论
为什么被折叠?



