SELECTION-SCREEN

10.4 SELECTION-SCREEN

SELECTION-SCREEN命令を使用すると、選択画面のレイアウトを自由に決めることができます。直接的にプログラムには影響しない部分ですが、項目をグループ分けしたり入力項目の説明を表示するなどして、入力ミスの予防に役立てたり、ユーザの使い勝手を向上させることができます。

  • BLOCK
  • COMMENT
  • SKIP
  • ULINE
  • LINE
  • POSITION
  • 検索ヘルプ

SELECTION-SCREEN(BLOCK)

SELECTION-SCREENでBLOCK(ブロック)を指定すると、宣言された範囲にある入力欄を1つのブロック内にまとめることができます。
例えば、同じ「ファイル名」という入力項目がある場合、アップロードとダウンロードという2つのブロックを指定することにより、ユーザは混乱することなくファイル名を入力することができます。

<<構文>>

<<オプション>>

・WITH FRAME

WITH FRAME オプションを使用すると、同一ブロックを線で囲むようなフレームを作成します。また、このフレームはネストさせることが可能です。フレームの形は、ネストの深さやブロック内の選択の数に応じて自動でセットされます。

・TITLE

TITLEオプションを使用すると、そのブロックに表題をつけることができます。また、テキストシンボルか項目名(最大8文字長)を設定することもできます。
ただし、データ宣言や定数宣言で定義されたものは使用することができません。
選択画面の出力前に処理したいので、INITIALIZATION内で項目名に値を入れる必要があります。
ブロックには、PARAMETERSで使用した NO INTERVALS もオプションとして宣言することができ、
同一ブロック内にある、すべての項目を個別入力のみに指定することができます。


補足:テキストシンボル

テキストシンボルは、プログラムの起動時に ABAP プログラムのテキストプール内のテキストから生成される 名称付きデータオブジェクトです。テキストシンボルは、つねにc型です。その項目長はテキストプール内のテキス トの長さです。メニューバーの「ジャンプ」→「テキストエレメント」→「テキストシンボル」で確認できます。

上記のようにそれぞれの番号と対応するテキストを設定し、プログラム内で「TEXT-001」で指定すると特定の文字列を呼び出すことができます。

サンプルコード

REPORT ZFUJII_SAMPLE128.

*&---------------------------------------------------------------------*
* 画面定義
*&---------------------------------------------------------------------*
*BLOCK1
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.

*&---------------------------------------------------------------------*
* パラメータ定義
*&---------------------------------------------------------------------*
   PARAMETERS: R_BUT1 RADIOBUTTON GROUP ABC,
               R_BUT2 RADIOBUTTON GROUP ABC.

SELECTION-SCREEN END OF BLOCK BLOCK1.

*BLOCK2
SELECTION-SCREEN BEGIN OF BLOCK BLOCK2 WITH FRAME TITLE TEXT-002.

*&---------------------------------------------------------------------*
* パラメータ定義
*&---------------------------------------------------------------------*
   PARAMETERS: CK_BOX1 AS CHECKBOX,
               CK_BOX2 AS CHECKBOX,
               CK_BOX3 AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK BLOCK2.

結果

SELECTION-SCREEN(COMMENT)

COMMENT(コメント)を使うことで、選択画面の任意の位置に表題や項目名以外のコメントをつけることができます。

  • <コメント>の部分は、選択画面に表示される文字
  • <開始位置>の部分は、コメントの開始位置を示す
  • <項目長>は、そのコメントの項目長を示す

<<構文>>

SELECTION-SCREEN(SKIP)

選択画面上に空白行を指定したい場合は、SKIP(スキップ)を使用します。
<行数>は、スキップしたい行数を指定することができ、最大で9行スキップすることができます。
行数を指定しない場合は、デフォルトで1行スキップになります。

<<構文>>

SELECTION-SCREEN(ULINE)

ULINE(下線)を使うと、選択画面に下線を出力することができます。
<開始位置>で指定した開始位置から、(<項目長>)で指定された長さの下線を引きます。
だたし、この命令は、LINE命令の間では使うことができません。

<<構文>>

SELECTION-SCREEN(POSITION)

POSITION(ポジション)は、LINE命令の間でしか使用することができません。
POSITION命令を使用すると、選択画面の入力項目自体の開始位置を変更することができます
POSITION命令が有効なのは、POSITION命令のすぐ下の1文のみです。
複数項目のポジションを指定したい場合は、そのたびにPOSITION命令を使います。

<<構文>>

SELECTION-SCREEN(検索ヘルプ)

検索ヘルプを設定することで、選択画面の入力項目のすぐ横に検索ヘルプを表示することができるようになります。
検索ヘルプは、選択画面上の[F4]ヘルプが呼び出されたタイミングで実行されるイベントになります。
この中に汎用モジュールなどを使って、検索ヘルプを設定することができます。

<<構文>>

サンプルコード

REPORT Z_SAMPLE129 MESSAGE-ID Z_FUJII01.

*&---------------------------------------------------------------------*
* パラメータ定義
*&---------------------------------------------------------------------*
PARAMETERS: P_KUNNR1 TYPE KUNNR,"得意先コード
            P_DATE   TYPE D.    "日付

*&---------------------------------------------------------------------*
* イベント処理
*  P_DATEの[F4]ヘルプクリック時に実行される処理
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_DATE.

   CALL FUNCTION 'F4_DATE'
        IMPORTING
            SELECT_DATE = P_DATE.

結果


補足:コメントアウト

コメントアウトの方法として、”(ダブルクォーテーション)と*(アスタリスク)があります。
※*(アスタリスク)はエディタの一番左側(1 桁目)に記載したときのみ以降がコメントと認識されます。
※”(ダブルクォーテーション)はどこから記載しても以降がコメントと認識されます。

※複数行をまとめて変更する場合、ドラッグで複数行を選択して操作する方法
「Ctrl+,(カンマ)」:コメントアウト 「Ctrl+.(ピリオド)」:コメント解除

補足:検索ヘルプ

サンプルコードにて「P_DATE」に検索ヘルプを設定したが、もう一つの項目である得意先コード(P_KUNNR1)には、特に設定しなくても、検索ヘルプが表示されている
これは、なぜでしょう?

TYPE に記載された KUNNR をダブルクリックすると、KUNNR のデータエレメント画面が表示されます。

次に参照元ドメインの「値範囲」タブを選択し、その最下部の値テーブル欄に、標準テーブル「KNA1」が設定されています。
KNA1 の対象項目 KUNNR について、「エントリヘルプ/チェック」タブを確認すると、 標準の検索ヘルプ「DEBI」が設定されているので、よって選択画面項目作成時に検索ヘルプが自動で使えます。
そのため標準以外の項目(アドオンのデータエレメント、ドメイン)でも、この流れに沿って検索ヘルプを 紐づければ自動で検索ヘルプが出るようになります。


NEXT>> 第11章 バリアント

研修の詳細はこちら