我需要以一种格式从SAP ABAP系统中提取数据,然后将其加载到Oracle数据库中(xlsx,csv,dmp ..等)
提取数据后,我将使用Pentaho将其上传到Oracle数据库。
有没有办法从SAP提取数据?我还需要自动化它(提取),但现在这不是太大的问题,我可以稍后解决/担心这一部分。
如果无法这样做,解释为什么会有所帮助!
答案 0 :(得分:8)
您有很多选择可以做到这一点。
如果您正在运行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.
这真的很原始,但你明白了。它从数据库表中选择数据到内部表(在内存中),并将其写入服务器上名为/tmp/outfile.txt
的文件,您可以从中获取它。 (您必须将输出更改为所需的格式)。
然后,您可以使用SM36安排程序作为后台作业定期运行。
答案 1 :(得分:3)
您还可以使用远程启用功能模块“RFC_READ_TABLE”,您可以为其提供任何表名和分隔符,它将返回为您精心格式化的内部表。
答案 2 :(得分:-1)
解决此问题的一个选项是查找SAP ERP数据的JDBC驱动程序,该驱动程序通过查看SAP逻辑表级别来收集表。
一旦拥有了正确的JDBC驱动程序,就可以使用Pentaho中的那个。
我已经使用Talend在SAP ERP解决方案上尝试过这种类型的JDBC,效果很好。
RFC_READ_TABLE如前面的评论所指出的那样,在表字段数量和记录数量方面都非常有限,更不用说转换问题了。