【SAP】TVARVC(バリアント変数)テーブルを1分で解説

ABAP

SAPにおけるちょっと特殊なテーブル「TVARVC(バリアント変数)テーブル」について初心者向けに解説します。

このページで学べる内容
  • TVARVCテーブルとは?
    • バリアントとは?バリアント変数とは?
  • トランザクションコード「STVARV」と「STVARVC」の違い
    • ABAP「CLIENT SPECIFIEDオプション」

SAPコンサルを目指す方や、熟練のABAPerを目指す方であれば当たり前のように知っておきたい重要知識です。

是非最後までご覧ください。

スポンサーリンク
スポンサーリンク

SAP:TVARVCテーブルとは?

重要です, 色鉛筆, ペン, 赤, スタンプ, インプリント, 感嘆符

SAP標準テーブル「TVARVC」とは、バリアント変数をクライアント別に保持しているテーブルで、トランザクションコードSTVARV から「TVARVC」テーブルの値を、STVARVC からクライアント000の「TVARVC」テーブルの値を参照・変更することが可能です。

まとめ

SAP標準テーブル「TVARVC」とは、バリアント変数をクライアント別に保持しているテーブルのこと。

STVARV vs STVARVC
  • STVARV:今ログオンしているクライアントの「TVARVC」テーブルの値を参照
  • STVARVC:クライアント「000」の「TVARVC」のテーブルの値を参照

そもそも、バリアント変数って?という方のために、基本から解説します。

バリアント変数とは?

バリアント変数とは、バリアントが参照している変数のことです。

バリアントとは

バリアントとは、同じ選択条件で実行することが多いプログラムに対して、入力値のセットを保存させておくもの

画面の項目ごとに値をセットしておき、バリアントを呼び出すことで複数項目の値を一気に入力する仕組みです。

バリアントの設定内容例
  • 会社コード ⇒ "1000"
  • 会計年度  ⇒ "2020"

そもそも「バリアント」の理解が自信ない・・・という方はこちらの記事をどうぞ!

例であげたように「日付」項目に対するバリアントも存在しますが、毎日複数存在するバリアントの日付を1から修正するのは大変です。そこで、考えられたのがバリアント変数

バリアント定義の画面から、「変数名」項目にセットして利用します。

例であげた「ZAA01」の値を「2020/04/01」に変えてあげれば、画面に表示される日付も「2020/04/01」に変更されるという仕組み

複数のバリアントが1つのバリアント変数を参照することが可能なので、1つのバリアント変数を変えれるだけで複数バリアントの日付項目の一括変更が行えます。

そして、このバリアント変数の値を保持しているのが「TVARVC」テーブルです。

TVARVC:「クライアント固有」のバリアント変数

「TVARVC」テーブルは、バリアント変数の値をクライアント固有で保持しています。

クライアントとは

SAPでは、1つのシステム上に複数の環境を定義することができます。この複数の環境をSAPではクライアントと呼びます。

1つのシステム上に複数の環境を定義することができます。この複数の環境をSAPではクライアントと呼びます

SAPのシステムランドスケープや「移送」の概要を理解したい方はこちらの記事をご覧ください。

クライアント固有で保持しているということは、例えばクライアント「100」でバリアント変数の値を変えてもクライアント「200」では変更が反映されないということになります。

今自分がログオンしているクライアントのバリアント変数の値はトランザクションコード「STVARV」から参照することができます。

クライアント「000」の「TVARVC」テーブル

一方で、クライアントに関係なくバリアント変数を登録・変更したい場合も存在します。このようなバリアントの場合、トランザクションコード「STVARVC」から登録・変更を行います。

「STVARV」と異なり、「STVARVC」を実行すると、クライアント「000」の「TVARVC」テーブルの値を参照しにいく仕組みです。

クライアント「000」とは、全てのマスタとなる(全てのおおもとの)クライアントです。ここに保存されているバリアント変更の値を変更すれば、全クライアントのバリアント変数が変更されます。例えば、システムバリアントが参照するバリアント変数であれば、トランザクションコード「STVARVC」から登録を行うのが王道です。

まとめ

SAP標準テーブル「TVARVC」とは、バリアント変数をクライアント別に保持しているテーブルのこと。

STVARV vs STVARVC
  • STVARV:今ログオンしているクライアントの「TVARVC」テーブルの値を参照
  • STVARVC:クライアント「000」の「TVARVC」のテーブルの値を参照

これで、バリアント変数についての基本的な理解は以上です。

ABAPでバリアント変数を処理する場合の注意

バリアント変数をABAPプログラムから参照したり、値を変更したりする場合もあります。

* バリアント変数テーブル更新
  UPDATE TVARVC 
     SET LOW = 'sample'
     WHERE NAME  = 'sample'
       AND TYPE  = 'sample'
       AND NUMB  = 'sample'.

簡単なUPDATE文ですが、このUPDATE文はプログラムが実行されたクライアントのバリアント変数の値だけを変更しています。

つまり、クライアント「000」のバリアント変数の値を更新しているわけではありません。

もし、クライアント「000」のバリアント変数の値を更新したい場合、以下のように「CLIENT SPECIFIED」オプションを利用し、対象クライアントを明示するのを忘れないようにしましょう。

* バリアント変数テーブル更新
  UPDATE TVARVC CLIENT SPECIFIED
         SET LOW = 'sample'
         WHERE MANDT = '000'     " クライアント000を指定
           AND NAME  = 'sample'
           AND TYPE  = 'sample'
           AND NUMB  = 'sample'

SELECT文の場合も同様です。

  SELECT SINGLE LOW
    FROM   TVARVC CLIENT SPECIFIED
    INTO   (内部テーブル)
    WHERE  MANDT = '000' 
       AND NAME  = 'sample'
       AND TYPE  = 'sample'
       AND NUMB  = 'sample'.

ABAPを1から勉強したい方は

ABAPを1から学習したい初心者の方向けに、できるだけ網羅的にABAPが理解できるよう以下ページに知識体系を整理しています。

特に初心者のうちは、どこから学べばよいか?どう勉強すれば良いか?すらわからない状態になりがち。

ある程度の知識を持ったうえで、はじめて実践的な理解へとつながります。

是非、一度ご覧になってみてください。

タイトルとURLをコピーしました