[Python, ERP-системы, Big Data] Выгрузка данных из SAP через RFC на Python
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Поговорим о выгрузке данных из SAP ERP или S/4 HANA с использованием механизма SAP RFC. Такая выгрузка может служить для наполнения аналитического хранилища данных или для интеграции с другой системой.Интерфейс SAP RFC (remote function call) позволяет вызывать различные функции SAP из стороннего приложения.Преимущества этого интерфейса:
- прямое и быстрое подключение с SAP.
- возможность менять параметры запроса, запрашивая данные частями.
- отсутствие промежуточных звеньев в обмене данными и, как следствие, высокая надежность.
УстановкаДля работы через RFC вам потребуется установить следующее:
- Библиотека PyRFC https://github.com/SAP/PyRFC pip install pynwrfc
- Библиотека SAP NW RFC для вашей платформы, скачанный с https://support.sap.com (нужен акаунт SAP).
- Установить переменную окружения, указав каталог с библиотекой SAP NW RFC: SAPNWRFC_HOME=C:\NWRFC\nwrfcsdk\
Поиск уже имеющихся в системе функцийВ системе SAP можно поискать уже готовые функциональные модули.Сделать это можно следующим образом:
- Запустить транзакцию SE16 (просмотр таблиц).
- Указать имя таблицы TFDIR.
- Задать фильтры для поиска:
- FUNCNAME=*MATERIAL* (задать маску поиска)
- FMODE=R (возможность вызова функции через механизм RFC)
Чтение таблиц через RFC_READ_TABLERFC_READ_TABLE позволяет выгружать данные из таблицы SAP, ограничивая выборку фильтрами.Несмотря на то, что SAP позиционирует эту функцию как тестовую и не предназначенную для использования в продуктивной среде, она вполне работоспособна.Следует сказать, что RFC_READ_TABLE часто неудобна, т.к. она позволяет читать только одну таблицу (не поддерживает JOIN).В этой статье я не буду подробно описывать работу с этой функцией, т.к. в интернете существует множество примеров ее использования. Вместо этого приведу пример вызова функции стандартной функции BAPI_MATERIAL_GETLIST, выдающий список материалов по заданным критериям поиска. Просмотр функции через SE37Входные и выходные параметры функции можно просмотреть с использованием транзакции SE37.Параметры вызова функции присутствуют на следующих вкладках:
- Importing - входные параметры простого типа (не табличные)
- Exporting - выходные параметры простого типа
- Tables - как входные, так и выходные параметры в виде таблиц
Рассмотрим использование SE37 на примере BAPI_MATERIAL_GETLIST.Для того, чтобы посмотреть состав полей таблиц нужно дважды кликнуть на поле с типом данных.
SE37 - вкладка Tables
Просмотр полей таблицыЭта функция выдает не слишком много полезных данных: Номер материала и описание.Другие таблицы нужны для передачи на вход параметров выборки.Например поиск по коду материала (MATNRSELECTION):
Таблица входных значенийПодключаемся к SAPПодключение к SAP с использованием библиотеки pyrfc делается не сложно. (Настройки подключения можно посмотреть в SAP GUI.)Код на Python:import pandas as pdimport osimport pyrfcconn = pyrfc.Connection(user='', passwd='', mshost='111.111.11.11', msserv='3600', sysid='010', group='NN', saprouter='', lang='EN',client='') Вызываем необходимую функциюРассмотрим вызов функции на примере BAPI_MATERIAL_GETLIST.Сначала зададим входные параметры.В данном случае для каждого параметра в таблице будет по одной строке. Строка таблицы задается как python dictionary, а вся таблица задается как list, состоящий из строк.В нашем примере укажем фильтр на код материала: '' (т.е. все значения), а также укажем значение для Plant.Для выборки используем SIGN="I" (Includes), Варианты для OPTION:
- EQ Equal
- BT Between (требует задать значение для для LOW и HIGH)
- LE Less Equal
- GE Greater Equal
- CP Contains Pattern
matnrselection = [{'SIGN':'I', 'OPTION':'CP', 'MATNR_LOW':''}]plantselection = [{'SIGN':'I', 'OPTION':'EQ', 'PLANT_LOW':'NNNN'}]Далее вызываем функцию с этими параметрами.result = conn.call('BAPI_MATERIAL_GETLIST', MATNRSELECTION = matnrselection, PLANTSELECTION = plantselection)Преобразуем результат в DataFrameDataFrame можно получить в одну строку:df = pd.DataFrame(result['MATNRLIST'])Где MATNRLIST, это имя результирующей таблицы, указанное в разделе Tables.Итак, с помощью буквально нескольких строк кода, мы получили данные из SAP в DataFrame и можем дальше работать с этими данным используя все возможности языка Python.
===========
Источник:
habr.com
===========
Похожие новости:
- [Python, Искусственный интеллект] Искусственные нейронные сети. Часть 2
- [Информационная безопасность] Security Week 07: конфуз с зависимостями в софте
- [Python, Программирование] Разбираемся с not в Python (перевод)
- [Python, Программирование] Как перестать беспокоиться и начать жить
- [Python, Программирование] 7 полезных расширений VS Code для Python-разработчиков (перевод)
- [Open source] Google захывтывает Python
- [Высокая производительность, Python, Компиляторы] Как скомпилировать Python
- [Python, Программирование, Совершенный код, Управление разработкой] Код-ревью в Практикуме: как мы делаем его быстрее и эффективнее
- [Python, Big Data, Машинное обучение, Natural Language Processing] Как с помощью нейросети определить лучшую дату отправки email и повысить доход рассылки в 8,5 раз
- [Python, Машинное обучение, Искусственный интеллект] Генерация текста с помощью GPT2 и PyTorch (перевод)
Теги для поиска: #_python, #_erpsistemy (ERP-системы), #_big_data, #_sap, #_rfc, #_integratsija_prilozhenij (интеграция приложений), #_dwh, #_python, #_erpsistemy (
ERP-системы
), #_big_data
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:48
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Поговорим о выгрузке данных из SAP ERP или S/4 HANA с использованием механизма SAP RFC. Такая выгрузка может служить для наполнения аналитического хранилища данных или для интеграции с другой системой.Интерфейс SAP RFC (remote function call) позволяет вызывать различные функции SAP из стороннего приложения.Преимущества этого интерфейса:
SE37 - вкладка Tables Просмотр полей таблицыЭта функция выдает не слишком много полезных данных: Номер материала и описание.Другие таблицы нужны для передачи на вход параметров выборки.Например поиск по коду материала (MATNRSELECTION): Таблица входных значенийПодключаемся к SAPПодключение к SAP с использованием библиотеки pyrfc делается не сложно. (Настройки подключения можно посмотреть в SAP GUI.)Код на Python:import pandas as pdimport osimport pyrfcconn = pyrfc.Connection(user='', passwd='', mshost='111.111.11.11', msserv='3600', sysid='010', group='NN', saprouter='', lang='EN',client='') Вызываем необходимую функциюРассмотрим вызов функции на примере BAPI_MATERIAL_GETLIST.Сначала зададим входные параметры.В данном случае для каждого параметра в таблице будет по одной строке. Строка таблицы задается как python dictionary, а вся таблица задается как list, состоящий из строк.В нашем примере укажем фильтр на код материала: '' (т.е. все значения), а также укажем значение для Plant.Для выборки используем SIGN="I" (Includes), Варианты для OPTION:
=========== Источник: habr.com =========== Похожие новости:
ERP-системы ), #_big_data |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:48
Часовой пояс: UTC + 5