ABAP

ABAP（Advanced Business Application Programming, アバップ）とは、R/3やS/4HANAなどのSAPシステム製品の追加開発に用いられる高級言語である。過去の正式名称は「ABAP/4GL」（4GL：4th Generation Language）であり、「ABAP」は「ABAP/4」と同様に略称として使われていた。

 言語の特徴 
SAP SEの製品でのみ用いられるSAP独自のプログラミング言語。もともとは構造化プログラミング言語であったが、後にオブジェクト指向言語として拡張された。

SAPアプリケーション群はABAPを開発言語とし、BASIS（SAP NetWeaver）をアプリケーションサーバに利用することで特定のオペレーティングシステムやデータベース管理システムなどのプラットフォームに依存することなく、開発、運用することができる。また、ABAPをSAPアプリケーション開発に採用することで、Javaや.NET C#などの他のITベンダーが提供するプログラミング言語を利用する場合に比べて言語仕様の変更やランタイムのアップデートの影響を受けることなく、自社でリリースやアップグレードサイクルをコントロールできるメリットがある。

 文法 
文の終了記号は、"."(ピリオッド)である。
IF文の等値判断は"="である。

 テーブル 
SAP R/3では「テーブル」といわれるデータベースシステムを用いている。テーブルの種類は「標準テーブル」「アドオンテーブル」の2種類が存在する。標準テーブルはSAP R/3およびS/4HANAに標準実装されているテーブルであり、アドオンテーブルは顧客の独自要件実現などのために、エンジニアやコンサルタントが後から追加（アドオン）して作成するテーブルである。

ABAPでは、テーブルからのデータ取得、テーブルへのデータ（レコード）挿入、テーブルからのデータ削除を行う場合、SQLに類似した「ABAP SQL（旧：OPEN SQL）」および、特定データベースに依存したDB言語である「ネイティブSQL」の使用が可能である。

S/4HANAが主流になり、SAP HANAがプラットフォームとなったことにより、使用可能データベースシステムの限定およびデータベースからの応答時間が短縮した。それに加えABAP SQLが大きく機能拡張していることから、特定データベースに依存した方法でのデータ取得・操作をする事例は減少しているものと思われる。

 イベント 
ABAPでは、それぞれの処理に対して、イベントが用意されている。イベントを用いて、ABAP言語を用いて処理を行う。

なお、レポートプログラムを作成する場合には以下のイベントが存在する。

INITIALIZATION 初期設定を記述する。
AT SELECTION-SCREEN 画面などで入力された結果に対する処理を記述する。
START-OF-SELECTION 主処理を記述する。
END-OF-SELECTION（廃止済） 処理結果を表示、出力する。

 データの宣言 
以下の方法で変数を宣言することができる。

DATA : 変数名 TYPE 型名 [LENGTH 長さ].

 定数の宣言 
以下の方法で定数を宣言することができる。

CONSTANTS : 定数名 TYPE 型名 VALUE {値|IS INITIAL}.

 内部テーブル(Internal Table) 
ABAPプログラム内部で、テーブルと同様の2次元配列のデータ構造を持たせたもの。主に、テーブルやローカルファイル・サーバファイル等の外部データを取得した際の格納先として使用される。定義およびデータの格納・利用・変更・削除はABAPプログラムからのみ実行使用可能である。

 標準テーブル(Standard table) 
プライマリテーブルインデックスで内部的に管理され、プライマリテーブルキー（プライマリキー）を一意では持たない内部テーブル。

 ソートテーブル(Sorted table) 
プライマリテーブルインデックスで内部的に管理され、常にプライマリキーに従ってソートされる内部テーブル。

 ハッシュテーブル(Hashed table) 
行がハッシュアルゴリズムに従って内部に格納され、一意のハッシュキー（ハッシュテーブルにおけるプライマリキー）を使用してアクセスできる内部テーブル。
+各内部テーブルの特徴テーブル名アクセス方法プライマリキーでの
アクセス時応答時間その他標準テーブル
(Standard Table)・プライマリテーブルインデックス
・テーブルキー（プライマリ・セカンダリ）テーブル内エントリ数に比例
（線形検索）・プライマリキーが非一意(Non-Unique)のみソートテーブル
(Sorted table)・プライマリテーブルインデックス
・テーブルキー（プライマリ・セカンダリ）テーブル内エントリ数に
対数的に比例・プライマリキーは一意、非一意ともに使用可
・常にプライマリキーでエントリがソートされるハッシュテーブル
(Hashed table)・テーブルキー（プライマリ・セカンダリ）
・セカンダリテーブルインデックス常に一定
(テーブル内エントリ数に

影響されない)・プライマリテーブルインデックスが存在しない
・プライマリテーブルキーは一意のみ

・セカンダリテーブルキーを使用して

セカンダリテーブルインデックスを割り当て可能

 トランザクションコード 
SAPでは、EASY ACCESSやIMG以外に、各処理画面へ移動する方法として、トランザクションコードが存在している。アドオン開発に用いられるトランザクションコードの一部として、以下のものが存在している。
SE09 移送オーガナイザ
SE11 テーブルやデータエレメントなどの追加・照会
SE24 クラスの作成・照会
SE37 汎用モジュールの作成・照会
SE38 プログラムの作成
SE80 オブジェクトナビゲータ
SE81 アプリケーション階層
SE84 リポジトリ情報システム
SE91 メッセージ
SE93 トランザクションコードの作成・照会

 関連項目 
 SAP SE
 SAPジャパン
 SAP S/4HANA
 SAP R/3
 SAP NetWeaver

Category:SAP SE
Category:プログラミング言語