この記事を読むメリット
- 選択画面バリアントの関連テーブルについて理解することができます。
- T-CODE:SE16Nのバリアントの関連テーブルについて理解することができます。
SAPでは、同じレポートやトランザクションを「毎回ほぼ同じ条件で実行する」ことが多くあります。
こうした「よく使う選択条件のセット」を保存して再利用できるのが「選択画面バリアント(Selection Variant)」です。
本記事では、この選択画面バリアントの情報が格納されているテーブルについて解説していきます。
また、組織変更などにより旧組織IDを使用しているバリアントの一覧を一括で取得したいなどの状況でテーブルを検索したいと思われる方が多いと思います。残念ながら現状ではそのようなテーブルはありません。本記事が、その現状の説明と代替手段の検討をするうえでお役に立てますと幸いです。
選択画面バリアントをより深く理解するには以下の記事が参考になるぞい!
あわせて読みたい
【SAP 基礎】選択画面バリアントについて解説
この記事を読むメリット 選択画面バリアントの基本概念が体系的に理解できます 選択画面バリアントの作成・変更・削除・保護の操作手順が分かります SAPでは、同じレポ…
この記事のポイント
テーブル関連図(選択画面バリアント)
以下は選択画面バリアント関連のテーブル関連図じゃ!
テーブルの中身を参照するT-CODE:SE16Nについては、専用のテーブル構造が用意されています。
選択画面バリアントのテーブル関連図
テーブル一覧・概要
| テーブルID | テーブル内容 |
|---|
| VARID | バリアント一覧 |
| VARIT | バリアント名のテキスト情報(説明) |
| VARI | バリアントの選択項目や選択値などの具体的な内容 |
| VARIS | バリアントと選択画面(スクリーン)の紐づけ情報 |
| SE16N_LT | SE16Nの各テーブルのバリアント一覧 |
| SE16N_LTD | SE16Nの各バリアントの選択項目や選択値などの具体的な内容 |
各テーブル解説
VARID:バリアント一覧(Variant directory)
バリアントの「見出し情報」を持つテーブルです。
どのレポートに対して、どんな名前のバリアントが存在するか、作成者・更新日などの管理情報が格納されています。
プログラムとバリアントは1:Nの関係にあるので、プログラムを選択値に入れて検索するとそのプログラムで登録されているバリアントの一覧が取得できます。
このプログラムはT-CODE:VA05の受注一覧機能ですね
VARID
VARIT:バリアントテキスト(Variant texts)
バリアントの説明文(テキスト)を言語別に持つテーブルです。
多言語環境だと、同じ REPORT/VARIANT でも言語別にレコードが増えます。
VARIT
VARI:バリアントの本体データ(Variant storage)
VARIには選択値のデータが格納されていますが、選択画面の内容がそのまま入っているわけではなく、
バイト列をそのまま 16 進表記でダンプしているだけであり、テキストとして読める形式ではありません。
バリアントの中身を確認したい場合は、テーブルを直接読むのではなく、T-CODE:SE38で個別に検索するか、RS_VARIANT_CONTENTS や RS_VARIANT_VALUES_TECH_DATA といった標準汎用モジュールを使って、選択値を参照する必要があります。
VARI
もっとくわしく💡
例えば、販売組織AからBに変更する際、プログラム横断でAを使用しているバリアントを変更する必要があります。このとき、まずは変更対象のバリアント一覧を取得したいところです。そこで、上記汎用モジュールを使用したABAPプログラムを作成するのが1つの方法として挙げられます。
プログラムの中身としては、必要に応じてVARIDを使用し、プログラムおよびバリアントの対象を絞り込み、それらに対して汎用モジュールで1件ずつ取得して内部テーブルに格納します。さらにそれをLOOPし、検索対象の項目と設定値で対象のバリアント一覧を作成する流れです。
VARIS:選択画面へのバリアント割当(Assignment of variant to selection screen)
VARIS は バリアントと選択画面のスクリーン画面(Dynpro)を結びつけるテーブルで複数の選択画面や複雑な構成を持つレポートほど、VARIS のレコードが作成されます。
今回のような1つの単純な選択画面しかないプログラムについては、レコードが作成されないこともあります。
SE16N_LTとSE16N_LTD
T-CODE:SE16Nのテーブルを参照するプログラムのバリアントは、SE16N_LTとSE16LTDの専用テーブルで管理されています。
SE16N_LTは、テーブルとバリアントとユーザID単位でレコードが作成されます。
SE16N_LTDは、各バリアントの項目名と選択値が格納されています。選択値は、VARIのように変換されておらず、そのまま参照することができます。また、それぞれは下記画像の様に項目IDで紐づきをもっています。
まとめ
今回は選択画面バリアントに関するテーブルについて解説してきました。
テーブル参照を使用してバリアントの設定値から逆引きでバリアント名を取得することは、残念ながらできませんが、汎用モジュールを使用した簡単なプログラムで取得可能なこともご紹介しました。また、SE16Nのバリアントを管理しているテーブルにも触れました。
今回の記事がシステム運用の一助になれば幸いです。最後まで読んでいただきありがとうございました!