2012-02-02 40 views
5

私はデータは、私がアップロードするPentahoのに使用します抽出されると、その後のOracleデータベースにロードできる形式でのSAP ABAPシステム(XLSX、CSV、DMP ...など)SAP ABAPシステムからデータを抽出する方法は?

からデータを抽出する必要がありますそれをOracleデータベースに追加します。

SAPからデータを抽出する方法はありますか?私はまたそれを自動化する必要があります(抽出)が、それはあまり問題ではありません、私は後でその部分を把握/心配することができます。

これができない場合は、なぜ役立つのか説明してください!

答えて

6

これにはいくつかのオプションがあります。

SAP BWを実行している場合、抽出を行いプロセスを自動化するための多くの標準ツールがあります。

それ以外の場合は、単純なABAPプログラム(タイプ1)を作成して、テーブルからデータを読み込んでフラットファイルにすることができます。

それ以外の場合は、リモート対応汎用モジュール(RFC)を記述し、SAPのRFCライブラリを使用して呼び出すことができます。

また、RFC機能をWebサービスでラップし、SOAP/HTTP経由で呼び出すこともできます。

最後に、データベースにアクセスできる場合は、スクリプトを作成して必要なデータを抽出することさえできます。

DBテーブルから何かを抽出するためのプログラムの簡単な例:

report ZEXTRACT_EXAMPLE. 

data: lt_t001 type table of t001. 
data: ls_t001 type t001. 
data: lv_filename type string value '/tmp/outfile.txt'. 

select * from t001 into table lt_t001. 

open dataset lv_filename for output in text mode encoding default. 

loop at lt_t001 into ls_t001. 
    transfer ls_t001-bukrs to lv_filename. 
endloop. 

close dataset lv_filename. 

これは本当に原始的ですが、あなたのアイデアを得ます。 DBテーブルから内部テーブル(メモリ内)にデータを選択し、サーバ上のファイル/tmp/outfile.txtに書き込みます。そこからファイルを取り出すことができます。 (出力を必要な形式に変更する必要があります)。

SM36でプログラムをスケジュールして、バックグラウンドジョブとして定期的に実行することができます。

+0

ありがとうございました。私はこれを試してみる。 – Joshua1729

+2

@mydoghasworms:テーブルが例えば1000万レコードあるなら、このプログラムはほとんど機能しません。むしろ、データを選択し、それらを連続してファイルに書き込むために、「OPEN CURSOR」ステートメントを使用する必要があります。 – Jagger

+1

@mydoghasworms:テーブルに文字以外のフィールドがいくつか含まれている場合は、テキストファイルの整数や小数点などの長さが異なります。 – Jagger

2

リモート有効化された汎用モジュール 'RFC_READ_TABLE'を使用して、任意のテーブル名と区切り文字を付けることができます。内部テーブルはきれいにフォーマットされます。

+0

RFC_READ_TABLEにはいくつかの欠点があります: - テーブルにすべてのCHARフィールド(INTまたはFLOATが1つあり、破棄されている)がある場合にのみ動作します。 - 最大テーブル幅は512です。バックエンドはUnicodeなので、フィールドの内部配列が壊れてしまいます)...そして、最終的には大きなセキュリティ上の欠陥であり、問​​題のテーブルが保護される可能性のあるビジネスレベルの認証をバイパスする可能性があります。これを使って! – Lanzelot

+0

合意。それ以外は問題なくUnicodeシステムでRFC_READ_TABLEを使用しましたか? – tomdemuyt

-1

これを解決する1つの方法は、SAP論理テーブルレベルを調べてテーブルを収集するSAP ERPデータに対するJDBCドライバを見つけることです。

正しいJDBCドライバを取得したら、それをPentahoから使用できます。

私はこの種のJDBCをTalendを使用したSAP ERPソリューションよりも試してみました。

RFC_READ_TABLEは、変換の問題はもちろんのこと、テーブルフィールドの数とレコード数の点でかなり制限されています。

+0

実際にはRFC_READ_TABLEが悪いです。しかし、このソリューションはさらに悪化しているように見えます.SAPデータベースのパスワードをどこかで動いているJDBCスクリプトに手渡してしまい、簡単に侵害されるでしょうか?それはあなたの会社の王冠の宝石を古いハッカー(または信頼できない従業員)に引き渡し、そのスクリプトを見つけることができます... – Lanzelot

関連する問題