原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
一
前言
用查询服务同步数据,写入自定义表是一种常用的接口模式.
此时数据的发起方是数据的同步目标方,
请求内容是查询条件
同步响应内容是需要同步的数据集
数据集写入相应的表中
** 本文主要介绍一个调用查询服务同步数据的工具 **
二
使用效果
执行程序ZIFMDGCALL, 输入指定的接口编号.也可以通过特定接口的事务代码进入程序(自动带出对应接口编号)
默认变化量处理.
此时自动设置查询从时间及查询到时间
查询开始时间向前偏移秒数 用来修正数据更新延迟导致的时间戳问题 . 默认值2
限定每包的记录数 默认值10000
勾选显示详细日志
执行获取接口调用的结果
全量处理
勾选全量处理后, 选择屏幕放开时间戳的限制. 同时放开业务字段的动态选择.
指定4条记录查询. 分包数2.
调用三次接口, 最后一次查询记录为0(用来结束循环,极端情况 记录数=每个包的记录数的整数倍,才会如此).总共获取4条记录.
接口日志查询 ZIFLOG可以查询出接口调用信息及传递的报文信息.报文的解析ALV显示等.
三
新接口的配置
新接口的开发比较简单, 仅需要维护两个配置表, 再创建一个事务代码即可(可能还需要创建数据要存入的表)
接口需要符合如下规范,接口的查询信息除了业务字段, 还需要包含一个通用结构 ZSMDG_COMMREQ
接口的返回 , 返回的结果集放在 RESULTS中.
TYPE 返回查询是否成功执行.
_** 01 ** _
** ZTIF002 **
相比其它接口, 需要特殊配置的两个字段
BICALL_TABNAME 通用BI(MDG)调用程序接口写入数据的表名
BICALL_DATATYPE 使用写入表名作为行类型创建的表类型
_** 02 ** _
** ZTIFMDGCALL **
配置字段映射ZTIFMDGCALL
把接口字段映射到表字段上, 同时指定业务选择字段
_** 03 ** _
** 创建事务代码 **
创建事务代码ZTS0100,调用事务ZIFMDGCALL . 指定接口编号. TS0100
四
复杂结构支持
上述配置仅基于单表结构, 如果是复杂结构.
通过配置 ZTIF002-FUNCNAME 通过特殊函数完成复杂结构的处理
考虑把函数做成一个通用的多表支持的函数Z_IF_MDG_MUL_TAB
这个配置也可以作为一个出口, 为特定接口设置处理函数. 函数界面如下
五
变化量的时间戳处理
> 详见链接
>
> 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧 查询接口的分页查询处理 ](https://mp.weixin.qq.com/s/ttOWP-
> ylhRwc2_iAB19TjQ?token=865287164&lang=zh_CN)
六
总结
归纳通过查询接口从其它系统同步数据的接口程序,整合出通用程序 ZIFMDGCALL的相关功能.
• 动态指定选择条件
• 加锁/解锁接口编号
• 全量/变化量调用
• 可配置的字段映射
• 接口日志记录
• 分页调用获取数据
• 写入目标表,区分创建和修改
• 记录执行时间戳
• ......
核心功能通过类ZCL_MDGCALL_BASE实现.
把此类接口统一在这个通用程序下. 简化并规范此类接口的开发方式.