2009-09-23 50 views
21

¿Se puede usar Python para consultar una base de datos SAP?¿Puede SAP trabajar con Python?

+0

SAP como motor de base de datos !? ¿Podrías profundizar en eso? – middus

+2

Lo que quiero decir es que SAP es un sistema muy complicado, pero para el propósito de esta pregunta, solo necesito poder obtener resultados de programas ABAP (ellos llaman 'lista' de salida, creo). –

+0

Usted se refiere a algo llamado "lista de abap". No es fácil obtener el mismo resultado externamente. La mayoría de los estándares no están implementados como funciones. Entonces no puedes obtener la salida de la savia externa sin una programación abap. –

Respuesta

18

Python SAP RFC module parece inactivo - hace last (insignificant) commit 2 años - pero puede servirle:

Pysaprfc es una envoltura alrededor de librfc SAP (librfc32.dll en Windows, o librfccm.so librfc.so en Linux). Utiliza el excelente paquete de extensión ctypes de Thomas Heller para acceder a librfc y definir tipos de datos compatibles con SAP.

Las versiones modernas de SAP van del Web Service way - se podría construir un SAP Web Service y lo consumen desde Python.

Con SAP NetWeaver, los desarrolladores pueden conectar aplicaciones y orígenes de datos para integrar procesos utilizando servicios web.

En particular, los desarrolladores pueden usar una infraestructura para definir, implementar y usar servicios web de una manera basada en los estándares de la industria. SAP NetWeaver admite modelos de servicio web sincrónico, asíncrono, con estado y sin estado, lo que permite a los desarrolladores soportar diferentes escenarios de integración.

sapnwrfcSAP NetWeaver soporta esta funcionalidad, supersedes la mayor RFC SDK, y se mantiene activa.

+3

+1: los servicios web de Python son muy fáciles de escribir usando urllib2. –

+0

¡Genial, los servicios web son el camino a seguir! –

+1

Esta es claramente la respuesta técnica a la pregunta, pero si todo lo que hace es escribir consultas, ¿por qué? SQ01 y SQVI proporcionan acceso de consulta a la base de datos. –

4

Sap NO es un servidor de base de datos. Pero con el módulo Python SAP RFC puede consultar la mayoría de las tablas con bastante facilidad. Está usando alguna función no compatible de sap (que todo el mundo está usando). Y esta función tiene alguna limitación en el tamaño del campo y los tipos de datos.

+0

Bueno, SAP tiene mucha funcionalidad ... –

+0

bien podría usarlo como un servidor de base de datos, aunque muy costoso: P – Esti

5

Si estamos hablando de (lo que solía ser llamado) la base de datos de SAP También conocido como SapDb, y ahora es MaxDB (por un tiempo distribuido también por MySQL Inc, now de nuevo por SAP única - y así llamado SAP MaxDB), viene con varios módulos de acceso de Python, documentados here.

Este es el único significado que puedo adjuntar a "SAP como motor de base de datos": que desea acceder a SAP MaxDB. Otras respuestas hacen suposiciones diferentes y (creo) también son correctas ... bajo esas suposiciones diferentes.

+0

La pregunta original no es muy clara y su interpretación es muy apropiada. Las instalaciones de SAP en el campo no usan SAP MaxDB, así que supuse un significado algo diferente. – gimel

+0

En realidad, quise decir la instalación promedio de SAP, perdone mi ambigüedad. –

2

Como se indicó anteriormente, cuando solo quiere leer tablas o hacer llamadas RFC o BAPI, puede usar CPython con el módulo Python SAP RFC no mantenido o Piers Harding SAP RFC. Las llamadas de RFC para leer solo una tabla son RFC_GET_TABLE_ENTRIES o RFC_READ_TABLE, donde se prefiere la primera, pero también no se divulga a los clientes.

Para una forma más oficial, puede utilizar el conector JCO de SAP con Jython o el .Net Connector de SAP con Ironpython; ambos conectores se pueden descargar desde el mercado de servicios de SAP y ambos permiten llamar a la funcionalidad RFC, incluidas las dos llamadas enumeradas anteriormente.

Como también se indicó anteriormente, la forma propuesta por SAP para acceder a la funcionalidad de back-end es a través de la amplia infraestructura SOA de SAP. Aquí puedes usar Jython con, p. la biblioteca de Axis o Ironpython con Microsofts WCF. Tenga en cuenta que los servicios proporcionados por SAP, obviamente, no le permitirán acceder a las tablas simples, en su lugar solo puede llamar, lo que proporciona un servicio. SAP ya ofrece alrededor de 3.000 servicios (consulte ES Wiki en SDN), y la creación de su propio servicio es, de hecho, muy simple, una vez que tenga su lógica de negocio en un módulo de funciones habilitadas remotamente.

2

SAP tiene ahora un conector Python llamada RFC pyrfc. Esto reemplaza a sapnwrfc.

Esto se puede encontrar en: https://github.com/SAP/PyRFC

"El paquete pyrfc Python proporciona enlaces Python para SAP NetWeaver Biblioteca RFC, de una manera cómoda de llamar a los módulos ABAP de módulos de Python y Python de ABAP, a través de SAP remoto Función de llamada (RFC) protocolo ".

+0

@bsrdjan ¿Es posible con PyRFC automatizar tareas que un usuario normalmente realizaría en SAP GUI? (para fines de automatización de prueba) –

+0

Depende de la función que desea llamar, no todas las funciones están escritas para trabajar con RFC. Ha pasado un tiempo, pero profundizar en la documentación de cada función revelará si se puede llamar por RFC – hansonap

+0

Si se compara con [CCo] (http://cco.stschnell.de/) o JCo - PyRFC cubre la misma funcionalidad ? –