1. SAPにおける「バリアント」とは

SAPにおけるバリアント(Variant)とは、ABAPプログラム・トランザクション・画面の挙動を、プログラム修正なしで切り替えるための標準機構です。

SAPでは、
👉 用途ごとに複数種類のバリアントが存在し、
👉 それぞれ保存される標準テーブルも異なる
という点が、理解を難しくしている原因です。


2. 全体像(レイヤ別の整理)レイヤ対象バリアント種別実行条件レポート実行レポートバリアント / バリアント変数起動方法トランザクションバリアントトランザクション画面制御Dynproトランザクションバリアント / 画面バリアント3. レポートバリアント(Report Variant)概要

ABAPレポートの選択画面パラメータを保存する最も基本的なバリアント。

主な標準テーブルテーブル内容VARIDバリアントのヘッダ情報(プログラム名、バリアント名、説明)VARIパラメータ/セレクション条件の実データVARITバリアントのテキスト(言語別)VARIS選択条件の属性情報

👉 VARID × VARI が基本セット
👉 ECC/S/4 共通

4. バリアント変数(Variant Variable)概要

レポートバリアント内で使用される「実行時に値を動的決定する仕組み」

主な標準テーブルテーブル内容TVARVCバリアント変数の定義(値・日付・ユーザなど)補足

レポートバリアント(VARI)から参照される

単体では意味を持たない

👉 TVARVC + レポートバリアント で初めて機能

5. バリアントトランザクション(Variant Transaction)概要

特定のレポートバリアントを固定して起動するトランザクション
ユーザは選択画面を意識しない。

主な標準テーブルテーブル内容TSTCトランザクションコード定義TSTCPトランザクションのパラメータ情報(レポート名+バリアント)ポイント

見た目は通常トランザクション

内部的には「レポート+バリアント」を起動

👉 TSTCP の存在が最大の識別ポイント

6. トランザクションバリアント(Transaction Variant)概要

トランザクション全体の画面遷移・入力可否・初期値を制御するバリアント。

作成トランザクション

SHD0

主な標準テーブル(代表)テーブル内容SHDTVCIUクライアント非依存トランザクションバリアントのヘッダSHDTVSVCIUクライアント非依存のトランザクションバリアントと画面バリアントの割り当てを格納SHDTVUクライアント依存トランザクションバリアントのヘッダSHDTVSVUクライアント依存のトランザクションバリアントと画面バリアントの割り当てを格納

※ ECC / S/4 で存在有無・構成差あり

👉 SHDT* 系がトランザクションバリアント領域

7. 画面バリアント(Screen Variant)概要

1 Dynpro(1画面)単位での項目制御を行う内部構成要素。

実態

独立した運用対象ではない

トランザクションバリアント(SHD0)の内部要素

主な関連テーブル主な標準テーブル(代表)テーブル内容SHDSVCI画面バリアントのヘッダSHDSVFVCI項目単位の制御情報

👉 「画面バリアント」という名称は概念上の呼び方と理解するのが正しい

8. 各バリアント × 標準テーブル対応表(一覧)バリアント種別主な標準テーブルレポートバリアントVARID / VARI / VARIT / VARISバリアント変数TVARVCバリアントトランザクションTSTC / TSTCPトランザクションバリアントSHDVCI / SHDVI / SHDVM画面バリアントSHDVI / SHDVM(内部要素)9. よくある調査・設計時の実務ポイント● 「この条件、どこに保存されている?」

選択条件 → VARI

動的日付 → TVARVC

起動時固定 → TSTCP

画面制御 → SHDSV*

● ECC と S/4 の違い

レポートバリアント系:ほぼ同一

SHD0 系:S/4 で制約・非推奨画面あり

10. まとめ(設計・調査向け結論)

SAPのバリアントは、

目的が違う

レイヤが違う

保存テーブルが違う

という前提で設計されています。

そのため、

「バリアント=1種類」
と考えると必ず混乱します。

業務要件 → 効かせたいレイヤ → 対応するバリアント → 参照テーブルという順で整理するのが、最も安全で再利用性の高い設計・調査アプローチです。