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