01
前言
接口开发是项目中优先级别最高的,也是最重要的开发. 一般项目上对于接口开发最好统筹考虑.
接口框架
无峰,公众号:ABAP开发技巧SAP开发框架系列之 接口框架
详见链接(包含ZIFLOG程序简介)
无峰,公众号:ABAP 技巧与实战SAP工具箱之 接口调用集中监控
本文主要介绍统筹考虑接口管控,接口日志的一种方式.
二
常见的接口方式
这些接口方式都是以ECC作为主体来表达的.
01
RFC(webservice)
ECC系统发布RFC函数或者RFC函数封装的WEBSERVICE .
详见链接
无峰,公众号:ABAP 技巧与实战SAP操作手册之 RFC函数发布WEB服务
02
CALL WEBSERVICE
ECC调用外部系统发布的WEBSERVICE.
详见链接
无峰,公众号:ABAP 技巧与实战SAP操作手册之 ABAP调用WEB服务
03
通过PO中间件
PO与ECC的通讯方式XI(SOAP) 包含ECC 出站和入站. (本质上也是一种webservice方式). 可以通过事务代码SPROXY 生成相关的对象.
出站由ABAP调用通过代理生成的类方法
PO实际上也支持RFC/IDOC等方式与ECC交互数据. 只是这两种方式实际使用中没有XI(SOAP)方式好用. 建议项目中统一PO与ECC的交互方式为XI(SOAP)方式.
入站通过在代理的执行类中写代码,完成入站数据的处理
04
数据同步平台
一个自开发的数据同步平台.主要针对使用中间表方式的接口. 通过ADBC直接访问外部系统的中间表.
详见链接
无峰,公众号:ABAP 技巧与实战SAP工具箱 数据同步平台( 一 简介 )
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工具箱 自动生成发出接口程序(二 接口定义表)
四
接口控制表的使用
所有接口必须登记在接口控制表中.
所有涉及接口的代码,都通过访问接口控制表,判断接口是否登记, 是否活动, 并根据标记判断是否记录处理日志及内容日志.
这部分代码逻辑比较简单. 如果接口没有登记,没有激活. 报错即可. 下图是自动生成的下传程序中校验接口的部分代码.
五
接口调用日志表
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保存特殊数据
02
对通过PO的接口
无需单独记录内容. 因为PO的消息表中记录了传递的XML内容. (因为XML内容的查看不太直观, 可以通过功能解析XML内容,集中呈现)
03
对于数据同步平台
详见链接
无峰,公众号:ABAP 技巧与实战SAP工具箱 数据同步平台(五 日志改进)
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
申请进入公众号讨论群提问或者参与话题讨论