SAP中IDOC和BAPI和RFC 之间的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAP中IDOC和BAPI和RFC 之间的区别相关的知识,希望对你有一定的参考价值。

参考技术A 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实
际上是数据的载体
参考技术B idoc是最老式的xml传递,是sap与其他系统或者自己的接口,但是不能监控结果
bapi是sap标准的函数,大部分是rfc类型的,可远程调用的函数(针对一些标准功能多些)
rfc就是rfc咯、、、

使用 SAP Java IDoc 类库解析 XML 格式的 IDoc

【中文标题】使用 SAP Java IDoc 类库解析 XML 格式的 IDoc【英文标题】:Parsing an IDoc in XML format using SAP Java IDoc Class Library 【发布时间】:2013-11-30 19:24:15 【问题描述】:

在未与 SAP 连接的系统中,我收到 XML 格式的 IDoc(如果有任何重要性,则为客户主文件 - DEBMAS07)。

1.是否可以在不连接 SAP 系统的情况下使用 Java IDoc 类库 (sapidoc3.jar) 读取此 XML 文档?

2。是否可以在不连接 SAP 系统的情况下使用 Java IDoc 类库 (sapidoc3.jar) 生成 XML 格式的 IDoc?

我还没有找到任何明确的例子来说明如何做到这一点,如何使用这个类,我发现的例子是使用需要连接到 SAP 的类。

【问题讨论】:

请参阅 SAP 连接是必需的,没有连接您无法阅读。 如果你能发布一个完整的答案,解释一切,我可以奖励你。 没有 SAP 连接是不可能的 只是出于好奇,如果您没有连接到 SAP,为什么您需要他们的课程?为什么不用别的东西来读取 XML? 解析和创建 IDocs 【参考方案1】:

没有相应的 IDoc 元数据,您无法将 XML 数据解释为 SAP IDoc。如果没有这个 IDoc 元数据,IDoc-XML 文档只是一些层次结构的字符串。

SAP Java IDoc 类库获取 IDoc 元数据的唯一方法是从某个 SAP 系统查询它 - 至少这对 JIDocLib 的当前版本 3.0.12 有效。因此,很遗憾,您的两个问题的答案都是:NO

当然,您可以像任何其他任意 XML 文档一样使用标准 XML 解析器来解析 IDoc-XML。

【讨论】:

【参考方案2】:

也许您想看看 SAP Business Connector:它可以从 IDoc-XML 创建 IDocDocument 对象,而无需连接到 SAP 系统。 然后,您可以在 Java 中使用这些 IDoc 对象。元数据信息(IDoc 中每个段的字段偏移量和长度)仅在您实际想要将 IDoc 发送到 SAP 系统的位置需要。但显然您不需要这样做,没有元数据信息应该没问题。

SAP BC 主页:https://support.sap.com/sbc

【讨论】:

以上是关于SAP中IDOC和BAPI和RFC 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

SAP的RFC接口的发布与JAVA调用

SAP是不是有java可以调用的接口?这些接口可以做啥?

SAP 中IDOC是啥

BAPI_MATERIAL_GET_ALL 是 BAPI,还是只是 RFC?

SAP中的ALE, IDOC

SAP中的ALE, IDOC