点击蓝字 关注我们
一
前言
数据同步平台是在ABAP中开发的一个数据同步工具,类似于LTRC,通过配置实现任意两个数据库的数据同步(ABAP需要配置相关的外部数据库连接).
数据同步平台的底层通过调用ADBC类实现远程数据库的读取,写入.
详情请参阅以下链接
详见链接无峰,公众号:ABAP 技巧与实战SAP工具箱 数据同步平台( 一 简介 )
详见链接无峰,公众号:ABAP 技巧与实战SAP工具箱 数据同步平台( 二 配置 )
详见链接无峰,公众号:ABAP 技巧与实战SAP工具箱 数据同步平台(三 改进)
详见链接无峰,公众号:ABAP 技巧与实战SAP工具箱 数据同步平台(四 大表处理改进)
本文主要介绍数据平台的日志功能改进
二
旧版日志功能局限
数据同步平台的第一版只考虑了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), 可以查询数据同步平台的执行情况及执行传递的数据内容. 如果接口中启用了字段映射,日志中可以分别查看映射前的源表数据及隐射后的目标表数据.