トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

ABAP の変更点

Top/ABAP

Advanced Business Application Programmingの略で、SAPが追加開発の手段として提供している言語。読みはアバップ。

テーブル名をダブルクリックすると項目照会画面に飛べたり、[[レポートプログラム>ABAP/レポートプログラム]]であれば入力項目を書いただけで勝手に画面([[Dynpro>ABAP/Dynpro]]:1000)が生成されたり、他の言語と比べると簡易に組むことができる。

----
#contents
----

* はじめに [#s6145255]
どの言語でも一緒だが、コードの振る舞いには順次・選択・繰返しか存在しない。
どの言語でも一緒だが、コードには順次・選択・繰返の三種類しか存在しない。

このシンプルな使い分けに即したコードを如何に書いていくか、部品レベルで言及していこうと思う。
なお、考え方や姿勢については[[実装>アドオン/実装]]の項、作りが大きく異なるため別出しした[[Dynpro>ABAP/Dynpro]]をそれぞれ参照されたい。

よく筆者は「料理人が包丁や鍋を使い分けるのは、何故だと思う?」と[[開発者>プロジェクト/開発者]]に問いかける。
それなりの答えが返ってくることもあるが、''じゃあ、できているか?''と更に問うと、Yesと言う人もソースを見れば「嘘でーす」と書いてある。

食材相手ならできて、コードが相手ならできないという道理はない。
ジュニアはより留意し、シニアも自分のモノ作りを今一度見直してみようじゃないか。

* 基本的なルール [#b2efe828]
** 記述ルール [#q4c889e5]
-命令と命令の区切り文字はピリオド。
-値そのものを除いては、大文字と小文字の区別は無い。
-丸括弧は、複数の式をまとめる場合、メソッド等の呼び出し、[[SELECT>ABAP/SELECT]]のINTO句などに使用する。
-[[チェーン命令>ABAP/チェーン命令]]が使用可能。'':''と'',''で区切る。
-プログラムに直接干渉しない = コンパイラが無視するソースをコメントと呼び、下記の規則で記載する。
--行コメント
''*''はじまりの場合、行自体がコメントとなる。
--部分コメント
行の途中で''"''が存在すると、その文字以降~行末までがコメント扱いとなる。
--疑似コメント
部分コメントとして''#EC''と記述すると、[[拡張構文チェック>ABAP/拡張構文チェック]]で引っ掛からなくなる。
ぶっちゃけ誤魔化し以外の何物でもないので、忘れていい。
-[[変数>アドオン/変数]]や[[定数>アドオン/定数]]、[[データオブジェクト>アドオン/データオブジェクト]]など定義可能な全てに共通の命名規約は下記の通り。
--[[予約語>アドオン/予約語]]は使えない。''!''を頭に付けると(Ex. ![[CHANGING>ABAP/CHANGING]])使えるらしいが、使うな。
--事前定義されたもの([[リポジトリオブジェクト>SAPのオブジェクト#ref1984a]])の使用も不可。
--''/''も可だが、使用可能な文字は、''A~Z''、''0~9''、''_''のいずれか。
--長さは最大30文字まで。
--[[FIELD-SYMBOLS>ABAP/FIELD-SYMBOLS]]を使用する場合は、オブジェクト名を''<''と''>''で囲むこと。
-[[オフセット>ABAP/オフセット]]
長いので、リンク先参照のこと。

** 演算子 [#o0e89a52]
-代入演算子(''=''、''?='')
基本のき。
「EQ」でも代替できるが、混在させる理由はないためレンジテーブルでの指定を除きイコールの方に統一するのが一般的。
-算術演算子(''+''、''-''、''*''、''**''、''/'')
この辺は、見ての通り四則演算に使用する。
加算は[[ADD>ABAP/ADD]]、減算は[[SUBTRACT>ABAP/SUBTRACT]]、乗算は[[MULTIPLY>ABAP/MULTIPLY]]、除算は[[DIVIDE>ABAP/DIVIDE]]や[[DIV>ABAP/DIV]]でも代替可能だが、EQと同じく混在させることに意味がないため、一文字記号の方で統一するのが一般的。
-関係演算子(''=''、''<>''、''>''、''<''、''>=''、''<='')
これらは比較に用いるが、以上・以下を表す場合のイコールは、<=のように右側に書く。
理由は、SAPがそうしろと言っているから。((恐らく、[[正規化>アドオン/正規化]]の観点かと思う))
上記の代入演算子や算術演算子と同じく、レンジテーブルでの指定を除きGTやLTなどの指定は行わずこれらの記号に寄せるのが一般的。
-ブール演算子(''[[AND>ABAP/AND]]''、''[[OR>ABAP/OR]]''、''[[NOT>ABAP/NOT]]'')
[[IF>ABAP/IF]]や[[CHECK>ABAP/CHECK]]など、分岐や判定でよく用いる。
-ビット演算子(''[[BIT-AND>ABAP/BIT-AND]]''、''[[BIT-OR>ABAP/BIT-OR]]''、''[[BIT-XOR>ABAP/BIT-XOR]]''、''[[BIT-NOT>ABAP/BIT-NOT]]'')
筆者は使用したことが無く、具体的な用途がわからん。
-リテラル演算子(''&'')
これも。

** 代表的な用語 [#tfc1d2d2]
-[[オペランド>ABAP/オペランド]]
処理の対象となるもの。[[変数>アドオン/変数]]だったり[[定数>アドオン/定数]]だったり。
-[[リテラル>ABAP/リテラル]]
ベタ打ちされた値、と解釈して構わない。これを使用するとトレーサビリティの低下や修正の抜け漏れが発生しやすいので、お勧めしない。

* 命令 [#a1076caa]
** イベント [#g608cdfb]
-[[AT SELECTION-SCREEN>ABAP/AT SELECTION-SCREEN]]
-[[START-OF-SELECTION>ABAP/START-OF-SELECTION]]
-[[INITIALIZATION>ABAP/INITIALIZATION]]
-[[END-OF-SELECTION>ABAP/END-OF-SELECTION]]
-[[LOAD-OF-PROGRAM>ABAP/LOAD-OF-PROGRAM]]

** 宣言 [#bcd76ade]
-変数等の宣言
--[[DATA>ABAP/DATA]]
--[[TYPES>ABAP/TYPES]]
--[[TYPE>ABAP/TYPE]]
--[[LIKE>ABAP/LIKE]]
--[[CONSTANTS>ABAP/CONSTANTS]]

-画面パラメータ
--[[PARAMETERS>ABAP/PARAMETERS]]
--[[SELECT-OPTIONS>ABAP/SELECT-OPTIONS]]

-受け渡し
--[[USING>ABAP/USING]]
--[[CHANGING>ABAP/CHANGING]]
--[[TABLES>ABAP/TABLES]]

** 処理 [#yd7e2932]
-順次
--[[ADD>ABAP/ADD]]
--[[MOVE>ABAP/MOVE]]
--[[WRITE>ABAP/WRITE]]
--[[TRANSLATE>ABAP/TRANSLATE]]
--[[READ TABLE>ABAP/READ TABLE]]
--[[ASSIGN>ABAP/ASSIGN]]
--[[CREATE DATA>ABAP/CREATE DATA]]

-選択
--[[IF>ABAP/IF]]
--[[CASE>ABAP/CASE]]

-繰返
--[[LOOP>ABAP/LOOP]]
--[[DO>ABAP/DO]]
--[[WHILE>ABAP/WHILE]]

* 関連 [#v6abd598]
[[ABAP/トランザクションコード]]
[[ABAP/関連テーブル]]
[[ABAP/分野メニュー]]


~
~
CENTER:【スポンサードリンク】
#htmlinsert(amazon_book_sap_system_implement)
~
~
----
#pcomment(reply)