この記事を読むメリット
- TVARVCテーブルの役割と利用目的を理解できます。
- パラメータと選択オプションの違いを理解できます。
- STVARVを利用したTVARVC変数の登録方法を学ぶことができます。
SAPの開発や運用保守では、会社コード、プラント、伝票タイプなどの値をプログラム内で使用することがあります。
しかし、これらの値をABAPプログラムへ直接書き込みすると、値を変更するたびにプログラムの修正や移送が必要になります。
このようなハードコーディングを避け、変更する可能性がある値をSAP上で管理するために利用されるのが「TVARVCテーブル」です。
TVARVCテーブルに変数を登録しておけば、プログラムを修正することなく、登録した値だけを変更できます。また、レポートのバリアントにTVARVC変数を設定し、選択条件を柔軟に管理することも可能です。
本記事では、SAP初心者やSAPコンサルタント、ABAP開発者を対象に、TVARVCテーブルの基本的な役割から、トランザクションコード「STVARV」を利用した登録方法までわかりやすく解説します。
早速、TVARVCテーブルに関して紹介していくぞい!
この記事のポイント
TVARVCテーブルとは?
TVARVCとは、SAPで使用する変数の値を登録・管理するための標準テーブルです。
正式には「Table of Variant Variables(Client-Specific)」と呼ばれ、レポートのバリアントやABAPプログラムなどで使用する値を、クライアント単位で保存できます。
例えば、次のような値をTVARVCテーブルに登録できます。
- 会社コード
- プラント
- 伝票タイプ
- 会計年度
- 転記日付
- 特定の処理を実行するかどうかを示すフラグ
これらの値をABAPプログラム内に直接書き込みするのではなく、TVARVCテーブルに変数として登録しておくことで、プログラムを修正せずに値を変更できます。
例えば、処理対象となる会社コードを「1000」から「2000」へ変更する場合を考えてみましょう。
会社コードがABAPプログラムに直接書き込まれている場合、プログラムの修正やテスト、移送が必要になります。一方、TVARVCテーブルを利用している場合は、登録されている値を変更するだけで対応できます。
TVARVCには、主に次の2種類の変数を登録できます。
スクロールできます
| 変数タイプ | 内容 | 使用例 |
|---|
| パラメータ(P) | 原則として単一の値を登録する | 会社コード「1000」 |
| 選択オプション(S) | 複数の値や範囲条件を登録する | 会社コード「1000~2000」 |
TVARVC
TVARVCテーブルのデータは、トランザクションコード「STVARV」から登録・変更できます。登録した変数は、レポートの選択画面に設定するバリアントや、ABAPプログラムから参照できます。
TVARVCテーブルのイメージ↓
ポイント!
- TVARVCは、変数の値を管理するSAP標準テーブルです。
- 登録した値はクライアント単位で保存されます。
- パラメータと選択オプションの2種類を登録できます。
- STVARVを使用して、変数の登録や変更を行います。
- バリアントやABAPプログラムから登録した値を参照できます。
なぜTVARVCテーブルが必要なの?
① プログラムを修正せずに値を変更できる
例えば、会社コード「1000」を処理対象としているプログラムで、対象を「2000」へ変更する場合を考えてみましょう。
会社コードをプログラム内に直接記述している場合は、ABAPプログラムの修正が必要です。一方、TVARVCを利用している場合は、TVARVCに登録されている値を「1000」から「2000」へ変更することで対応できます。
これにより、業務要件や運用条件が変更された場合でも、柔軟に対応できます。
② 変更する値を一元管理できる
同じ会社コードやプラントを複数のプログラムで使用する場合、それぞれのプログラムに値を直接記述すると、変更時にすべてのプログラムを確認・修正しなければなりません。
TVARVCに値を登録し、各プログラムから共通して参照する設計にすれば、値を一か所で管理できます。
そのため、変更漏れやプログラム間の設定不一致を防ぎやすくなります。
③ レポートの選択条件を動的に設定できる
TVARVCに登録した変数は、ABAPプログラムだけではなく、レポートのバリアントでも利用できます。
例えば、複数のレポートで同じ会社コードやプラントを選択条件として使用する場合、TVARVC変数をバリアントに設定しておけば、TVARVCの値を変更することで選択条件も更新できます。
④ システムやクライアントごとに値を管理できる
TVARVCはクライアント依存のテーブルです。そのため、開発環境、検証環境、本番環境などで、それぞれ異なる値を設定できます。
例えば、同じABAPプログラムを使用しながら、開発環境ではテスト用の会社コード、本番環境では実際の会社コードを参照させることが可能です。
TVARVCとハードコーディングの違い
ハードコーディングとは、会社コードやプラントなどの値を、ABAPプログラム内に直接書き込みすることです。
例えば、会社コード「1000」のみを処理対象とする場合、プログラムに次のような条件を書きます。
IF bukrs = ‘1000’.
この方法では、処理対象を「1000」から「2000」へ変更する場合、ABAPプログラムの修正が必要です。また、修正後には単体テストや本番環境への移送なども必要になるため、値を一つ変更するだけでも一定の作業が発生します。
一方、TVARVCを利用する場合は、会社コードをプログラムへ直接記述せず、TVARVCテーブルに変数として登録します。
例えば、変数名「Z_TARGET_BUKRS」に会社コード「1000」を登録し、ABAPプログラムからその値を取得します。
処理対象の会社コードを「2000」へ変更する場合は、TVARVCに登録されている値を変更します。プログラム自体を修正する必要はありません。
TVARVCとハードコーディングの比較↓
| 比較項目 | ハードコーディング | TVARVC |
|---|
| 値の保存場所 | ABAPプログラム内 | TVARVCテーブル |
| 値を変更する方法 | プログラムを修正する | 登録された変数を変更する |
| プログラム修正 | 必要 | 不要 |
| テスト・移送 | プログラム変更に伴い必要 | 運用ルールや変更内容による |
| 柔軟性 | 低い | 高い |
| 主な用途 | 基本的に変更されない固定値 | 運用中に変更される可能性がある値 |
つまり、TVARVCを利用すると、原則としてプログラムを修正せずに値を変更できます。
TVARVCテーブルの主な項目
TVARVCテーブルには、変数名、変数タイプ、検索条件、登録値などが保存されています。
| 項目名 | 内容 | 設定例 |
|---|
| MANDT | データが登録されているクライアント | 100 |
| NAME | TVARVCに登録する変数名 | Z_TARGET_BUKRS |
| TYPE | 変数のタイプ | P/S |
| NUMB | 同じ変数内の明細番号 | 0000 |
| SIGN | 条件に値を含めるか、除外するか | I/E |
| OPTI | 値の比較条件 | EQ/BT/CPなど |
| LOW | 単一値または範囲の開始値 | 1000 |
| HIGH | 範囲の終了値 | 2000 |
それぞれの項目について詳しく見ていきましょう。
① NAME:変数名
NAMEには、TVARVCに登録する変数の名称を設定します。
例えば、処理対象となる会社コードを管理する場合は、次のような名称を設定できます。
Z_TARGET_BUKRS
変数名から用途を判断できるように、「Z」から始まる分かりやすい名称を付けることが重要です。
また、同じ変数を複数のプログラムやバリアントから参照する場合があるため、プロジェクト内で命名規則を決めておくと管理しやすくなります。
② TYPE:変数タイプ
TYPEには、変数がパラメータと選択オプションのどちらであるかを設定します。
| TYPE | 変数タイプ | 内容 |
|---|
| P | パラメータ | 単一の値を登録する |
| S | 選択オプション | 複数の値や範囲条件を登録する |
③ NUMB:明細番号
NUMBは、同じ変数名に複数の条件を登録する場合に、それぞれの明細を識別するための番号です。
例えば、処理対象として会社コード「1000」と「2000」を登録する場合は、次のようになります。
| NAME | TYPE | NUMB | SIGN | OPTI | LOW |
|---|
| Z_TARGET_BUKRS | S | 0000 | I | EQ | 1000 |
| Z_TARGET_BUKRS | S | 0001 | I | EQ | 2000 |
➃ SIGN:包含・除外条件
SIGNには、指定した値を処理対象に含めるか、除外するかを設定します。
| SIGN | 内容 |
|---|
| I | 指定した値を含める(Include) |
| E | 指定した値を除外する(Exclude) |
通常は、対象となる値を指定する「I」を使用するケースが多くなります。
⑤ OPTI:比較条件
OPTIには、LOWとHIGHに登録した値をどのような条件で判定するかを設定します。
| OPTI | 内容 | 設定例 |
|---|
| EQ | 指定した値と等しい | 会社コード=1000 |
| NE | 指定した値と等しくない | 会社コード≠1000 |
| BT | 指定した範囲内 | 会社コード1000~2000 |
| NB | 指定した範囲外 | 会社コード1000~2000以外 |
| CP | 指定したパターンに一致する | 会社コードが「1」で始まる |
| NP | 指定したパターンに一致しない | 会社コードが「1」で始まらない |
| GT | 指定した値より大きい | 会計年度>2026 |
| GE | 指定した値以上 | 会計年度≧2026 |
| LT | 指定した値より小さい | 会計年度<2026 |
| LE | 指定した値以下 | 会計年度≦2026 |
⑥ LOW・HIGH:登録値
LOWには、単一の値または範囲の開始値を登録します。HIGHには、範囲の終了値を登録します。
単一値を登録する場合は、LOWのみを使用します。
| SIGN | OPTI | LOW | HIGH | 条件 |
|---|
| I | EQ | 1000 | 空欄 | 1000を含める |
| E | EQ | 2000 | 空欄 | 2000を除外する |
| I | BT | 1000 | 2000 | 1000から2000までを含める |
HIGHを使用するのは、主に「BT」や「NB」など、範囲を指定する場合です。
STVARVでTVARVCを登録する方法
TVARVCテーブルの変数は、トランザクションコード「STVARV」を使用して登録・変更できます。
TVARVCテーブルをSE16Nなどから直接更新するのではなく、基本的にはSTVARVの登録画面からメンテナンスします。
① STVARVを起動する
STVARVを実行すると、TVARVCに登録されている変数を確認・変更するための画面が表示されます。
➁赤枠の変更モードを押し、オレンジ枠の登録ボタンをクリックする
STVARVの画面では、登録する内容に応じて「Parameters」または「Selection Options」を選択します。
今回は、会社コード「1000」という単一の値を登録するため、パラメータを選択します。
➂変数名と値を入力する
パラメータの登録画面で、変数名と登録する値を入力します。
設定例は以下のとおりです。
➃入力内容を保存する
変数名と値を入力したら、保存ボタンをクリックします。
保存すると、入力した内容がTVARVCテーブルに登録されます。
⑤登録結果を確認する
登録した変数は、STVARVの画面またはトランザクションコード「SE16N」から確認できます。
TVARVC利用時の注意点
TVARVCを利用すると、プログラムを修正せずに値を変更できるため、運用の柔軟性を高められます。
一方、登録値の変更がプログラムやバックグラウンドジョブの処理結果に直接影響するため、利用時にはいくつかの注意点があります。
① 変更前に影響範囲を確認する
TVARVCに登録された変数は、複数のABAPプログラムやバリアントから参照されている場合があります。
そのため、値を変更すると、想定していないプログラムやバックグラウンドジョブにも影響する可能性があります。
変更前には、少なくとも以下の内容を確認しましょう。
- 変数を参照しているABAPプログラム
- 変数を設定しているバリアント
- 関連するバックグラウンドジョブ
- 変更後に処理対象となるデータ
- 業務および後続処理への影響
共通で利用する変数ほど影響範囲が広くなるため、変数の用途や参照先を設計書などで管理することが重要です。
② 命名規則を統一する
TVARVCには、用途の異なる変数を多数登録できます。命名規則が統一されていないと、変数名だけでは用途や参照元を判断できなくなります。
③ TVARVCを直接更新しない
TVARVCの登録・変更は、原則としてトランザクションコード「STVARV」から実施します。
SE16Nなどでテーブルを直接更新すると、入力内容の誤りや不整合が発生する可能性があります。そのため、SE16Nは登録内容を確認する目的で使用し、通常のメンテナンスにはSTVARVを使用します。
④ 登録値のデータ形式に注意する
TVARVCのLOWとHIGHは文字列形式の項目です。
そのため、日付、金額、数量などを登録してプログラムから利用する場合は、参照先の項目に合った形式で値を登録し、必要に応じてABAPプログラム側で型変換を行います。
例えば、日付を登録する場合は、内部形式である「YYYYMMDD」を使用します。
20260813
登録形式が正しくない場合、型変換エラーが発生したり、意図しない条件でデータが抽出されたりする可能性があります。
⑤ パラメータと選択オプションを正しく使い分ける
単一値を管理する場合はパラメータ「P」、複数値や範囲条件を管理する場合は選択オプション「S」を使用します。
ABAPプログラム側でも、TYPEに応じた取得処理を実装する必要があります。
特に選択オプションでは、SIGN、OPTI、LOW、HIGHの組み合わせによって条件が決まるため、LOWだけを取得すると、除外条件や範囲条件が正しく反映されません。
⑥ 変数が未登録の場合も考慮する
ABAPプログラムからTVARVCを参照する場合は、対象の変数が必ず登録されているとは限りません。
変数が未登録のまま処理を続行すると、抽出条件が空欄になり、想定以上のデータが処理対象になる可能性があります。
そのため、プログラム側では、変数を取得できなかった場合の処理を実装しておくことが重要です。
例えば、次のような対応が考えられます。
- エラーメッセージを表示して処理を中止する
- 初期値を設定する
まとめ
本記事では、TVARVCテーブルの概要や必要性、ハードコーディングとの違い、主な項目、STVARVを利用した登録方法について解説しました。
TVARVCは、会社コードやプラント、伝票タイプなど、将来的に変更される可能性がある値を管理するためのSAP標準テーブルです。
ABAPプログラム内に値を直接書き込みするのではなく、TVARVCに登録した値を参照することで、原則としてプログラムを修正せずに処理条件を変更できます。これにより、プログラムの保守性や運用の柔軟性を高められます。
TVARVCテーブルを利用することで、動的対応ができることよく理解できました!
TVARVCの役割と正しい利用方法を理解することで、ハードコーディングを減らし、変更に強く保守しやすいSAPシステムを構築できるようになるぞ!