SAPのABAPについて、プログラミング初心者でも理解しやすいように、基本的なサンプルプログラムを作成し、詳しく解説します。
ABAPとは?
ABAP(Advanced Business Application Programming)は、ドイツのソフトウェア企業SAPが開発したプログラミング言語です。SAPのERP製品(例:SAP S/4HANAやSAP ERP)上で動作し、企業の業務プロセス(会計、販売、在庫管理など)をカスタマイズするためのアドオン開発に使用されます。
【初学者向け】サンプルプログラム:簡単なレポート作成
社員の「社員番号」「氏名」「部署」を画面に出力するシンプルなレポートプログラムを作成します。
サンプルコード
*&---------------------------------------------------------------------*
*& Report Z_SAMPLE_REPORT
*&
*& このプログラムは、ABAPの基本的な命令を学ぶためのサンプルです。
*& 社員情報を定義し、画面に一覧表示します。
*&---------------------------------------------------------------------*
REPORT Z_SAMPLE_REPORT.
*----------------------------------------------------------------------*
* 1. データを格納する「変数」を準備する (データ定義)
*----------------------------------------------------------------------*
DATA: gv_employee_id TYPE n LENGTH 8, " 社員番号 (8桁の数字)
gv_employee_name TYPE c LENGTH 20, " 氏名 (20文字の文字列)
gv_department TYPE c LENGTH 10. " 部署 (10文字の文字列)
*----------------------------------------------------------------------*
* 2. 準備した変数に値を入れる (データ代入)
*----------------------------------------------------------------------*
gv_employee_id = '10001234'.
gv_employee_name = '山田 太郎'.
gv_department = '営業部'.
*----------------------------------------------------------------------*
* 3. 変数の内容を画面に出力する
*----------------------------------------------------------------------*
WRITE '■ 社員情報'.
ULINE. "下線を引く
WRITE: / '社員番号:', gv_employee_id.
WRITE: / '氏名 :', gv_employee_name.
WRITE: / '部署 :', gv_department.
コードの解説
このプログラムは「データ定義」「データ代入」「出力」の3つのステップで構成されています。
-
REPORT Z_SAMPLE_REPORT:
プログラムの開始を宣言します。SAPでは顧客が作成するプログラムは「Z」または「Y」で始める慣習があります。 -
コメント(*):
行頭に「*」をつけるとコメントになり、プログラムの動作には影響しません。コードの説明やメモに使用します。 -
DATA:
変数を宣言します。gv_
はグローバル変数を意味する接頭辞(慣習)。-
TYPE: データ型(例:
n
は数字、c
は文字列)。 - LENGTH: 変数の長さを指定。
-
TYPE: データ型(例:
-
代入(=):
変数に値を入れる。文字列はシングルクォート(' ')で囲みます。 -
WRITE:
画面に出力する命令。/
は改行、:
は連続したWRITE命令を簡潔に書くために使用。 -
ULINE:
出力行の下に下線を引きます。
実行結果のイメージ
■ 社員情報
----------------------------------------------------------------
社員番号: 10001234
氏名 : 山田 太郎
部署 : 営業部
ステップアップ:もう少し実用的な形へ
基本を理解したら、以下の発展的な機能を試してみましょう。
1. データをまとめて扱う「構造体」
社員番号、氏名、部署を一つの「構造体」としてまとめて扱います。
* 構造体を定義
TYPES: BEGIN OF ty_employee,
id TYPE n LENGTH 8,
name TYPE c LENGTH 20,
dept TYPE c LENGTH 10,
END OF ty_employee.
* 構造体の型の変数を宣言
DATA: gs_employee TYPE ty_employee.
* 値を代入
gs_employee-id = '10001234'.
gs_employee-name = '山田 太郎'.
gs_employee-dept = '営業部'.
* 出力
WRITE: / '社員番号:', gs_employee-id.
WRITE: / '氏名 :', gs_employee-name.
WRITE: / '部署 :', gs_employee-dept.
- TYPES: 構造体の「設計図」を定義。
- DATA: 設計図に基づく変数を宣言。
-
アクセス方法:
変数名-項目名
(例:gs_employee-id
)で各項目にアクセス。
2. データベースからデータを取得する SELECT
実際の業務では、データベースからデータを取得します。以下の例では、SAPのデモテーブルSFLIGHT
(フライト情報)を使用します。
DATA: gs_flight TYPE sflight. "SFLIGHTテーブルと同じ形の構造体変数を宣言
* データベースから条件に合うデータを1件取得
SELECT SINGLE *
FROM sflight
INTO gs_flight
WHERE carrid = 'LH' AND connid = '0400'.
* 取得したデータを出力
IF sy-subrc = 0. " データ取得成功
WRITE: / '航空会社ID:', gs_flight-carrid.
WRITE: / '便名 :', gs_flight-connid.
WRITE: / 'フライト日:', gs_flight-fldate.
ELSE. " データ取得失敗
WRITE: / '対象のデータは見つかりませんでした。'.
ENDIF.
- SELECT SINGLE: データベースから1件のデータを取得。
- sy-subrc: 直前の命令の成功(0)/失敗(0以外)を判定。
- WHERE: 取得条件を指定。
学習の進め方
- 動かしてみる: SAP環境でサンプルコードを入力し、実行(F8キー)。
- 値を変更: 変数の中身(例:名前)を変えて試す。
- 命令を調べる: F1キーで命令のヘルプを確認。
- 課題を設定: 「日付を出力する」「変数を追加する」など小さな目標を立てて挑戦。
まとめ
ABAPは一見古めかしい構文ですが、世界中の企業で広く使われる重要な言語です。このサンプルを第一歩として、ぜひ学習を進めてみてください!