【ABAP】イベントブロックを1から分かりやすく解説

ABAP

"INITIALIZATION" "AT-SELECTION-SCREEN"に代表されるイベントブロックについて解説します。

イベントブロックを理解すれば、ABAPがどのように実行されていくのか?ABAPはどういう言語なのか?を深く知ることができます。

このページで学べる内容
  • 【前提】イベントドリブン言語とは?
  • イベントブロックとは何か?
  • イベントブロックの実行順序
  • イベントブロックの書き方・使い方

普段何気なくイベントブロックを使っているが結局どういう意味があるの?という疑問をお持ちの方にも役に立つ内容です。是非最後までご覧ください。

スポンサーリンク
スポンサーリンク

前提:イベントドリブン言語とは?

ABAPはイベントドリブン言語です。

イベントドリブン言語を一言で説明すると「イベントの発生をトリガーにプログラムが実行される言語」となります。

イベントとは?

ユーザによるキーボードの操作マウスのクリックなどによって、システムに何らかの変更が加えられシステムの状態が変化する出来事のことです。

例えば・・・

”Enter”ボタンを押す」

"戻るボタン" をマウスでクリックする」

"選択画面" が表示される」

つまり、「ENTERが押される」「実行ボタンが押される」「選択画面が表示される」という「イベントをトリガーに特定の処理が行われる」のがイベントドリブン言語です

ABAPも、上記で説明した内容と同じように「実行ボタンを押す」「選択画面が表示される」などのイベントに応じてプログラムを実行できるように設計されています。

したがって、ABAPをコーディングしていく上で、そのソースコードがいつ実行されるのか?を知っていないと適切なコーディングができません。ABAPのイベントブロックを正確に理解することは非常に重要です。

イベントブロックとは?

イベントブロックとは、その名の通りイベントの区切りです。

イベントドリブン,イベントブロック,ABAP

ABAPでは、イベン卜ブロックは後述するイベントキーワードで始まり、次のイベントキーワードまでが1つのイベントブロックとなります。

イベントブロックの実行順序

ABAPでは、このイベントは基本的に事前に決められた順序で呼び出されるようになっています。

イベントブロックの実行順序
  1. LOAD-OF-PROGRAM
  2. INITIALIZATION
  3. AT-SELECTION-SCREEN
  4. START-OF-SELECTION
  5. GET
  6. TOP-OF-PAGE
  7. END-OF-PAGE
  8. END-OF-SELECTION
  9. AT LINE-SELECTION

それぞれのイベントブロックの意味について以下で詳しく解説していきます。

LOAD-OF-PROGRAM

LOAD-OF-PROGRAM.

プログラム開始時を示すイベントブロックです。プログラムが実行される際、1番最初に1度だけ実行されるイベントブロックです。

ただし、このイベントブロックはあまり利用されません。次に解説するINITIALIZATIONも似たようなイベントブロックであるため、そちらを利用する方が圧倒的多数です。

INITIALIZATION

INITIALIZATION.

このイベントはLOAD-OF-PROGRAMの直後、「プログラムが実行されて選択画面が表示される前」を示します。

このイベントは、選択画面が表示される前を示すため、例えば選択画面を持つ機能などで、事前に選択項目に初期値を入れておきたい場合などに利用されるのがメイン。

INITIALIZATIONの注意点

このイベントが発生するのは、プログラム実行後1度だけです。

他のイベントはボタンを押すたびに発生するなど、複数回発生する場合もありますが、INITIALIZATIONが複数回実行されることはないという点に注意してください。

AT SELECTION-SCREEN

AT SELECTION-SCREEN.

「AT-SELECTION-SCREEN」は選択画面イベントと呼ばれます。

選択画面で”Enter”を押した時」を表します。

例えば、ユーザが入力した値をチェックしたい場合に「氏名は全角カタカナで書いていることをチェックしろ!」という命令を書こうと思った場合に利用します。

チェックした結果はMESSAGE命令を通して画面に表示されます。「 AT SELECTION-SCREEN 」イベントでエラーメッセージが出力された場合は、再入力が可能になります。(処理が再度「 AT SELECTION-SCREEN 」イベントに戻ります。)

後述する「START-OF-SELECTION」イベントでは、エラーメッセージが吐き出されても元の画面に戻りません。すなわち、実行前の画面からやり直しになります。

MESSAGE命令について詳しく知りたい方はこちらをお読みください。

START-OF-SELECTION

START-OF-SELECTION.

「START-OF-SELECTION」は、標準処理ブロックと呼ばれます。具体的に分かりやすく説明すると「実行ボタンが押された後」に実行されるイベントブロックです。

標準処理ブロックと名の付く通り、ほとんどの処理はこのブロック内で実行されるため、START-OF-SELECTIONは「デフォルトイベント」と呼ばれます。

特にイベントを宣言しないで処理を記述した場合”START-OF-SELECTION”に割り当てられます。

つまり、以下の3つの処理は全て同じ処理として認識されます。イベントブロックの位置に注目してご覧ください。

サンプルコード1:START-OF-SELECTION

DATA text001 TYPE string.

START-OF-SELECTION.
text001 = `Hello!`.
WRITE text001.

サンプルコード2:START-OF-SELECTION

DATA text001 TYPE string.
text001 = `Hello!`.

START-OF-SELECTION.
WRITE text001.

サンプルコード3:START-OF-SELECTION

DATA text001 TYPE string.
text001 = `Hello!`.
WRITE text001.

TOP-OF-PAGE

TOP-OF-PAGE.

一覧の作成時、新しいページが始まるタイミングに直後に実行されるイベントブロックです。

その名の通り、ページのヘッダ情報を付与するのが主な役割です。もっと具体的に言えば、一覧ページが複数ページとなる場合には、その都度「TOP-OF-PAGE」イベントが実行されます。

END-OF-PAGE

END-OF-PAGE.

「TOP-OF-PAGE」の対でページのヘッダを作成するためのイベントブロックです。

このイベントブロックが実行されるのは、一覧の作成時に次のページに達したときです。 つまり、一覧画面が複数ページとならない場合には、このイベントブロックは実行されません。

END-OF-SELECTION

END-OF-SELECTION.

プログラムのメイン処理が終了するタイミングで実行されるイベントブロックです。基本的には、最後に動くイベントブロックであると理解してOKです。

※このイベントブロックが終わると、プログラムの実行が完了します。

このイベントブロックでは、例外処理を記述したり、処理結果の登録(ログの出力)を行ったりすることが多いです。

ABAPを1から勉強したい方は

ABAPを1から学習したい方は、以下の記事で学習するのがお勧めです。

現在、完全無料で公開しておりますので、是非ご覧ください!

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