【初心者向け】9つのABAP構文ルール(文法)

ABAP

このページでは、検索してもなかなか出てこなかった「ABAPの基本ルール」を現役のABAPerが9つに分けて整理して解説しています。

このページで学べる内容

  • ABAPの基本構文ルール
  • コメント/コメントアウトの仕方
  • チェーン命令とは何か?
  • ABAPをコーディングする際の注意点!

ABAPを勉強しよう!」と思った方に、とりあえずこれだけ覚えていれば大丈夫」という基礎理解9選をお届けします。ABAPをコーディングしていく上で欠かせない知識ばかりですので、是非最後までご覧ください。

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

ABAP構文 9個のルール

ABAPを書き始めて間もないと、構文ルールが多そうでめんどくさい・・・なんて思っている方がいらっしゃるかと思います。

ですが、大丈夫です。これから解説する9個のルールさえ守っていれば問題なくプログラミングすることが可能です。しっかり、9個頭に入れておきましょう。

(9個すべてを1回で覚えるのは難しい!という方は是非ブックマークを!)

① 命令文は半角英字

OK例) SET CURSOR FIELD 'S_VKORG'.
NG例) SET CURSOR FIELD 'S_VKORG'.


命令文は半角英字で書きます。それ以外は構文エラーとなります。

命令文以外にも、プログラム中に全角スペースを入れていると構文エラーとなります。全角スペースは目で見てもわかりづらいので注意が必要です。

命令文にかかわらず、後述するコメント以外は半角が基本です。これは、ABAPに限らずプログラミング言語に共通している原則ですので、これを機会に改めて意識しておきましょう。

「命令" "は未定義です。スペルをチェックしてください」

というエラーメッセージは全角スペースが入っていることが原因である場合が多いです。

※数字や記号も全て半角で記述します。コメントアウト(コード中に記載するメモ)した箇所については対象外です。

② 個々の単語は半角スペースで区切る

OK例) TYPES ty_dec2 TYPE p DECIMALS 2.
NG例) TYPESty_dec2TYPEpDECIMALS 2.


個々の単語の間には、半角スペース以上空ける。改行でも可。ただし、末尾のピリオドの前にブランクを入れる必要はありません。

場合によっては、全角スペースを空ける場合でも構文エラーにならない場合がありますが、基本半角スペースで統一するのがよいでしょう。

③ 命令は”ABAPキーワード”で始まり”ピリオド”で終わる

OK例)MESSAGE S005(ZAMCM01).
NG例)MESSAGE S005(ZAMCM01)


ピリオドを打つことで、命令の完了となります。ピリオドを打たない場合、命令が続行とみなされ、ABAPキーワード(※上記の例だと”MESSAGE”)を次の行に書いても命令とみなされません。

④ 大文字と小文字は区別されない

例1) TYPES ty_dec2 TYPE p DECIMALS 2.
例2) 
types ty_dec2 type p decimals 2.


上記2例はどちらも同じ命令とみなされます。その上で、基本はABAPキーワードは大文字で書かれることが多い。(現場によっては全て大文字で書かれている場合もあります。)

システム的に大文字・小文字の制約がないので、下手をすれば開発者によって全てバラバラになってしまう可能性もあります。

通常は各現場単位で、構文規則(どのように変数に名称をつけるか)が決まっているので、大文字・小文字の区別はそちらに従うのが鉄則です。

⑤ 同じABAPキーワードが続く場合はチェーン命令を利用することで一文で記述することができる

例)チェーン命令を使わないで書いた場合

  DATA GW_SCREEN1 TYPE  IT_TBL001.
  DATA GW_SCREEN2 TYPE IT_TBL002.

例)上記例をチェーン命令で書いた場合
  DATA:
  GW_SCREEN1
TYPE  IT_TBL001,
  GW_SCREEN2
TYPE  IT_TBL002.


チェーン命令を記述する場合、ABAPキーワードの後に””を記述。命令が一つ終わるごとに、” ,”を記述します。

チェーン命令の最後は、ルール③の通りピリオドを記述します。

⑥ コメントアウトしたい場合は「*」を行頭に記述する

例)
*----------------------------------------------------------------------*
*DATA DEFINITION

*----------------------------------------------------------------------


ソースコードの中に説明文を載せたい場合などにコメントアウトを使います。コメントが適切に用いられているソースコードは可読性が格段に向上します。

コメントアウトを行う際には、””を行頭に記述します。「行頭」というのがポイントで、スペースを入れた後に"*"を入れても意味がありません。(構文エラーになってしまいます。)

"*"をつけない場合、それらもコードの一部としてみなされてしまい、結果として構文エラーとなってしまいます。

コメントアウトの主な利用目的としては「履歴」や「処理内容の説明」などで用います。もともとあったコードを改修する場合、元のコードをコメントアウトしてコード上に残しておくといった使い方があります。あまり使いすぎると、ただの見づらいコードになるだけですので注意が必要です。

なんでこれが改修になったのか?この変数は何に使われるか?を説明するためにコメントアウトを使うことが多いです。

※ショートカットキー「Ctrl+<

⑦ 行の途中からコメントを記載したい場合” " ”(ダブルコーテーション)を記述する

DATA:
  GW_SCREEN
TYPE IT_TBL001, "選択画面構造
  GIT_YKS002
TYPE YKS002.


IF sy-subrc = 0.
・・・
  ELSE.
・・・   #EC 処理対象外
ENDIF.


上記赤字部分の通り、行の途中からコメントアウトする場合は必ず、ダブルコーテーション、もしくは「#EC」を記述します。

" /#ECを記述した行の後のスペースはすべてコメントとして扱われるようになります。

コメントアウトの注意点

コメントアウトをする場合でも、プログラム実行時に完全に無視されるわけではありません。

そのため、特殊文字やSAPが認識しない文字を使っていると、予期せぬエラーが発生する場合があります。

⑧ 複数の命令が一連となる場合(「IF~ENDIF」 など)はキーワード毎にピリオドを付ける

例)
IF sy-subrc = 0.
・・・
  ELSE.
・・・
ENDIF.


複数の命令が一連(条件分岐とループ)となる場合、上記のようにキーワードごとにピリオドを付ける必要があります。

※条件分岐構文についてはこちらで詳しく解説しています。

⑨ 基本は「コピペ」で記述する!!

以上8ルールを見てきましたが、基本的には何かしらは忘れてしまい、構文エラーを引き起こす可能性が高いです。

実際、熟練ABAPerでも一度も構文チェックに引っかからないことはほぼありません。コードを書くとき、すごい速さでキーボードを打っていく姿はかっこいいですが、どこかしらで何かを間違えるのが常。

したがって、

コードは「コピペ」!

するようにしましょう。

プログラミングを実際に書くときは、ロジックの整理に時間を使うべきであって、初歩的な構文チェックなんかに時間を費やすべきではありません。そのためにも、今あるコードを適切に切り貼り・一部修正するという流れでコーディングしていくことが大切です。

上記、ABAPの構文ルールを理解しつつ、実務ではできるだけコピペで作業していくように心がけましょう。

ABAPを1から学習したい方は

以下のページでは、ABAPでプログラミングをしていくうえで、必要な知識を1つのページにまとめて解説しています。

ABAPの変数宣言や基本的なデータ型から、汎用モジュールやサブルーチンといった内容まで幅広く解説をしておりますので、是非ご覧ください。

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