【初心者用】SAP学習3

前回まではSAPの導入部分や具体的な仕事内容、能力について学習をしてきました。

今回はABAPプログラムについて学習をしていきます。

1. ABAPプログラムの種類


処理の内容や対象の機能によって大きく3つに分けられます。

・基本的な「レポート」
・同様に使用頻度の高い「バッチインプット」
・画面を作成していく「Dynpro」

他にも何種類かプログラムが存在しますが、上記3つの開発が9割以上を占めるので、ここでは上記3つについて学習していきます。

2. レポート:REPORT

レポートは日本語に直すと「報告書」となりますが、APAPにおける意味は微妙に異なります。

ABAPでレポートと言われる物は「データを出力することを目的としたプログラム」をさします。

レポートプログラムと言われたら、そのプログラムはデータを取得して一覧表示するプログラムと理解すればよいと思われます。

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


例えば、予算に対する実績値の照会や、他の人が入力した値のチェック。

会計業務で言えば、財務諸表の作成も「データを照会・取得して」報告書にまとめる業務といえます。

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

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

その実行方程式の観点からさらに3つに分けることができます。

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


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

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

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

これらの種別はイベントブロックの重要性につながる部分なので、あまり重要視しなくてもよいでしょう。

レポートプログラムというものの知識が重要です。

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

3. バッチインプット

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

バッチ処理というのは、まとめて処理することです。

例として、伝票の登録

普通、伝票は取引の発生都度入力を行います。

「売り上げがあった」「鉛筆を買った」「給料を払った」など、そのタイミングごとにシステムでデータを入力していくのがもともとの形です。

このもともとの形を、バッチ処理に対してリアルタイム処理と言います。

リアルタイム処理では、その名の通り一つ一つリアルタイムにシステムにデータが反映されていきます。


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

例えば、「口座への入金情報」に関する伝票を入力する場会、A商店に対する伝票を1件、B商社に対する伝票を1件、C会社に対する伝票を1件、、、、

というように、大量に伝票を登録する必要があります。

バッチ処理は、

1.一度で大量のデータを裁けるという利点に加える
2.作業自体を自動化できること
3.処理自体を夜中などのユーザが利用していないタイミングで実施することでシステム負荷を下げることができる

など様々な利点が存在します。

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

4. Dynpro(ディンプロ)

Dynproとは「Dynamic programming」の略称です。

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


対話型というのは、ユーザの入力に応じて画面が遷移していくような画面制御のことを指します。

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

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

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


Dynproについては、レポート・パッチインプットと比較して開発数は多くありません。

基本は、レポート・バッチインプットの開発が主となります。

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

ABAPのプログラムは主にこの3つに分類され、それぞれのプログラムで必要とされる知識も微妙に異なってきます。

基本的な思想は同じですが、細かい部分が異なるため、トライ&エラー、そしてグーグルに助けられながら、ノウハウをつけていくことになります。

前提知識がある状態で開発していくのと、そうでないのとではスキルの向上という観点で大幅に異なります。

5. プログラムタイプ


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

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

プログラムを登録しようとすると、プログラムタイプを埋める必要があります。


このプログラムタイプによって、直接実行の可否など「プログラムが実行されるときの処理」を制御しています。

最終的に行いたい処理を正しく理解し、それに応じた正しいプログラムタイプを選択する必要があります。

最低限のプログラムについて学習していきます。

5-1. 実行可能プログラム

「レポート」「バッチインプット」プログラムがこれに該当します。

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


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

5-2. INCLUDEプログラム

インクルードプログラムを作成する場合に用います。

インクルードを知っていればなんとなく想像がつくかもしれませんが、直接実行ができません。

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

ABAPにおけるモジュール化の一手法として用いられます。

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

構文ルールは非常に簡易的です。INCLUDEの後に、インクルードプログラム名称を記述する。
チェーン命令の形式で利用することが一般的です。

5-4. インクルードプログラムの作成

メインプログラムの作成方法は、メインプログラム中でINCLUDE命令の後のプログラム名称をダブルクリックするだけ。

自動的にインクルードプログラムのロジック作成画面に遷移します。

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

5-5. モジュールプールプログラム

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