SAP BW/4HANA
SAP BW/4HANAのTransformation基礎:作成方法と変換ルール、DTPとの違い
SAP BW/4HANAのTransformationについて、データフロー上の役割、作成手順、変換ルールの種類、DTPとの違い、実行エラーの確認方法を実務向けに解説します。
SAP BW/4HANAのTransformationとは
SAP BW/4HANAのTransformationは、ソース側の項目をターゲット側の項目へ対応付け、必要な変換処理を定義するオブジェクトです。データをADSOなどへロードする際に、項目のマッピング、値の変換、計算、ルックアップといった処理をデータフローへ組み込みます。単純な項目コピーから複雑な業務ルールまで、ターゲット構造に合わせて入力データを整える役割を持ちます。
Transformationは単独でデータを実行する処理ではありません。通常は、データを読み出すソース、変換定義、データ転送プロセス(DTP)、データを格納するターゲットを組み合わせて使用します。データモデル全体を確認するときは、関連するAdvanced DataStore Objectの設計も併せて確認すると、ターゲット項目の意味と処理の境界を整理しやすくなります。
TransformationとDTPの違い
Transformationはデータをどのように変換するかを定義します。一方、DTPは、どのデータをどの条件で読み込み、どのTransformationを通して、どのターゲットへ転送するかを制御します。
| 項目 | Transformation | DTP |
|---|---|---|
| 主な役割 | 項目マッピングと変換ロジックの定義 | データ転送の実行制御 |
| 定義する内容 | ルール、式、ルーチン、参照 | フィルター、抽出範囲、実行モード |
| 実行単位 | DTPなどから呼び出される | データ転送を開始する |
| 変更の影響 | 変換後の値や項目対応に影響 | 抽出範囲や実行方法に影響 |
Transformationを修正しても、DTPのフィルター条件や実行設定は別に管理されます。逆に、DTPの条件を変更しても、Transformationに定義した項目ロジック自体は変わりません。この分離を意識すると、データが対象外になった問題と、対象データの値が誤変換された問題を切り分けやすくなります。
Transformationの作成手順
実際の作成では、最初にソースとターゲットの項目定義を確認します。ターゲットの項目が持つデータ型、長さ、通貨、単位、キー属性を確認し、ソース項目との意味が一致しているかを整理します。項目名が似ているだけでは正しい対応とは限らないため、業務上の定義も確認します。
- BW/4HANAのモデリング環境でデータフローを開きます。
- ソースオブジェクトとターゲットオブジェクトを指定します。
- Transformationを作成し、ターゲット項目を表示します。
- ソース項目をターゲット項目へ割り当てます。
- 必要な変換ルール、式、参照処理を追加します。
- Transformationを保存し、整合性チェックを実行します。
- 関連するDTPを確認し、テストデータで転送します。
- ターゲットのデータとエラーログを確認します。
ターゲット項目の設計が複雑な場合は、先にInfoObjectの役割と設計を確認します。特性、キー数値、時間特性、通貨特性などの定義がTransformationのマッピング結果に影響するためです。
変換ルールの主な種類
項目直接割当
ソース項目をターゲット項目へそのまま割り当てる方法です。データ型や意味が一致している場合に適しています。直接割当は処理内容が明確で、後からの保守もしやすい方法です。
定数
ターゲット項目へ固定値を設定します。システム区分、データ発生元、固定のステータスなど、ソースに存在しない値を補うときに使います。固定値は業務ルールとして管理し、値の変更が発生したときの影響範囲を記録します。
式による計算
複数項目の加算、減算、文字列の組み立て、条件による値の設定などを定義します。計算式を使う場合は、NULLや空文字、ゼロ、符号、桁数の扱いをテストします。日付や通貨を扱う式では、入力データの形式と対象項目の属性を揃えます。
参照による補完
別のデータから属性や変換値を取得し、ターゲット項目を補完します。参照キーが一意であること、該当データがない場合の扱い、参照処理の負荷を確認します。大量データに対して複雑な参照を設定すると処理時間が増えるため、実行量と運用時間帯も考慮します。
ルーチン
標準の割当や式だけでは表現しにくい業務ロジックを、ルーチンとして実装します。ルーチンを使う場合は、入力値が欠落したときの動作、エラー行の扱い、処理結果の再現性を明確にします。ロジックを小さく保ち、複数のTransformationで同じ処理が必要な場合は、重複実装を避ける設計を検討します。
Transformation設計の実務ポイント
まず、ソース項目とターゲット項目の対応表を作成します。対応表には、項目名だけでなく、業務上の意味、変換内容、初期値、エラー時の扱い、確認方法を記載します。これにより、後から画面設定だけを見ても処理意図を追跡できます。
次に、変換処理をできるだけ単純なルールから構成します。直接割当、定数、標準的な式で表現できる処理を優先し、ルーチンは必要な範囲に限定します。処理を分解できる場合は、複数のTransformationや前段のデータモデルに責務を分けると、テスト対象が明確になります。
データモデルを設計するときは、複数の提供元を統合するCompositeProviderの構成も確認します。Transformationで吸収すべき差異と、統合レイヤーで扱うべき差異を分けることで、同じ変換ロジックを繰り返し実装する状況を減らせます。
DTP実行前の確認
DTPを実行する前に、ソースに実データが存在すること、抽出条件が意図した期間や会社コードを対象にしていること、ターゲットのロード状態が適切であることを確認します。Transformationだけを確認しても、DTPフィルターによって対象データが除外されていれば、期待した結果は得られません。
確認項目は、ソース件数、DTPのフィルター、Transformationの割当、ターゲット項目の状態、既存データとの重複処理です。初回は少量のテスト範囲を設定し、変換前後の値を比較してから本番相当の件数へ広げます。
大量データを扱う場合は、処理時間、パッケージ分割、ターゲットの書き込み負荷を記録します。性能問題の調査では、BW/4HANAのパフォーマンスチューニングを参照し、TransformationだけでなくDTP、ソース取得、ターゲット書き込みの各段階を分けて確認します。
Transformationエラーの切り分け
Transformationのエラーは、マッピング不備、データ型の不一致、必須値の欠落、参照値の未検出、ルーチンの処理エラーに分けて調査します。最初にDTPの実行ログでエラーが発生した処理段階と対象パッケージを確認します。
対象パッケージのデータを抽出し、変換前の値、Transformationで設定したルール、ターゲットへ書き込む値を順番に比較します。特定の値だけで失敗する場合は、NULL、空文字、特殊文字、桁あふれ、日付形式を重点的に確認します。すべてのパッケージで失敗する場合は、項目割当、データ型、ターゲット状態、DTP設定を先に確認します。
参照処理で失敗する場合は、参照キーの形式と一意性、対象期間、未検出時の戻り値を確認します。ルーチンで失敗する場合は、入力値が想定した形式になっているか、例外やエラー行の処理が定義されているかを調べます。ログに残る情報が不足している場合は、テスト用の少量データで処理を分割し、どのルールで値が変わるかを追跡します。
変更後のテストと運用
Transformationを変更した後は、正常系、境界値、欠損値、参照未検出、重複キー、再実行の各ケースを確認します。テスト結果には、入力件数、出力件数、エラー件数、代表的な変換前後の値を記録します。
本番反映では、変更対象のTransformationと関連DTPを特定し、依存するデータフローを確認します。既存データを再ロードする場合は、削除、上書き、追加の動作をターゲットの設計に合わせて決めます。変更後の初回実行では、通常より細かくログとターゲットデータを監視します。
運用引き継ぎ用には、Transformationの目的、ソースとターゲット、主要ルール、参照先、エラー時の確認箇所、再実行手順を残します。処理の背景を記録しておくと、担当者が変わった後もDTPの実行結果を正しく評価できます。