SAP S/4HANA Cloud の登場とともに、SAP S/4HANA を拡張する方法としてキーユーザ拡張・Side-by-Side extensibility が使われてきました。今後、もう一つの選択肢として Developer extensibility が使えるようになることをご存じでしょうか?
このブログ投稿では、SAP S/4HANA 拡張手法の一つとして今後提供が予定されている Developer extensibility (通称 Embedded steampunk) の概要についてご紹介します。
Developer extensibility とは?
いま提供されている拡張手法
2022年6月現在、SAP S/4HANA Cloud の拡張手法としては、以下の2つが提供されています。
・In-app extensibility のキーユーザ拡張
・Side-by-Side extensibility
In-app extensibility は、SAP S/4HANA Cloud システム内での拡張となります。
こちらは別名キーユーザ拡張とも呼ばれ、キーユーザとなるビジネスユーザや導入コンサルがローコード/ノーコードツールで比較的容易に拡張していくことを想定した拡張手法です。標準アプリケーションの拡張・一部カスタムオブジェクトの作成が可能で、拡張の場合は事前に定義された拡張ポイントのみを使用できます。
SAP S/4HANA Cloud システム内部での拡張となるため、システム内のデータを直接参照することができ、SAPオブジェクトと密に結合した拡張を実装できます。
一方、Side-by-Side extensibility は、SAP S/4HANA Cloud システム外での拡張となります。
SAP Business Technology Platform (BTP)システム上で、独自のカスタムアプリケーションを開発することが可能です。こちらは、開発者による実装を想定しており、開発言語は、ABAPのみならず、JAVA、Node.js も使用できます。
SAP S/4HANA Cloud システム外での開発となるため、SAP S/4HANA Cloud のデータを参照するには、リモートAPI呼出やBTP上でのデータ複製が必要となります。また、SAP S/4HANA Cloud システムから物理的に独立しているため、SAPオブジェクトと疎結合した拡張・アプリケーションを実装でき、BTP上の開発オブジェクトは独自のライフサイクルでの管理・運用が可能となります。
どちらの拡張手法でも、コアとカスタムコードを分離するために、SAP S/4HANA Cloud の機能を呼び出すには、リリース済オブジェクトを使用する必要があります。また、ABAPによる実装は、従来の実装ルールより制限が多い新しい実装ルールへの準拠が必要となります。
なお、SAP S/4HANA (オンプレミスを意味します)、SAP S/4HANA Cloud, private edition では、上記2つの拡張手法に加え、クラシック拡張も使用できます。クラシック拡張は、従来のSAP ERP ・SAP S/4HANA のオンプレミスで使用されてきたモディフィケーションを含む拡張・カスタムオブジェクトの開発を意味します。
これから新しく提供予定の Developer extensibility
上記に加えて、今後、In-app extensibilityのもう一つの選択肢として、Developer extensibility (通称 Embedded steampunk) という拡張手法が提供される予定です。
Developer extensibilityは、ABAP開発者によって、SAP S/4HANA Cloud システム内で SAP オブジェクトの拡張および独自のカスタムオブジェクトの作成ができる、というのものになります。
現在、In-app extensibilityとして使用可能なのはキーユーザ拡張のみとなっていますが、今後は Developer extensibility によるより複雑な拡張・カスタム開発も可能になる予定です。ただし、これは従来のクラシック拡張に相当するものではなく、コアとカスタムコードを分離する新しい実装ルールへ準拠した新しいタイプの拡張と言えます。
Developer extensibility の特徴としては下記が挙げられます。
- 開発者によって、SAP S/4HANA Cloud システム内で SAP 標準リポジトリオブジェクトの拡張および独自のカスタムオブジェクトの新規開発ができる。
- 開発言語はABAP、ADT (ABAP Development Tools) を使用して実装する。
- コアとカスタムコードを分離する新しい実装ルールが適用される。
- SAP S/4HANA Cloud 内でデータを直接参照することができ、SAPオブジェクトと密結合した拡張機能を実装できる。
- キーユーザ拡張と組み合わせて使用することもできる。
従来のクラシック拡張との違いは?
従来のクラシック拡張とは異なり、Developer extensibility では、コアとカスタムコードを分離するために、従来の実装ルールより制限が多い新しい実装ルールへの準拠が必要となります。これにより、アップグレードを阻害せず、クラウドにも対応したカスタムコードの実装が可能となります。
このルールは、キーユーザ拡張・ABAPによるSide-by-Side extensibilityにも適用されます。
新しい実装ルールの主なポイントとしては、下記の5点が挙げられます。
- モディフィケーションの禁止
- リリース済オブジェクトによる SAP オブジェクトへの制限されたアクセス
従来のクラシック拡張では、カスタムコード内で全てのSAPオブジェクトを使用することが可能でしたが、新しい拡張手法では、リリース済オブジェクトを使用する必要があります。リリースステータスは、Release contract という属性で定義されます。従来の汎用モジュールのリリース属性とは異なる点に注意が必要です。Release contractで未リリースのSAPオブジェクトは使用できず、構文エラーとなります。 - Restricted ABAP Language
新しい拡張手法では、使用できるABAP構文が制限されており、クラウド環境に不要・不適切なABAP構文は使用できません。ABAP Keyword documentation > ABAP – Rules for Strict ABAP で詳細をご確認いただけます。
- In-app extensibility (Developer extensibility/キーユーザ拡張)の拡張で使用できるのは事前に定義された拡張ポイントのみ
従来の拡張ポイントを全て網羅しているわけではないことに留意が必要です。 - ABAP Restful Application Programming Model (通称RAP)を使用した開発モデルが推奨
リリース済オブジェクトについて
Release contract で定義されているステータスは、オブジェクトの Properties タブから確認できます。確認には、ADTが必要です。Developer extensibility およびキーユーザ拡張で使用するには、Contract C1 でリリースされている必要があります。
リリース済オブジェクトを探すには、ADT の Project Explorer の Released Objects ツリーが使えます。ADTの ABAP Project の コンテキストメニューから 「New」 → 「ABAP Repository Tree」 から 「Released Objects」をツリーに追加できます。
また、クラシック拡張では、主にBAPIを使用し、伝票などのトランザクションデータやマスタデータを登録・更新することが一般的でしたが、Developer extensibilityではBAPIはリリースされていない(Release contractでリリースされていない)ため、使用することができません。このようにクラシック拡張で使用できていた旧機能/オブジェクトの代替となるリリース済オブジェクトについては、SAPノート 3088062 – Identifying local APIs for S/4HANA Cloud で情報提供されていますので、ご参照ください。
いつから使える?
Developer extensibilityは、既に、SAP S/4HANA Cloudを使用している一部のカスタマ向けに提供されており、今後、SAP S/4HANA Cloud のみならず SAP S/4HANA (オンプレミス)でも使用できるように提供が予定されています。将来的にクラウド化を検討されている場合には、オンプレミスでDeveloper extensibilityを使用して、カスタムコードをクラウド対応に改修・再実装していくことも可能となります。
まとめ
現在使われているクラシック拡張、キーユーザ拡張、Side-by-Side extensibilityに加え、今後、Developer extensibility が新しく使えるようになります。
それぞれの拡張手法の特徴・違いを理解し、目的・要件に応じた拡張手法を採用することが重要です。
参考情報
SAP Extensibility Explorer
SAP S/4HANA Cloud の拡張性 | SAP Help Portal
SAP Blog 投稿:ABAP Extensibility のフォローはこちらのタグから
SAP Community:ABAP Extensibility のトピックページはこちらのリンクから
Q&A:ABAP Extensibility に関する Q&A はこちらのタグから
コメント欄にてフィードバックや感想などの共有もお待ちしています。