2009-09-23 278 views
21

Python可以用来查询SAP数据库吗?SAP可以使用Python吗?

+0

SAP作为数据库引擎!你能详细说明一下吗? – middus 2009-09-23 20:47:41

+2

我的意思是SAP是一个非常复杂的系统,但为了这个问题的目的,我只需要能够得到ABAP程序的输出(他们称之为输出'list',我认为)。 – 2009-09-24 10:07:19

+0

你指的是一个叫做“abap list”的东西。从外部获得相同的输出并不容易。大部分标准的不是作为功能实现的。所以如果没有一些abap编程,你就无法从外部输出。 – 2009-09-29 07:17:19

回答

18

Python SAP RFC module似乎无效 - last (insignificant) commit 2年前 - 但可以为您服务:

Pysaprfc是围绕SAP librfc的包装(在Windows librfc32.dll,librfccm.so或librfc.so在Linux上)。它使用Thomas Heller的优秀ctypes扩展包访问librfc并定义SAP兼容数据类型。

现代SAP版本去Web Service way - 你可以建立一个SAP Web ServicePython使用它。

借助SAP NetWeaver,开发人员可以连接应用程序和数据源,以使用Web服务集成流程。

特别是,开发人员可以使用一种基础架构以基于行业标准的方式定义,实施和使用Web服务。 SAP NetWeaver支持同步,异步,有状态和无状态Web服务模型 - 支持开发人员支持不同的集成方案。

sapnwrfc支持此功能SAP NetWeaversupersedes旧的RFC SDK,并积极维护。

+3

+1:使用urllib2编写Python web服务非常容易。 – 2009-09-23 17:19:43

+0

伟大的,Web服务是要走的路! – 2009-09-24 10:35:47

+1

这显然是这个问题的技术答案 - 但如果你只是在写查询,为什么? SQ01和SQVI提供对数据库的查询访问权限。 – 2009-09-24 13:44:00

4

SAP不是数据库服务器。 但是使用Python SAP RFC模块,您可以很容易地查询大多数表。它使用一些sap不受支持的功能(世界上所有人都在使用)。这个函数对字段大小和数据类型有一些限制。

+0

那么,SAP有很多功能...... – 2009-09-24 10:08:07

+0

好吧,您可以将它用作数据库服务器 - 尽管它非常昂贵:P – Esti 2009-09-29 06:46:31

5

如果你谈论的是(以前被命名)的SAP数据库AKA SapDb,现在是MaxDB(一会儿也分布由MySQL公司,now再由SAP只有 - 等命名SAP MaxDB)它带有几个Python访问模块,记录在here

这是我可以附加到“SAP作为数据库引擎”的唯一含义 - 您要访问SAP MaxDB。其他答案做出不同的假设,并且(我相信)在这些不同的假设下也是正确的。

+0

原始问题不是很清楚,您的解释非常合适。在该领域的SAP安装不使用SAP MaxDB,所以我猜想的意思有点不同。 – gimel 2009-09-24 04:54:14

+0

其实,我的意思是平均SAP安装,请原谅我的模糊性。 – 2009-09-24 10:36:34

2

如上所述,当您只想读表或执行RFC或BAPI调用时,可以将CPython与未维护的Python SAP RFC模块或Piers Harding的SAP RFC一起使用。只读表的RFC调用是RFC_GET_TABLE_ENTRIES或RFC_READ_TABLE,其中前者是首选,但也不会发布给客户。

对于更正式的方式,您可以使用SAP的JCO连接器与Jython或SAP的.Net连接器与Ironpython;这两个连接器都可以从SAP的服务市场下载,并且都可以调用RFC功能,包括上面列出的两个调用。如上所述,SAP提出的访问后端功能的方式是通过SAP庞大的SOA基础架构实现的。在这里你可以使用Jython和例如Axis库或Ironpython with Microsofts WCF。请注意,由SAP提供的服务显然不允许您访问普通表,而只能调用服务提供的内容。 SAP已经提供了大约3.000个服务(参见SDN上的ES Wiki),创建自己的服务实际上已经非常简单,只要您在启用远程的功能模块中拥有业务逻辑即可。

2

SAP现在有一个Python的RFC连接器称为pyrfc。这取代了sapnwrfc。

这可以被发现在:https://github.com/SAP/PyRFC

“的pyrfc Python包提供了Python绑定的SAP NetWeaver RFC库,用于调用从ABAP Python和Python模块ABAP模块的一个舒适的方式,通过SAP远程函数调用(RFC)协议“。

+0

@bsrdjan PyRFC是否可以自动执行用户在SAP GUI上执行的任务? (用于测试自动化) – 2016-09-08 15:12:28

+0

它取决于你想调用的函数,并不是所有函数都被写入与RFC一起工作。它已经有一段时间了,但深入研究每个函数的文档将揭示它是否可以通过RFC – hansonap 2016-09-08 21:46:51

+0

调用。如果与[CCo](http://cco.stschnell.de/)或JCo相比较 - PyRFC是否覆盖了相同的功能? – 2016-09-12 10:26:30