Python を使用して SAP データベースにクエリを実行できますか?
7 に答える
Python SAP RFCモジュールは非アクティブのようです-最後の(重要でない)コミットは2年前です-しかし、あなたに役立つかもしれません:
Pysaprfc は、SAP librfc (Windows では librfc32.dll、Linux では librfccm.so または librfc.so) のラッパーです。Thomas Heller による優れた ctypes 拡張パッケージを使用して librfc にアクセスし、SAP 互換のデータ型を定義します。
最新の SAP バージョンでは、このWeb Service
方法がSAP Web Service
採用されていPython
ます。
SAP NetWeaver を使用すると、開発者はアプリケーションとデータ ソースを接続し、Web サービスを使用してプロセスを統合できます。
特に、開発者は 1 つのインフラストラクチャを使用して、業界標準に基づいた方法で Web サービスを定義、実装、および使用できます。SAP NetWeaver は、同期、非同期、ステートフル、およびステートレスの Web サービス モデルをサポートしているため、開発者はさまざまな統合シナリオをサポートできます。
sapnwrfc
はこのSAP NetWeaver
機能をサポートし、古い RFC SDK に取って代わり、積極的に保守されています。
Python RFC コネクタがオープン ソースとして利用可能になりました: PyRFC
SAP には現在、pyrfc と呼ばれる Python RFC コネクタがあります。これは sapnwrfc に取って代わります。
これはhttps://github.com/SAP/PyRFCにあります。
「pyrfc Python パッケージは、SAP リモート ファンクション コール (RFC) プロトコルを介して、Python から ABAP モジュールと ABAP から Python モジュールを呼び出す快適な方法のために、SAP NetWeaver RFC ライブラリの Python バインディングを提供します。」
(以前は名前が付けられていた) SAP Database AKA SapDbについて話している場合、現在はMaxDB (MySql Inc によってもしばらく配布されていましたが、現在は SAP のみによって配布されているため、SAP MaxDBと名付けられました) が付属しています。ここに記載されているいくつかの Python アクセス モジュール。
これが、「データベース エンジンとしての SAP」に付けられる唯一の意味です。つまり、SAP MaxDB にアクセスしたいということです。他の答えは異なる仮定をしており、(私は信じています)それらの異なる仮定の下でも正しいです。
Sap はデータベース サーバーではありません。しかし、Python SAP RFC モジュールを使用すると、ほとんどのテーブルを非常に簡単にクエリできます。サポートされていない機能(世界中で使用されている)を使用しています。また、この関数には、フィールド サイズとデータ型にいくつかの制限があります。
上で述べたように、テーブルを読んだり、RFC や BAPI 呼び出しをしたいだけの場合は、CPython をメンテナンスされていない Python SAP RFC モジュールまたは Piers Harding のSAP RFCで使用できます。テーブルを読み取るだけの RFC 呼び出しは RFC_GET_TABLE_ENTRIES または RFC_READ_TABLE で、前者が優先されますが、顧客にはリリースされません。
より正式な方法として、Jython で SAP の JCO コネクタを使用するか、Ironpython で SAP の .Net コネクタを使用できます。どちらのコネクタも SAP のサービス マーケットプレイスからダウンロードでき、上記の 2 つの呼び出しを含む RFC 機能を呼び出すことができます。
上記でも述べたように、バックエンド機能にアクセスするために SAP が提案する方法は、SAP の広大な SOA インフラストラクチャを経由することです。ここでは、たとえば Axis ライブラリで Jython を使用したり、Microsoft の WCF で Ironpython を使用したりできます。SAP が提供するサービスでは、明らかにプレーン テーブルへのアクセスは許可されないことに注意してください。代わりに、サービスが提供するものを呼び出すことができます。SAP はすでに約 3,000 のサービスを提供しており (SDN の ES Wiki を参照)、独自のサービスを作成することは、リモート対応の関数モジュールにビジネス ロジックを組み込むと、実際には非常に簡単です。