2012-02-02 1 views
5

мне нужно, чтобы извлечь данные из системы SAP ABAP в формате, который затем может быть загружен в базу данных Oracle (XLSX, CSV, DMP .. и т.д.)Как извлечь данные из системы SAP ABAP?

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

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

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

ответ

6

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

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

+0

Спасибо. Я попробую это. – Joshua1729

+2

@mydoghasworms: Ну, эта программа вряд ли сработает, если в таблице есть, например, 10 миллионов записей. Нужно скорее использовать инструкцию 'OPEN CURSOR' для выбора данных и затем последовательно записать их в файл. – Jagger

+1

@mydoghasworms: Еще одна вещь ... если таблица содержит некоторые поля, которые являются несимвольными полями, вы получите разную длину, например, целые числа или десятичные числа в текстовом файле. – Jagger

2

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

+0

RFC_READ_TABLE имеет несколько коротких замыканий: - работает только в том случае, если в таблице есть все поля CHAR (один INT или FLOAT и вы разорены), - максимальная ширина таблицы - 512, - работает только в не-Юникоде (если backend - это Unicode, внутреннее выравнивание полей будет искажено ...) - и, наконец, это большой недостаток безопасности, возможно, в обход полномочий на уровне бизнеса, которые могут быть защищены этой таблицей ... Другими словами: никогда используй это! – Lanzelot

+0

Согласовано. За исключением того, что я использовал RFC_READ_TABLE в Unicode-системах без проблем? – tomdemuyt

-1

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

Как только у вас есть правильный драйвер JDBC, вы можете использовать его у Pentaho.

Я пробовал этот вид JDBC через SAP ERP-решение с Talend, и он отлично работает.

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

+0

RFC_READ_TABLE действительно плохо. Но это решение выглядит еще хуже: действительно ли вы передали бы пароль вашей базы данных SAP на какой-нибудь сценарий JDBC, который где-то работает и может легко скомпрометироваться? Это может означать передачу драгоценностей короны вашей компании любому старому хакеру (или ненадежному сотруднику), которому удается найти этот скрипт ... – Lanzelot

 Смежные вопросы

  • Нет связанных вопросов^_^