PR

【初心者向け】ABAPプログラム開発の基本知識を3分でおさらい

ABAP

ABAPと一言で言っても、そのプログラムにもいろいろな種類があることは知っているでしょうか。

参考 ABAPとは?初心者向けカリキュラム!

この記事では、ABAPプログラミングの主要な4つのカテゴリー、すなわち「REPORT」、「Dynpro」、「Function Module」、そして「Object-Oriented ABAP」について初心者向けにわかりやすく解説します。

これらの理解と適切な使用は、開発者がSAPシステムの機能を最大限に引き出す上で欠かせない重要なポイントです。

これら各種類のABAPプログラムは、異なる目的と機能を持っており、それぞれがSAPの中で特定の役割を果たす点をご説明します。

最終的には、これらのプログラム種別を理解し、適切に使用できるようになることを目指します。

このページで学べる内容
  • ABAP REPORT
  • Dynpro (Module Pool)
  • Function Module
  • Object-Oriented ABAP

SAPエンジニアやABAPerを目指す方であれば知らないと恥ずかしい超・基本知識の1つ。是非最後までご覧ください。

参考 ABAPの基本構文ルール

スポンサーリンク

ABAP REPORT

まず「REPORT」について解説します。これは、ABAPにおいて最も基本となるプログラムで、おそらくほとんどの人が初めてABAPに触れる時に対象となるはずのプログラムタイプです。

「REPORT」はABAPプログラミングの基礎とも言えるもので、一般的にデータベースから情報を取得し、指定された形式で結果を表示するために使用されます。その名の通り、このプログラムタイプは主に、ビジネスデータの報告や分析のための各種レポートを作成する際に利用されます。

レポートプログラムと言われたら、そのプログラムはデータを取得して一覧表示するプログラムのことだ、と理解しておけば問題ないでしょう。

業務的な観点から考えるとわかりやすいのですが、普段行っている業務の約半数ぐらいはデータの取得や照会に基づいたものです。例えば、社員の給与計算レポート、在庫管理レポート、販売レポートなど、特定の期間にわたる情報を要約し、ビジネスの意思決定をサポートするための各種レポートを生成するなど。

これらを実現しているのが「レポート(REPORT)」と呼ばれるプログラムです。

REPORTの例

以下に、非常にシンプルなABAP REPORTプログラムの例を示します。

REPORT ZMY_REPORT.

TYPES: BEGIN OF ty_sflight,
         carrid TYPE sflight-carrid,
         connid TYPE sflight-connid,
         fldate TYPE sflight-fldate,
         price TYPE sflight-price,
       END OF ty_sflight.

DATA: lt_sflight TYPE TABLE OF ty_sflight,
      wa_sflight TYPE ty_sflight.

START-OF-SELECTION.
  SELECT carrid connid fldate price FROM sflight INTO TABLE lt_sflight UP TO 10 ROWS.

LOOP AT lt_sflight INTO wa_sflight.
  WRITE: / 'Airline:', wa_sflight-carrid, 
          'Connection Id:', wa_sflight-connid, 
          'Flight Date:', wa_sflight-fldate, 
          'Price:', wa_sflight-price.
ENDLOOP.

参考 TYPES命令 / START-OF-SELECTION
LOOP命令 / WRITE命令

このプログラムは、SFLIGHTテーブルから10行のデータを取得し、それをコンソールに表示します。各行は、航空便の航空会社コード (CARRID)、接続ID (CONNID)、フライトの日付 (FLDATE)、および価格 (PRICE) を表示します。

Dynpro(ディンプロ)

Dynproとは「Dynamic programming」の略称。

そのまま日本語に訳すと「動的プログラミング」となりますが、これはユーザーとSAPとのインタラクティブなコミュニケーションを可能にするUI(画面)を作成するためのABAPプログラムタイプ。

例えば、ユーザーが直接データを入力するためのフォームやダイアログ、情報を表示するためのダッシュボードやウィジェットなどがDynproの代表例。製品の詳細を入力し、保存するためのカスタムフォームや、特定のビジネスデータを表示するカスタムダッシュボードを作成する際にDynproを活用することができます。

ざっくり「画面」と「画面の制御」の諸々を行うプログラムがDynproだと理解しておけばとりあえずはOKです。

以下に、基本的なDynproプログラムの一部を示します。この例では、単純なダイアログ画面が作成され、ユーザーからの入力を受け付けることができます。

MODULE pool.
INCLUDE db_include. "データベーステーブル操作のためのインクルード
TABLES: sflight.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: carrid LIKE sflight-carrid,
            connid LIKE sflight-connid,
            fldate LIKE sflight-fldate.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.
  SELECT * FROM sflight WHERE carrid = carrid
                            AND connid = connid
                            AND fldate = fldate.
  WRITE: / sflight-carrid, sflight-connid, sflight-fldate.
ENDSELECT.

参考 INCLUDE / SELECTION-SCREEN / PARAMETERS

このプログラムは、ユーザーに航空会社ID、接続ID、フライト日付の入力を求め、指定された条件に一致するフライト情報をデータベースから取得し、表示します。

Dynproはプログラムの部品

Dynpro (Module Pool) プログラムは、一般的には他のプログラムから呼び出される形で使用されます。

ユーザが対話的にデータを入力する画面や結果を表示する画面など、ユーザインターフェース部分だけを担当するので、それ単独で用いられる場面はほとんどありません。

例えば在庫管理システムを構築する場合、在庫の追加や削減、在庫の表示など、ユーザとの対話を担当する部分をDynproで作成し、それを他のプログラムから呼び出すという形が一般的です。このように、Dynproは主にユーザインターフェース部分を担当し、ビジネスロジックは他のプログラムタイプが担当します。

Function Module(汎用モジュール)

Function Module(=汎用モジュール)はABAPの一部で、特定の機能を1つのモジュールとしてパッケージ化し、他のプログラムから繰り返し呼び出すことができるようにするものです。

Function ModuleはABAPの再利用可能な部品で、一度作成すれば他の多くのプログラムから使用することができます。これによりコードの重複を防ぎ、保守性と生産性を向上させることができます。

別のプログラミング言語の例を借りて言えば、全プログラムから利用できる「関数」のようなもの。この「関数」をパッケージ化(=塊にする)したものがFunction Moduleです。

参考 プログラミングの「関数」とは?

汎用モジュールも、Dynpro同様で基本的には他のプログラムから呼び出される形で実行されます。汎用モジュールの定義方法・呼び出し方法については以下の記事で詳しく解説しておりますので、合わせてご覧ください。

Object-Oriented ABAP

Object-Oriented ABAP(略称:OO-ABAP)は、ABAPのオブジェクト指向バージョンで、クラス、オブジェクト、インターフェース、継承などのオブジェクト指向プログラミングの原則を実装するための言語拡張です。

もともとABAPは手続き型のプログラミング言語だったのですが、これを拡張してオブジェクト指向のプログラミングを可能にしました。

この拡張して誕生したプログラムが「Object-Oriented ABAP」です。

CLASS lcl_my_class DEFINITION.
  PUBLIC SECTION.
    METHODS: add_numbers
      IMPORTING
        iv_num1 TYPE i
        iv_num2 TYPE i
      RETURNING
        VALUE(rv_result) TYPE i.
ENDCLASS.

CLASS lcl_my_class IMPLEMENTATION.
  METHOD add_numbers.
    rv_result = iv_num1 + iv_num2.
  ENDMETHOD.
ENDCLASS.

参考 ABAPのCLASS

このクラスlcl_my_classには、メソッドadd_numbersが定義されており、2つの数値を受け取り、それらを足し合わせた結果を返します。

様々なABAPプログラムタイプ

ここまで紹介したプログラムタイプは、一般的によく使われるものと、ABAPの基本的な概念をカバーすることを目的としてご紹介しました。

実はそれ以外にもABAPのプログラムタイプは多数存在し、それぞれが特定の目的や使用ケースに適しています。

全てのプログラムタイプを網羅的に説明すると非常に詳細になり、初心者にとっては情報過多になる可能性もありますが、以下にできるだけ網羅的にプログラムタイプを整理しましたのでご覧ください。

プログラムタイプ説明
実行可能プログラム(Executable Program)これは独立して実行可能なプログラムで、一般的には特定のタスクを完結させるように設計されています。
REPORT実行可能プログラムの一部で、主にデータ抽出と表示(レポート)に使用されます。
Include プログラム他のプログラム(例えば、実行可能プログラムやモジュールプールなど)に含まれる再利用可能なコード部分を提供します。
Module Pool(Dynpro)ユーザインターフェース(画面)を提供するプログラムで、実行可能プログラムから呼び出されます。
Function Module(汎用モジュール)再利用可能な機能(関数)をカプセル化するプログラムで、他のプログラムから呼び出すことができます。
Class Poolオブジェクト指向ABAP(OO-ABAP)のクラスやインターフェースを定義するプログラムです。
Interface Poolオブジェクト指向ABAP(OO-ABAP)のインターフェースを定義するプログラムです。
Subroutine Pool他のプログラムから呼び出されるサブルーチン(手続き)を定義するプログラムです。
Function Group関連する一連のFunction Moduleをグルーピングするためのプログラムです。
Type Group(Type Pool)再利用可能なデータ型や定数を定義するプログラムです。

プログラムを1から新規作成しようとすると、以下の画面で「タイプ」を設定しますが、それは上記のうちどれか一番適するものを選択することになります。

ABAP プログラムタイプ
図1:プログラムタイプ選択画面

ABAPのプログラムタイプのまとめ

この記事では、ABAPプログラミングにおける主要なプログラムタイプ4つ、すなわち、REPORTプログラム、Dynpro(またはModule Pool)、Function Module(または汎用モジュール)、およびObject-Oriented ABAPについて説明しました。

  • REPORTプログラムは、主に一連の手続きに従って特定のタスクを実行するために使用されます。このタスクは、一般的にデータベースからデータを抽出し、それを処理して報告することが含まれます。
  • Dynpro(Module Pool)は、ユーザインターフェースを提供するために使用されます。ユーザからの入力を受け付けたり、結果を表示したりするために使用されます。
  • Function Module(または汎用モジュール)は、特定の機能をカプセル化して他のプログラムから繰り返し呼び出すことができるようにするために使用されます。これにより、コードの再利用性と生産性が向上します。
  • Object-Oriented ABAPは、クラス、オブジェクト、インターフェース、継承といったオブジェクト指向プログラミングの原則を実装するために使用されます。これにより、大規模で複雑なビジネスロジックを効率的に管理し、再利用可能なコンポーネントを設計することができます。

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPSAP
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました