2012-10-25 20 views
11

私は、SQL Server 2008を使用して、SAPから財務情報のフィードを提供する必要のあるデータを格納するアプリケーションを用意しています(この会社ではOracle 11をバックエンドとして使用しています)。SAPからSQL Serverへのデータのエクスポート

私は、テーブルを読むためのアクセスについてSAPの人に尋ねました、彼らは言いませんでした。 私は自分のデータベースに直接接続してテーブルを埋めるように頼んだ、と彼らは言いませんでした。 (Oracleデータベースのフィード、SAP以外の他のアプリケーション、問題なく透過ゲートウェイを使用しているので、これが尋ねられます)

彼らは、SAPとのやりとりの唯一の方法はWebサービス。しかし、膨大な量のデータのために、私はそれがその道だとは思わない。

誰もがSAPとSQL Server間のインターフェイスを作成した経験がありますか?

私は説明を拡張するつもりです。私の現在のアプリケーションは、他の3つのアプリケーション(これは大きなエンタープライズ)によって既に供給されており、すべてが同じテーブルに送られ、さらに処理するためにデータを受け取ります。他のすべてのアプリケーション(1 Oracle、2 SQL Server)は、直接更新またはデータを保存するストアドプロシージャのいずれかを実行します。他の3つのアプリケーションは、互いに関係のない別のチームによって管理されます。彼らのすべては最初から苦情を申し立てましたが、最終的にはすべてデータをこのアプリケーションにエクスポートすることに同意しました。

したがって、SAPの人に同じことを納得させるのが理想的です。SQL Serverへの接続を開き、挿入を実行するかストアドプロシージャを実行します。

答えて

9

基本的な質問は - プッシュまたはプルですか? SAP R/3システムで定期的にデータをエクスポートして外部システムに手を差し伸べてデータを取得させるような設定をすることもできます。 「SAPと対話する唯一の必要性は、Webサービスの使用によるものです。技術的に言えば、これは牛のパートナーの糞便に近いものです。奇妙なポリシーや不本意なシステム管理者など、技術的ではない問題があるかもしれませんが、詳細に焦点を当てましょう。

"プッシュ"ソリューションに関しては、既存のレポートの1つを定期的に実行し、その出力をファイルに保存したり、どこかで郵送したりすることができます。これは比較的簡単ですが、必要なデータを提供するレポートが必要です。彼らがそこにいない場合は、スペックを書き留めて、それらをプログラムするか、または誰かにそれらをプログラムさせる。これは魔法ではなく、もう一つのプログラミング言語です。

プルしたい場合は、データベースを直接使うことができますが、私はそれを強く推奨します。あなたが最初にcluster tableにヒットすると、あなたは行き​​詰まってしまいます。大量のデータを考えている場合は、おそらくRFC接続(独自のプロトコル、他にもたくさんの質問があります)を確立し、BAPIが存在する場合はBAPIを使用することです。正式使用のためにリリースされ、SAPによって維持されます)、またはRFC_READ_TABLEを使用してデータにアクセスします。後者はすべてのテーブルで使用できないことに注意してください。テーブルの構造(合計サイズとフィールドタイプ)によって異なります。 Webサービスは、別のレベルのエンコーディングとノイズの多いものを追加するだけです。大量のETLプロセスにはあまり適していません。

+0

プッシュソリューションはどのように機能しますか?あなたは私にこれのためのドキュメンテーションを教えてもらえますか?私はhttpsでプッシュされたxml idocを受け取る[PHPクライアントを作成することができません](http://stackoverflow.com/questions/13969416/receiving-data-from-sap-web-application-server-over-https)しています。 – PiTheNumber

+0

@PiTheNumber:既に別の質問(http://stackoverflow.com/questions/13969416/receiving-data-from-sap-web-application-server-over-https)でこれを求めているので、私はむしろ私ができるなら、そこに答えなさい... – vwegert

2

私はこれを数年にわたって何度もやっており、基本的にはあなたが持っているSAPチームから同じ回答を受けました。ほとんどの場合、SSISパッケージを使用してSQL Serverにロードした、SAPによって生成されたフラットファイルの「レポート」が解決されました。そのトリックは、レポートが適切に設計されていることを確認しています。 SAPチームには、プロセスが稼動してデータが失われるまで、言及しなかったこれらのレポートの作成に「デフォルト」のフィルタが含まれています。がんばろう。

0

OracleではなくSQLを実行し、同様の問題が発生しました。 SAPシステムのDBレイヤーに直接アクセスすると、保証が無効になるという声がありました。だから私たちはSAPに直接尋ねました.App層を経由せずに更新、挿入、または削除しない限り、DB上で選択を行うことはOKです。 Appレイヤーの外で更新、挿入、または削除を行うと、保証は無効になるので、それは非スターターです。同じ回答が必要な場合は、SAPチームにOSSメッセージを開くことができます。

これは、1回限りのデータロードではなく、実行中のインターフェイスであれば、誰かにRFC、Webサービス、または進行中の抽出をビルドさせて、アプリケーションからデータを取得させるだけです。

0

あなたがそのようなアプリケーションインタフェースを知っているように、最良の選択肢は、データ量、リアルタイム対バッチ、同期対非同期のような多くの要因に依存します。データ量が多く、アプリケーションのリアルタイム更新が不要な場合は、SAP側でレポートを実行し、アプリケーションにアップロードするためのデータファイルを生成することも可能です。リアルタイム更新の場合、IDoc(複数のデータファイル)を使用できます。それ以外の場合は、SAPから必要な情報を引き出すために標準SAP API(BAPI)を使用することができます。また、SAPのユーザは、RFC_READ_TABLE関数のカスタムRFCを作成し、SQLのようなクエリを使用してSAPからデータを取得することもできます。

SAP側のABAPプログラムでNative SQLを使用してアプリケーションデータベースを直接更新することは可能です。私はMS-SQLサーバー用にこれを行いましたが、Oracle用にそれを使用する制限はありません。