原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
**点击蓝字** 关注我们
一
前言
之前写了一篇文章,介绍怎么同步外部数据库的任意表(付费文章无法添加链接,感兴趣的请自行在公众号中查找).当时就萌发了一个念头.
把这个工具扩展一下功能,设计成为一个数据同步平台.
这一周没怎么写公众号文章,原因之一就是在忙于设计开发这个平台.
**本文主要介绍数据同步平台的功能**
二
功能简介
数据同步平台 ZBC_SYNC_REMOTE_TABLE
数据同步平台可以完成数据在不同系统的表中同步,类似于LT的功能(超级简化版).
可以通过配置实现一些简单的接口(限定为数据通过中间表传递的方式).同时与ZIFLOG接口日志整合,作为整体接口设计的一个可选方案.
数据同步平台设计了如下功能, 目前大部分的功能已经实现(出站尚未支持)
• 全量/变化量方式同步
• 同时同步多个相关表
• 对源表的额外过滤条件
• 字段映射
• 两种同步方向:出站/入站支持
• 整合在接口集中监控
**TIPS**
**SPRING**
出站: 数据从ECC/S4系统同步到外部系统数据库
入站: 数据从外部系统数据库同步到ECC/S4系统
外部系统数据库可以是HANA,ORACLE,SQLSERVER等DBCO支持的数据库类型
> 关于DBCO的配置详见链接 无峰,公众号:ABAP 技巧与实战 [ ABAP基础知识 访问外部数据库-配置篇
> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486675&idx=1&sn=880947996ba5d9e851b666934c5d2f97&chksm=cf5dd1e5f82a58f3f4dfa774156a3853dcac4fc3950944ace75517dd689eceee2ca9aab19cb4#rd)
三
ZIFLOG
ZTIFLOG作为接口集中监控平台,整合了以下接口方式的接口内容显示
• RFC函数(界面内容显示)
• 直接调用外部系统的HTTP服务可以封装在RFC函数中(JSON内容显示)
• 通过PO的接口(XML内容显示)
• 数据同步平台实现的接口(表内容显示)
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱之 接口调用集中监控
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485919&idx=1&sn=28ed168f2d167eea7e23f4c3c194e282&chksm=cf5dd4e9f82a5dff86123597a2d1ec33e22a2796f4ddf4e56a00c3537949f0540f571fd00550&token=1090391386&lang=zh_CN#rd)
四
两种处理模式
数据同步平台支持两种处理模式
• 接口模式
• 表模式
_**01** _
**接口模式**
接口模式需要配置接口相关的表
• ZTIF002 接口定义
• ZTSYNC_C1 同步数据库表配置
• ZTSYNC_C2 同步数据库表-字段映射(特殊隐射规则),
ZTIF002中主要配置接口编号及接口的激活状态,记录日志,记录接口内容等信息
> 接口配置字段详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 自动生成发出接口程序(二 接口定义表)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486828&idx=1&sn=6fac56b114fa061e86cca150508e0a7f&chksm=cf5dd05af82a594c7e16ebe585f5ccb146227c7fb0601bd2d3c9ea26a959b7c9071195bb2770&token=1090391386&lang=zh_CN#rd)
ZTSYNC_C1 用于配置接口同步的主表,从表及主从表的关联字段,时间戳字段等信息
• 支持全量及变化量同步数据.
• 支持同时同步多个表:一个主表,多个从表
• 支持表同步的额外数据过滤
• 支持远程表与本地表的字段映射
• 支持复杂的字段映射关系
ZTSYNC_C2 可以不配置,此时需要确保目标表和源表字段一致(至少主键字段一致).
_**02** _
**表模式**
该模式下无需配置任何表,
但是平台只能简单的把指定表的所有记录从远程同步到本地,该模式可以用来快速实现不同ECC系统之间的数据同步或不同CLIENT的数据同步).
通过DB连接及集团限定,可以处理以下两种数据同步场景
同一个服务器不同CLIENT的同步(指定CLIENT,不指定DB连接,默认连接当前数据库)
不同的服务器的同步(指定CLIENT,指定DB连接)
五
执行过程
数据同步平台的执行过程
启动程序ZBC_SYNC_REMOTE_TABLE或事务代码ZSYNC
_**01** _
**选择处理模式**
接口模式下, 只能输入接口编号(接口对应的表及相关同步参数在配置表
ZTIF002/ZTSYNC_C1/ZTSYNC_C2中维护)
表模式下,允许输入需要同步的表,指定DB连接名称,接口方向等.
还需添加一个源集团限制(以便同步不同ECC系统的表)
为了数据安全,默认只同步Z开头的表(可以去掉勾选).
_**02** _
**执行同步**
如果勾选了显示详细日志. 执行后可以看到数据同步的结果,包含下述内容
• 接口编号
• 日志ID
• 表名
• 数据处理状态: S 成功 E 失败 R 回滚
• 读取条目数
• 写入条目数
• 持续时间(微秒)
• 执行的SQL语句
数据处理状态 R : 一个接口的多个表,如果有一个表同步失败,则其它表标记为状态 R.
_**03** _
**显示同步内容**
点击日志ID,可以跳转到ZIFLOG ,也可以单独执行事务代码 ZIFLOG,输入接口编号或时间查询
勾选日志编号,点击同步按钮, 可以查看本次同步的数据内容
如果接口存在多表, 会显示多表选择,如果单表,则不会出现该选择
显示本次同步的特定表的内容
如果同步出现错误,日志中会显示报错信息
六
总结
数据同步平台
• 尝试通过配置实现一些简单接口(从外部中间表读取或数据写入到外部中间表),
• 尝试部分取代LT(LT同步数据报错处理比较麻烦,如果源表结构改变,需要重新同步所有数据).
• 作为一个ECC/S4 不同系统,不同集团的数据同步工具.
> 关于LT详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP操作手册之 LT数据同步配置
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485198&idx=1&sn=347f54003b85c13e91a8b30cdaad0b9d&chksm=cf5dda38f82a532eb20ab75c79ff58af8dd16e2ce2c0e69ce3fd1fab70e3b489722b90ea96b0&token=1858200308&lang=zh_CN&scene=21#wechat_redirect)
数据同步平台的变化量通过时间戳比较获取,这是获取变化量的最简单的方式,便是实现.只是需要源表中有一个时间戳字段,数据新建或修改后都会更新该字段内容.
系统所有的配置表可以通过一个统一方式添加时间戳.
> 详见连接 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧 自定义配置表的简单日志
> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485160&idx=1&sn=7f51fd03774c712c060889f1be2cd0dd&chksm=cf5ddbdef82a52c8be5e540fd8478b874ad8df51d3e31f613d04db459bacdb39b8f0671ae33b#rd)
数据同步平台目前尚未在项目中应用,后续会尝试应用在一些数据同步的场景中,根据实际运行结果,再调整或补充功能.
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论