作为目前 ERP 市场上最为领先的应用系统之一,一直以来,SAP R/3 在提供 API 应用编程接口和接口工具方面也同样领先于其它ERP厂商。ALE/IDocs 是 SAP 公司为 SAP R/3 R4.6C 版本所提供的接口机制,目前应用最为广泛。在 R4.0 以后的版本中,又添加了技术上先进的 BAPI。本文作为系列介绍之一,对 ALE/IDocs, BAPI 以及其它可用的整合方式进行介绍。
1.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 系统的标准的整合方式。
1.2 ALE/IDocs 的消息发送接收过程
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 类型,发送/接收方信息以及文本标识。
数据纪录-含管理和实际数据部分。
状态纪录-用来追踪文本传递各点的状态,如状态码,系统时间,错误标识等。
下面对 ALE/IDocs 在系统整合过程中消息的实际传递进行介绍。
让我们首先看发送过程。一个发送过程由事件触发,文本生成,数据打包以及交由传输媒介传递这四个步骤组成,具体如下:
应用系统事件触发
系统目标(Objects) 的状态变化,用户自主活动或其它数据库特定变化等可以启动数据表的触发程序,从而进行数据传递的初始化工作,如数据准备。
生成主 IDoc 文本(Master)
按标准格式生成主 IDoc 文件,包含所有可以传递数据(不分接收者)
生成通讯 Idoc
从主 IDoc 中生成只与特定接收者有关的文本,通讯文本是主文本的子数据集(Subset)
Idoc 发送
利用异步通讯方式将一定版本的 IDoc 传递到接收方
下面,让我们看接收过程。
接收过程始于 SAP 系统从外部收到 IDoc 文本。接收过程的优点在于,接收方既可以是 SAP系统,也可以是第三方系统,这也是 SAP 与第三方进行有效整合的基础。接收过程由以下三个步骤组成:
存储 Idoc-将文本存储于数据库,并进行语法校验
邮件处理程序读取 Idoc--一个专门设计的 IDoc 处理程序读取 IDoc 并产生 SAP 或其它系统所需的系统消息。多个程序可以同时运行。
生成系统文本--处理程序进一步生成系统文本供系统使用,并将结果信息存于 Idoc d 的状态纪录中。
1.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) 的概念,其定义结构由以下几部分组成:
l 基本数据--所有对象类的通用属性,如目标标识和默认方法(Method) 。
l 接口界面—对象的方法(Method),事件(Event), 特征(Attributes) 。
l 关键域(Key Fields)--供 BOR中目标检索使用
l 方法(Methods)--对对象进行所要求的各种操作。
l 特征(Attibutes)--描述对象特征。
l 事件(Events)--触发以改变对象状态。
利用 BAPI,开发人员可以实现对 BOR 进行实时访问,从而实现应用系统(SAP-SAP)之间在数据/逻辑层上的有效整合。
1.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++。代理组件有以下属性:
l Client-要访问的 R/3 客户系统
l UserID-R/3 用户
l Password-用户密码
l Language-系统语言
l Destination-预先定义的目标名称
l 另外,每个组件具有以下方法:
l PutSeesionInfo()—设定系统一次调用的目标参数
l AdviceRfcGuiSink()—用于需要 SAPGUI 或 dubugging 的场合。
l CommitWork()-用于数据更新,无 implicit commit 的场合。
l InitKeys()-DCOM 目标键初始化
l DimAs()-返回 Microsoft ADO(Advanced Data Object) 纪录集(支持游标控制)。
l 其它从 R/3 BO 定义中继承的方法。
总起说来,SAP R/3作为一个相对灵活的 ERP 系统,利用上述的各种整合技术能够实现SAP系统之间以及SAP与其它系统之间的数据/过程的整合。当然,一个应用系统的高度客户化导致了系统整合的难度。随着系统功能的增加,多种可供采用的整合技术也就显得很有必要。对于SAP R/3 用户来说,正确选择适用的整合技术是实现成功系统整合的关键。