SAPの基本知識の1つ、バリアントについて初心者向けに1から解説します。
バリアントとは選択画面に入力する値を保存したものです。毎回同じような入力を行う必要がある場合に、あらかじめ入力値をセットで保存しておけば、後から呼び出すだけで選択画面に値を自動的に当てはめることが可能です。
このページでは、バリアントとは何か?バリアントの仕組みは?を1から10まで丸っと分かりやすく解説します。
SAPエンジニアを目指す方であれば押さえておきたい超・基本知識です。是非最後までご覧ください。
それでは早速解説を始めます。
バリアントとは?
バリアントとは、同じ選択条件で実行することが多いプログラムに対して、入力値のセットを保存させておくもの。
例えば、入力項目が10個以上あるようなプログラムに対して、毎回同じ値を入力している場合。このような場合に、バリアントを呼び出すことで一気に項目を埋めることができます。
(オートコンプリートフォームのようなもの。自動的に値が埋められていくイメージでOK。)
上記の設定がされているバリアントを選択するだけで、画面に値が入力されるようになります。
バリアントの登録方法
ここまでで何となくバリアントの使い方のイメージがついてきたことと思います。
ここからは、SAPでバリアントを利用するために必要なバリアント登録手順を解説します。実際に、登録する方法は知らなくても良い・・・という方も是非ご覧ください。実際の画面を見ていくだけでも、バリアントに対する理解・イメージが深まります。
バリアント登録
簡単な例として、ここではテスト用に作成したプログラムに対してバリアントを登録していきます。
「バリアント」を選択して、登録ボタンをクリック。
選択画面を持つ機能であれば誰でも簡単にバリアントを登録することができます。
細かな設定方法は、トランザクションコード:SE38から登録する場合と同様です。
メニュー > バリアント > バリアント保存
※プログラム"YTEST" は以下のような選択画面を保持してるものとします。
バリアント名称の指定
次に、バリアントの名称を指定します。名称は分かりやすいように自由につけてOK。ただし、実はバリアント登録時にはこの名称が少しだけ大きな役割を果たす場合があります。
ここで、システムバリアントについて解説します。
システムバリアントとは?
バリアントの名称を「CUS&」で始めると、自動的にシステムバリアントとして登録されます。
バリアントを登録した人か最終変更者しか変更できないバリアントのこと。
つまり、Aさんが登録したバリアントは、Aさんしか変更することができません。つまり、Bさん・Cさんはそのバリアントの編集は不可。
定期的に実行されるジョブ用にバリアントを作る際などは、名称の初めに「CUS&」を付与してシステムバリアントとするような形で運用されます。
バリアントの作り方に戻ります。
項目入力
バリアントとして保存したい値を入力していきます。
上記では、会社コードを "1000" に。会計年度を "2020" に、保存先を "C" とします。
項目ごとの細かな制御を設定する
本画面で、各入力項目単位の細かな設定を行います。
保護項目
保護項目にチェックを入れると、その入力項目は変更不可となります。
これは後述しますが、権限コントロールとして利用する場合が多いです。例えば、このユーザにはこの項目は変更できないようにしたい、とか。もしくは、絶対に入力ミスをさせたくない場合に、保護項目にチェックを入れる場合があります。
非表示項目
非表示項目にチェックを入れるとその名の通り、選択画面上からチェックを入れた入力項目が見えなくなります。
例えば、こんな感じで設定すると・・・
実際の画面から入力項目が消えます。
(ちなみに、会社コード項目は保護されているためグレーアウトされ、変更ができなくなっています。)
バリアント設定で、当該項目を非表示にできるので、その分の細かいコーディングが不要になります。
非表示・表示の制御はバリアントに任せるとし、ソースコード上は一旦全項目を表示するように開発するという方法もあります。
項目を値なしで保存
これも、その名の通り。「項目を値なしで保存」にチェックを入れると、何も値が保存されずにバリアントが登録されます。
必須項目
必須項目にチェックを入れると、その項目が未入力のままではプログラムが実行できなくなります。
これも、先ほどの非表示項目と同様、ABAPプログラミング側でも制御可能なオプションです。
バックグラウンド処理専用
バックグラウンド処理専用の項目をチェックすると、そのバリアントはバックグラウンド実行時のみで利用できるバリアントになります。
JOBの実行監視ツール(JP1など)や、SAPジョブからプログラムを実行する際、基本的にはプログラムは常にバックグラウンドで実行されます。そのような定期的なJOBとして扱われるプログラムの実行条件などを保存する目的として利用する場合、本項目にチェックが入れられることになります。
もう少し詳しく言うと、バックグラウンド実行では選択画面が表示されません。すなわち、もしバックグラウンド実行でプログラムを動かす際に、何かしらの実行条件を変えたい場合(画面入力する場合)には、バリアント登録が必須です。
バックグラウンド実行とは、画面の表示を伴わない処理のことで、その名の通りシステムの裏側で実行されること。
詳しい解説はこちらの記事をご覧ください。
バリアント保護
バリアント保護の項目にチェックを入れると、このバリアントはバリアントを登録したユーザか、バリアントを最後に変更したユーザ以外変更できなくなります。
入力時間の削減などを目的とした個人用のバリアントではなく、後述するように権限制御を目的としたバリアントを作成する際には、本項目のチェックは必須です。
大体の現場では、バリアント変更を行うことができる専用のユーザを1つ決めておくことが普通です。バリアント登録が特定の1ユーザにて行われていれば、業務ユーザが勝手にバリアントを変更してしまう恐れをなくすためです。
バリアントのメリット
さて、ここまででバリアントに関するシステム観点の理解はかなり深まってきたはずです。
ここからは、実際のSAP運用の観点からバリアントを利用するメリットについていくつか説明していきます。
メリット1:入力時間の削減
メリット1は、入力時間の削減です。
実際の業務ユーザや運用・保守ユーザは、基本的には定型的な作業を行うことがしばしばです。毎回同じ画面に対して、同じような値を入力し作業を行っていきます。
このような場合に、あらかじめ決まった入力値をセットにしてバリアントとして保存しておけば、都度1つ1つの項目に対して1から入力していく必要はなくなります。
いわゆる手っ取り早い業務改善としてバリアントを用いる方もいます。
メリット2:入力ミスの防止
決まった入力値のセットを呼び出せるため、入力ミスも少なくなります。
例えば、毎月決まったタイミングで同じようなデータを抽出するような場合。この場合に、あらかじめバリアントを登録しておけば、入力時間の削減になるだけでなく、入力ミスも防止することができます。
バリアントは個人用としても登録可能。この特性を利用して、業務の正確性を高めることも可能です。
メリット3:細かい権限コントロールが可能
バリアントをうまく利用することで、データ参照系の機能をはじめとした様々な機能について、細かな権限制御が簡単にできるようになります。
一般的な権限制御の考え方で言えば、その機能自体を利用できるか/利用できないかを制御するのに対して、バリアントはその機能の特定の実行条件までを制御することが可能になります。
例えば、部長クラスのユーザについては、全会社コードを選択できるよう会社コードの入力項目を解放しつつ、一般ユーザに対しては当該項目の変更を不可にするなどの制御が行えます。
多くの企業では、権限制御をロールとバリアントの2つの側面でうまく組み合わせて利用している場合が多数派です。
SAPでは、ユーザに機能の利用許可を行うロールを付与することで権限の制御を行います。
バリアントによる権限制御と、ロールを用いた権限制御の微妙な違いについて理解を深めたい方は合わせて以下の記事もご覧ください。
SAPを1から学習したい方は
初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!