ABAP

【初心者向け】ABAPプログラム開発の基本3つの知識

このページでは、ABAPのプログラミングに関する予備知識を解説しています。

コーディングの話ではありませんが、1からプログラミングを開始する際などに知っておくと便利な知識を紹介しています。

ABAPのプログラムにもいろいろな種類があることは知っているでしょうか。同じABAPプログラムでも、レポートバッチインプットなど、異なる呼び方で区別されます。

このページでは、プログラムを大きく分類した場合の機能的な側面からの区分と、システム的な側面からの区分「プログラムタイプ」について解説していきます。

ABAPのコードルールについての初心者向けのまとめはこちらでおこなっております。

ABAPプログラムの種類

ABAPと一口に言っても、処理の内容や対象の機能によって大きく3つに分けられます。もっとも基本的な「レポート」、同様に使用頻度の高い「バッチインプット」、そして画面を作成していく「Dynpro」です。

他にも何種類かプログラムが存在しますが、上記3つの開発が9割以上を占めるので、ここでは上記3つについて解説しています。※上記3つを知っていれば、大体の開発現場で生きていけます。

まず初めに、もっとも基本的な「レポート」について説明していきます。

レポート:REPORT

レポートは日本語に直すと「報告書」となりますが、ABAPにおける意味は微妙に異なります。ABAPでレポートと言われるものはデータを出力することを目的としたプログラムを指します。

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

業務側から考えるとわかりやすいですが、普段行っている業務の約半数ぐらいはデータの取得や照会に基づいたものです。

例えば、予算に対する実績値の照会や、他の人が入力した値のチェック。会計業務で言えば、財務諸表の作成も「データを照会・取得して」報告書にまとめる業務と言えます。

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

レポートプログラムはさらに3つに分類される

ここら辺は応用知識ですが、レポートプログラム(REPORT)は、その実行方式の観点からさらに3つに分けることができます。

1つが、プログラムの実行条件をユーザーに選択させた後にプログラムを実行させるもの。2つ目が、実行条件などの入力なしにいきなり「プログラム」が実行されるもの。そして3つ目が、データを出力・表示した後にデータの更新などを行うことができる「インタラクティブレポート」と呼ばれるものです。

まず1つ目と2つ目の違いは「選択画面」の存在です。

選択画面があると、プログラミングを実行後、ユーザの画面入力を待つことになります。画面入力完了後、再度プログラムの処理に進む形です。

3つ目のインタラクティブレポートは、選択画面はもちろん、ユーザとの対話形式で処理が進むプログラムです。

これらの種別はイベントブロックの重要性につながる部分なので、あまり重要視しなくてもよいでしょう。あくまでもこの章では「レポートプログラム」というものの知識が重要です。

レポートは主にデータ出力を目的としたプログラムで、動作によって大きく3つに分類される、ことを理解しておきましょう。

バッチインプット

バッチインプットとは、いわゆるバッチ処理を実現するプログラムのことを指し示します。

・・・。バッチ処理・・・?ってなんですか?

バッチ処理というのは、超簡単に説明するとまとめて処理することです。例として、伝票の登録で考えてみましょう。

普通、伝票は取引の発生都度入力を行いますね。「売り上げがあった」「鉛筆を買った」「給料を払った」など、そのタイミングごとにシステムにデータを入力していくのがもともとの形です。

このもともとの形を、バッチ処理に対してリアルタイム処理と言います。リアルタイム処理では、その名の通り一つひとつリアルタイムにシステムにデータが反映されていきます。

一見デメリットはなさそうに見えるリアルタイム処理ですが、①利便性と②システム性能の観点から限界があります

例えば、「口座への入金情報」に関する伝票を入力する場合、A商店に対する伝票を1件、B商社に対する伝票を1件、C株式会社に対する伝票を1件・・・・というように、大量に伝票を登録しないといけない場合。

100件単位で入力が必要な場合もありますし、10000件・100000件などの処理もあります。

バッチ処理では、この大量のデータをまとめて一度に処理します。例えば、だれもシステムを利用していない夜中3時頃に、その日に行われた取引データを一気に連携したりするのです。

バッチ処理は、①一度で大量のデータをさばけるという利点に加え、②作業自体を自動化できること、③処理自体を夜中などのユーザが利用していないタイミングで実施することでシステム負荷を下げることができるなど様々な利点が存在します。

なるほど、バッチ処理がなんとなく理解できました。

バッチインプットとは、バッチ処理を実施するプログラムのこと、と覚えておけばOKです。

バッチ処理は、旧システムからの移行データを新システムに登録するときや、外部システムから連携されたデータ登録などを行う際に利用されること主な利用シーンになります。

Dynpro(ディンプロ)

DynproとはDynamic programming」の略称です。そのまま日本語に訳すと「動的プログラミング」となりますが、SAPでは対話型の画面入力に関するプログラムのことを指し示します。

対話型というのは、ユーザの入力に応じて画面が遷移していくような画面制御のことを指します。「こっちがこうすれば」「画面がこうなる」、つまり画面と人と対話するようなイメージで次々に変わっていくような画面制御を「対話型の画面入力」と呼んでいます。

Googleも、検索スペースに「SAP」と入れれば、画面にキーワード:SAPを含む検索結果を出し、ユーザが表示されたリンクを押せばそのページを、戻るボタンを押せば前画面を表示するなど、対話型の画面を備えていると言えます。

SAPも同様に、画面を作成しユーザの操作内容に応じて処理の内容を変えるような画面遷移を実現することが可能で、この処理を実現するのが、Dynproプログラムです。

Dynproについては、レポート・バッチインプットと比較して開発数は多くありません。基本は、レポート・バッチインプットの開発が主です。

しかし、開発数は少ない一方で、難易度は他の2つに比べて高くとっつきにくいプログラムなので、Dynproが自由自在に書ける人材はかなり重宝されます。

レポート・バッチインプット・Dynpro。この3つの違いについてはある程度で良いので頭に入れておきましょう。

これまで解説してきたように、ABAPのプログラムは主にこの3つに分類され、それぞれのプログラムで必要とされる知識も微妙に異なってきます。基本的な思想は同じですが、細かい部分が異なるため、トライ&エラー、そしてグーグル先生に助けられながら、ノウハウを付けていくことになります。

前提知識がある状態で開発していくのと、そうでないのとではスキルの向上という観点で大幅に異なります。上記で解説した内容については最低限、会話についていけるレベルの知識を身につけておきましょう。

さて次の章で、上記分類とは別に技術的な観点からプログラムを分類する「プログラムタイプ」の解説に移ります。

プログラムタイプ

これまでの分類してきたABAPの分類はあくまでも「機能的な観点」からの大分類です。

ここから解説するプログラムタイプというのは、よりシステム的な分類となります。

プログラムタイプとは?

プログラムタイプとは、プログラムを作成する際に選択が必須となる項目です。

プログラムを登録しようとすると下記のようなポップアップが表示され「タイプ」という選択肢に、プログラムタイプを埋める必要があります。

プログラムタイプ選択画面

このプログラムタイプによって、直接実行の可否など「プログラムが実行されるときの処理」を制御しています。最終的に行いたい処理を正しく理解し、それに応じた正しいプログラムタイプを選択する必要があります。

以下では、「これだけ覚えていればOK」なプログラムタイプを説明しています。

実行可能プログラム

前の章で解説した「レポート」「バッチインプット」プログラムがこれに該当します。作成したいプログラムが、レポート・バッチインプットであれば「実行可能プログラム」に該当します。

実行可能プログラムの名前からもわかる通り、トランザクションコード:SE38、もしくはSE80にてプログラム名を入力すればその画面から直接実行することができます。

INCLUDEプログラム

インクルードプログラムを作成する場合に用います。インクルードを知っていればなんとなく想像がつくかもしれませんが、直接実行ができません。

他のプログラムで展開できるプログラムを作成する場合は、このプログラムタイプが該当します。

※「インクルード」については下記のページで解説しています。

モジュールプールプログラム

Dynproを作成する際に選択するプログラムタイプです。このプログラムタイプは、トランザクションコードを利用して実行することが可能です。

この知識はどこで役立つか?

ここまで解説してきた知識は、ABAPerの超・前提知識です。コードの内容もそうですが、まずこの前提知識がないとチームメンバーの話の輪に入ることができません。

ある日いきなり、インクルードプログラムを作成してください、なんて言われても焦りますよね?焦らないために、前提知識としてここで解説した内容については頭に入れておくことが必須です。

本サイトでは、ABAPに関するノウハウを随時更新しておりますので、他のページも合わせてご覧ください。