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

Jos*_*729 5 oracle sap abap oracle11g

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

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

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

如果不可能这样做,解释为什么会有所帮助!

myd*_*rms 8

您有很多选择可以做到这一点.

如果您正在运行SAP BW,则有许多标准工具可帮助您进行提取和自动化流程.

否则,您可以编写一个简单的ABAP程序(类型1)来从表中读取数据并将其放入平面文件中.

否则,您可以编写启用远程的功能模块(RFC)并使用SAP的RFC库调用它.

您还可以使用Web服务包装RFC函数,并通过SOAP/HTTP调用它.

最后,如果您有权访问数据库,您甚至可以编写脚本来提取所需的数据.

从DB表中提取内容的程序的简单示例:

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.
Run Code Online (Sandbox Code Playgroud)

这真的很原始,但你明白了.它从数据库表中选择数据到内部表(在内存中),并将其写入/tmp/outfile.txt服务器上调用的文件,您可以从中获取它.(您必须将输出更改为所需格式).

然后,您可以使用SM36安排程序作为后台作业定期运行.

  • @mydoghasworms:嗯,如果该表有例如1000万条记录,这个程序将无法工作.应该使用`OPEN CURSOR`语句来选择数据,而不是将它们连续写入文件. (2认同)