Как извлечь данные из системы SAP ABAP? - PullRequest
5 голосов
/ 02 февраля 2012

Мне нужно извлечь данные из системы SAP ABAP в формате, который затем можно загрузить в базу данных Oracle (xlsx, csv, dmp и т. Д.)

После извлечения данных я буду использоватьPentaho, чтобы загрузить его в базу данных Oracle.

Есть ли способ извлечь данные из SAP?Мне также нужно будет автоматизировать это (извлечение), но сейчас это не слишком большая проблема, я могу подумать / побеспокоиться об этой части позже.

Если это невозможно сделать, объяснение, почему было бы полезно!

Ответы [ 3 ]

8 голосов
/ 02 февраля 2012

У вас есть несколько вариантов сделать это.

Если вы используете SAP BW, есть много стандартных инструментов, которые помогут вам делать извлечения и автоматизировать процессы.

В противном случае выможет написать простую ABAP-программу (тип 1) для чтения данных из таблиц и помещения их в плоский файл.

В противном случае вы можете написать удаленный функциональный модуль (RFC) и вызвать его с помощью библиотеки RFC SAP..

Вы также можете обернуть свою функцию 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 периодически в качестве фонового задания.

3 голосов
/ 02 февраля 2012

Вы также можете использовать удаленный включенный функциональный модуль 'RFC_READ_TABLE', вы можете дать ему любое имя таблицы и разделитель, и он вернет внутреннюю таблицу, отформатированную для вас.

0 голосов
/ 23 июля 2015

Один из вариантов решения этой проблемы - найти драйвер JDBC для данных SAP ERP, который собирает таблицы, просматривая уровень логической таблицы SAP.

Если у вас есть подходящий драйвер JDBC, вы можете использовать его из Pentaho.

Я пробовал этот тип решения JDBC поверх SAP ERP с Talend, и он прекрасно работает.

RFC_READ_TABLE, как указывалось в предыдущих комментариях, довольно ограничено с точки зрения количества полей таблицы, а также количества записей, не говоря уже о проблемах преобразования.

...