我需要从SAP ABAP系统中提取数据,然后将其加载到Oracle数据库(xlsx、csv、dmp…等)中
一旦数据被提取出来,我将使用Pentaho将其上传到Oracle数据库中。
是否有从SAP中提取数据的方法?我还需要自动化它(提取),但现在这不是太大的问题,我可以稍后考虑/担心这一部分。
如果不可能这样做,解释一下原因会很有帮助!
您有很多选择。
如果您运行的是SAP BW,有许多标准工具可以帮助您进行提取和自动化流程。
否则,您可以编写一个简单的ABAP程序(类型1),从表中读取数据并将其放入平面文件中。
否则,您可以编写一个启用远程的功能模块(RFC),并使用SAP的RFC库进行调用。
您也可以用web服务包装您的RFC函数,并通过SOAP/HTTP调用它。
最后,如果您可以访问数据库,您甚至可以编写一个脚本来提取所需的数据。
从数据库表中提取内容的程序的一个简单示例:
report ZEXTRACT_EXAMPLE.
data: lt_t001 type table of t001.
data: ls_t001 type t001.
data: lv_filename type string value '/tmp/outfile.txt'.
select * from t001 into table lt_t001.
open dataset lv_filename for output in text mode encoding default.
loop at lt_t001 into ls_t001.
transfer ls_t001-bukrs to lv_filename.
endloop.
close dataset lv_filename.
这真的很原始,但你会明白的。它将DB表中的数据选择到内部表(内存中)中,并将其写入服务器上名为/tmp/outfile.txt
的文件中,从中可以提取数据。(您必须将输出更改为所需的格式)。
然后,您可以使用SM36安排您的程序作为后台作业定期运行。
您还可以使用远程启用的功能模块"RFC_READ_TABLE",您可以为其提供任何表名和分隔符,它将为您返回格式良好的内部表。
解决此问题的一个选项是找到SAP ERP数据的JDBC驱动程序,该驱动程序通过查看SAP逻辑表级别来收集表。
一旦你有了合适的JDBC驱动程序,你就可以使用Pentaho的驱动程序。
我用Talend尝试过这种JDBC over SAP ERP解决方案,效果很好。
前面的评论指出,RFC_READ_TABLE在表字段数量和记录数量方面都非常有限,更不用说转换问题了。