2020年02月07日
【ABAP】イベントブロック
"INITIALIZATION" "AT-SELECTION-SCREEN"に代表されるイベントブロックについて解説します。
イベントブロックを理解すれば、ABAPがどのように実行されていくのか?ABAPはどういう言語なのか?を深く知ることができます。
このページで学べる内容
・【前提】イベントドリブン言語とは?
・イベントブロックとは何か?
・イベントブロックの実行順序
・イベントブロックの書き方・使い方
・【前提】イベントドリブン言語とは?
・イベントブロックとは何か?
・イベントブロックの実行順序
・イベントブロックの書き方・使い方
普段何気なくイベントブロックを使っているが結局どういう意味があるの?という疑問をお持ちの方にも役に立つ内容です。
目次
1 前提:イベントドリブン言語とは?
2 イベントブロックとは?
3 イベントブロックの実行順序
3.1 LOAD-OF-PROGRAM
3.2 INITIALIZATION
3.3 AT SELECTION-SCREEN
3.4 START-OF-SELECTION
3.5 TOP-OF-PAGE
3.6 END-OF-PAGE
3.7 END-OF-SELECTION
1 前提:イベントドリブン言語とは?
ABAPはイベントドリブン言語です。
イベントドリブン言語を一言で説明すると「イベントの発生をトリガーにプログラムが実行される言語」と説明できます。
イベントとは?
ユーザによるキーボードの操作、マウスのクリックなどによって、システムに何らかの変更が加えられシステムの状態が変化する出来事のことです。
例えば・・・
「”Enter”ボタンを押す」
「"戻るボタン" をマウスでクリックする」
「"選択画面" が表示される」
ユーザによるキーボードの操作、マウスのクリックなどによって、システムに何らかの変更が加えられシステムの状態が変化する出来事のことです。
例えば・・・
「”Enter”ボタンを押す」
「"戻るボタン" をマウスでクリックする」
「"選択画面" が表示される」
つまり、「ENTERが押される」「実行ボタンが押される」「選択画面が表示される」という「イベントをトリガーに特定の処理が行われる」のがイベントドリブン言語です。
ABAPも、上記で説明した内容と同じように「実行ボタンを押す」「選択画面が表示される」などのイベントに応じてプログラムを実行できるように設計されています。
したがって、ABAPをコーディングしていく上で、そのソースコードがいつ実行されるのか?を知っていないと適切なコーディングができません。
ABAPのイベントブロックを正確に理解することは非常に重要です。
2 イベントブロックとは?
イベントブロックとは、その名の通りイベントの区切りです。
ABAPでは、イベン卜ブロックは後述するイベントキーワードで始まり、次のイベントキーワードまでが1つのイベントブロックとなります。
3 イベントブロックの実行順序
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
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
それぞれのイベントブロックの意味について以下で詳しく解説していきます。
3.1 LOAD-OF-PROGRAM
プログラム開始時を示すイベントブロックです。
プログラムが実行される際、1番最初に1度だけ実行されるイベントブロックです。
ただし、このイベントブロックはあまり利用されません。
次に解説するINITIALIZATIONも似たようなイベントブロックであるため、そちらを利用する方が圧倒的多数です。
3.2 INITIALIZATION
このイベントはLOAD-OF-PROGRAMの直後、「プログラムが実行されて選択画面が表示される前」を示します。
このイベントは、選択画面を持つ機能などで、事前に選択項目に初期値を入れておきたい場合などに利用されます。
INITIALIZATIONの注意点
このイベントが発生するのは、プログラム実行後1度だけです。
他のイベントはボタンを押すたびに発生するなど、複数回発生する場合もありますが、INITIALIZATIONが複数回実行されることはないという点に注意してください。
3.3 AT SELECTION-SCREEN
「AT-SELECTION-SCREEN」は選択画面イベントと呼ばれます。
「選択画面で”Enter”を押した時」を表します。
例えば、ユーザが入力した値をチェックしたい場合に「氏名は全角カタカナで書いていることをチェックしろ!」という命令を書こうと思った場合に利用します。
チェックした結果はMESSAGE命令を通して画面に表示されます。
「 AT SELECTION-SCREEN 」イベントでエラーメッセージが出力された場合は、再入力が可能になります。
(処理が再度「 AT SELECTION-SCREEN 」イベントに戻ります。)
後述する「START-OF-SELECTION」イベントでは、エラーメッセージが吐き出されても元の画面に戻りません。すなわち、実行前の画面からやり直しになります。
3.4 START-OF-SELECTION
「START-OF-SELECTION」は、標準処理ブロックと呼ばれます。
具体的に分かりやすく説明すると「実行ボタンが押された後」に実行されるイベントブロックです。
標準処理ブロックと名の付く通り、ほとんどの処理はこのブロック内で実行されるため、START-OF-SELECTIONは「デフォルトイベント」と呼ばれます。
特にイベントを宣言しないで処理を記述した場合”START-OF-SELECTION”に割り当てられます。
3.5 TOP-OF-PAGE
一覧の作成時、新しいページが始まるタイミングに直後に実行されるイベントブロックです。
その名の通り、ページのヘッダ情報を付与するのが主な役割です。
もっと具体的に言えば、一覧ページが複数ページとなる場合には、その都度「TOP-OF-PAGE」イベントが実行されます。
3.6 END-OF-PAGE
「TOP-OF-PAGE」の対でページのヘッダを作成するためのイベントブロックです。
このイベントブロックが実行されるのは、一覧の作成時に次のページに達したときです。
つまり、一覧画面が複数ページとならない場合には、このイベントブロックは実行されません。
3.7 END-OF-SELECTION
プログラムのメイン処理が終了するタイミングで実行されるイベントブロックです。
基本的には、最後に動くイベントブロックであると理解してOKです。
※このイベントブロックが終わると、プログラムの実行が完了します。
このイベントブロックでは、例外処理を記述したり、処理結果の登録(ログの出力)を行ったりすることが多いです。
タグ:ABAP
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/9616852
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック