原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
一
前言
前文介绍过怎么通过ABAP访问外部数据库
> 配置篇,详见链接 无峰,公众号:ABAP 技巧与实战 [ ABAP基础知识 访问外部数据库-配置篇
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486675&idx=1&sn=880947996ba5d9e851b666934c5d2f97&chksm=cf5dd1e5f82a58f3f4dfa774156a3853dcac4fc3950944ace75517dd689eceee2ca9aab19cb4&token=1858200308&lang=zh_CN#rd)
> 开发篇,详见链接 无峰,公众号:ABAP 技巧与实战 [ ABAP基础知识 访问外部数据库-开发篇
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486714&idx=1&sn=8ac7061472f7e0ac9e0a3f3356c8c8c5&chksm=cf5dd1ccf82a58da1a12329e5a9a3eef13dc9a3ddc3aecd5a1e22d9579ce43e4caff739fd89c&token=1858200308&lang=zh_CN#rd)
>
本文主要介绍一个简单的工具
**同步外部数据库的任意表到ECC/S4的表中**
通过文末的代码,大家也可以了解一下ABAP怎么通过ADBC动态访问外部数据库表
二
程序执行
输入需要同步的数据库连接(详见配置篇). 需要同步的表名,及读取数据的限制条目.
执行后,提示成功的记录数
该程序连接外部ORACLE数据库及外部HANA数据库,测试通过
三
注意事项
程序主要从外部数据库读取表内容写入同名本地表中
需要同步的表需要在ECC/S4系统中存在并且远程数据库的表关键字必须与本地表一致(因为使用modify 从内表更新表,
如果主键不一致,会导致更新后的数据减少)
非关键字段无需一致,同名字段自动赋值.
每次执行只能同步一个表的内容,如果需要批量同步多个表,需要再写一个程序调用该程序.
外部系统也可以是ECC/S4系统. 这样就可以实现两个ECC系统中的表数据内容同步了.
该程序未对日期字段做特殊处理,实际应用时需要调整读取外部系统的SQL语句.
四
源代码截图
程序实现代码非常简单, 动态读取外部表内容的FORM详见文末源代码部分.
动态读取外部表内容部分有详细的注释,解释每个语句的含义.
五
总结
同步外部数据库的表到ECC/S4系统是ADBC访问数据库的一个简单应用.
在这个基本功能的基础上,通过补充部分配置信息,可以实现一个简单的LT系统(SAP的一个数据底层数据同步工具)
> 关于LTRC的配置详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP操作手册之 LT数据同步配置
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485198&idx=1&sn=347f54003b85c13e91a8b30cdaad0b9d&chksm=cf5dda38f82a532eb20ab75c79ff58af8dd16e2ce2c0e69ce3fd1fab70e3b489722b90ea96b0&token=1858200308&lang=zh_CN#rd)
• 补充配置表维护需要同步的表,同步周期,时间戳字段名,上次时间戳值等
• 简单过滤条件(只同步需要的数据)
• 补充配置表维护字段隐射关系(包含内容转换关系)
• 实现双向同步
• ......
后续考虑补充上述逻辑实现这个简单的数据同步工具.
源代码部分