Kettle同步SAP数据之通用函数RFC_READ_TABLE介绍

Kettle连接SAP操作指南
视频:AV676637924
背景
SAP数据同步至数据仓库,由于License限制,没有SAP和HANA直连许可,因此开始研究各种API方式接入

上图可见,调用 RFC_READ_TABLE 函数,可以获取SAP表的数据。

通过这个配置可见,连接方式是RFC连接。
在下载了最新版Kettle之后,尝试跟着视频如法炮制,结果在连接页面一直连接不上SandBox环境,也不提示任何错误。视频中“应该拷贝哪些Jar包”的问题,也没有给出答案,估计找遍全网都没有。
破解之道
于是开始琢磨看看日志,用jd-gui反编译kettle的jar包看看。

从kettle的项目结构入手,猜想主要连接SAP的包可能在lib和plugins文件夹中。

果不其然,jar包就在其中,于是新建工程,导入一下试试:

从上图可见,注释都是我踩过的坑,Jar包和SDK都太老了,而从SAP下载必须登录客户账号(因为网络上找不到合适的资源,最终还是找的德勤的伙伴给下载的)
下载地址: https://support.sap.com/en/product/connectors/jco.html
借助Kettle的实现,直接写调用代码即可:

以上代码运行结果:

可见已成功连接并读取数据。
弊端
受限于数据最大长度512字节,无法完成大表同步。

其他方式
Python亦可实现,前提是解决包冲突和SDK依赖问题:

ChatGPT的回答:

以及关于ODP的对比:

以及其他方式的对比:

竟然推荐我直连HANA,澄清下看看怎么说:

关于ODATA和ODP的对比:

顺便问问实时接入(后被告知License不含此项,需额外付费)
