0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SAP ABAP入門:初心者向けサンプルプログラムと解説

Posted at

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: 変数の長さを指定。
  • 代入(=):
    変数に値を入れる。文字列はシングルクォート(' ')で囲みます。

  • 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: 取得条件を指定。

学習の進め方

  1. 動かしてみる: SAP環境でサンプルコードを入力し、実行(F8キー)。
  2. 値を変更: 変数の中身(例:名前)を変えて試す。
  3. 命令を調べる: F1キーで命令のヘルプを確認。
  4. 課題を設定: 「日付を出力する」「変数を追加する」など小さな目標を立てて挑戦。

まとめ

ABAPは一見古めかしい構文ですが、世界中の企業で広く使われる重要な言語です。このサンプルを第一歩として、ぜひ学習を進めてみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?