PR

【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を勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

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