2009-09-23 3 views
21

Может ли Python использоваться для запроса базы данных SAP?Может ли SAP работать с Python?

+0

SAP как механизм базы данных !? Не могли бы вы рассказать об этом? – middus

+2

Что я имею в виду, так это то, что SAP - очень сложная система, но для этого вопроса мне просто нужно получить выходы программ ABAP (я думаю, они называют вывод 'list'). –

+0

Вы ссылаетесь на то, что называется «abap list». Нелегко получить такой же выход извне. Большинство стандартных не реализованы как функции. Таким образом, вы просто не можете получить выход из внешнего sap без какого-либо программирования abap. –

ответ

18

Python SAP RFC module кажется неактивным - last (insignificant) commit 2 года назад - но может служить вам:

Pysaprfc является оберткой SAP librfc (librfc32.dll на Windows, librfccm.so или librfc.so на Linux). Он использует превосходный пакет расширения ctypes Томаса Хеллера для доступа к librfc и для определения типов данных, совместимых с SAP.

Современные версии SAP идут Web Service way - вы могли бы построить SAP Web Service и потреблять его из Python.

С помощью SAP NetWeaver разработчики могут подключать приложения и источники данных для интеграции процессов с использованием веб-служб.

В частности, разработчики могут использовать одну инфраструктуру для определения, внедрения и использования веб-сервисов на основе отраслевых стандартов. SAP NetWeaver поддерживает синхронные, асинхронные, устаревшие и безстоящие модели веб-сервисов, что позволяет разработчикам поддерживать различные сценарии интеграции.

sapnwrfc поддерживает эту SAP NetWeaver функциональность, supersedes старше RFC SDK, и активно поддерживается.

+3

+1: веб-службы Python очень легко писать, используя urllib2. –

+0

Отлично, веб-сервисы - это путь! –

+1

Это, безусловно, технический ответ на вопрос - но если все, что вы делаете, это писать запросы, почему? SQ01 и SQVI предоставляют запрос доступа к базе данных. –

4

Sap НЕ является сервером базы данных. Но с помощью RFID-модуля Python вы можете легко запросить большую часть таблицы. Он использует некоторую неподдерживаемую функцию sap (которую использует весь мир). И эта функция имеет некоторое ограничение на размер поля и типы данных.

+0

Ну, у SAP есть много возможностей ... –

+0

ну, вы можете использовать его в качестве сервера базы данных - хотя и очень дорогостоящего: P – Esti

5

Если вы говорите (что раньше имя) базы данных SAP АКА SapDb, и теперь MaxDB (на некоторое время распределены также MySql Inc, now снова SAP только - и назван так SAP MaxDB), он поставляется с несколькими модулями доступа Python, задокументированными here.

Это единственное значение, которое я могу прикрепить к «SAP как движок базы данных» - вы хотите получить доступ к SAP MaxDB. Другие ответы делают разные предположения и (я считаю) также верны ... при тех разных предположениях.

+0

Исходный вопрос не очень ясен, и ваша интерпретация очень уместна. В установках SAP в поле не используется SAP MaxDB, поэтому я догадался в несколько ином смысле. – gimel

+0

На самом деле, я имел в виду среднюю установку SAP, простите мою двусмысленность. –

2

Как указано выше, когда вы просто хотите читать таблицы или выполнять вызовы RFC или BAPI, вы можете использовать CPython с неподдерживаемым Python SAP RFC-модулем или Piers Harding's SAP RFC. RFC призывает просто прочитать таблицу RFC_GET_TABLE_ENTRIES или RFC_READ_TABLE, где первая предпочтительнее, но также не выпущена для клиентов.

Для более официального использования вы можете использовать JCO-коннектор SAP с JNeton или SAP .Net Connector с Ironpython; оба разъема могут быть загружены с рынка услуг SAP, и оба позволяют вызывать функциональность RFC, включая два вызова, перечисленные выше.

Как указано выше, способ, которым SAP предлагает доступ к функциональным возможностям бэкэнд, - это обширная инфраструктура SOA SAP. Здесь вы можете использовать Jython, например. библиотеку Axis или Ironpython с Microsoft WCF. Обратите внимание, что службы, предоставляемые SAP, очевидно, не позволят вам получить доступ к простым таблицам, вместо этого вы можете просто позвонить, что предоставляет служба. SAP уже предоставляет около 3.000 сервисов (см. ES Wiki на SDN), и создание собственной службы на самом деле мертво просто, как только вы используете свою бизнес-логику в функциональном модуле с возможностью удаленного доступа.

2

SAP теперь имеет разъем Python RFC под названием pyrfc. Это заменяет sapnwrfc.

Это можно найти по адресу: https://github.com/SAP/PyRFC

«Пакет pyrfc Python предоставляет привязки Python для SAP NetWeaver RFC Library, для удобного способа вызова ABAP модулей из модулей Python и Python из ABAP, с помощью SAP Remote Function Call (RFC) ».

+0

@bsrdjan Возможно ли с помощью PyRFC автоматизировать задачи, которые пользователь мог бы нормально выполнять в графическом интерфейсе SAP? (для автоматизации тестирования) –

+0

Это зависит от функции, которую вы хотите вызвать, а не для всех функций, написанных для работы с RFC. Это было какое-то время, но в документации каждой функции будет показано, можно ли ее вызвать по RFC – hansonap

+0

. По сравнению с [CCo] (http://cco.stschnell.de/) или JCo - работает ли PyRFC с той же функциональностью ? –