(※2023/03 追記)
Embedded Steampunk という呼称はSAP内のプロジェクト名称であり、現在は ABAP Cloud という呼称が正式版になりそうです。
ABAP Cloud(SAP Blog)
あるいは、キーユーザ拡張、Side-by-Side拡張の並びとして、Developer Extensibility という呼び方をしている場合もあります。
S/4HANA Cloud (public) における拡張性(SAPヘルプ)
はじめに
Embedded Steampunk の発表は、SAP S/4HANA Cloud の導入をしている身として大変気になるニュースです。
TechEdでは、その辺りをキャッチアップするぞ〜!
と思って臨んだのですが、セッションカタログを開いたら Steampunk のキーワードでは1件もヒットしませんでした…
そもそも
Steampunk という名前は、BTP の ABAP Environment の開発コードネームらしく、
Embedded Steampunk についても SAP S/4HANA Cloud の developer extensibility あるいは SAP S/4HANA Cloud ABAP Environment というのが公式名称のようです。
(製品名の正確さに厳しいSAPで、通称が出回ってるのが珍しいかも)
というわけで、改めて ABAP Environment や S/4HANA Cloud 拡張のキーワードで検索して、TechEdの動画を復習しました。
開発スキルがないので開発手法の詳しいところまでは踏み込めませんが、分かったことをまとめてみたいと思います。
ちなみに、このブログ内での SAP S/4HANA Cloud という記述は private edition ではなくて public edition のことだと思って読んでください。
この記事は
SAP Advent Calendar 2021 の12月20日分の記事として執筆しています。
Embedded Steampunkってなに
SAP S/4HANA Cloud についてはいつも、
「オンプレミスで導入するのと違って、S/4HANA上でのカスタム開発はできません」
というのが大事な説明になっています。
「S/4HANAのコアをクリーンに保つことで、四半期ごとのUpgradeに問題なく対応できます」
というコンセプトです。
じゃあ追加要件は全く実装できないのか、というとそんなことはなくて、キーユーザが実施することを想定した In-App 拡張という簡易な拡張か、外出しにして BTP上での Side-by-side 拡張として作り込む、という選択肢がありました。
出典: Get an Overview of SAP S/4HANA Cloud Extensibility [DT104]
そこに、新たな拡張の選択肢として Embedded Steampunk が登場しました。
SAP S/4HANA Cloud 上の ABAP Environment で開発ができるようになります。
出典: SAP BTP の最新情報を押さえるならこれ! アプリ開発とインテグレーションの大事な点を総ざらい (TechEd Japan 2021)
これにより、
「SAP S/4HANA Cloud って、カスタム開発できないんでしょ?(不安)」
という方も、安心して SAP S/4HANA Cloud の導入に進めますね。
つまり、オンプレと同じようにカスタム開発できるってこと?
ではありません。
コアをクリーンに保つ、というところはブレないので、今までのオンプレのABAP開発のやり方をそのまま適用することはできません。
BTP ABAP Environment での新しいABAP開発のやり方、
ABAP RESTful Application Programming Model (RAP) と同じルールでの開発になります。
例えば SELECT は使えますが、テーブル MARC に直接アクセスすることはできなくて、i_productsupplyplanning というCDSビューにアクセスする、というデモが
Developer Keynote の中にもありました。
CDSビューやBADIを使うことを Local API と説明していましたが、そういった許可されているAPIのみが使用可能です。
なので、Dynpro や Web Dynpro で画面作るとか、汎用モジュール使うとか、ましてやモディフィケーションするとか、は過去の話になります。
In-App拡張とどれくらい違う?
デモで使われている例が、BADIを利用して項目を更新する、という内容のものが多かったので、初めは
「In-Appのカスタムロジックでも、売掛金の明細テキストに相手勘定(売上)に紐づくWBS要素を代入する、とかはできているんだけど、違いは何だろう?」
というのが疑問でした。カスタムロジックでも、計算して代入するロジックやチェックは実装できます。
その疑問に関しては、下記のセッションのデモが参考になりました。
Use the Purchase Requisition PaaS API for Developer Extensibility [ISP302]
「購買依頼を参照して購買発注を登録した際、購買発注データのサプライヤ情報を使って、元の購買依頼データのサプライヤ項目を更新しに行く」
というロジックを、購買発注のBADIに追加しています。
たしかに、カスタムロジックのアプリでもBADIは使えますが、そのBADIに関連するオブジェクトしか更新できないように制限がかかっていた気がします。購買発注のBADIなら、購買発注のデータしか更新できない。
他のオブジェクトまで手を伸ばして更新できるところが、違いなのかなと理解しました。
もちろん、RAPでは Fiori の画面開発もできるので、BADIでのチェックや代入ロジックに留まらない開発ができそうです。開発時のデバッグもできます。
Side-by-side 拡張とどれくらい違うの?
おそらく developer extensibility でできることは、Side-by-side 拡張でも実現できるのかなと思うのですが、手軽さが違いそうです。
こちらのチュートリアルをチラ見しましたが、なかなか手順が面倒な感じでした。
Connect to SAP S/4HANA Cloud with SAP BTP, ABAP Environment
Local API ではなくて、Remote API を利用することになるので、SAP S/4HANA Cloud側で外部API作ったり、通信契約作ったり、BTPのdestinationを設定したりなど…
また、BADIで実現している「購買発注を登録したら~」という要件をBTP側で実現しようとしたら、Business Eventを使った処理が必要なのかなと。
なので、SAP S/4HANA Cloud 上での開発は、開発効率が上がるというのがメリットになります。
もちろん、Side-by-side のメリットもあって
- 外部ユーザもアクセスするアプリを作る場合に、明確にS/4HANAと切り離せる
- Java や Node.js などのオープン系の言語が使える
- Machine Learning、IoT、AIなど、Intelligent 系の機能を活用できる
といったところを生かしたい場合はそちらの選択肢を選びます。
これからどうする
SAP S/4HANA Cloud 2108 では 一部のアーリーアダプターのみにリリースされているということで、一般向けリリースはこの先の話になります。3ランドスケープ化とセットで、新規導入の顧客に適用されていくのだと思います。
(※2022/10追記) S/4HANA Cloud 2208 リリースにて、新規のS4HCユーザは3ランドスケープが標準となりました。2023年以降、既存顧客の3ランドスケープへの移行オプションも提供される予定とのことです。
ちなみに、開発環境は eclipse ベース の ABAP Development Tools(ADT) となります。
下記はSAP S/4HANA Cloud 環境にログインして開発しているデモ画面ですが、この左のところに、許可されているAPIがリスト化されているようです。
出典: Get an Overview of SAP S/4HANA Cloud Extensibility [DT104]
いくりぷす…というかんじなので、開発方法を学ぶためにまずはRAPのキャッチアップが必要と考えています。今まで、「BTPで開発するならABAPじゃなくても…」と思って割とスルーしてたところ、これからは注目しないといけなさそうです。
Getting Started with the ABAP RESTful Application Programming Model (RAP)
こちらのブログに情報が集約されていますが、情報がありすぎて大変です。
RAP GeneratorとかEMLとかのキーワードがセッションの中にも出ていたのですが、それらを理解するところまでたどり着けませんでした。
※RAP Generatorについては、tamiさんの記事がちょうど出ています。
ABAP【RAP】ADTのRAP Generatorを使ってみる
ここまで、SAP S/4HANA Cloudの新しい開発環境ということにフォーカスして書いていましたが、2022年以降はオンプレでも使えるようになるみたいなので、Upgradeに対応できる開発方法として、キャッチアップが必要なのではないかと思います。
さいごに
Embedded Steampunk そのもののトライアル環境はないので、ひとまずは
RAPを理解するためのチュートリアルをするか、過去の
openSAPを見てみることになりそうです。
開発知識が足りないので、RAPの情報については開発が得意なみなさまに期待してたりします。よろしくお願いします。
また、もしこのブログの記載に怪しいところがあったらぜひ教えてください。
参考にしたセッション