本ページでは、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)プログラムを利用するメリット

実際インクルードを使わなくてもプログラムを完成させることは可能です。インクルードプログラムを利用せずに、メインプログラムにロジックを記載しても処理の内容は全く変わりません。
ですが、インクルードプログラムには結構利点が多く、使い方を覚えれば結構便利な代物ですし、実際の開発現場では当たり前のように利用される技術でもあります。
ここからは、インクルードプログラムを利点するメリットについて補足しておきます。
インクルードプログラム―メリット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を用いて簡単な機能を実装できるようにするための必須知識を解説しております。今、本サイトで一番人気の記事ですので是非合わせてご覧ください。