ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

常见的系统间接口方式(01)-远程函数调用

2020-11-18 14:03:29  阅读:261  来源: 互联网

标签:01 接口 系统 函数调用 OA 审批 SAP 接口方式 远程


原文路径:https://mp.weixin.qq.com/s/RA2IdYCxyvygPDif_L1KDg 

所谓系统接口,实际上就是不同系统间的数据交换方式。 

对于一个企业来说,肯定不是一个系统就能够支持所有业务的运转,几乎所有企业都会使用多个系统,比如较为常见的ERP/MES等。 

当企业有多个系统支持其业务时,不同系统间的数据交互就不可避免了。比如,MES作为生产执行系统,在MES中所执行的原材料投料、产成品入库出库等,必然会将相应的数据传输至ERP系统,保证ERP系统中同时进行原材料、成品的货物移动等。 

除了企业的内部系统会发生数据交互外,还可能存在不同企业间的系统数据交互。比如,企业可能会将未来的物料需求预测,传输给其下游供应商,供应商接到预测后,会进行生产备货等等。当然,还有很多企业其需要与银行有很多系统接口,比如自动付款等相关业务。 

基于企业中的系统接口,我们将主要分享常见的三类系统接口方式,以帮助大家能够理解其工作原理。 

三类常见的接口方式,包括: 

1.系统间采用远程函数调用(RFC)的方式进行数据交互; 

2.系统间采用中间数据库的方式进行数据交互; 

3.系统间采用传输文件的方式进行数据交互; 

本篇,我们先介绍“远程函数调用(RFC)”的工作原理。

正文 

远程函数调用(Remote Function Call):实际上就是一个系统提供可供其他系统调用的函数,当其他系统传输正确的参数并调用相应函数,则可以在该系统中执行相应的系统功能。这就是最为常见的,使用远程函数调用的系统接口方式。 

系统间数据交互的目的,就是一个系统中的功能执行结果,以数据的形式被被传输到另外一个系统,并在利用此结果数据,在另外这个系统中执行相应的系统功能。 

远程函数调用(RFC)这种接口模式,就是数据会直接传输相应系统,并在此系统中直接执行系统功能。 

我们可以形象的理解为,被调用的系统A,将其系统的账号和密码交给了外部系统B,外部系统B在必要时,会登陆到A系统中,用系统B中的正确参数,也就是数据,去执行A系统中的系统功能。如下图所示。 

看到这里,其实,对于很多初级业务顾问来说,理解上可能还有一定困难。那么,我们就模拟一个最简单的业务场景,用以分析“远程函数调用”的工作原理。 

假定,某企业的采购员使用SAP系统做业务,而其部门经理会使用另一个审批系统,比如常见的自动办公OA系统,实现对采购员的业务的审批操作。 

那么此模拟场景下,其可能出现的实际业务如下: 

1.采购员在SAP系统中,创建一个张采购订单,并成功保存,其采购订单号为“123”; 

2.采购员在审批系统(OA)中,使用发起审批功能,填入采购订单号“123”,确认发起审批。此时,OA系统中会显示SAP系统中单号“123”的相关信息,包括物料编号、物料名称、采购数量、价格等; 

3.当采购员发起审批后,部门经理就能在OA系统中,看到此审批流程,并看到采购订单号“123”,以及所有此次采购业务的信息; 

4. 此时,部门经理会在OA系统中执行审批通过,OA系统在SAP系统对订单号“123”完成审批后,会给部门经理显示“批准通过执行成功”; 

 

请问在以上业务中,系统间的接口工作机制是什么样的? 

首先,有采购数据的抽取接口,执行逻辑如下:

OA系统会给SAP传输“订单号”这一参数,同时调用SAP系统中的采购数据获取函数,SAP系统会将采购订单的相应信息反馈给审批系统; 

其次,有采购订单的审批接口,执行逻辑如下:

当部门经理执行审批通过后,审批系统会将“订单号”和“审批通过”这两个参数,传输给SAP系统,并调用SAP系统中的审批函数批准此单号,并将审批成功的结果反馈给审批系统。 

具体逻辑如下图所示: 

这里我们可以思考以下,OA系统为什么一定要在接到SAP系统将审批成功的结果后,才给部门经理显示审批成功? 

OA系统为什么不直接在部门经理执行审批功能后,就直接显示审批成功?OA系统的审批参数已经发出去了,何必要等SAP的反馈呢? 

其实,这里就是我们在设计系统接口时,要注意的关键点。多个系统接口的协作,不同于单个系统的功能执行。 

以上述业务为例,在单个系统中,如果审批程序执行不成功,系统会立刻根据程序执行结果,告诉你程序执行不成功。可能的原因是,业务单据被锁定,或者相关后台表被锁定等。 

在多个系统的协作时,A系统把参数传输给B系统,并调用B系统中的函数,如果此时A系统,直接给使用者显示执行成功,就有可能造成B系统实际的功能并未执行成功,而A系统却告诉使用者已经成功了。 

如上述业务场景,OA系统虽然把审批通过的参数传输给了SAP系统,并调用SAP所提供的函数接口,SAP系统很有可能会因为单据锁定等原因,程序无法执行成功,但OA系统如果此时认为审批成功,就会出现问题了。 

 

基于上述内容,我们已经了解了“远程调用函数(RFC)”接口的基本工作原理。

其实,除了SAP系统,几乎所有系统都对会外提供类似“远程调用函数(RFC)”的接口方式。 

当然,基于上述介绍,我们也就理解了为什么这种函数,会被称为“远程调用函数(RFC)”了。 

因为这类函数主要用以其他外部系统进行调用,外部系统的调用,也叫远程调用,所以我们常称可以供外部调用的函数为:“远程调用函数(RFC)”。当然,这类函数除了可以被外部系统调用,自己系统也可以调用。 

这里我们在介绍以下BAPI的概念。在SAP系统中,有很多已经封装好的,可以直接使用的远程调用函数,SAP称其为“BAPI(business application programming interface)”具体可以参考,其他两篇公众号文章。 

对于很多非SAP技术相关的朋友,都很了解API,而BAPI无非就是多了个business,就是SAP为其业务定义的API。 

远程函数调用这种接口方式,常用于业务简单,接口系统较少、接口业务点对点的业务类型。 

但实际业务中,支持企业业务运转的系统,可能会有数个、数十个,甚至数百个。 

如果所有系统接口都用远程调用的方式是肯定行不通的。

标签:01,接口,系统,函数调用,OA,审批,SAP,接口方式,远程
来源: https://www.cnblogs.com/turnip/p/13999405.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有