マッピングのSAPテーブルソース
SAPアプリケーションからデータを読み取るには、SAPテーブルオブジェクトをマッピング内のソーストランスフォーメーションとして設定します。
SAPテーブルソースの名前と説明を指定します。ソースオブジェクトのソースプロパティと詳細プロパティを設定します。
次の表に、ソーストランスフォーメーションで設定できるソースプロパティを示します。
プロパティ | 説明 |
---|
接続 | ソース接続の名前。 |
ソースタイプ | 次のいずれかのタイプを選択します。 - - シングル。単一のSAPテーブルオブジェクトを指定する場合に選択します。
- - 複数。SAPテーブルオブジェクトを複数指定する場合に選択します。カスタムリレーションを使用して、複数のソースオブジェクトに結合できます。SAPテーブルオブジェクトのカスタムリレーションを作成する場合は、結合のタイプと使用するソースフィールドを選択できます。
- - パラメータ。パラメータ名を指定する場合に選択します。このソーストランスフォーメーションを使用するマッピングに関連付けられたマッピングタスクでソースオブジェクトを設定します。
|
オブジェクト | ソースオブジェクト。 複数のソースオブジェクトを指定する場合は、ソースオブジェクト間にリレーションを作成する必要があります。 |
次の表に、SAPテーブルの詳細ソースプロパティを示します。
プロパティ | 説明 |
---|
取得される行数 | SAPテーブルからランダムに取得される行の数。デフォルト値0の場合は、テーブルのすべての行が取得されます。 |
スキップされる行数 | スキップされる行数。 |
パケットサイズ(MB単位) | HTTPパケットサイズ。 バルクモードを使用してSAPテーブルからデータを読み取る場合は、パケットサイズを調整してスループットを向上させることができます。Secure Agentで使用可能なネットワーク帯域幅、メモリ、およびCPUリソースに従ってパケットサイズを調整します。設定したパケットサイズと行の長さに基づいて、Secure Agentは1つのパケットで読み取る行数を計算します。パケットサイズを増やす場合は、それに応じてヒープサイズを増やしてスループットを向上させます。 デフォルトは10MBです。 |
データ抽出モード | 次のモードのいずれかを使用して、SAPテーブルからデータを読み取ることができます。 - - ノーマルモード。このモードは、SAPテーブルから少量のデータを読み取る場合に使用します。
- - バルクモード。このモードは、SAPテーブルから大量のデータを読み取る場合に使用します。パフォーマンスを向上させるには、バルクモードを使用します。バルクモードは、ノーマルモードと比較してより多くのリソースを消費します。パフォーマンスを向上させるために、使用可能なリソースとデータセットに従ったパケットサイズの調整が必要になる場合があります。
デフォルトはノーマルモードです。 |
圧縮を有効にする | 圧縮を有効にします。 Secure AgentとSAPシステムが同一ネットワーク上に存在しない場合、この圧縮オプションを有効にしてパフォーマンスを最適化できます。 |
更新モード | SAPテーブルからデータを読み取る際、デルタ抽出を実行するようマッピングを設定できます。使用する更新モードに基づき、次のオプションのいずれかを使用します。 - - 0 - フル。このオプションは、変更されたデータのみ読み取るのではなく、すべてのレコードをSAPテーブルから抽出する場合に使用します。
- - 1 - 転送なしのデルタ初期化。このオプションは、データの抽出はしないが、後に続くデルタ抽出に向けてInformaticaカスタムテーブル/INFADI/TBLCHNGNに最新の変更番号を記録する場合に使用します。
- - 2 - 転送ありのデルタ初期化。このオプションは、すべてのレコードをSAPテーブルから抽出して最初のデータセットを構築し、続けてデルタ更新セッションを実行して、変更されたデータをキャプチャする場合に使用します。
- - 3 - デルタ更新。このオプションは、前回のデータ抽出以降に変更されたデータのみを読み取る場合に使用します。
- - 4 - デルタ反復。このオプションは、前回のデルタ更新でエラーが発生し、そのデルタ更新を反復する場合に使用します。
- - パラメータ。このオプションを選択すると、Secure Agentではパラメータファイルの更新モード値を使用します。
デフォルトは[0 - フル]です。 |
更新モード用のパラメータ名 | パラメータファイルで更新モード用に定義したパラメータ名。 |
デルタ抽出用のテーブル名の上書き | SAPテーブル名を、CDPOSテーブルの構造名でキャプチャしたデルタレコードを抽出するSAP構造名で上書きします。 |
詳細プロパティ | マッピングを実行するSAPテーブルオブジェクトの詳細プロパティ。 複数のプロパティを指定する場合は、次の形式で各プロパティと値のペアをセミコロンで区切ります: <Property name1>=<Property value1>;<Property name2>=<Property value2> 詳細プロパティの詳細については、 詳細プロパティを参照してください。 |
トレースレベル | ログファイルに表示される詳細情報の量を設定します。 リストから次のトレースレベルオプションのいずれかを選択します。 - - 簡易
- - ノーマル
- - 詳細 - 初期化
- - 詳細 - データ
デフォルトは[ノーマル]です。 |
フィルタのオプション
データがデータフローに入る前に、データのフィルタリングを行えるようにソーストランスフォーメーションを設定できます。ソースクエリオプションを使用してソースデータをフィルタリングできます。
データをフィルタリングするには、ソーストランスフォーメーションの[ソース]タブで、ソースクエリオプションを設定します。[クエリオプション]セクションを展開し、フィルタの条件を設定します。
フィルタを設定する際は、簡易フィルタまたは詳細フィルタを使用できます。フィルタ式のパラメータを使用して、タスクのフィルタ式を定義することもできます。
ソーストランスフォーメーションでは、次のフィルタを設定できます。
- 簡易データフィルタ
簡易データフィルタを使用するには、ソースオブジェクト、ソースフィールド、演算子を選択してから、値を入力します。
例えば、EKKOテーブルのBEDATフィールドから、日付が2016-01-29より前のデータをフィルタリングするには、EKKO BEDAT <= 2016-01-29という形式を使用します。
簡易データフィルタで、フィルタ式のパラメータを使用することもできます。
例えば、EKKO EBELN = $$PARAMのように使用します。
次の図は、EKKOテーブルのBEDATフィールドから、日付が2016-01-29より前のデータをフィルタリングするように設定した簡易データフィルタを示しています。
- $LastRunTime変数を使用した簡易データフィルタ
簡易データフィルタで$LastRunTime変数を使用するには、ソースオブジェクト、ソースフィールド、演算子を選択してから、値を入力します。
例えば、BKPFテーブルのCPUTMフィールドから、LastRunTime変数と同じかそれより前のデータをフィルタリングするには、BKPF CPUTM <= $LastRunTimeという形式を使用します。
次の図は、BKPFテーブルのCPUTMフィールドから、LastRunTime変数と同じかそれより前のデータをフィルタリングするように設定した簡易データフィルタを示しています。
- ABAP CDSビューオブジェクトの簡易データフィルタ
ABAP CDSビューオブジェクトで簡易データフィルタを使用するには、ABAP CDSビューのソースオブジェクト、ソースフィールド、演算子を選択してから、値を入力します。
例えば、ZSAN_CDS_OPT_PARAM ABAP CDSビューオブジェクトのparamO_P2フィールドから、値が10ではないデータをフィルタリングするには、次の形式を使用します。
ZSAN_CDS_OPT_PARAM paramO_P2 <> 10
簡易データフィルタでは、フィルタ式のパラメータを使用して、ABAP CDSビューオブジェクトからデータをフィルタリングすることもできます。
例えば、ZSAN_CDS_OPT_PARAM paramM_P3 = $$PARAM1のように使用します。
この例では、paramOはオプションのパラメータを示し、paramMは必須のパラメータを示します。
次の図は、ABAP CDSビューオブジェクトのparamM_P3フィールドから、定義したパラメータと一致するデータをフィルタリングするように設定した簡易データフィルタを示しています。
- 単一の条件を使用した詳細データフィルタ
単一の条件を含む詳細なデータフィルタを使用するには、フィルタの種類として[詳細]を選択してから、次の形式でフィールド式を入力します。
( <TableName.Field> <Operator> <'Value'> )
例えば、EKKOテーブルのBUKRSフィールドから、値が1010のデータをフィルタリングするには、( EKKO.BUKRS = '1010' )という形式を使用します。
詳細データフィルタで、フィルタ式のパラメータを使用することもできます。
例えば、( EKKO EBELN = $$PARAM )のように使用します。
次の図は、EKKOテーブルのBUKRSフィールドから、定義したパラメータと一致するデータをフィルタリングするように設定した詳細データフィルタを示しています。
- 複数の条件を使用した詳細データフィルタ
複数の条件を含む詳細データフィルタを使用するには、フィルタの種類として[詳細]を選択してから、次の形式でフィールド式を入力します。
( <TableName.Field> <Operator> <'Value'> AND <Table name.Field> <Operator> <'Value'> ) OR ( <Table name.Field> <Operator> <'Value'> AND <Table name.Field> <Operator> <'Value'> )
例えば、EKKOテーブルの複数のフィールドからデータをフィルタリングするには、論理式を含む次の形式を使用します: ( EKKO.BUKRS = '1010' AND EKKO.LPONR < '60' AND EKKO.ERNAM <> 'PURCHASER' AND EKKO.BEDAT <= '20160129' ) OR ( EKKO.BUKRS = '1110' )
詳細データフィルタで、フィルタ式のパラメータを使用することもできます。
例えば、( EKKO.BUKRS = $$PARAM AND EKKO.LPONR < $$PARAM1 AND EKKO.ERNAM <> 'PURCHASER' AND EKKO.BEDAT <= $$PARAM2 ) OR ( EKKO.BUKRS = $$PARAM3 )のように使用します。
次の図は、論理条件であるANDおよびORを含む式を使用して、EKKOテーブルの複数のフィールドからデータをフィルタリングするように設定された詳細データフィルタを示しています。
- $LastRunTime変数を使用した詳細データフィルタ
詳細データフィルタで$LastRunTime変数を使用するには、フィルタの種類として[詳細]を選択してから、次の形式でフィールド式を入力します。
( <Table name.Field> <operator> <Value> )
例えば、EKKOテーブルのBEDATフィールドから、LastRunTime変数より前のデータをフィルタリングするには、( EKKO.BEDAT < $LastRunTime )という形式を使用します。
次の図は、EKKOテーブルのBEDATフィールドから、LastRunTime変数より前のデータをフィルタリングするように設定した詳細データフィルタを示しています。
- SY-DATUM変数を使用した詳細データフィルタ
詳細データフィルタでSY-DATUM変数を使用するには、フィルタのタイプとして[詳細]を選択し、インストールしたトランスポートに基づいて次の形式でフィールド式を入力します。
( <Table name.Field> <operator> <Value> )
例えば、データが現在の日付より2日前のものであり、TABLE_READERトランスポートがインストールされている場合に、EKKOテーブルのBEDATフィールドのデータをフィルタリングするには、次の形式を使用します: ( EKKO.BEDAT = SY-DATUM - 2 )
TABLE_READER_Addonトランスポートをインストールしたときに、詳細データフィルタでSY-DATUM変数を使用することもできます。
例えば、次の形式を使用します: ( EKKO.BEDAT = @SY-DATUM - 2 )
次の図は、データが2日前のものであり、TABLE_READER_Addonトランスポートがインストールされている場合に、EKKOテーブルのBEDATフィールドからデータをフィルタリングする設定済みの詳細データフィルタを示しています。
ソートオプション
データがデータフローに入る前に、データのソートを行えるようにソーストランスフォーメーションを設定できます。ソースクエリオプションを使用してソースデータをソートできます。
データをソートするには、ソーストランスフォーメーションの[ソース]タブで、ソースクエリオプションを設定します。[クエリオプション]セクションを展開し、ソート条件を設定します。
ソート条件を設定する際は、テーブルのフィールドから、昇順または降順でデータをソートできます。
ソート条件を使用するには、ソースオブジェクト、ソート基準フィールド、ソート方向の順に選択します。
例えば、EKKOテーブルのEBELNフィールドからデータを昇順でソートするには、EKKO EBELN Ascendingという形式を使用します。
次の図は、EKKOテーブルのEBELNフィールドにあるデータを昇順でソートするように設定したソート条件を示しています。
結合条件
選択したソースオブジェクトと、関連するソースオブジェクト間のリレーションを設定できます。
ソースタイプとして複数のソースオブジェクトを選択すると、複数のソースオブジェクトを結合するリレーションを設定できます。
ソースオブジェクトと関連オブジェクト間の結合条件を使用してリレーションを設定するには、ソースSAPオブジェクトのキーフィールド、結合のタイプ、結合演算子、関連するSAPオブジェクト、および関連オブジェクトのキーフィールドを指定してから、[追加]をクリックします。
例えば、EKPOテーブルのEBELNフィールドの値がEKKOテーブルのEBELNフィールドの値より小さい場合に、EKKOテーブルとEKPOテーブルを結合するように内部結合を設定するには、EKKO.EBELN Inner Join < EKPO.EBELNという形式を使用します。
次の図は、EKPOテーブルのEBELNフィールドの値がEKKOテーブルのEBELNフィールドの値よりも小さい場合に、内部結合を使用してEKKOテーブルとEKPOテーブルを結合するように設定された、カスタムリレーションを示しています。
詳細プロパティ
ソーストランスフォーメーションの[詳細プロパティ]フィールドでは追加のオプションを設定できます。
SAPソーステーブルで差分抽出を設定する場合は、次のようなプロパティを詳細プロパティとして使用できます。
- •外部アプリケーションのタイムゾーンがSAPシステムのタイムゾーンと異なる場合は、SAPシステムのオフセット時間を次の形式で分単位で入力します。
delta_offset=<SAPシステムのオフセット時間(分)>
例えば、外部アプリケーションのタイムゾーンとSAPシステムのタイムゾーンの差が480分の場合は、次の値を入力します。
delta_offset=480
- •SAPで完全削除対象としてマークされたキーフィールドの変更されたデータをターゲットテーブルに取得するには、次の詳細プロパティを入力します。
fetch_del_rows=true
次のガイドラインを使用して、差分抽出マッピングのfetch_del_rows=true詳細プロパティを設定できます。
- - 削除された差分レコードをターゲットテーブルに取得するには、ターゲットトランスフォーメーションで操作に[Data Driven]を選択し、更新モードに[Update Else Insert]を選択します。このように設定しない場合、ターゲットでデータ破損が発生します。
- - 削除されたレコードに対して差分抽出を実行すると、Secure Agentは削除された差分レコードのキー値のみを取得します。