发表于:2007.07.20 23:07
分类: 一般分类
出处:http://mmccking.itpub.net/post/33129/311120
---------------------------------------------------------------
bapi和rfc不是同一个层次上概念,不能说从字面上看到bapi函数和rfc函数就认为他们之间有必然的联系和区别。打个比如,问一个问题:人可以分为哪几类,答曰:男人和老人,呵~~,大家都知道,男人是基于性别来说的,老人是基于年龄的。bapi是sap提供的基于业务对象的函数,关键是它们处理的对象是r/3的业务相关businessobject),比如单据类销售订单,组织:公司等,它们是一系列实体。rfc则是一种系统间通讯的方式(remotefuncitoncall),一个男人可能同时也是一个老人,一个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输出参数,并把它们“翻译”成恰当的形式给表达给用户。






