核心内容摘要
镜头下的东方之魅:亚洲影像的叙事与张力
目录章节介绍一些前言RFC接口参数文档
表参数作为导入参数时参数结构如何设置
结构作为导入参数时参数结构如何设置
单个参数作为导入参数时参数结构如何设置一些结尾章节介绍上一章节和大家分享了SAP系统和MOM系统的整体设计说到两个系统之间的对接必不可少的是系统之间的数据交互说到数据交互那就肯定离不开系统的接口对接所以
节就和大家分享SAP和MOM的接口对接我会分成三个内容来讲分别是接口对接上——外围系统调用SAP的RFC接口SAP如何创建RFC接口接口对接中——外围系统调用SAP的RESTFUL接口SAP如何创建restful接口接口对接下——SAP调用外围系统的RESTFUL接口SAP如何写代码调用首先我们这一章节来讲【接口对接上——外围系统调用SAP的RFC接口SAP如何创建RFC接口】一些前言在这次的项目中SAP几乎都是用的RFC接口来和外围系统对接官方一点的理由呢是因为RFC接口是SAP系统中最稳定、效率最高、最具SAP特色的接口而真实的理由是RFC接口开发起来最简单没错就是“最简单”这个朴实无华的理由。
最初接收到开发任务时我还在完善上一个项目的收尾工作比如报表的效率优化啦、报错的提示啦、批量修改单据的功能开发啦之类的工作然而还没等到我缓一缓我就被通知——我需要在一周内完成十几个接口的开发并且要测试完成。
震惊且真的不能接受我甚至连开发申请都还没有接到啊喂不行了使出绝招全部设计成RFC接口对于外围系统来说连接SAP的RFC接口和RESTFUL接口的代码写法好像是不一样的但是因为我们公司有个中间系统就是ESB系统所有的接口对接都会经过这个系统当然也包括了SAP和MOM系统的对接所以其实是SAP-ESB-MOM这样的接口交互ESB系统呢就可以很方便地将SAP系统的RFC接口发布成restful的形式来供MOM系统调用所以不管我开发的是RFC接口还是RESTFUL接口只要经过了ESB系统那外围系统来调用都可以看成是RESTFUL接口。
好的前提已经讲完了现在来讲RFC接口的开发RFC接口首先我们明确一下接口调用的方向是MOM系统调用SAP系统SAP系统接收到消息后进行数据返回。
以库存查询接口为例MOM传输工厂编码和物料编码等信息给SAPSAP查询对应库存后实时返回给MOM我们先看一下参数文档因为是MOM调用SAP所以接口参数文档是由SAP提供。
下面就是我比较喜欢使用的参数文档格式这里将传入参数设置成了表参数表明MOM可以一次性批量查询很多物料的库存数据SAP系统中接口如下打开SE37,创建接口步骤在小白操作手册里面有讲我们这次就直接看一下RFC接口长什么样子就行。
接口的属性要选择远程启用的模块外围系统才可以连接T_TAB的关联类型是SE11里面设置的结构参数导出参数我一般像下面这样设置这里需要说明一下 E_TYPE和E_MSEG和T_TAB是同一级的字段。
在源代码里面做一些传入数据检查再写好传出参数的赋值就可以了。
RFC接口就和平时的接口差不多的整体来说就挺简单快捷的。
参数文档其实RFC接口开发是很基础的开发操作了大家都比较熟悉所以我在后面想重点分享的是关于参数文档的制作。
外围系统的开发是要拿着咱们提供的参数文档进行开发耶要是我们提供的参数结构错了那会被骂死的吧上面这个接口的参数和参数文档里面的参数结构对比一下看看
表参数作为导入参数时参数结构如何设置T_TAB是表参数会传入也会传出要注意看{}大括号和[]中括号的位置SAP系统里面的T_TAB表参数对应的是外围系统中的数组类型。
结构作为导入参数时参数结构如何设置我们拿另外一个接口来看这个接口是MOM只会单条数据传入SAP所以我没有设置成表参数只设置了导入参数导入参数里面关联了结构类型。
这时候参数文档里面是这样的可以很明显地看出来SAP中表参数和导入参数地区别就是没有数组没有[]中括号。
单个参数作为导入参数时参数结构如何设置我们继续换另一个接口来看这个接口的导入参数是单个的如下这时候我们看一下参数文档里面是如何设置的这时可以很明显看出只有一个{}大括号没有其他结构了。
好了上面三种参数T_TAB、I_HEAD、I_WERKS...都可以作为导入参数当表参数作为导入参数时可以一次性批量多条传入当导入参数作为传参时就一次传一条当单个参数作为传参的导入时就单个赋值就可以。
一些结尾还有一些和外围系统交互时的小tips比如SAP的内外部单位转换ST/PC前导零的补充日志表的记录等这些几乎在每个接口中都会用到我们在处理外围系统数据的时候一定要注意一下。
那么本章就结束啦下一章我们接着讲解【接口对接中——外围系统调用SAP的RESTFUL接口SAP如何创建restful接口】会用到SICF服务这也是我第一次创建restful接口我会详细拆解步骤的这次的项目没有做webservice接口所以不会讲解相关的开发步骤哦其实webservice我也有点点搞忘了但是restful和rfc已经够用了let it go吧~