2009-09-23 129 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