Excel如何与R3进行数据交互

SAP/R3由于其强大的可扩展性,用户可以很轻松的运用多种语言工具(Java, Delphi, DoNet)、手段做SAP的外围工作,诸如在办公系统里进行流程审核,然后通过接口将流程数据传输到SAP等等。Excel由于其优秀的灵活性和易用性已成为国内最受欢迎的表格工具,很多ERP软件、供应链软件等商业软件,都能找到借鉴或者使用Excel的痕迹。因此,利用ExcelR3的数据读取出来,然后进行报表展示、或者深加工处理,然后将处理完之后的数据再写入R3系统,能很好地弥补R3用户界面的不友好性及R3操作不便性,同时还能更好地提高业务处理效率。本文讨论的是Excel如何与R3进行数据交互,包括Excel读取R3数据和Excel写入R3数据两部分内容。

1、 ExcelR3数据交互原理

Excel

SAP/R3

SAPLogonControl

RFC Read Data

RFC Write Data

ExcelSAP/R3通信有多种手段,本文只讨论RFC的实现方式。Excel调用SAPLogonControl进行连接SAP/R3操作,连接成功后通过在R3预编制好的RFC读取数据函数获取R3系统数据,也可以通过预编制好的RFC写数据函数,将数据写入R3系统。

2、 ExcelR3数据交互实现

限于篇幅,本文不讨论在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、 ExcelR3数据交互难点

你可能感兴趣的:(编程,工作,Excel,F#,Delphi)