如何从SAP ABAP系统中提取数据?

时间:2012-02-02 04:00:23

标签: oracle oracle11g sap abap

我需要以一种格式从SAP ABAP系统中提取数据,然后将其加载到Oracle数据库中(xlsx,csv,dmp ..等)

提取数据后,我将使用Pentaho将其上传到Oracle数据库。

有没有办法从SAP提取数据?我还需要自动化它(提取),但现在这不是太大的问题,我可以稍后解决/担心这一部分。

如果无法这样做,解释为什么会有所帮助!

3 个答案:

答案 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如前面的评论所指出的那样,在表字段数量和记录数量方面都非常有限,更不用说转换问题了。