理论教育 IDOC接口的使用与优化

IDOC接口的使用与优化

时间:2023-06-12 理论教育 版权反馈
【摘要】:应用层直接与SAP系统接口,生成或从其他系统接收含有路由信息的消息文本IDocs,包括消息接收者的姓名,要求发送的类型以及对消息进行处理的规则。直接从应用发送到IDoc接口,这些处理主要是通过以下函数控制IDocs接收过程,如图3-4所示:●标准IDoc:MASTER_IDOC_DISTRIBUTE/COMMUNICATION_IDOC_CREATE●自定义IDoc:L_IDOC_SEND/L_IDOC_SEGMENT_CREATE/L_IDOC_HEADER_CREATE图3-4接收过程始于SAP系统从外部收到IDoc文本。

IDOC接口的使用与优化

IDoc是SAP提供系统集成专用的数据/消息格式。它几乎可以传送任何SAP应用数据。IDocs以文本字符为基础,因而编制方便。IDoc中的信息从记录类型上分为控制记录、数据记录和状态记录。控制记录主要是文本信息,如IDoc类型、发送/接收方信息以及文本标识;数据记录为管理和实际数据部分;状态记录用来追踪文本传递各点的状态,如状态码、系统时间、错误标识等。

适用于中间文件的IDoc定义格式,是SAP企业系统软件的应用程序之间或SAP应用程序与外部程序之间电子数据交换用的标准数据格式。IDoc是SAP的应用程序连接系统的数据转换工具。IDoc用于数据异步处理:每个IDoc生成独立的文本文件,无须连接中央数据库,就可以传送给要求数据的工作平台。SAP的另一个系统业务应用程序接口则用于数据同步处理。

一个大公司的网络操作环境很可能需要各地分公司的电脑都能与公司的主数据库连接,这些电脑很可能是用不同的硬件或操作系统平台。因为IDoc对数据进行了压缩,所以它无须变换格式就能在不同的操作系统上使用。IDoc类型指定不同种类的数据,比如购买订单或发票,它们可能被划分为更细小的数据种类,即信息类型。更详细的分类意味着一个IDoc类型只能储存某一特定交易所需的数据,这样既提高了工作效率又降低了资源损耗。在事务处理过程中,IDoc随时会生成。例如,在运货交易过程中,可能会产生打印货运清单所需数据的IDoc。客户在SAP系统执行完一项交易后,在数据传送过程中和经过ALE通信层时,一个或多个IDoc会生成。通信层执行远程功能调用,使用由客户模式规定的端口定义和RFC界面定义。IDoc的接收者可能为R/3、R/2或一些外部系统。

1.IDoc数据传输

ALE的设计结构可以分为三层,即应用层、数据/消息分配层和通信层。通信层是SAP整合机制的基础,它利用远程函数调用RFC(Remote Function Call)调用SAP系统的函数模块。

数据/消息分配层,主要提供三个关键服务:

■按数据分配模型决定数据接收者。

■消息的过滤和转换。

■数据/消息的压缩,以提高传递效率。

应用层直接与SAP系统接口,生成或从其他系统接收含有路由信息的消息文本IDocs,包括消息接收者的姓名,要求发送的类型以及对消息进行处理的规则。

ALE的机制代替了原来的SAP所提供的批数据通信BDC(Batch Data Communication)方式。顾名思义,BDC为系统之间提供了简单的数据批处理服务,还不能作为一种中间件技术,它没有提供系统之间进行无缝整合所要求的纠错功能、系统管理和其他安全措施。总体说来,应用SAP的ALE机制进行SAP与SAP或非SAP系统整合有以下几个好处:

1)ALE技术不受SAP版本升级的影响,它提供了版本向后兼容性。ALE定义于SAP应用层,与SAP的逻辑层相对独立,整个ALE中间件独立于发送和接收系统。

2)ALE消息设计逻辑保证“一次且只有一次”的消息传递。ALE采用“存储-发送”技术确保消息可以在系统发生故障或接收方没有准备接收的情况下也可以到达目的地。这样就保证接收方不至于收到重复消息。

3)ALE也提供了IDocs管理功能,主要有文本缩减、文本版本控制以及文本数据过滤。这三种控制机制使得SAP开发人员可以根据实际需要对IDocs文本在运行中进行动态处理。

4)ALE还提供了系统管理功能,允许对ALE系统进行启动、复位、恢复等系统操作,为开发人员提供了进一步的管理控制。

IDocs几乎可以传带任何SAP应用的数据,是一种“外围”定义格式,与SAP的应用数据定义不直接相关。IDocs已经广泛应用于早期的SAP-EDI的数据交换,因而它的设计有点类似于EDI的标准,即EDIFACT标准。

IDocs是以字符为基础的,因而是可读的。它有三种记录类型,即:

■控制纪录:含文本信息,如IDoc类型、发送/接收方信息以及文本标识。

■数据纪录:含管理和实际数据部分。

■状态纪录:用来追踪文本传递各点的状态,如状态码、系统时间、错误标识等。

2.ALE/IDocs的消息发送接收过程

EDI的交换有两个流程:

■外发(Outbound process或简称OP)。

■接收(Inbound process或简称IP)。

978-7-111-50126-8-Chapter03-3.jpg

图3-3

SAP也是完全遵循着EDI的这两个流程,并做了相应的实现。下面对ALE/IDocs在系统整合过程中消息的实际传递进行介绍。

■IDocs发送过程

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

●应用层:生成应用数据,应用系统事件触发。

通过应用模块的消息控制间接传送到IDoc接口,系统目标(Objects)的状态变化、用户自主活动或其他数据库特定变化等可以启动数据表的触发程序,从而进行数据传递的初始化工作,如数据准备。

●ALE层:创建出站IDoc,生成主IDoc文本(Master)。

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

●IDoc从SAP传送到操作系统。

按照准格式生成主IDoc文件被发送到操作系统层。

●通信层:寻找伙伴和端口生成通信Idoc。

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

●IDoc发送

利用异步通信方式将一定版本的IDoc传递到接收方。EDI文件被传送到业务伙伴处(所以业务伙伴可以没有SAP系统,因为EDI是个标准)。

直接从应用发送到IDoc接口,这些处理主要是通过以下函数控制IDocs接收过程,如图3-4所示:

●标准IDoc:MASTER_IDOC_DISTRIBUTE/COMMUNICATION_IDOC_CREATE

●自定义IDoc:L_IDOC_SEND/L_IDOC_SEGMENT_CREATE/L_IDOC_HEADER_CREATE

978-7-111-50126-8-Chapter03-4.jpg

图3-4

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

●ALE层:创建入站IDoc并通过伙伴参数文件查找IDoc处理类型,存储Idoc。

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

●ALE层:创建入站IDoc并通过伙伴参数文件查找IDoc处理类型。

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

●IDoc传送到SAP层。

被处理后的IDoc被传送到SAP系统应用层。(www.daowen.com)

●应用层:写入文档,生成系统文本。

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

978-7-111-50126-8-Chapter03-5.jpg

图3-5

3.IDoc的特性

每个IDoc都被分派了唯一的号码,用于跟踪及以后参考所用。IDoc包含多个段(Segment),而段内包含有多个字段。IDoc包含有三种类型的记录:一条控制记录,一条或多条数据记录,一条或多条状态记录。

4.端口(Port)

端口用于外发流程,它判断EDI子系统程序名称、IDoc文件传送到操作系统的目录,IDoc文件名和RFC目的地。RFC目的地用于定义远程系统通信连接的特性以及需要调用何种功能。

5.PartnerProfile

Partner Profile指定在外发过程中所用的各类组件(业务伙伴号、IDoc类型、信息类型、端口、处理码等),通信方式(异步或同步)以及当出现错误时通知何人。

6.IDoc的结构

作为一种传输媒介,IDoc文件的结构包含特定的格式,如图3-6所示。

IDoc结构包括一条控制记录、一条或多条数据记录以及一条或多条状态记录。控制记录(Control Record)也叫IDoc头,里面包括IDoc的发送者、接收者等信息。数据记录(Data Record)中包括具体的数据信息,比如一个订单的数据信息。

978-7-111-50126-8-Chapter03-6.jpg

图3-6

状态记录(Status Record)记录IDoc从应用到其送达方的当前状态信息,如“已创建”“准备发送”等,是对IDoc进行控制的重要信息。

■控制记录(Control Record)

每个IDoc的Control Record可以认为是文件头,它包含发送及接收端、IDoc ID、发送日期等信息,当IDoc被触发时,SAP会首先检查这些信息是否正确,如图3-7所示。

■数据记录(Data Record)

多个数据段(Segment)组成的一个层次结构,装载传输的数据,且每个数据段不能超过1000个字符。当发送或接收这些IDoc时,数据将会被解析到这些特定层级关系的数据段中,如图3-8所示。

■状态记录(Status Record)

用来记录IDoc从发送方到接收方的历史状态信息。通常,如果是自行开发的IDoc,可以在处理IDoc逻辑的函数中加入自己定义的状态,以此满足不同的需求,如图3-9所示。

注:状态信息由状态维护事务(WE47)维护。

978-7-111-50126-8-Chapter03-7.jpg

图3-7

978-7-111-50126-8-Chapter03-8.jpg

图3-8

978-7-111-50126-8-Chapter03-9.jpg

图3-9

7.IDoc类型

IDoc类型是IDoc文件的结构定义和说明。在SAP中,不同的业务对象有不同的IDoc类型,这些类型可以根据不同的传输格式或数据要求多个并存,如图3-10所示。

978-7-111-50126-8-Chapter03-10.jpg

图3-10

注:IDoc类型由事务(WE30)维护。

图3-10中的示例是自定义委外加工BOM的IDoc类型定义:

E1STZUM:委外BOM的Header资料。

E1STPOM:委外BOM的Item资料。

E1CUKBM等:每个Item的装配组件资料。

8.消息类型(MessageType)

消息类型是指IDoc类型的视图,一个消息类型可以包含多个IDoc类型。

注:消息类型由事务(WE81和WE82)维护。

事务WE81用于定义消息类型。

事务WE82用于分配IDoc类型给消息类型和不同IDoc版本(Release)。

9.数据段(Segment)

数据段是IDoc的结构组件,这些数据段包含特定的数据类型,每个字段可以参照SAP数据字典,也可以自定义字段,保存后系统自动创建版本号,如图3-11所示。

978-7-111-50126-8-Chapter03-11.jpg

图3-11

维护数据段事务WE31。

注:IDoc是基于SAP中类似XML格式的文档进行数据交换的方式。RFC则用于在线的方式调用,一般做同步的处理,IDoc基于文档,可以实现异步的处理。

IDoc可以理解为是SAP为了同外部系统或内部不同Client通信所采用的一种数据结构,不同的IDoc类型定义了不同的格式,如关于物料主数据的IDoc,BOM、采购订单、销售订单等相关的IDoc;ALE主要用于内部数据交换,如不同Client;EDI用于同外部系统的交换数据。它们的本质都是基于IDoc。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈