多くの企業がSAP ERPシステムを実装しています。Warehouse Builderを使用すると、SAPシステムのデータに簡単にアクセスできます。
この章ではSAPシステムからデータを取得する方法を説明し、SAPコネクタが必要な理由や、SAP表からメタデータをインポートしてマッピングに使用し、マッピング用のABAPコードを生成してSAPシステムに配布する方法を説明します。また、SAPシステムからデータを取得して、このデータをWarehouse Builderシステムのターゲット表にロードする様々な方法についても説明します。
内容は次のとおりです。
SAP R/3システムの動作は、 E-Business SuiteやPeopleSoftなどのSQLベースのシステムとは異なります。
主な違いは次のとおりです。
固有のデータ操作言語は、SAP独自の言語であるABAPです。
表名が、SQLベースのERPシステムのものに比べてわかりにくい名前になっています。
SAPには、データベース表以外に、プール表とクラスタ表と呼ばれる論理表があります。これらの表には複数の物理表が含まれており、別に管理する必要があります。
SAPコネクタは、これらすべての問題の処理に役立ちます。さらに、SAPコネクタを使用すると、SAP環境の管理プロセスおよびセキュリティ・プロセスに準拠することができます。
Oracle Warehouse Builder 11gでサポートされているSAP R/3のバージョンの詳細は、https://metalink.oracle.com
にログインして「Certify」リンクにナビゲートしてください。
この項では、SAPの異なるタイプの表の概要、およびSAPシステム内でのデータの編成方法を説明します。この項の内容は次のとおりです。
SAPコネクタを使用して、次のSAP表タイプのメタデータ定義をインポートできます。
透過: 透過表はデータが格納されるデータベース表です。SQL文などを使用して、SAP以外のシステムからも表にアクセスできます。ただし、Warehouse Builderでは、透過表へのアクセスにABAPコードを使用します。
クラスタ: 通常、クラスタ表は制御データの格納に使用されます。また、一時データやドキュメントの格納にも使用できます。クラスタ表はデータベース表ではなくデータ・ディクショナリ表であるため、ABAPを使用しないとアクセスできません。
プール: これは、データベースの表プールに割り当てる必要のある論理表です。表プールは複数のプール表で構成されます。プール表は、プログラムのパラメータなどの制御データの格納に使用されます。プール表へのアクセスにはABAPコードが必要です。
SAPアプリケーション・システムでは、表が様々なビジネス・ドメインで論理的にグループ化されます。SAPにおけるビジネス・ドメインとは、製品および市場領域をグループ化する社内の組織単位です。たとえば、財務会計(FI)ビジネス・ドメインは、財務会計トランザクションの記述データを表します。これらのトランザクションには、一般会計、買掛管理、売掛管理および決算とレポートなどがあります。
SAPの定義をインポートする際に、「ビジネス・ドメイン階層」ダイアログ・ボックスのグラフィカル・ナビゲーション・ツリーを使用して、SAPソース・アプリケーション内のビジネス・ドメイン構造を検索できます。このナビゲーション・ツリーでは、SAPアプリケーション・サーバーからSAP表を選択できます。
Warehouse Builderを使用したSAPシステムからOracleデータベースへのデータの移動は、次のタスクで構成されています。
SAPシステムへの接続。
SAPからのメタデータのインポート。
Warehouse Builderでの抽出マッピングの作成(次のものを定義)。
データの取得元になるSAPソース表
特定の基準に基づいてデータを取得するためにソース表で機能する変換演算子
SAPソース表から取得したデータを格納するWarehouse Builderのターゲット表
マッピングの配布。
これにより、マッピング用のABAPコードが作成されます。
マッピングの開始。
これにより、次の一連のタスクが発生します。これらはすべて、Warehouse Builderによって自動的に実行されます。
SAPサーバーへのABAPコードの転送
ABAPコードのコンパイル
ABAPコードの実行と、それに伴うデータファイルの生成(このファイルの拡張子は.dat
です)。
FTPを使用したデータファイルのOWBサーバーへの転送。
SQL*Loaderを使用したデータファイルのデータのターゲット表へのロード。
SAPシステムでABAPコードを実行するには、SAPファンクション・モジュールが必要です。
SAP以外のシステムからSAPデータにアクセスするには、通常、データを取得するABAPプログラムを実行するためのファンクション・モジュールを使用します。SAPファンクション・モジュールは、ファンクション・グループと呼ばれる特殊なABAPプログラムに定義されるプロシージャです。ファンクション・モジュールを定義すると、どのABAPプログラムからでもコールできるようになります。
SAPには、ABAPコードを実行するためのRFC_ABAP_INSTALL_AND_RUNという事前定義済のファンクション・モジュールがあります。Warehouse Builderで生成されたABAPコードをアップロードしてSAPで実行するには、このファンクション・モジュールに対するアクセス権限が必要です。
または、SAP管理者に、特定のABAPプログラムを実行するカスタマイズ・ファンクション・モジュールの作成を依頼することもできます。このファンクション・モジュールを使用して、Warehouse Builderで生成されたABAPコードを実行できます。
データの取得
SAPシステムからのデータの取得は、事前定義済のファンクション・モジュールまたはカスタマイズ・ファンクション・モジュールに対するアクセス権限の有無に応じて、Warehouse Builderによる完全な管理、SAP検証を使用したWarehouse Builderによる管理または手動で行います。
Warehouse Builderによる完全な管理
このシステムでは、Warehouse Builderに、デフォルトのファンクション・モジュールを使用して生成されたABAPのアップロードと実行を行うためのアクセス権限があります。また、FTPを使用してSAPシステムから生成されたデータファイルを取得するための権限もあります。
したがって、SAPシステムからデータを取得するプロセスおよびターゲット表を作成するプロセスは、すべてWarehouse Builderによって管理され、完全に自動化できます。そのため、これは最も簡単なデータ取得方法です。このデータ取得メカニズムの実装の詳細は、「自動システム」を参照してください。
SAP検証を使用したWarehouse Builderによる管理
このシステムでは、Warehouse Builderユーザーとしてのユーザーに、SAPシステムでABAPコードを実行するデフォルトのファンクション・モジュールに対するアクセス権限がありません。かわりに、SAP管理者がまずWarehouse Builderによって生成されたABAPコードを検証し、このABAPコードを実行するためのカスタマイズ・ファンクション・モジュールを作成します。ユーザーはこのファンクション・モジュールを使用して、SAPシステムでABAPコードを実行できます。
このデータ取得メカニズムの実装の詳細は、「半自動システム」を参照してください。
手動
この方法では、ユーザーはWarehouse Builderユーザーとして、SAPシステムで直接ABAPコードを実行することはできません。かわりに、ユーザーはマッピング用のABAPコードを生成してSAP管理者に送信します。SAP管理者はこのコードをSAPシステム上で実行します。次に、ユーザーは生成されたデータファイルを取得して、ターゲット表にロードします。
FTPを使用したデータの取得とOracle表の作成に含まれるタスクは、プロセス・フローを使用して実装されています。このシステムの実装の詳細は、「手動システム」を参照してください。
Warehouse Builderユーザーは、SAPシステムからデータを取得しようとする際に、ある制約を認識する必要があります。
SAPシステムとOracle Warehouse Builderシステムは完全に独立したシステムであるため、(特に本番環境では)Warehouse BuilderユーザーはSAPデータに対して制限されたアクセス権限しか持たない場合があります。システムからデータを取得するため、SAP管理者とやり取りをする必要があります。
ほとんどの場合、SAPシステムへのアクセス権限は、環境が開発、テストまたは本番のいずれであるかによって決定されます。それぞれのデータ取得メカニズムは、SAPシステム管理者によって付与された権限に基づいて、開発環境、テスト環境または本番環境に実装できます。
開発環境
通常、SAP開発環境には、事前定義済ファンクション・モジュールのRFC_ABAP_INSTALL_AND_RUNを使用してアクセスできます。これにより、データ取得用の完全な自動システムを実装できます。
テストおよび本番環境
通常、テストおよび本番環境では、ユーザーに事前定義済ファンクション・モジュールを使用する権限は付与されません。かわりにSAP管理者がABAPコードを検証し、ユーザーが使用できるカスタマイズ・ファンクション・モジュールを作成するか、SAPシステム上でABAPコードを実行してユーザーが結果のデータを取得できるようにします。これにより、データ取得用の半自動システムまたは手動システムを実装できます。
標準的なデータ取得システムは、それぞれの環境に実装された3つのメカニズムのいずれかで構成されています。
シナリオ1
SAP開発環境で自動システムを実行します。この環境でABAPコードを検証した後で、ABAPコードをSAPテスト環境に移し、カスタマイズ・ファンクション・モジュールを使用してテストします。最後に、これをSAP本番環境に移します。
データ取得タスクが自動化および簡略化されることから、この実装をお薦めします。
シナリオ2
開発、テストおよび本番環境へのアクセス権限に基づいて、いずれかのデータ取得メカニズムを実装します。
次の各項では、SAPシステムからのデータ取得に含まれるタスクの詳細を示します。
Warehouse BuilderからSAPシステムに接続するには、特定のSAP独自のDLLファイルが必要です。接続を確立すると、SAP表のメタデータをWarehouse BuilderのSAPモジュールにインポートできます。
この項の内容は次のとおりです。
WindowsまたはUNIXシステムのどちらを使用しているかに応じて、異なる一連のファイルが必要になります。
Windowsの必須ファイル
SAPコネクタには、クライアント・コンピュータでリモート・ファンクション・コールを使用するために、librfc32.dll
という名前のダイナミック・リンク・ライブラリが必要です。librfc32.dll
を、クライアント・システムのjava.library.path
で指定されている場所にコピーする必要があります。
この場所を見つけるには、「マイ コンピュータ」、「プロパティ」、「詳細」の順にクリックします。次に「環境変数」をクリックし、システム環境変数の下で、Pathに指定されている場所を確認します。
librfc32.dll
ファイルは、Pathに指定されている複数の場所のいずれかにコピーできます。場所の1つはOWB_ORACLE_HOMEに対応しており、これが推奨の場所です。通常、この場所はOWB_ORACLE_HOME
¥owb¥bin
です。
Windowsの必須ファイルのリストは、表7-1を参照してください。
表7-1 Windowsの必須ファイル
必須ファイル | パス | 説明 |
---|---|---|
librfc32.dll |
|
このファイルは、SAPアプリケーションのインストレーションCDに収録されています。 |
sapjcorfc.dll |
|
このファイルを |
sapjco.jar |
|
これらのファイルをコピーした後に、必ずクライアントを再起動してください。
UNIXの必須ファイル
SAPコネクタには、クライアント・コンピュータでリモート・ファンクション・コールを使用するために、librfccm.so
という名前のダイナミック・リンク・ライブラリが必要です。このファイルを、クライアント・システムのUNIX環境変数パスLD_LIBRARY_PATH
で指定されている場所にコピーする必要があります。
デフォルトでは、LD_LIBRARY_PATHに指定されている場所は、OWB_ORACLE_HOME
/owb/bin/admin
です。そうでない場合は、必ずLD_LIBRARY_PATHにOWB_ORACLE_HOME
¥owb¥bin¥admin
を追加してください。
UNIXの必須ファイルのリストは、表7-2を参照してください。
表7-2 UNIXの必須ファイル
必須ファイル | パス | 説明 |
---|---|---|
librfcccm.so |
|
このファイルは、SAPアプリケーションのインストレーションCDに収録されています。 |
libsapjcorfc.so |
|
このファイルを |
sapjco.jar |
|
ファイルをコピーした後に、必ずクライアントを再起動してください。
注意: 異なるバージョンのSAP R/3では、異なるバージョンのDLL、SOおよびJARファイルが必要になる場合があります。正しいバージョンはSAPのインストレーションCDに収録されています。また、次の場所からファイルをダウンロードすることもできます。 |
SAPシステムへの接続中に発生する最も一般的なエラーを表7-3に示します。
表7-3 SAP接続エラー
エラー・メッセージ | 考えられる理由 |
---|---|
接続に失敗しました。ターゲット・システムにログオンする権限がありません(エラー・コード1)。 |
SAPサーバーに接続するためのユーザー名またはパスワードが正しくありません。 |
接続に失敗しました。 SAPゲートウェイへの接続に失敗しました。 |
アプリケーション・サーバー、システム番号またはクライアントの詳細が正しくありません。 |
いくつかのロケーション詳細がありません。 ロケーション情報が完全に指定されていることを確認してください。 |
DLLファイルが存在しないか、正しくない場所にあります。 |
saprfc32.dllがありません |
saprfc32.dllファイルが存在しないか、正しくない場所にあります。 |
注意: SAPソース・モジュールを作成してSAP表をインポートしても表に列が表示されない場合は、互換性のないlibrfc32.dll ファイルが使用されています。正しいバージョンのDLLファイルをSAPのWebサイトからダウンロードしてください。 |
モジュールの作成ウィザードを使用して、SAPソースからのデータを格納するSAPソース・モジュールを作成します。ソースとしてSAP R/3バージョン3.xまたはSAP R/3バージョン4.xシステム・タイプを選択できます。アプリケーションのバージョンを選択した後、Warehouse BuilderとSAPアプリケーション・サーバー間の接続情報を設定する必要があります。接続を設定するには、既存のSAPロケーションから選択する方法と、「SAPシステムへの接続」で定義した新規SAPロケーションを作成する方法があります。
注意: SAPロケーションの作成タスクを開始する前に、ロケーションの作成に必要な情報がすべてあることを確認してください。ロケーション情報は、モジュールの作成中またはメタデータをモジュールにインポートする前のいずれかで指定できます。ロケーションの作成には、サーバー名、ユーザー名、パスワード、システム番号およびクライアント番号の情報が必要です。これらの詳細は、システム管理者から入手してください。 |
接続情報の設定時に、次の接続タイプを選択できます。
リモート・ファンクション・コールを使用すると、リモート・システム上でファンクション・モジュールをコールできます。このメソッドには、SAPアプリケーション・サーバーの特定のIPアドレス情報が必要です。
SAPリモート・ファンクション・コール(SAPRFC.INI)
SAPRFC.INI
というファイルに接続情報を指定し、このファイルをOWB_ORACLE_HOME
¥owb¥bin¥admin
にコピーすることもできます。
SAPRFC.INI
ファイルを使用するには、SAPに接続するための特定のパラメータの値を指定する必要があるため、事前にABAPパラメータの知識が必要です。そのため、ABAPの理解が十分ではないユーザーには推奨されない接続方法です。
注意: SAPRFC.INI ファイルは、SAPのインストレーションCDに収録されています。 |
モジュールの作成ウィザードでは、SAPアプリケーション・サーバーに格納されているメタデータに基づいてモジュールが作成されます。
次の接続タイプを1つ選択します。
リモート・ファンクション・コール(RFC)
これは推奨される接続タイプであり、Warehouse Builderではデフォルトで選択されています。
SAPリモート・ファンクション・コール(SAPRFC.INI)
これらの接続タイプの詳細は、「SAPモジュール定義の作成」を参照してください。
該当するフィールドに接続情報を入力します。このページに表示されるフィールドは、選択した接続タイプに応じて異なります。
この手順を完了する前に、システム管理者からSAPアプリケーション・サーバーへの接続情報を取得する必要があります。
アプリケーション・サーバー: SAPアプリケーション・サーバーの別名またはIPアドレス。
システム番号: SAPシステム番号。SAPシステム管理者から入手する必要があります。
クライアント: SAPクライアント番号。SAPシステム管理者から入手する必要があります。
ユーザー名: SAPシステムへのアクセス権限を持つユーザーの名前。この名前はSAPシステム管理者から入手する必要があります。
言語: 英語の場合は「EN」、ドイツ語の場合は「DE」。「DE」を選択すると、説明テキストはドイツ語で表示され、他のテキストはすべて英語で表示されます。
RFC接続先: SAP接続情報の別名を入力します。
また、ファンクション・モジュールを使用してABAPコードをSAPで実行する場合およびデータファイルをFTPでWarehouse Builderに転送する場合は、両方の接続タイプで次の接続情報が必要です。
ホスト・ログイン・ユーザー名: SAPアプリケーション・サーバーをホスティングするシステム上で有効なユーザー名。このユーザーには、FTPを使用してデータファイルをコピーするアクセス権が必要です。
FTPディレクトリ: SAPシステムから取得したデータファイルの格納用ディレクトリ。ftpディレクトリ構造がオペレーティング・システムのディレクトリ構造と同一のシステムの場合は、このフィールドを空白のままにすることができます。ファイル・システムのディレクトリ構造がftpディレクトリ構造にマップされているシステムの場合は、ファイル・システムのディレクトリ構造のステージング・ファイル・ディレクトリにマップされているftpディレクトリ・パスを入力します。たとえば、Windowsを実行しているコンピュータの場合、ステージング・ファイル・ディレクトリC:¥temp
がFTPディレクトリ構造の/
にマップされている場合は、このフィールドに/
を入力します。
実行ファンクション・モジュール: SAPインスタンスで、SAP提供のファンクション・モジュール(RFC_ABAP_INSTALL_AND_RUN)以外のリモート・ファンクション・モジュールを使用し、RFC接続を介してABAPレポートがリモートで実行される場合、このフィールドにリモート・ファンクション・モジュール名を入力します。
「接続テスト」をクリックして、入力した接続情報が正しいことを確認します。
「OK」をクリックして「モジュールの作成」ウィザードの接続情報ページに戻ります。
SAPサーバーとの接続を確立すると、SAP表からメタデータをインポートできます。
この項の内容は次のとおりです。
SAPソース・モジュールの作成後に、インポート・メタデータ・ウィザードを使用してSAP表からメタデータ定義をインポートできます。このウィザードでは、インポートするSAP表のフィルタ、確認および再インポートができます。インポートできるのは、透過表、クラスタ表またはプール表のメタデータです。
SAPメタデータをインポートする手順は、次のとおりです。
プロジェクト・エクスプローラで「アプリケーション」ノードを開きます。
メタデータのインポート先となるSAPソース・モジュールを右クリックして、「インポート」を選択します。
Warehouse Builderにより、インポート・メタデータ・ウィザードのようこそページが表示されます。
「次へ」をクリックします。
次のタスクを実行します。
インポートするオブジェクトをビジネス・ドメインまたはテキスト文字列でフィルタできます。フィルタ方法を選択して「次へ」をクリックします。
「ビジネス・ドメイン」を選択し、「参照」をクリックして、「SAP R/3ビジネス・ドメイン階層」ダイアログ・ボックスを表示します。
インポート・メタデータ・ウィザードでは、ビジネス・ドメインの検索中に「ロードの進行状況」ダイアログ・ボックスが表示されます。
「ビジネス・ドメイン階層」ダイアログ・ボックスには、使用可能なSAPビジネス・ドメインが表示されます。
注意: SAPアプリケーション・サーバーのネットワーク・ロケーション、使用するLANのタイプまたはSAPアプリケーション・データベースのサイズに応じて、ビジネス・ドメインがリストされるまでに数分かかります。 |
「ビジネス・ドメイン階層」ダイアログ・ボックスを使用して、インポートするメタデータ表を含むSAPビジネス・ドメインを選択します。
フォルダを選択して「表の表示」をクリックし、ビジネス・ドメインで使用可能な表を表示します。
「フォルダ」ダイアログ・ボックス内の選択したビジネス・ドメインの表のリストがインポート・ウィザードに表示されます。
このダイアログ・ボックスで、必要な表を選択していることを確認します。
ビジネス・ドメインの中には、1000を超える表を持つものもあります。ネットワーク接続の速度やソース・システムおよびターゲット・システムの処理能力によっては、このような大量のメタデータのインポートに時間がかかる場合があります。
「OK」をクリックします。
フィルタ情報ページが表示され、SAPビジネス・ドメインがその「ビジネス・ドメイン」フィールドに表示されます。
「テキスト文字列、オブジェクトは次のもの」を選択します。次に「名前の一致」または「説明の一致」入力フィールドを使用して文字列を入力すると、一致する表がSAPデータ・ソースから取得されます。
「説明の一致」フィールドでは大文字と小文字が区別されますが、「名前の一致」フィールドでは区別されません。
ワイルドカード文字を使用して、オブジェクト選択用のフィルタを作成します。%
は0以上の一致する文字を、_
は1つの一致する文字を表します。
たとえば、説明にCURRENCYという語を含む表のビジネス・ドメインを検索する場合は、「説明の一致」を選択し、%CURRENCY%
と入力します。表の名前で検索することもできます。
インポートする表の数を、「表示オブジェクトの最大数」フィールドで指定します。
オブジェクト選択ページに表の説明が表示され、SAPモジュールにインポートする表を選択できます。表を選択する手順は、次のとおりです。
表を「使用可能」リストから「選択済」リストに移動します。
インポート・メタデータ・ウィザードでは、インポートする各表とともに、その表と外部キー関係がある表をインポートするかどうかも選択できます。次のいずれかを選択します。
なし: 「選択済」リストの表のみをインポートします。
1レベル: 「選択済」リストの表、および外部キー関係で直接リンクされているすべての表をインポートします。
すべてのレベル: 「選択済」リストの表、および外部キー関係でリンクされているすべての表をインポートします。
「次へ」をクリックします。
「1レベル」または「すべてのレベル」を選択すると、「選択のインポートの確認」ダイアログ・ボックスが表示されます。
このダイアログ・ボックスで、必要な表を選択していることを確認します。
「OK」をクリックします。
選択した表が、表選択ページの「選択済」リストに表示されます。
「次へ」をクリックします。
メタデータ・インポート・ウィザード: サマリーおよびインポート・ページが表示されます。
SAPアプリケーション・サーバーから選択した表の定義がインポートされ、SAPソース・モジュールに格納された後、サマリーとインポート・ページが表示されます。
各表の説明フィールドを選択して新しい説明を入力することによって、表の説明を編集できます。
サマリーとインポート・ページの情報を確認して「終了」をクリックします。
SAPコネクタによって、表定義がSAPアプリケーション・サーバーから読み取られ、メタデータ・オブジェクトがワークスペースに作成されます。
ワークスペースへのSAPメタデータのインポートにかかる時間は、表のサイズと数、およびSAPアプリケーション・サーバーとワークスペース間の接続状況に応じて異なります。表を小さいサイズのバッチでインポートし、パフォーマンスを向上させるのがよりよい方法です。
インポートが完了すると、「インポート結果」ダイアログ・ボックスが表示されます。「OK」をクリックしてメタデータのインポートを終了します。
SAP表を再インポートするには、インポート・メタデータ・ウィザードを使用してインポート手順を実行します。ウィザードでは、インポートを開始する前に、インポート対象と同じ名前を持つ表のソースがチェックされます。インポート済の表は、オブジェクト選択ページに太字で表示されます。サマリーとインポート・ページの「アクション」列は、これらの表が再インポートされることを示します。その後、拡張同期化オプションのボタンがアクティブ化され、再インポート・オプションを制御できるようになります。
注意: 再インポートを元に戻す場合は、「元に戻す」をクリックします。これにより、既存のメタデータは変更されません。 |
SAP表では、表からメタデータをインポートした後にデータを表示できません。ただし、列の説明および制約の詳細を表示することで、表に格納されたデータの詳細を知ることができます。
列の説明
表の各列について、列の詳細を表示できます。SAPの列名は記述的ではなく、以前に表のデータを確認したことがない場合は解釈が難しいため、この説明が役立ちます。
説明を表示するには、表をダブルクリックしてオブジェクト・エディタを開き、列エディタをクリックします。表の列の説明が、図7-1に示すように表示されます。
制約の詳細
データ・オブジェクト・エディタのもう1つの利点は、表の主キーおよび外部キーの情報を取得できることです。キー制約を表示するには、制約エディタをクリックします。
注意: プロジェクト・エクスプローラでSAP表のビジネス名を表示するのも有用な方法です。ビジネス名は表の説明になるため、物理名よりも直観的です。Warehouse Builderで表のビジネス名を表示するには、メイン・メニューで「ツール」、「プリファレンス」、「ネーミング」の順にクリックし、「ネーミング・モード」フィールドで「ビジネス名」を選択します。 |
SAP表からメタデータをインポートした後に、抽出マッピングを定義してSAPシステムからデータを取得する必要があります。
マッピング・エディタを使用して、SAP表を含むマッピングを作成できます。SAP表のマッピングの作成は、その他のデータベース・オブジェクトのマッピングの作成と同様です。ただし、マッピングで使用できる演算子には制約があります。SAP表を含むマッピングでは、使用できるマッピング演算子は表、フィルタ、ジョイナおよびマッピング入力パラメータのみです。
一般的なSAP抽出マッピングは、図7-2に示すように、1つ以上のSAPソース表(透過、クラスタまたはプール)、1つ以上のフィルタまたはジョイナ演算子、および取得データを格納するSAP以外のターゲット表(通常はOracle表)で構成されます。
注意: マッピングにSAPソース表とSAP以外(Oracle)のソース表の両方を持つことはできません。ただし、ステージング表はOracle表です。 |
この例では、入力パラメータが日付値を取り、BKPF表のデータはこの日付に基づいてフィルタされます。ジョイナ演算子を使用すると、複数の表のデータを結合でき、結合されたデータ・セットはステージング表に格納されます。
この項の内容は次のとおりです。
マッピングにSAP表を追加する手順は、次のとおりです。
マッピング・エディタで必要なSAP表をドラッグし、マッピング・エディタのキャンバスにドロップします。
マッピング・キャンバスに、SAP表を表す表演算子が表示されます。
マッピング・エディタの「演算子のプロパティ」パネルを使用して、マッピングの表のSQL*Loaderプロパティを設定します。
SAPソース表のロード・タイプを設定する手順は、次のとおりです。
マッピング・エディタで、SAPソース表を選択します。表演算子プロパティ・パネルにSAP表演算子のプロパティが表示されます。
「ロード・タイプ」リストからロード・タイプを選択します。マッピング言語としてABAPコードを指定すると、表7-4に示すSQL*Loaderコードが生成されます。
「構成プロパティ」ダイアログ・ボックスを使用して、「言語パラメータの設定」で説明するコード生成言語を定義します。
「ランタイム・パラメータの設定」で説明するように、「構成プロパティ」ダイアログ・ボックスで、ABAP固有のパラメータおよびディレクトリと初期化ファイルの設定を設定します。
このパラメータを使用すると、マッピング用に生成するコードのタイプを指定できます。SAPソース表を含むマッピングの場合、Warehouse Builderでは言語パラメータが自動的にABAPに設定されます。
言語をABAPに設定すると、「構成プロパティ」ダイアログ・ボックスで「ランタイム・パラメータ」ノードを開いて、ABAPコード生成に固有の設定を表示できます。
一部の設定には、コード生成を最適化するプロパティが事前に設定されています。これらの設定を変更すると、コード生成プロセスが低速になる場合があるため、そのままにしておくことをお薦めします。
SAPマッピングには、次のランタイム・パラメータを使用できます。
バックグラウンド・ジョブ: ABAPレポートをSAPシステムでバックグラウンド・ジョブとして実行する場合は、このオプションを選択します。長時間実行されるジョブには、このオプションを有効にします。SAPでは、長時間実行されているフォアグラウンド・バッチ・ジョブが、一定の時間を過ぎるとハングしたものとみなされます。そのため、そのような抽出にはバックグラウンド・ジョブを実行することが望ましいです。
データファイル名: マッピング用のABAPコードをSAPシステムで実行する際に生成されるデータファイルの名前を指定します。
SQL結合失敗: 可能な場合は、ABAPコードを生成するための次のヒントを指定します。
SELECT < > INTO < > FROM (T1 as T1 inner join T2 as T2) ON <condition >
デフォルト設定は「TRUE」です。
結合用の主外部キー: 結合に使用する主キーを指定します。
ABAPレポート名: マッピングで生成されるABAPコード・ファイル名を指定します。これは、ABAPコードを実行するためのカスタム・ファンクション・モジュールを実行する場合にのみ必要です。
SAPシステム・バージョン: ABAPコードを配布するSAPシステムのバージョン番号を指定します。MySAP ERPおよびその他すべてのバージョンについて、SAP R/3 4.7を選択します。なお、4.7以前のバージョンには、異なるABAPコードが必要です。
ステージング・ファイル・ディレクトリ: ABAPコードにより生成されたデータファイルが格納されるディレクトリのロケーションを指定します。
SAPのロケーション: データの抽出元として使用可能なSAPインスタンスのロケーション。
このパラメータは、マッピングにジョイナ演算子が含まれており、明示的に駆動表を指定する場合にのみ指定する必要があります。SQLとは異なり、ABAPコードの生成はルール・ベースです。そのため、表が正しい順序でロードされるように、マッピングを設計する必要があります。または、表を結合する順序を明示的に指定することもできます。これには、「構成プロパティ」ダイアログ・ボックスで「表演算子」を開き、各表に対して「結合ランク」を指定します。駆動表の「結合ランク」は1に設定する必要があり、後続の表にはそれに続く値を設定します。
駆動表およびその他の表の結合順序をWarehouse Builderで決定することもできます。その場合は、「結合ランク」に値を入力しないでください。
抽出マッピングの設計後には、Warehouse Builderのすべてのマッピングと同様に、マッピングを検証し、生成し、配布する必要があります。
SAPマッピング用のスクリプトを生成する手順は、次のとおりです。
SAPマッピングを右クリックして「生成」を選択します。
生成結果ウィンドウが表示されます。
「スクリプト」タブで、スクリプト名を選択して「コードの表示」を選択します。
生成済コードが「コード・ビューア」に表示されます。
コード・エディタを使用してファイルを編集、印刷または保存できます。コード・ビューアを閉じて生成結果ウィンドウに戻ります。
ファイルを保存するには、「ファイル形式で保存」をクリックして、ABAPプログラムをハード・ドライブに保存します。
SAPマッピングを生成した後、それを配布してターゲット・ロケーションに論理オブジェクトを作成する必要があります。SAPマッピングを配布するには、そのマッピングを右クリックして「配布」を選択します。また、コントロール・センター・マネージャからマッピングを配布する方法もあります。
配布の詳細情報は、Oracle Warehouse Builderトランスフォーメーション・ガイドの「ターゲット・スキーマへの配布およびETLロジックの実行」を参照してください。
SAPマッピングを配布すると、ABAPマッピングが作成され、Warehouse Builderランタイム・スキーマに格納されます。また、OWB_ORACLE_HOME
¥owb¥deployed_files
にABAP
ファイルが保存されます。OWB_ORACLE_HOME
は、Warehouse BuilderインストールのOracleホーム・ディレクトリの場所です。Oracle Databaseに付属するWarehouse Builderインストールを使用している場合、これはデータベース・ホームと同じである点に注意してください。
SAPシステムからのデータの取得が完全に自動であるか、半自動であるか、または手動であるかによって、後続のタスクを実行する必要があります。この項の内容は次のとおりです。
完全に自動化されたシステムでは、Warehouse BuilderユーザーにSAPシステムの事前定義済のファンクション・モジュールに対するアクセス権限があります。これにより、図7-3に示すように、ユーザーはSAP管理者に依存することなく、すべてのABAPコードを実行してSAPシステムから直接データを取得できます。
依存性がないため、ABAPコードをSAPシステムに送信し、SAPシステムからデータファイルを取得するプロセスを自動化できます。Warehouse Builderでは、FTPを使用してデータファイルをWarehouse Builderシステムに転送し、SQL*Loaderを使用してターゲット・ファイルと取得したデータをロードします。
自動システムは次のように機能します。
抽出マッピングを設計し、このマッピング用のABAPコードを生成します。
マッピングを配布する前に、マッピングについて次の構成プロパティが設定されていることを確認します。
ABAPレポート名: マッピング用に生成されたABAPコードを格納するファイル。
SAPのロケーション: データの取得元になるSAPシステムのロケーション。
データファイル名: ABAPコードの実行によって生成されたデータを格納するデータファイル名。
また、SAPロケーションに関する次の追加の接続詳細が指定されていることも確認します。
実行ファンクション・モジュール: 事前定義済のSAPファンクション・モジュールの名前を指定します。このファンクション・モジュールは、実行時にABAPレポート名をパラメータとして取得して、ABAPコードを実行します。
FTPディレクトリ: Warehouse Builderシステム上のディレクトリ。ファンクション・モジュールの実行によって生成されたデータファイルは、FTPを使用してこのディレクトリに送信されます。
FTPディレクトリの書込み権限を持つユーザー名も指定します。
次に、マッピングを開始します。これにより、次のタスクが自動的に実行されます。
Warehouse BuilderによりABAPが配布され、RFC_ABAP_INSTALL_AND_RUNを使用してABAPのロードとSAPでの実行の両方が行われます。
リモート・ファンクション・コール(RFC)を使用して、ABAPコードがSAPシステムに送信されます。
SAPシステムでは、コードによりソース表からデータが取得され、データファイルが作成されます。
このデータファイルは、「ステージング・ファイル・ディレクトリ」で指定したロケーションに格納されます。
FTPを使用して、このデータファイルがWarehouse Builderシステムに転送されます。
ファイルは、「FTPディレクトリ」フィールドで指定したロケーションに格納されます。
SQL*Loaderを使用して、マッピングのターゲット表がデータファイルのデータとともにロードされます。
このシステムの利点は、SAPデータを取得するための、完全に自動化されたエンドツーエンドのソリューションを作成できることです。ユーザーが抽出マッピングを作成してWarehouse Builderで実行するだけで、ABAPコードが作成されてSAPシステムに送信され、結果のデータファイルが取得され、取得データとともにターゲット表がロードされます。
半自動システムでは、Warehouse Builderユーザーには事前定義済のファンクション・モジュールに対するアクセス権限がないため、このファンクション・モジュールを使用してABAPコードを実行できません。図7-4に示すように、ユーザーは抽出マッピングを作成して配布し、ABAPコードをSAP管理者に送信します。SAP管理者はSAPシステム上で実行できるようにコードの検証を行います。
半自動システムは次のように機能します。
抽出マッピングを設計し、このマッピング用のABAPコードを生成します。
次に、ABAPコードをテスト環境に転送し、コードをテストします。
次に、ABAPコードをSAP管理者に送信します。管理者はコードをSAPリポジトリにロードします。
SAP管理者が新しいABAPレポート名を作成します。
その結果、ユーザーはこのABAPレポート名をコールして、本番環境でABAPコードを実行できます。
SAPシステムでマッピングを実行する前に、マッピングについて次の構成プロパティが設定されていることを確認します。
ABAPレポート名: SAP管理者が、ABAPコードの検証後にレポート名を指定します。その後、ユーザーはこのABAPファイルを実行します。
SAPのロケーション: データの取得元になるSAPシステムのロケーション。
データファイル名: ABAPコードの実行中に生成されたデータを格納するデータファイル名。
また、SAPロケーションに関する次の追加の接続詳細が指定されていることも確認します。
実行ファンクション・モジュール: SAP管理者が作成したカスタム・ファンクション・モジュールの名前を指定します。このファンクション・モジュールは、実行時にABAPレポート名をパラメータとして取得して、ABAPコードを実行します。SAP管理者からファンクション・モジュール名を入手する必要があります。
FTPディレクトリ: Warehouse Builderシステム上のディレクトリ。ABAPコードの実行によって生成されたデータファイルは、FTPを使用してこのディレクトリに送信されます。
FTPディレクトリの書込み権限を持つユーザー名も指定します。
本番環境でマッピングを実行すると、Warehouse BuilderによりABAPコードが生成され、リモート・ファンクション・コール(RFC)を使用してSAPシステムに送信されます。
SAPシステムでは、カスタム・ファンクション・モジュールを使用してABAPコードが実行され、データファイルが生成されます。
このデータファイルは、「ステージング・ファイル・ディレクトリ」で指定したロケーションに格納されます。
FTPを使用して、このデータファイルがWarehouse Builderシステムに転送されます。
ファイルは、「FTPディレクトリ」フィールドで指定したロケーションに格納されます。
Warehouse Builderでは、SQL*Loaderを使用して、ターゲット表がデータファイルのデータとともにロードされます。
手動システムでは、Warehouse Builderユーザーの役割は、マッピング用のABAPコードの生成と、SAP管理者へのABAPコードの送信に限定されています。このシステムでのタスクは次のとおりです。
抽出マッピングを作成し、マッピング用のABAPコードを生成します。
マッピングを設計する際に、データファイルを格納するデータファイル名を必ず指定してください。
SAP管理者にABAPコードを送信します。
SAP管理者がSAPシステム上でABAPコードを実行します。
コードの実行により、データファイルが生成されます。
ユーザーは、Warehouse Builder側で、データファイルを取得するためのプロセス・フローを作成できます。図7-5に示すように、プロセス・フローには次のアクティビティを含める必要があります。
ファイルが存在アクティビティにより、データファイルの有無が確認されます。
ファイルが存在する場合、FTPアクティビティにより、ファイルがWarehouse Builderシステムに転送されます。
ファイルが存在しない場合は、ファイルが提供されるまで待機する必要があります。次に、FTPを実行します。
SQL*Loaderを使用して、ターゲット表がデータファイルのデータとともにロードされます。
特定のアプリケーションでは、SAP管理者がどのユーザーにもSAPシステムへのアクセスを許可しない場合があります。そのような場合には、手動システムの実装が、唯一利用できる選択肢になります。