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種類」
と考えると必ず混乱します。
業務要件 → 効かせたいレイヤ → 対応するバリアント → 参照テーブルという順で整理するのが、最も安全で再利用性の高い設計・調査アプローチです。