idoc 和 bapi 和 rfc 之间的区别

简介:

se37写出来的叫function,其中可以远程调用的叫rfc,remote-enabled function,abap语法和输入输出参数就会有一些限制。bapi是sap做好的实现特定业务操作的rfc。idoc是基于sap自己的类似xml格式的文档数据交换的方式。rfc必须在线的方式调用,一般做同步的,idoc基于文档,可以实现异步的。

idoc是基于sap自己的类似xml格式的文档数据交换的方式。rfc必须在线的方式调用,一般做同步的,idoc基于文档,可以实现异步的。

idoc是系统间利用message传递,不涉及底层函数调用,idoc的处理方式是用edi来执行的.
你可以理解为IDOC是SAP为了同外部系统或内部不同client通迅所采用的一种数据结构,不同的idoc type 定义了不同的格式,如关于material master data 的IDOC, BOM, PO,SO等相关的IDOC,, ALE 主要用于内部数据交换用的,如不同client, EDI用于同外部系统的交换数据,它们的本质都 是base on IDOC。。。idoc是基于sap自己的类似xml格式的文档数据交换的方式。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实 
际上是数据的载体。

专注于企业信息化,最近对股票数据分析较为感兴趣,可免费分享股票个股主力资金实时变化趋势分析工具,股票交流QQ群:457394862

本文转自沧海-重庆博客园博客,原文链接:http://www.cnblogs.com/omygod/archive/2009/06/12/1502191.html,如需转载请自行联系原作者
目录
相关文章
SAP QM初阶执行事务代码QDB1,报错- Sampling procedure NM000001 has no sampling scheme-
SAP QM初阶执行事务代码QDB1,报错- Sampling procedure NM000001 has no sampling scheme-
SAP QM初阶执行事务代码QDB1,报错- Sampling procedure NM000001 has no sampling scheme-
|
JavaScript 前端开发 Java
Objective-C协议(protocol)和委托(delegate)的基本概念(★firecat推荐★)
Objective-C协议(protocol)和委托(delegate)的基本概念(★firecat推荐★)
254 0
艾伟:[原创]谈谈WCF中的Data Contract(4):WCF Data Contract Versioning
软件工程是一门独特的工程艺术,需要解决的是不断改变的需求变化。而对于WCF,对于SOA,由于涉及的是对多个系统之间的交互问题,如何有效地解决不断改变的需求所带来的问题就显得更为重要:Service端版本的变化能否保持现有Consumer的正常调用,Consumer端的改变不至于影响对Service 的正常调用。
866 0
|
.NET
艾伟:[原创]谈谈WCF中的Data Contract(2):WCF Data Contract对Generic的支持
通过第一部分的介绍,我们可以体会到,WCF 的Data Contract在CLR Type和Neutral Contract之间搭建了一座桥梁,弥合了.NET世界和厂商中立世界的差异。通过WCF Data Contract我们将CLR Data Type暴露成一个厂商中立的数据结构的描述,同样通过WCF Data Contract我们将一个现有的CLR Data Type和既定的Neutral contract进行适配。
704 0
一起谈.NET技术,NHibernate3剖析:Mapping篇之ConfORM实战(4):ManyToMany语义
  ConfORM概述   如果你不熟悉ConfORM请查看前几篇文章,你可以到http://code.google.com/p/codeconform/获取ConfORM最新版本。   在Domain设计中经常使用集合,在.
1206 0
艾伟:[原创]谈谈WCF中的Data Contract(3):WCF Data Contract对Collection & Dictionary的支持
在本篇文章上一部分Order Processing的例子中,我们看到原本已Collection形式定义的DetailList属性(public IList DetailList),在Data Contract中却以Array的方式体现(public OrderDetail[] DetailList)。
839 0
一起谈.NET技术,NHibernate3剖析:Mapping篇之ConfORM实战(5):Component语义
  Component语义   使用ConfORM“映射”组件,我们无需特别设置,ConfORM内部会根据Domain定义来判定组件,一般而言,没有主键的类就是组件。 [Test]public void ComponentMappingDemo(){//show how work with comp...
980 0