技术开发 频道

SAP R/3 接口技术剖析

    3、BAPI简介

    一个发送过程由事件触发,文本生成,数据打包以及交由传输媒介传递这四个步骤组成,具体如下:

    应用系统事件触发
    系统目标(Objects) 的状态变化,用户自主活动或其它数据库特定变化等可以启动数据表的触发程序,从而进行数据传递的初始化工作,如数据准备。

    生成主IDoc文本(Master)
    按标准格式生成主IDoc文件,包含所有可以传递数据(不分接收者)

    生成通讯Idoc
    从主IDoc中生成只与特定接收者有关的文本,通讯文本是主文本的子数据集(Subset)

    Idoc 发送
    利用异步通讯方式将一定版本的IDoc传递到接收方。

    下面,让我们看接收过程。

     接收过程始于SAP系统从外部收到IDoc文本。接收过程的优点在于,接收方既可以是SAP系统,也可以是第三方系统,这也是SAP与第三方进行有效整合的基础。接收过程由以下三个步骤组成:

    存储Idoc-将文本存储于数据库,并进行语法校验

    邮件处理程序读取Idoc--一个专门设计的IDoc处理程序读取IDoc并产生SAP或其它系统所需的系统消息。多个程序可以同时运行。

    生成系统文本--处理程序进一步生成系统文本供系统使用,并将结果信息存于Idoc d的状态纪录中。

    BAPI是Business Application Programming Interface的缩写, 是SAP为3.0版本以上提供的基于企业目标(Business Object) 技术的接口应用界面。SAP在3.0版本以上采用了Object-oriented技术,逻辑定义了SAP R/3系统的所有功能目标,并且将所有的目标(Objects) 和BAPIs存储于企业目标库BOR(Business Objects Repository). SAP R/3 企业目标的目标类型(Object Type) 相当于目标设计语言中类(Class) 的概念,其定义结构由以下几部分组成:

    基本数据--所有目标类的通用属性,如目标标识和默认方法(Method) 。
    接口界面--目标的方法(Method), 事件(Event), 特征(Attributes) 。
    键(Key Fields)--供BOR中目标检索使用
    方法(Methods)-- 对目标进行所要求的各种操作。
    特征(Attibutes)-- 描述目标特征。
    事件(Events)-- 触发以改变目标状态。

    4、应用SAP-DCOM接口

    SAP于1998首次提供SAP-DCOM接口,以满足各种桌面应用开发的要求。利用DCOM连接端口,开发人员可以利用VB, C++,以DCOM目标方式访问SAP数据。在Web应用上,可以用VBScript, JavaScript 以DHTML方式页面访问,也可以用ASP访问数据。

    另外,利用DCOM也可以间接访问SAP的企业目标库BOR。上面提到的BAPI是SAP系统上专用的,在实际应用上不如DCOM来得广泛。DCOM端口主要有两个技术模块组成,一个是管理模块,另一个模块生成SAP BO的DCOM 代理组件(Proxy Components),生成的DCOM组件存放于C++。代理组件有以下属性:

    Client-要访问的R/3客户系统

    UserID-R/3用户

    Password-用户密码

    Language-系统语言

    Destination-预先定义的目标名称

    另外,每个组件具有以下方法:

    PutSeesionInfo()—设定系统一次调用的目标参数

    AdviceRfcGuiSink()—用于需要SAPGUI或dubugging的场合。

    CommitWork()-用于数据更新,无implicit commit的场合。

    InitKeys()-DCOM目标键初始化

    DimAs()-返回Microsoft ADO(Advanced Data Object) 纪录集(支持游标控制)。

    其它从R/3 BO定义中继承的方法。

    总起说来,SAP R/3 作为一个相对灵活的ERP系统,利用上述的各种整合技术能够实现SAP系统之间以及SAP 与其它系统之间的数据/过程的整合。当然,一个应用系统的高度客户化导致了系统整合的难度。随着系统功能的增加,多种可供采用的整合技术也就显得很有必要。对于SAP R/3用户来说,正确选择适用的整合技术是实现成功系统整合的关键。

    利用BAPI,开发人员可以实现对BOR进行实时访问,从而实现应用系统(SAP-SAP)之间在数据/逻辑层上的有效整合。
 

0
相关文章