原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
**点击蓝字** 关注我们
一
前言
数据同步平台是在ABAP中开发的一个数据同步工具,类似于LTRC,通过配置实现任意两个数据库的数据同步(ABAP需要配置相关的外部数据库连接).
数据同步平台的底层通过调用ADBC类实现远程数据库的读取,写入.
详情请参阅以下链接
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 数据同步平台( 一 简介 )
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247487015&idx=1&sn=584a97d471cfc430c62096fab64cf00a&chksm=cf5dd311f82a5a0735f9fbba6be9abd8150a8ac2d7e2a3cd3a33034202784af1ad5744fc7098&token=738161928&lang=zh_CN#rd)
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 数据同步平台( 二 配置 )
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247487036&idx=1&sn=109d7a86c102ebd8f89e75c94df918dd&chksm=cf5dd30af82a5a1c9e911c98eeec606e5c6f7a81bd95142d8122bf7fa03f56dfce641e94d571&token=738161928&lang=zh_CN#rd)
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 数据同步平台(三 改进)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247487366&idx=1&sn=90918dd19e07bae2eb80ba51123a8999&chksm=cf5dd2b0f82a5ba6ad60a8d2a41d0e16292ece86db7689b4da1221798110ec75c45306358d07&token=738161928&lang=zh_CN#rd)
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 数据同步平台(四 大表处理改进)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247487379&idx=1&sn=aa635a6a1faff5e0080c41d1700cfd64&chksm=cf5dd2a5f82a5bb3c46a961ddf717661c76208f52624ab61e3c1159671d1e9c161788703f718&token=738161928&lang=zh_CN#rd)
**本文主要介绍数据平台的日志功能改进**
二
旧版日志功能局限
数据同步平台的第一版只考虑了ABAP的表与外部系统表之间的同步,因此大部分功能包括日志功能都会读取ABAP中的数据字典对象,
用来定义内表,定义ALV的字段.
优化数据同步平台的平台属性后(可以通过平台同步任意两个非ABAP的外部数据库),原本获取ABAP数据内容的逻辑就会出现问题.
有可能读取不到数据字典对象,会导致日志显示同步内容时报错.
三
思维导图
作为一个程序员,很惭愧一直都没有使用思维导图,因此在这个日志改进时,尝试画了一个思维导图.
**思维导图对于梳理思路还是有一定作用的.**
关于思维导图软件
• Xmind 收费,好看,功能强大
• freemind 免费,相对难看,功能差不多
四
新版日志功能改进
• 通过程序调用ID整合日志
• 考虑字段映射标记
• 考虑大表分包日志记录
• 日志中记录表名信息
_**01** _
**程序调用ID整合日志**
每个接口编号可能定义一个主表/多个从表,因此每次执行时会显示多个表的执行结果.
每个表的执行结果单独记录日志ID. 在接口中通过程序调用ID来整合这个接口的所有的日志ID(图一).
日志显示时,可以看到同一个程序调用ID的所有日志信息(如图二)
如果选中的日志存在多个表,会弹窗让用户选择最终要显示的表内容(如图三)
图一
图二
图三
_**02** _
**日志中记录表名信息**
日志ID的记录维度是表名及表的分包,写入日志表时,把目标表名同时写入了<产生的单据号码>字段(如图四).这样,在日志显示时,可以直观的看到表名信息.
图四
_**03** _
**考虑字段映射标记**
字段映射功能用来设置是否启用配置表 ZTSYNC_C2中配置的字段隐射规则.如果启用了字段隐射, 源表内容和目标表内容就可能不一致.
改进的日志功能考虑了数据的字段映射标记(图五),同时记录源表数据内容及目标表数据内容.并且根据源或目标数据库是否为当前ABAP系统(连接名DEFAULT)来确定是否使用数据字典定义(使用数据字典定义可以获取更多的字段信息,比如字段描述).
启用后,显示日志时会拆分成源表/目标表两个选项,用户可以选择显示源表或目标表的日志(如图三)
对于没有配置字段隐射的接口, 因为源表与目标表相同,日志中只需要显示目标表内容(如图六)
图五
图六
_**04** _
**考虑大表分包处理**
为了避免大表处理出现内存溢出的错误,记录的日志内容也依赖于配置中的分包数.每个分包记录一份日志.
如图一的同步结果看到接口SYN001配置了一个主表ZTTS_H,一个从表ZTTS_I .
点击显示日志时, 可以看到主表7条记录按包数2拆分成了4个包,从表6条记录按包数2拆分成3个分包(如图二)
勾选多个日志,可以把这些日志中记录的表内容合并显示. (如图七,因为是外部数据库表,没有获取字段描述,ALV中用字段名显示)
图八中使用了数据字典定义ALV,所以包含了字段描述信息及主键信息.
图七
图八
五
总结
数据同步平台改进平台属性后, 日志功能也随之改变.
这样可以真正作为一个平台,同步任意两个数据库系统之间的数据,并且记录详细的操作日志,数据传递内容日志.
这些日志整合在接口日志查询中(ZIFLOG), 可以查询数据同步平台的执行情况及执行传递的数据内容.
如果接口中启用了字段映射,日志中可以分别查看映射前的源表数据及隐射后的目标表数据.
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
**请扫码加入公众号群,提问或参与话题讨论**