ABAPによるSAPアドオン開発入門(vol.109)

  • 公開日:
  • 最終更新日:

SAPシステムのアドオン開発では、ABAPというプログラミング言語を使用します。
本ブログ記事では、ABAPプログラミングの入門として、ABAPプログラムの実行順序やABAPでコーディングする際に知っておくべき前提知識について解説します。これからABAPを学習しようという方は、是非、ご覧ください。
*本ブログ記事の「SAPシステム」は、「SAP ERP」 及び 「SAP S/4HANA」を指します。

SAPシステムにおけるアドオン開発とは?

SAPシステムを導入する場合、基本的には標準機能やテンプレートに存在する機能を組み合わせて構築します。しかし、標準機能だけでは対応できない要件が発生した場合、アドオン開発が必要となります。SAPシステムにおけるアドオン開発とは、独自の機能/画面/帳票を、個別に追加開発することを指します。

アドオン開発のメリットは、業務に合わせたシステムを継続して利用できることです。日本企業には日本独自の商習慣や業務プロセスが多く、業務に合わせたシステムを構築することが重要視されてきました。アドオン開発を実施することで、標準機能では不足している機能を補うことや、他社にない機能を追加して差別化を図ることができます。
一方、アドオン開発のデメリットとしては、開発コストがかかる、運用が複雑化するといった点が挙げられます。また、業務の変更やSAPシステムのバージョンアップの際には、プログラムの改修や動作検証が必要となる点もデメリットとして挙げられます。
極力、標準機能を使用しながら運用でカバーすることが望ましいですが、SAPシステムを導入している多くの企業では、アドオン開発を行っているのが現状です。

SAPシステムにおけるアドオン開発は、ABAP(Advanced Business Application Programming)という言語を用いて行われます。ABAPは、SAP社によって開発された、SAPシステムを構成するプログラミング言語です。ABAPで開発したプログラムはバージョン管理が可能なため、修正前に戻すことができるという特徴があります。ユーザーやベンダーは、このABAPを用いて、レポートの作成やインターフェースの開発などを行うことが多いです。
*ABAPの概要/機能/勉強方法などを知りたい方は、「ABAPとは? よく開発する機能や勉強方法などをわかりやすく解説(vol.94)」のブログをご覧ください。
*アドオン開発とカスタマイズの違いについては、「SAP入門 ~モジュール・用語などをわかりやすく解説~(vol.101)」のブログをご覧ください。

次章ではSAPシステムで、ABAPプログラムがどのように実行されるのかを解説します。

SAPアドオン(ABAP)プログラム実行の仕組みとフローとは?

ABAPプログラムがどのように実行されるかを理解するためには、SAPシステムの基本的なアーキテクチャを理解することが重要です。SAPシステムは、プレゼンテーション層/アプリケーション層/データベース層の3層アーキテクチャで構成されています。
各層の役割は、以下の通りです。

  • プレゼンテーション層:画面表示や入力制限を行います
    ユーザはSAP GUI(Graphical User Interface)を使用して、選択画面やレポートといった画面でSAPシステムを操作します。
  • 選択画面:ユーザが任意の値を入力できる画面です。プログラムを実行する際の実行条件を入力したり、選択することができます。
  • レポート画面:ABAPプログラムが実行された結果を表示する画面です。プログラムの出力や詳細な情報を視覚的に確認することができます。
  • アプリケーション層:ABAPプログラムを実行し、データの抽出や編集などの実際の処理を行います
  • データベース層:データの管理を行います

SAPシステムにおけるABAPプログラムの実行フロー

SAPシステムのアーキテクチャについて理解を深めたところで、次にABAPプログラムがどのように実行されるか見ていきます。
実行される典型的なフローは下図の通りです。

  1. ユーザアクションの開始
    ユーザはプレゼンテーション層であるSAP GUIを使用し、選択画面で値を入力し、実行します。
  2. アプリケーション層での処理開始
    実行されたことで、入力値を受け取り、ABAPプログラムが実行されます。
  3. データベース層からのデータ取得
    ABAPプログラムの中で、データベースのアクセスが実装されている場合は、データベースサーバ上のテーブルにアクセスし、データを取得します。取得したデータはアプリケーション層へ返します。
  4. アプリケーション層からプレゼンテーション層への結果の受け渡し
    アプリケーション層での処理が完了すると、その結果がプレゼンテーション層に送られます。結果には、処理されたデータや計算結果などが含まれます。
  5. ユーザへの表示
    受け取った結果をもとに、画面を生成し、ユーザに対して結果をわかりやすく表示します。ユーザは最終的な画面を通じて処理の結果を確認し、必要に応じて追加の操作を行います。

ここまで、SAPシステムの中でABAPで書かれたプログラムがどのように呼び出されるのかについて見てきました。次章では、アドオンプログラムを開発する=ABAPでコーディングする際に重要なイベントブロックについて解説します。

SAP S/4HANA や RISE with SAP って、正直何ができるの?
~ “変わる良さ” と “変わらない安心” を徹底分析!! ~

ABAPでコーディングする際の仕組みとフローとは?

アドオンプログラムを開発する=ABAPでコーディングするには、イベントブロックを正確に理解することが重要です。
前提として、ABAPはイベント駆動型プログラミング言語です。イベント駆動型プログラムとは、イベント単位(=システムに変更を加えるユーザアクションによって一連の処理を実行すること)で処理を実行する言語です。ABAPで開発するプログラムは、イベントに応じてプログラムが処理されるように設計します。

イベントブロックとは、イベントの区切りのことです。イベントブロックはイベントキーワードで始まり、イベントブロック内の処理を実行し、次のイベントブロックが開始するときに終了します。
ABAPプログラムで使用される主なイベントキーワード6つを解説します。基本的には、1から順に実行されます。

  1. INITIALIZATION
    プログラム起動時のみ呼び出されるイベントです。選択画面が表示する前に実行されるので、選択画面の初期値を設定します。
  2. AT SELECTION-SCREEN
    選択画面を入力し、実行した後に呼び出されるイベントです。選択画面で入力された項目のチェックを行います。
  3. START-OF-SELECTION
    AT SELECTION-SCREENが正常に終了した場合にのみ実行される、メインとなるイベントです。データベースからデータを取得したり、レポートの出力を行います。また、イベントブロック外の処理はSTART-OF-SELECTIONで処理されます。
  4. TOP-OF-PAGE
    レポートを出力する直前に呼び出されるイベントです。一覧画面のヘッダーの役割です。
  5. END-OF-PAGE
    レポートを出力した直後に呼び出されるイベントです。一覧画面のフッターの役割です。
  6. END-OF-SELECTION
    START-OF-SELECTIONに記述されている処理が全て完了したときに実行されるイベントです。例外処理を行ったりします。

このようにイベントブロックを利用して開発したABAPプログラムは、ユーザの操作に柔軟かつリアルタイムに対応することができます

まとめ

さてここまで、SAPにおけるアドオン開発の特徴や、ABAPで開発したアドオンプログラムの実行の仕組み、ABAPでコーディングする際に知っておくべき「イベントブロック」などについて解説して参りました。これからSAPシステムのアドオン開発に携わる際には、是非、本ブログ記事を参考にしていただければと存じます。

電通総研では、ABAPに精通したSAP認定コンサルタント資格を保有している技術者による「SAP S/4HANA移行トータル支援サービス」をご提供しています。SAP S/4HANAへの移行に伴うアドオン改修でお悩みの方は、是非、電通総研へお声掛けください。
https://erp.dentsusoken.com/inquiry/