ABAP言語の世界では、文が命令と呼ばれています。
命令の構文
ABAPの文(命令)はキーワードで始まり、プリオド(「.」)で終了します。
命令一覧
カテゴリ | 命令 | 役割 | 例 |
---|---|---|---|
宣言命令 | TYPES | データ型を定義します | - |
DATA | データオブジェクトを宣言します | - | |
TABLES | - | - | |
制御命令 | IF | IF-ELSE-ENDIF選択制御構造を実装する | - |
ELSE | - | ||
ELSEIF | - | ||
ENDIF | - | ||
CASE | CASE-WHEN-ENDCASE選択制御構造を実装する | - | |
WHEN | - | ||
ENDCASE | - | ||
DO | DO-ENDDO反復制御構造を実装する | - | |
ENDDO | - | ||
WHILE | WHILE-ENDWHILE反復制御構造を実装する | - | |
ENDWHILE | - | ||
呼出命令 | PERFORM | サブルーチンを呼び出す | - |
CALL FUNCTION | 汎用モジュールを呼び出す | - | |
CALL DIALOG | ダイアログモジュールを呼び出す | - | |
CALL METHOD | ABAPオブジェクトのメソッドを呼び出す | - | |
CALL METHOD OF | OLE2オブジェクトのメソッドを呼び出す | - | |
CALL SCREEN | 画面を呼び出す | - | |
CALL SELECTION-SCREEN | 選択画面を呼び出す | - | |
CALL TRANSACTION | トランザクションを呼び出す | - | |
SUBMIT | タイプ 1 の実行可能プログラムを呼び出す | - | |
LEAVE SCREEN | 現在の画面の処理を中止し、次の画面を呼び出す | - | |
LEAVE TO SCREEN | 現在の画面の処理を中止し、動的に定義された次の画面を呼び出す | - | |
LEAVE [PROGRAM] | 現在のプログラムの処理を停止し、このプログラムが呼び出されたポイントに戻る | - | |
LEAVE TO TRANSACTION | - | - | |
モジュール化命令 | AT SELECTION SCREEN | - | - |
START-OF-SELECTION | - | - | |
AT USER-COMMAND | - | - | |
FORM | サブルーチンの定義を開始する | - | |
ENDFORM | サブルーチンの定義を終了する | - | |
FUNCTION | 汎用モジュールの定義を開始する | - | |
ENDFUNCTION | 汎用モジュールの定義を終了する | - | |
MODULE | - | - | |
ENDMODULE | - | - | |
操作命令 | WRITE | - | - |
MOVE | - | - | |
ADD | - | - | |
COMPUTE | - | - | |
オープンSQL | SELECT | データベーステーブルからのデータの読込 | - |
INSERT | データベーステーブルへの行の追加 | - | |
UPDATE | データベーステーブルの行コンテンツの変更 | - | |
MODIFY | データベーステーブルへの行の追加、または既存行のコンテンツの変更 | - | |
DELETE | データベーステーブルからの行の削除 | - | |
OPEN CURSOR FETCH CLOSE CURSOR | カーソルによるデータベーステーブルからの行の読込 | - | |
ネイティブSQL | EXEC SQL ENDEXEC | データベース固有のコマンドが全てできる | - |
UI制御命令 | SET SCREEN | 次の画面を設定する | - |
SET TITLEBAR | 画面タイトルを設定する | - | |
SET PF-STATUS | GUIステータスを設定する | - | |
SET CURSOR | 画面上でカーソルを設定する | - | |
SET MARGIN | 印刷ページのマージンを設定する | - |
チェーン命令
複数の命令は最初の部分が同じであれば、1 つのチェーン命令で連結して書くことができます。 一連の命令を連結するには、同一部分を 1 回だけ書き、その後にコロン(:) を入れます。コロンの後に、個別命令の残りの部分を書いて、それぞれをカンマで区切ります。最後の部分の後にピリオド (.)を付けます。
ブロック
ABAP言語の世界で、ブロックは命令ブロックと呼ばれています。 命令ブロックは制御種類により以下のように分類することができます。
分岐
If-then文
IF <条件式> <命令ブロック> ENDIF.
If-then-else文
IF < 条件1>. < 命令ブロック> ELSEIF < 条件2> < 命令ブロック>. ELSEIF < 条件3>. < 命令ブロック> ..... ELSE. < 命令ブロック> ENDIF.
Case-when文
Switch文 CASE <f>. WHEN <f11> [OR <f12> OR ...]. < 命令ブロック> WHEN <f21>.[OR <f22> OR ...] < 命令ブロック> WHEN ... ...... WHEN OTHERS. < 命令ブロック> ENDCASE.
ループ
Do文
DO [<n> TIMES] [VARYING <f> FROM <f1> NEXT <f2>]. < 命令ブロック> ENDDO.
While文
WHILE < 条件> [VARY <f> FROM <f1> NEXT <f2>]. < 命令ブロック> ENDWHILE.
例外
* Try-catch-endtry * Try-catch-cleanup-endtry