!--a11y-->

プログラム属性に論理データベース名を入力することにより実行可能プログラムを論理データベースにリンクすると、論理データベースプログラムのサブルーチンおよび実行可能プログラムのイベントブロックは、データの読み取りと処理を行うモジュールプログラムを形成します。個々の処理ブロックは、実行時環境により定義済みの順序で呼び出されます (論理データベースとコンテキストセクションのグラフを参照)。実行時の順序は、論理データベースの構造、選択および PUT 命令、ならびに実行可能プログラムの GET 命令により制御されます。
実行可能プログラムの属性に論理データベースを指定すると、これはプログラムの標準選択画面に反映されます。論理データベースの選択項目とプログラム自身の選択項目の両方が含まれています。関連ノードのインタフェース作業領域を宣言することにより、プログラムに関連しているため画面に表示される必要のある論理データベース選択を指定できます。
次の一覧では、ABAP 実行時環境が論理データベースのサブルーチンを呼び出す順序と、実行可能プログラムのイベントブロックを示します。実行時環境は、一連のプロセッサ (選択画面プロセッサ、レポートプロセッサ) を実行します。次に一覧表示した ABAP コードでは、個々のステップの処理ブロックを示します。
...
1. 選択画面が処理される前の初期化。
サブルーチン:
FORM INIT
このサブルーチンは、選択画面が最初に表示される前に 1 回だけ呼び出されます。
イベントブロック:
INITIALIZATION
このイベントは、選択画面が最初に表示される前に 1 回だけ発生します。
2. 選択画面が表示される各セッションの前の選択画面初期化の PBO (たとえば、キー項目のデフォルト値の設定)。
サブルーチン:
FORM PBO
このサブルーチンは、選択画面が送信されるたびに呼び出されます (表示される前)。
イベントブロック:
AT SELECTION-SCREEN OUTPUT
このイベントは、選択画面が送信されるたびに呼び出されます (表示される前)。
3. 選択画面がプレゼンテーションサーバで表示されて、ユーザは入力項目にデータを入力できます。
4. 入力ヘルプ(F4) または項目ヘルプ(F1) の要求。
サブルーチン:
FORM
<par>_VAL
FORM <selop>_VAL
FORM <selop>-LOW_VAL
FORM <selop>-HIGH_VAL
ユーザがデータベース固有のパラメータ <par> または選択基準 <selop> の可能なエントリの一覧を要求すると、これらのサブルーチンが必要に応じて呼び出されます。
ユーザがこれらのパラメータ項目のヘルプを要求すると、末尾が _VAL ではなく _HLP のサブルーチンが呼び出されます。
イベントブロック:
AT
SELECTION-SCREEN ON VALUE-REQUEST FOR <par>
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
<selop>-LOW
AT SELECTION-SCREEN ON VALUE-REQUEST FOR <selop>-HIGH
ユーザがデータベース固有のパラメータ <par> または選択基準 <selop> の可能なエントリの一覧を要求すると、これらのイベントが必要に応じて開始されます。
ユーザがこれらのパラメータ項目のヘルプを要求すると、追加の付いたイベント ON HELP-REQUEST が ON VALUE-REQUEST に代わって発生します。
5. 選択画面の PAI。ユーザが正しく、完全で信憑性のあるデータを入力したかをチェックします。また権限チェックも含まれています。エラーが発生したら、ユーザダイアログをプログラムして、関連項目にふたたび入力できるよう準備できます。
サブルーチン:
FORM PAI USING FNAME MARK
インタフェースパラメータ FNAME と MARK は、実行時環境により渡されます。
FNAME には、選択画面の選択基準またはパラメータの名称が含まれています。
MARK = SPACE の場合、ユーザは単一値の入力か範囲選択のどちらかを行いました。
MARK = '*' では、ユーザが 複数選択画面で選択を入力したことになります。
FNAME = '*' と MARK = 'ANY' を組み合わせて使用すると、ユーザが機能を選択したか Enter キーを押した際に、一度に全エントリをチェックできます。
イベントブロック:
AT SELECTION-SCREEN ON <fname>
特定の入力項目を処理するイベント。
AT SELECTION-SCREEN ON END OF <fname>
複数選択を処理するイベント。
AT SELECTION-SCREEN
全ユーザ入力を処理するイベント。
6. データを読み取る前の処理。
サブルーチン:
BEFORE EVENT 'START-OF-SELECTION'
論理データベースは、たとえば内部テーブルの初期化などデータを読み取る前の必要なアクションのため、このサブルーチンを使用できます。
イベントブロック:
START-OF-SELECTION
選択画面が処理された後の、実行可能プログラムの最初のイベント。このイベントブロックを使用してデータ処理のプログラムを準備できます。
7. 論理データベースでのデータ読み取りと実行可能プログラムでの処理。
サブルーチン:
FORM PUT_<node>
論理データベースは、ノード <node> の選択されたデータを読み取ります。
イベントブロック:
GET <table> [LATE]
このイベントは、前のサブルーチンの PUT 命令により開始されます。このイベントブロックでは、対応するインタフェース作業領域での <node> のデータ読み取りを処理できます。
8. データを読み取った後の処理。
サブルーチン:
AFTER EVENT 'END-OF-SELECTION'
論理データベースは、たとえばメモリ領域の解放などデータを読み取った後の必要なアクションのため、このサブルーチンを使用できます。
イベントブロック:
END-OF-SELECTION
最後のレポートイベント。このイベントブロックを使用して、たとえばソートなど作成した一時データセットを処理できます。
9. 前のステップの間に一覧が生成された場合、実行時環境の一覧プロセッサはプログラムを制御して一覧を表示します。

TABLE1 はルートノードで、TABLE2 は論理データベースの中で唯一の下位ノードとします。するとデータを読み取って処理する処理ステップは、次の階層順序になります。
START-OF-SELECTION.
FORM PUT_TABLE1.
GET TABLE1.
FORM PUT_TABLE2.
GET TABLE2.
GET TABLE1 LATE.
END-OF-SELECTION.
キ データベースプログラムまたは実行可能プログラムのイベントブロックの中で、次のサブルーチンで AUTHORITY-CHECK 命令を使用して権限チェックを使用するのは意味があります。データベースプログラムのサブルーチンを次に示します。
- PAI
- AUTHORITY_CHECK_<table>
キ 実行可能プログラムのイベントブロック:
- AT SELECTION-SCREEN
- AT SELECTION-SCREEN ON <fname>
- AT SELECTION-SCREEN ON END OF <fname>
- GET <table>
データベースプログラムまたは実行可能プログラムのどちらに権限チェックを置くかは、次の条件に依存します。
キ 論理データベースの構造
たとえば、実際に実行時に会社コードを含む行を読み取る場合、会社コードの権限チェックだけ行います。
キ パフォーマンス
チェックの繰り返しを回避します (たとえば SELECT ループ内のチェック)。
データベースアクセスとアプリケーションロジックを分離すると、権限チェックの すべてを論理データベースプログラムで一括してプログラムすることができます。この結果、大規模プログラミングシステムの保守が容易になります。