主流系统
EAI
接口技术剖析:
SAP
作为目前
ERP
市场上最为领先的应用系统之一,一直以来,
SAP R/3
在提供
API
应用编程接口和接口工具方面也同样领先于其它
ERP
厂商。
ALE/IDocs
是
SAP
公司为
SAP R/3 R4.6C
版本所提供的接口机制,目前应用最为广泛。在
R4.0
以后的版本中,又添加了技术上先进的
BAPI
。本文作为系列介绍之一,对
ALE/IDocs
,
BAPI
以及其它可用的整合方式进行介绍。
1
、
ALE/IDocs
是什么?
ALE
是
Application Link and Enabling
的缩写,是
SAP
专门为
SAP
与
SAP
之间所设计的整合中间件。
IDocs
是中介文本
(Intermediate DOCument)
的缩写,是
SAP
提供的系统整合专用的数据
/
消息格式。
ALE
在
SAP 3.0
版本开始就作为
SAP
整个应用体系的一部分,为分布式数据交换提供了可靠安全的通讯机制。
ALE
的设计,原本作为两个
SAP
流程之间的一种消息传递服务
(Messaging Service)
,使
SAP
与
SAP
的业务流程之间企业数据能够有效的交换,为两个独立的
SAP
之间提供了的系统整合服务。不过,随着应用的发展,
ALE/IDocs
接口机制也已然成为与其它非
SAP
系统的标准的整合方式。
ALE
的设计结构可以分为三层,即应用层,数据
/
消息分配层和通讯层。通讯层是
SAP
整合机制的基础,它利用远程功能呼叫
RFC(Remote Function Call)
调用
SAP
系统的功能模块。
数据
/
消息分配层,主要提供三个关键服务:
按数据分配模型决定数据接收者。
消息的过滤和转换。
数据
/
消息的压缩,以提高传递效率。
应用层直接与
SAP
系统接口,生成或从其它系统接收含有路由信息的消息文本
IDocs
,包括消息接收者的姓名,要求发送的类型以及对消息进行处理的规则。
ALE
的机制代替了原来的
SAP
所提供的批数据通讯
BDC(Batch Data Communication)
方式。顾名思义,
BDC
为系统之间提供了简单的数据批处理服务,还不能作为一种中间件技术,它没有提供系统之间进行无缝整合所要求的纠错功能、系统管理和其它安全措施。总得说来,应用
SAP
的
ALE
机制进行
SAP
与
SAP
或非
SAP
系统整合有以下几个好处:
ALE
技术不受
SAP
版本升级的影响,它提供了版本向后兼容性。
ALE
定义于
SAP
应用层,与
SAP
的逻辑层相对独立,整个
ALE
中间件独立于发送和接收系统。
ALE
消息设计逻辑保证消息的
“
一次且只有一次
”
的消息传递。
ALE
采用
“
存储
-
发送
”
技术确保消息即使系统发生故障或接收方没有准备接收时也可以达到目的地。这样就保证接收方不至于收到重复消息。
ALE
也提供了
IDocs
管理功能。主要有文本缩减、文本版本控制以及文本数据过滤。三种控制机制使得
SAP
开发人员可以根据实际需要对
IDocs
文本在运行中进行动态处理。
ALE
提供了系统管理功能,允许对
ALE
系统进行启动
/
复位
/
恢复等系统操作,为开发人员提供了进一步的管理控制。
IDoc
几乎可以传带任何
SAP
应用的数据,是一种
“
外围
”
定义格式,与
SAP
的应用数据定义不直接相关。
IDocs
已经广泛应用于早期的
SAP-EDI
的数据交换,因而它的设计有点类似于
EDI
的标准,即
EDIFACT
标准。
IDocs
是以字符基础的,因而是可读的。它有三种纪录类型,即:
控制纪录
-
含文本信息,如
IDoc
类型,发送
/
接收方信息以及文本标识。
数据纪录
-
含管理和实际数据部分。
状态纪录
-
用来追踪文本传递各点的状态,如状态码,系统时间,错误标识等。
2
、
ALE/IDocs
的消息发送接收过程
下面对
ALE/IDocs
在系统整合过程中消息的实际传递进行介绍。
让我们首先看发送过程。
一个发送过程由事件触发,文本生成,数据打包以及交由传输媒介传递这四个步骤组成,具体如下:
应用系统事件触发
系统目标
(Objects)
的状态变化,用户自主活动或其它数据库特定变化等可以启动数据表的触发程序,从而进行数据传递的初始化工作,如数据准备。
生成主
IDoc
文本
(Master)
按标准格式生成主
IDoc
文件,包含所有可以传递数据
(
不分接收者
)
生成通讯
Idoc
从主
IDoc
中生成只与特定接收者有关的文本,通讯文本是主文本的子数据集
(Subset)
Idoc
发送
利用异步通讯方式将一定版本的
IDoc
传递到接收方。
下面,让我们看接收过程。
接收过程始于
SAP
系统从外部收到
IDoc
文本。接收过程的优点在于,接收方既可以是
SAP
系统,也可以是第三方系统,这也是
SAP
与第三方进行有效整合的基础。接收过程由以下三个步骤组成:
存储
Idoc-
将文本存储于数据库,并进行语法校验
邮件处理程序读取
Idoc--
一个专门设计的
IDoc
处理程序读取
IDoc
并产生
SAP
或其它系统所需的系统消息。多个程序可以同时运行。
生成系统文本
--
处理程序进一步生成系统文本供系统使用,并将结果信息存于
Idoc d
的状态纪录中。
3
、
BAPI
简介
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)--
触发以改变目标状态。
利用
BAPI
,开发人员可以实现对
BOR
进行实时访问,从而实现应用系统
(SAP-SAP)
之间在数据
/
逻辑层上的有效整合。
4
、应用
SAP-DCOM
接口
SAP
于
1998
首次提供
SAP-DCOM
接口,以满足各种桌面应用开发的要求。利用
DCOM
连接端口,开发人员可以利用
VB
,
C++
,以
DCOM
目标方式访问
SAP
数据。在
Web
应用上,可以用
VBScript, j avascript
以
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
用户来说,正确选择适用的整合技术是实现成功系统整合的关键。