このブログ投稿では、SAP S/4HANA Cloud, public editionにおける開発者拡張の実装方法について実際の操作画面ベースにステップバイステップでご紹介します。コンセプトなどの概要情報については、わかりやすく紹介されているブログをリンクしていますので、ぜひそちらも参照ください。なお、SAP S/4HANA Cloud, private edition, SAP S/4HANA (オンプレミス)でも方法は同じです。
- 開発者拡張とは
開発者拡張(Developer extensibility)は、ABAP開発者によって、SAP S/4HANA Cloud システム内で SAP オブジェクトの拡張および独自のカスタムオブジェクトの作成ができる、というのものになります。
キーユーザ拡張よりも複雑な拡張・カスタム開発が可能であり、かつ SAP S/4HANA Cloud 内でデータを直接参照することができるため、SAP Business Technology Platform 上の Side-by-Side 拡張よりもより SAP オブジェクトと密結合した拡張機能を実装できます。
ただし従来のクラシック拡張とは異なり、開発者拡張(Developer extensibility)では、コアとカスタムコードを分離するために、従来の実装ルールより制限が多い新しい実装ルールへの準拠が必要となります。
更に詳しい内容はこちらのブログで紹介されていますのでご参照ください。
- 開発者拡張における ABAP とは
新しい実装ルールの主なポイントとしては、下記の3点が挙げられます。
更に詳しい内容はこちらのブログで紹介されていますのでご参照ください。
-
- SAP オブジェクトの使用制限 – リリース済オブジェクト (Public API) のみ使用可能
Release contract という属性でリリースステータスが定義され、
未リリースのオブジェクトは使用できず、構文エラーになります。 - SAP オブジェクトの拡張は事前に定義されリリースされている拡張ポイントのみ
モディフィケーションは許可されていません。 - Restricted ABAP Language (Cloud-optimized ABAP language)
使用できる ABAP 構文・オブジェクトタイプが制限され、クラウド環境に不要・不適切な ABAP 構文は使用できません。開発者拡張では、ABAP言語バージョン:ABAP for Cloud Development を使用する必要があります。
- SAP オブジェクトの使用制限 – リリース済オブジェクト (Public API) のみ使用可能
準備
開発者拡張を行うためには「ABAP Development Tools」のインストールが必要です。
前提条件やインストール方法についてはこちらのサイトを参照ください。
既にインストール済みの方も使用中のバージョンが最新かどうか確認ください。
プロジェクトおよびパッケージ作成
以下の手順でSAP S/4HANA Cloud のABAP環境にログオンし、開発者拡張を行う為に必要な開発オブジェクト用のパッケージを用意します。
- ABAP Development Toolsを開き、File > New > Other… を選択します。
- ABAP Cloud Project を選択し、[Next >]を選択します。
- ABAP サービスインスタンスの URL を入力して、[Next >]を選択します。
- [Open Logon Page in Browser]を選択してABAPサービスインスタンスにログインします。
ログイン後、[Next >]を選択します。(ログインが成功すると「Not yet logged on」が
「Logged on. You can now continue with the project creation.」に変わり、
[Next >]が選択できるようになります。)
- 表示されている接続情報を確認し、[Finish]を選択します。
- 作成できたプロジェクトがProject Explorerで確認できます。
- 作成したプロジェクトを選択し、右クリックメニューからNew > ABAP Packageを選択します。
- パッケージの名称を入力し、[Next >]を選択します。
- 作成できたパッケージがProject Explorerで確認できます。
パッケージの詳細画面にてABAP言語バージョンがABAP for Cloud Developmentとなっていることを確認します。
[POINT]
ABAP言語バージョンは他に「Standard ABAP」「ABAP for Key Users」が存在しますが、
SAP S/4HANA Cloud下でABAP開発を行う場合は「ABAP for Cloud Development」になります。
拡張実装の作成
リリース済みオブジェクトの中から拡張スポットを特定し、拡張実装(BAdI)を作成する方法をご紹介します。
(例としてMM購買依頼の明細登録時のチェックを行う場合を記載します。)
- 拡張スポットを確認します。・Project ExplorerからReleased Objectsのツリーを開きます
・該当アプリケーションコンポーネントの中から拡張スポットを選択します
- 作成したパッケージの右クリックメニューからNew > Other ABAP Repository Object を選択し、拡張実装を作成します。
- BAdI Enhancement Implementation を選択し、[Next >]を選択します。フィルタ欄にBAdIと入力すると絞り込めます。
- 拡張実装名称を入力し、[Next >]を選択します。次の画面で移送依頼を選択して完了です。
- 作成した拡張実装にて[Add BAdI Implementation]を選択し、BAdI実装を追加します。
- [Browse…]を押下して該当のBAdIを選択し、BAdI実装名を入力して[Add]を選択します。
- 次に[Implementing Class]を選択し、クラスを登録します。
- 登録するクラス名称等を入力し[Next >]を選択します。次の画面で移送依頼を選択して完了です。
- 登録完了後、クラスのソースコードベースのエディタに遷移します。タブを切り替えてBAdI実装およびクラスを有効化します。
処理の実装およびテスト実行
作成できたBAdI実装のメソッド内に処理を実装してテストします。
(引き続き、例としてMM購買依頼の明細登録時のチェックを行う場合を記載します。)
- 例えば、購買依頼明細の数量に10より大きい値を入力した場合にエラーとする、というチェック処理を追加します。
[POINT]
SELECT処理でデータベースからデータを取得したい場合、従来のテーブル(EKPOなど)からの読み込みはできません。
代わりにリリース済みのCDS Viewを使用してアクセスする必要があります。
- 購買依頼登録画面にて明細作成時、数量に10より大きい値を入力した場合、
エラーとなることが確認できました。
まとめ
ABAP Development Toolsを始めて触る方でもSAP S/4HANA Cloud に対し開発者拡張を実装できるような例を用いて記事を書かせて頂きました。
記事の中で[POINT]という形で記載しましたが、SAP S/4HANA Cloud で開発者拡張を行うにはいくつかの制限がありますのでご留意ください。
また、今までクラシック拡張などに携わって来られた方は取っ掛かり易いのではと思います。
しかしながら今までとの違いに戸惑う部分は出てくると思いますので、是非これから実際に触れて試してみてください。
参考情報
SAP Development Tools (ondemand.com)
SAP S/4HANA 拡張 – Developer Extensibility (Embedded steampunk) 概要 | SAP Blogs
SAP S/4HANA における「開発者拡張」とその使いどころ | SAP Blogs
Developer Extensibility | SAP Help Portal
ABAP Language Versions – ABAP Keyword Documentation (sap.com)