
原文路径
SAP-跨模块知识小贴士系列(01)-简单聊聊BAPImp.weixin.qq.com
如果大家对SAP相关行业知识和经验有兴趣,可以搜索公众号:ERP知识图谱。
正文
很多处于实习阶段的业务顾问,在刚做项目时候,、和开发顾问进行沟通时,会在函数、RFC、BAPI这几个概念的理解上容易有一定障碍,或者有概念模糊的情况。本篇,将以较为浅显易懂的方式,简单地介绍一些相关概念,便于一些刚入行的童鞋进行理解。
刚入行的小白同学的故事,可能就这样开始了……
刚入行的业务顾问小白同学,和用户开会确认需求之后,发现一些需求的实现,是需要新开发或修改程序的。
于是小白同学,默默地梳理了很多遍需求,保证自己深刻理解需求后,鼓起勇气,找到了开发顾问老司机,开始了以下对话:
小白同学:开发老师,您看这个功能如何实现呢?
开发顾问老司机:哦,这个功能简单,需要写一个函数,调个bapi,进而去实现这个功能。
此时,刚入行的小白同学,产生了困惑,心里道:函数?bapi?介都是嘛?学PA的时候,没听过呀~~

伴随着突如其来的困惑,所带来的短暂恐慌,小白同学梳理了心情,给自己鼓鼓劲,又鼓起勇气,小白同学还要继续沟通下去。小白同学要问第二个问题,TA希望通过弄明白第二个问题,进而帮助理解第一个问题。
于是,小白同学又问道:开发老师,用户提出要通过外部系统,在SAP创建订单,应该怎么处理呢?
开发顾问老司机:哦,这个问题啊,我们可以通过call RFC的方式,调用创建订单的相关bapi,最后让外部系统调用我们的RFC。这个呢,到时候得找外部系统技术人员和用户,一起再确认具体的接口交互策略,是不是直接call RFC,或者其他方式进行接口。
又是一个新的概念,小白同学有点措手不及。此时此刻,小白同学心态有点崩,心想:啥?刚才说了个啥? Call 个啥?Call的不是 666嘛?emmmmmm,这SAP业务顾问的工作适合我吗?要不要下班和公司商量一下,出个项目,离个职?

经过了若干分钟的凌乱后,小白同学终于冷静了,下定决心:晚上先吃一套加蛋的煎饼!要加班搞明白,啥是函数!啥是RFC!!啥是扒皮(bapi)!!!
其实上述情景,描述的比较极端,就是为了芥末效果。但是,作为业务顾问,在刚接触项目时,多多少少都会有类似的经历。下来,我们就简单介绍一下什么是函数、什么是RFC,什么是bapi。
我们先从函数简单聊起:
函数(function):就是指一段在一起的、可以做某一件事的程序。一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。
简单地理解,就是将可能重复的程序,或者具有一定特殊性的程序功能,封装起来,写成一个子程序块,有输出和输入参数,方便以后使用时,直接调用。
RFC函数(Remote Function Call):RFC函数,本质上也是一种函数,是一种可远程调用的函数。此类函数,可以被外部程序或者外部系统所调用。也就是说,RFC函数,不仅可以被SAP系统的内部程序所直接调用,也可以被非SAP的外部系统所调用。
注意:RFC函数可以与外部系统进行接口,也就是说可以与外部系统进行数据交换,所以,RFC函数,不仅可以理解为一种函数,也可以理解为一种数据通信协议。
BAPI(business application programming interfaces):中文翻译为"业务应用编程接口"。BAPI本质上也是一种RFC函数,或者说是一种特殊的RFC函数。BAPI是SAP系统提供的、标准的、可用于在SAP系统中实现相关事务的RFC函数。也就是说,类似小白同学遇到的情况,用户希望通过外部系统做操作,进而通过接口直接在SAP中创建订单等,就可以通过外部系统调用SAP的BAPI进行实现。
SAP系统本身提供了大量的BAPI,比如,采购订单、销售订单、生产订单等的创建、更改、显示等。
基于以上解释,我们可以简单理解函数、RFC函数以及BAPI,在一定维度上,有定义的包含从属关系。如下图所示。

注意,这里的BAPI理解为项目中常用到的、SAP提供可用于外部调用的标准BAPI。
当刚入行的小白同学,看到这篇内容时,也许就暂时不考虑出项目转行了。
对于SAP顾问,还要学会查找BAPI,查找BAPI的常见方法,请在公众号“ERP知识图谱”中查找。
~oh yeah!~