【ABAP】インクルードプログラム―3分で分かるINCLUDE命令

ABAP

本ページでは、INCLUDE命令:インクルードプログラムの意味と使い方を初心者向けに解説します。

INCLUDEプログラムは、それ単体で実行することはできないプログラムです。他のプログラムに組み込まれることによって、はじめて実行することができるプログラムです。

このページでは、INCLUDE命令とインクルードプログラムの意味と使い方、利用するメリットを簡単に説明します。

このページで学べる内容
  • INCLUDE(インクルードプログラム)とは何か?
  • INCLUDEプログラムの作成方法と組み込み方法
  • INCLUDEを利用するメリット

ABAPエンジニアを目指す方であれば知らないと恥ずかしい基本知識ばかりですので、是非最後までご覧ください。

スポンサーリンク

INCLUDE(インクルード)プログラムとは何か?

INCLUDE(インクルード)プログラムは、それ単体で実行することができないプログラムの1つで、その名の通り、他のプログラムに組み込まれる形で利用されます。イメージとしては、プログラムの一部を外出しして、他のプログラムからでも使えるようにしておくようなものです。

ABAPにおけるモジュール化の一手法として用いられます。早速、インクルードプログラムの作成方法、作成したプログラムのインクルード方法を解説します。

INCLUDE命令

INCLUDE(インクルードプログラム名).


構文ルールは非常に簡易的です。INCLUDEの後に、インクルードプログラム名称を記述するだけでOK。

以下のようにチェーン命令の形式で利用することが一般的です。

INCLUDE: (インクルードプログラム1),
         (インクルードプログラム2),
         (インクルードプログラム3).

実際のソースコードでは以下のように記述します。

INCLUDE:
  YINCLUDE_D,     " データ定義
  YINCLUDE_S,     " 選択画面
  YINCLUDE_F.     " サブルーチン
サンプルコードの説明

上記のサンプルコードでは、以下3つのプログラムをインクルードしています。

YINCLUDE_D
データ・構造定義用プログラム

YINCLUDE_S
⇒選択画面定義用プログラム

YINCLUDE_F
⇒サブルーチン用プログラム

インクルードプログラム名称はなんでもOKです。基本的には、コード規約に沿って可読性が向上するような分かりやすい名称を心がけます。

※インクルードプログラムという単語を使っていますが、プログラムには何種類か存在しています。こちらのページでサクッと解説しています。

インクルードプログラムの作成

インクルードプログラムの作成方法はとっても簡単。

メインプログラム中でINCLUDE命令のあとのプログラム名称をダブルクリックするだけ。自動的にインクルードプログラムのロジック作成画面に遷移します。

遷移するコーディング画面は、通常のプログラムと全く同様で、かつインクルードプログラムだからと言って構文ルールが異なるというわけではありません。

INCLUDE:
  YINCLUDE_D,     " データ定義
  YINCLUDE_S,     " 選択画面
  YINCLUDE_F.     " サブルーチン

上記、INCLUDE命令でインクルードした ”YINCLUDE_S” の中身は通常の選択画面定義のコードとなんら相違はありません。

&---------------------------------------------------------------------
*& Include YINCLUDE_SELECTION
*&---------------------------------------------------------------------*
*-- データ選択条件
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-S01.

SELECT-OPTIONS: S_SEQNO   FOR  GW_SCREEN-SEQNO             ,   "連番
                S_STATUS  FOR  GW_SCREEN-STATUS OBLIGATORY ,   "処理ステータス
                S_AUART   FOR  GW_SCREEN-AUART             .   "販売伝票タイプ
PARAMETERS    : P_VKORG   TYPE YKS002-VKORG     OBLIGATORY .   "販売組織
SELECT-OPTIONS: S_VKBUR   FOR  GW_SCREEN-VKBUR             ,   "営業所
                S_VDATU   FOR  GW_SCREEN-VDATU             ,   "指定納期
                S_BSTKD   FOR  GW_SCREEN-BSTKD             .   "得意先発注番号

SELECTION-SCREEN END   OF BLOCK B1.

*-- 日情報表示制御
   SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-S02.
   PARAMETERS: P_OUT AS CHECKBOX.
   SELECTION-SCREEN END   OF BLOCK B2.

INCLUDE命令で上記プログラム「YINCLUDE_S」を指定するだけで、どのプログラムでも同じ選択画面が出力されることになります。

メインプログラムではこの記述を「取り込んで」実行し、実際の選択画面を生成していると言えます。

インクルード(INCLUDE)プログラムを利用するメリット

blank

実際インクルードを使わなくてもプログラムを完成させることは可能です。インクルードプログラムを利用せずに、メインプログラムにロジックを記載しても処理の内容は全く変わりません。

ですが、インクルードプログラムには結構利点が多く、使い方を覚えれば結構便利な代物ですし、実際の開発現場では当たり前のように利用される技術でもあります。

ここからは、インクルードプログラムを利点するメリットについて補足しておきます。

インクルードプログラム―メリット1:開発効率の向上

インクルードプログラムは、複数のプログラムから呼び出し可能です。例えば、プログラムAでインクルード(INCLUDE)しているプログラムでも、また別のプログラムBでもインクルード(INCLUDE)することが可能です。

"プログラムA"

INCLUDE:
  YINCLUDE_D,     " データ定義
  YINCLUDE_S,     " 選択画面
  YINCLUDE_F.     " サブルーチン
"プログラムB"

INCLUDE:
  YINCLUDE_S,     " 選択画面
  YINCLUDE_FUNCTION.     " サブルーチン

この仕組みをうまく利用することで、開発効率を向上させることが可能。同じような処理を別の機能でも利用したい場合に、1から開発しようとすると、設計・コーディングに加えてテスト工数などが膨らんでしまうこともしばしば。

インクルードプログラムであれば、その部分についてはそれらの開発工数が不要となります。

汎用モジュールでも同じことができるのでは?

汎用モジュールもインクルードプログラム同様、複数のプログラムから呼び出し可能です。ただし、汎用モジュールの方が用途が限定されており、例えば選択画面だけのプログラムを汎用モジュールとしてコーディングすることはできません。

一方で、インクルードプログラムではインターフェースとしてのパラメータ受け渡しができません。

汎用モジュールとインクルードプログラムの違いは以下の記事でもご確認ください。

インクルードプログラム―メリット2:可読性の向上

データ宣言部、サブルーチン定義部、選択画面、、、等に区分けしておくことで可読性が向上します。

実際、プログラムを読んでいく作業は大変で、10000行のソースコードを目で見て追っていくことは大変な重労働です。

例えば調査対象がプログラムの「選択画面」であることが分かっている場合、ソースコードを頭からスクロールして見るよりも、INCLUDE分を探して、ピンポイントで調査したほうがはるかに効率的ですよね。

バグが発生したときの原因分析も容易になりますし、同時にプログラムを修正したときの影響範囲も限定させることができます。

ABAPを1から勉強したい方は

ABAPを1から学習したい方のために、ABAPに関わる基本知識を1つのページにまとめました。

こちらの記事では、ABAPを用いて簡単な機能を実装できるようにするための必須知識を解説しております。今、本サイトで一番人気の記事ですので是非合わせてご覧ください。

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

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

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

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