IDOCIDoc是 SAP 提供系统集成专用的数据/消息格式。
它几乎可以传送任何 SAP 应用数据。
IDocs以文本字符为基础,因而编制方便。
IDocs中的信息从记录类型上分为控制记录、数据记录和状态记录3种。
控制纪录主要是文本信息,如IDoc, 类型、发送/接收方信息以及文本标识;数据纪录为管理和实际数据部分;状态纪录用来追踪文本传递各点的状态,如状态码、系统时间、错误标识等。
功能:向外部系统发送数据从外部接收数据。
创建IDOC:第一步:WE31 创建IDOC所包含的字段.第二步:WE30 创建IDOC 把Segment分配给IDOC第三步:WE81 创建信息类型第四步:WE82 把IDOC类型与信息类型对应.第五步:WE57 Assign Message & Idoc Type to a Function Module for Data Process 第六步:SM59 Define a RFC connection for Idoc transfer第七步:WE21 Define a Port ( Assign a RFC destination which created in SM59 ) 第八步:WE41/42 Creat Process Code第九步:WE20 Define a Partner Profiles( Also creat a Outbound parameters with Port, or Inbound parameters with Process code )管理IDOC:WE02 显示IDOC,可以根据时间,IDOC类型查找IDOC,查看成功,出错信息。
WE46 IDOC管理(出\入)WE60 IDOC类型文档(可以查看IDOC结构,和每个字段的描述.WE19 根据IDOC号进行IDOC处理,可以修改IDOC值进行补发动作,处理分为内向和外向。
消息配置:WE20 配置伙伴消息进和出IDOC类型WE21 配置伙伴,BAPI和RFC和ALE和EXIT的区别BAPI和RFC不是同一个层次上概念,不能说从字面上看到BAPI函数和RFC函数就认为他们之间有必然的联系和区别。
打个比如,问一个问题:人可以分为哪几类,答曰:男人和老人,呵~~,大家都知道,男人是基于性别来说的,老人是基于年龄的。
BAPI是SAP提供的基于业务对象的函数,关键是它们处理的对象是R/3的业务相关business object),比如单据类销售订单,组织:公司等,它们是一系列实体。
RFC则是一种系统间通讯的方式(Remote Funciton Call),一个男人可能同时也是一个老人,一个BAPI函数往往能是一个RFC函数(我不知道是不是所有BAPI都可以有基于RFC技术来调用,但是至少也可以说大部分吧,VB里面用BAPI,就是因为这个BAPI函数具有RFC的特性)BAPI是个SAP里一个很好的思想,把业务对象都对象化了。
刚学ABAP/4时,并不能理解SAP所说”ABAP/4”中的‘4’,而觉得它更像是一种脚本语言,顶多也就是和C一样,但是自从我接触了BAPI之后,我才体会到SAP说ABAP是种4G语言的确不虚。
当在外部调用BAPI的时候,比如VB,就可以把SAP里的诸如订单,物料,员工,工厂等作为一个对象来处理,而且这种处理又是那么的简单,可能只要几句代码就可以了,最关键就是:1.收集BAPI函数所要的数据,也就是BAPI输入参数,VB也好,SAP本身的 Screen也好,甚至Web 页面也好,只不过是一个数据收集器!(要作一些必要的数据检查保证它们是正确的,不过即使不正确也没有关系,BAPI会返回错误信息)收集完成了,就送给BAPI作为参数,剩下的事都是BAPI给做了,你就不用管了! 2.接收BAPI返回的信息,也就是BAPI输出参数,并把它们“翻译”成恰当的形式给表达给用户。
se37写出来的叫function,其中可以远程调用的叫rfc,remote-enabled function,abap语法和输入输出参数就会有一些限制。
bapi是sap做好的实现特定业务操作的rfc。
idoc是基于sap自己的类似xml格式的文档数据交换的方式。
rfc必须在线的方式调用,一般做同步的,idoc基于文档,可以实现异步的。
RFC是面向过程的,调用简单直接;BAPI是面向对象的,有属性、有方法、有事件,更加复杂和丰富,更能反映SAP的业务应用,而BAPI方法的构造是基于RFC的,你也可以认为BAPI封装了RFC我觉得RFC在应用时最为灵活。
IDOC是SAP标准的文件交换格式,SAP已经有了大量的Function Module来处理和传递IDOC,特别是对于要和其它系统交换数据时,配合一些系统如biztalk server,IDOC会显得非常的方便,开发的工作量也是最小的。
RFC的话,如果配合SAP的BDC使用的话,或者你是一个ABAP的高手的话,RFC也是很灵活的。
至于BAPI的话,我觉得SAP的bapi概念很好,但是接口很不完善,很多数据无法通过SAP 本身的BAPI完成,得自己来做开发。
对于bapi和rfc到底那个好用,我觉得没什么定论。
有时bapi好用,有时rfc好用。
bapi好用在于,其效率相对比较高,这个主要体现在有些bapi是用direct input的方式写的,效率高。
但你如果用rfc写也有他的好处,当你写的不只是一个luw时,而每个luw都比较简单,在这种情况下就用rfc开发比较快。
SAP的idoc文件替代了edi文件的作用。
ale是一种通讯的模式。
bapi,一种函数,sap提供一大堆,用于主要的业务流程的处理rfc,一种函数,用于与外部程序调用应该说RFC是其它内容的基础,它是一个Function module,可以被远程调用。
而BAPI本身就是一个RFC,但它被作为BO的Interface,作用更进一步,除了BAPI文档中提到的内容外,还可以作为ALE/IDOC的开发基础。
ALE是R/3系统之间的应用层数据交换,至于用什么,就看具体配置了,比如可以用IDOC,同步/异步BAPI,甚至用EDI。
非SAP系统无法用ALE来实现。
至于数据传输的方式,可以是IDOC(底层是用RFC来实际的),也可以是EDI,所以说IDOC /EDI实际上是数据的载体.SAP接口(ALE/IDocs、BAPI)ALE/IDocs是SAP公司为SAP R/3 R4.6C版本所提供的接口机制,目前应用最为广泛。
在R4.0以后的版本中,又添加了技术上先进的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系统的标准的整合方式。
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与第三方进行有效整合的基础。