无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
前言
接口开发是项目中优先级别最高的,也是最重要的开发. 一般项目上对于接口开发最好统筹考虑.
> 接口框架 无峰,公众号:ABAP开发技巧 [ SAP开发框架系列之 接口框架
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247484693&idx=1&sn=651a852dba65476a2e2beeb59d109d42&chksm=cf5dd823f82a5135d9fd136931c4945187061095e6853eb2e188f49f8afc3446f29f877287ba&token=1300454273&lang=zh_CN#rd)
> 详见链接(包含ZIFLOG程序简介) 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱之 接口调用集中监控
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485919&idx=1&sn=28ed168f2d167eea7e23f4c3c194e282&chksm=cf5dd4e9f82a5dff86123597a2d1ec33e22a2796f4ddf4e56a00c3537949f0540f571fd00550&token=1300454273&lang=zh_CN#rd)
>
本文主要介绍统筹考虑接口管控,接口日志的一种方式.
二
常见的接口方式
这些接口方式都是以ECC作为主体来表达的.
_**01** _
**RFC(webservice)**
ECC系统发布RFC函数或者RFC函数封装的WEBSERVICE .
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP操作手册之 RFC函数发布WEB服务
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485235&idx=1&sn=970673a9c7fe3122dd9f4b436c58d8db&chksm=cf5dda05f82a53132b2794b3bbcb54096cab9c166cbf863659dd45a1ce2f9c39335249e64685&token=1300454273&lang=zh_CN#rd)
_**02** _
**CALL WEBSERVICE**
ECC调用外部系统发布的WEBSERVICE.
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP操作手册之 ABAP调用WEB服务
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485431&idx=1&sn=38c12052987ed2b0c3ba42b1c265faee&chksm=cf5ddac1f82a53d7a300889a157a45e5e903416c8f68e8b196bc7ca377484942519f5bb88618&token=1300454273&lang=zh_CN#rd)
_**03** _
**通过PO中间件**
PO与ECC的通讯方式XI(SOAP) 包含ECC 出站和入站. (本质上也是一种webservice方式). 可以通过事务代码SPROXY
生成相关的对象.
出站由ABAP调用通过代理生成的类方法
PO实际上也支持RFC/IDOC等方式与ECC交互数据. 只是这两种方式实际使用中没有XI(SOAP)方式好用.
建议项目中统一PO与ECC的交互方式为XI(SOAP)方式.
入站通过在代理的执行类中写代码,完成入站数据的处理
_**04** _
**数据同步平台**
一个自开发的数据同步平台.主要针对使用中间表方式的接口. 通过ADBC直接访问外部系统的中间表.
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 数据同步平台( 一 简介 )
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247487015&idx=1&sn=584a97d471cfc430c62096fab64cf00a&chksm=cf5dd311f82a5a0735f9fbba6be9abd8150a8ac2d7e2a3cd3a33034202784af1ad5744fc7098&token=1300454273&lang=zh_CN#rd)
_**05** _
**直接调用http接口**
通过http client 类调用外部系统的http 服务. 传递XML或JSON格式的数据
_**06** _
**发布http接口**
直接在ECC中发布http服务, 在服务的类中处理接收到的XML或JSON报文并返回结果报文. 该接口方式在ECC中不常用.
_**06** _
**发布ODATA服务**
可以在HANA中或ABAP中发布ODATA服务, 供外部系统调用. 已经有点超出通常意义的接口的范畴.
适用于通过WEB界面呈现的报表系统从ECC/HANA中获取数据来呈现报表
三
接口控制表
通过ZTIF002集中控制接口的激活, 调用日志,内容日志等
接口编号: 每个接口按规则给一个唯一识别号码
> 详细字段介绍见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 自动生成发出接口程序(二 接口定义表)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486828&idx=1&sn=6fac56b114fa061e86cca150508e0a7f&chksm=cf5dd05af82a594c7e16ebe585f5ccb146227c7fb0601bd2d3c9ea26a959b7c9071195bb2770&token=1300454273&lang=zh_CN#rd)
四
接口控制表的使用
所有接口必须登记在接口控制表中.
所有涉及接口的代码,都通过访问接口控制表,判断接口是否登记, 是否活动, 并根据标记判断是否记录处理日志及内容日志.
这部分代码逻辑比较简单. 如果接口没有登记,没有激活. 报错即可. 下图是自动生成的下传程序中校验接口的部分代码.
五
接口调用日志表
ZTIF_LOG 用来记录对接口的调用信息,通过LOGID唯一标记一次调用. 对于调用中涉及的PO消息,通过字段 MGUID 记录.
建立与PO相关消息的关系.
对于一个PO消息可能产生多个IDOC(上传接口通过IDOC最终创建业务单据,后续通过ZIFIDOC整体监控IDOC的执行情况) ,
通过ZTIFLOG_IDOC 记录PO消息和IDOC的关系(这个关系基于LOGID创建会更合适些), ZIF_LOG中可以看到产生的IDOC个数,
并通过点击跳转显示IDOC.
六
接口调用日志表写入
每个涉及到接口的程序中,根据ZTIF002-WIFLOG 标记, 写入一条记录到 ZTIF_LOG表中.
用来记录接口的一次调用行为,具体写入的代码可以封装在函数或类方法中.下图是自动生成下传接口代码中写入ZTIF_LOG的逻辑
七
接口内容记录表
基于不同的接口方式, 数据内容的记录方式不太一样.对于需要自行记录的部分, 判断ZTIF002-WDATA标记确定是否记录接口传递的数据.
_**01** _
**RFC(或RFC发布的WEBSERVICE)**
统一RFC函数的输入/输出界面, 通过EXPORT TO database ztif_log_data命令记录数据内容. 后续通过IMPORT FROM
DATABASE ztif_log_data读取内容. 函数界面参数对应接口监控的特定按钮功能(如图)
接口内容记录在ZTIF_LOG_DATA
EXPORT(IMPORT) TO(FROM)DATABASE
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧 使用EXPORT/IMPORT保存特殊数据
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486037&idx=1&sn=40786ce2465ba450a93ba6f4ffca7635&chksm=cf5dd763f82a5e7544af109794dadf873036bd3949f8fb07553176b814bbaf4bf8f707349caa&token=1300454273&lang=zh_CN#rd)
_**02** _
**对通过PO的接口**
无需单独记录内容. 因为PO的消息表中记录了传递的XML内容. (因为XML内容的查看不太直观, 可以通过功能解析XML内容,集中呈现)
_**03** _
**对于数据同步平台**
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 数据同步平台(五 日志改进)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247487457&idx=1&sn=4aaab4b066502b96ed18c6ea4ddd2a9f&chksm=cf5dd2d7f82a5bc1a59f95bede8ee5c623c150e0976c4a48abf3eb8ac8caf1cc873e04efd25f&token=1300454273&lang=zh_CN#rd)
_**04** _
**对于直接调用http接口**
使用表ZTIF_LOG_JSON 记录 http 调用的传入传出的JSON或XML串 . 同时模拟一个消息GUID写入ZTIF_LOG-MGUID .
ZIFLOG中通过点击MGUID字段读取保存的JSON或XML串, 显示出来.
八
不适用PO的接口形式
目前看来. 如下接口形式不推荐或无法使用PO
• 同步接口: PO增加了同步接口的调用链路,可能会影响性能,或者出现超时错误. 不推荐使用(也可以通过PO记录调用日志)
• 通过中间表的接口: PO读取中间表的方式过于简单,一些复杂的场景无法实现,大数据量也往往会出问题.
• 外围系统有完整的RFC调用体系: 部分OA或WMS软件基于RFC调用已经构建出一套完善的调用体系,ECC同这些系统的接口不适于使用PO.
• 部分做报表展示的系统, 建议用ODATA或RFC服务获取数据(无需监控)
九
总结
项目上往往会采用多种接口形式. 接口使用PO并不是唯一的选择. (对于使用PO的接口,可以通过SXI_MONITOR 集中监控.)(
**自定义的监控不能完全取代SXI_MONITOR的监控及PO的网页监控,有些报错只能在这些地方找到,这都算是传输链路的监控** ).
考虑集中接口管控和日志记录,可以把多种形式的接口整合在一起.
可以让项目更加灵活方便的选择接口形式, 通过统一的监控入口查看系统接口执行情况及接口传递的数据内容. 以便分析接口问题及错误.
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论