これにはいくつかのオプションがあります。
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でプログラムをスケジュールして、バックグラウンドジョブとして定期的に実行することができます。
ありがとうございました。私はこれを試してみる。 – Joshua1729
@mydoghasworms:テーブルが例えば1000万レコードあるなら、このプログラムはほとんど機能しません。むしろ、データを選択し、それらを連続してファイルに書き込むために、「OPEN CURSOR」ステートメントを使用する必要があります。 – Jagger
@mydoghasworms:テーブルに文字以外のフィールドがいくつか含まれている場合は、テキストファイルの整数や小数点などの長さが異なります。 – Jagger