SAPに関するコンサルティングや開発・移行等の実績多数のFPTが開発した、SAP Business Technology Platformに関する拡張機能開発の準備を解説します。

目次

 

はじめに

長年にわたり、SAP ERPは、常に世界で最も人気があるERPの一つであり、数千を超える顧客がビジネスを効果的に運営することに役立っています。
しかし、その道のりは必ずしもスムーズであったわけではありません。
旧バージョンのSAPを使用している顧客の多くは、新しい機能を追加したり、ビジネスプロセスを変更したりする必要があります。
この問題に対する答えは、ABAP 拡張を使用して SAP ERP を拡張することと考えています。

図表1引用元: ABAP Enhancement framework
https://blogs.sap.com/2009/01/15/how-to-get-the-most-from-the-enhancement-and-switch-framework-as-a-customer-or-partner-tips-from-the-experts/

ABAP 拡張で新しい機能を追加したり、SAP 標準の仕組みを変更したりすることができますが、その後に、新しい問題が発生されることもあります。そのため、このアプローチは簡単には実現しません。
旧バージョンERPでは上記の機能を使用できないため、ERP Systems のアップグレードが必要です。ただし、ERP Systemsのアップグレードは、Windows や iOS の更新のように単純ではありません。

図表2引用元: A typical upgrade project
https://blogs.sap.com/2020/06/28/zero-downtime-zdo-of-sum-project-planing/

上図は、SAP ERPの標準的なアップグレードプロジェクトのロードマップになりますが、非常に多くの工程あり、非常に多くの人が関与します。

アップグレードを実施する前に、新しい機能を追加するためのソースコード、SAP 標準ソースコードの比較(モディフィケーション)が、どのように影響されるのか判断しないといけません。その工程は時間がかかるため、アップグレードの進行がさらに遅くなるという問題が生じます。

SAP BTP(SAP Business Technology Platform) はこれらの問題を解決することができます。システムで必要な変更を実施しながら、元のソースコードを変更しないので、システムの不具合は多くありません。

図表3引用元:Side-by-side extension on Cloud (SAP BTP)
https://help.sap.com/docs/SAP_EXTENSIBILITY_EXPLORER/757c85f07ab84278927025e6fd6ea6d2/a709cff74b61479d9db1016758cb879d.html

SAP BTP(SAP Business Technology Platform)について

BTPは、直接にSAP が提供したシステムで変更を行うのではなく、それらの変更を別の場所に個別に実装し、それから拡張とSAP システムをside-by-sideで実行されます。Core ERP にはカスタム コードが存在しないため、Core は安定しています。
これにより、アップグレードの進行に加え、カスタム アプリケーションの開発の進行もスピードアップします。また新しい変更でシステムの不具合のリスクを軽減することができ、安心できます。Core ERP内で行う場合のように入念に検討する必要がないことも、開発のスピードアップに繋がります。

Side-by-side拡張はクラウド、SAP BTP で実行するので、次のことが変更されます。

  1. 1.プログラミング言語
  2. 3rd-party APIの使用
  3. ソースコードの管理方法
  4. ユーザー資格情報の管理方法

 

1.プログラミング言語
ABAP拡張アプローチの場合、言語はもちろんABAP言語とSAPが提供するさまざまな拡張技術(BAdI、User Exit、Enhancement points など)です。

BTPでのside-by-side拡張の場合、現在BTP 上の Cloud Foundry 環境は、次のビルドパックをサポートしています。

図表4引用元: Cloud Foundry buildpacks that SAP supports
https://help.sap.com/docs/SAP_HANA_PLATFORM/4505d0bdaf4948449b7f7379d24d0f0d/684a8a79827047998b3c1e8519dec10f.html?version=2.0.05

これは、JavaやRubyやNodeJS、Go、または Python を使用してside-by-sideにアプリケーションを構築できることです。どの言語を使用するかは、主にチームのスキルセットに依存します。選択に影響を与えるもう 1 つの要因は、図 3 から理解するように、side-by-sideにアプリケーションが OData 呼び出しを実行して、オンプレミス システムとの間でデータを作成、読み取り、更新、削除することです。これをサポートするために、SAPは OData リクエストを実行する Cloud SDK を開発しました。

図表5引用元:SAP Cloud SDK
https://sap.github.io/cloud-sdk/

ただし、現時点では、この SAP Cloud SDK は Java と NodeJS のみをサポートしているため、開発プロセスをスムーズにしたい場合は、Java または NodeJS を選択することをお勧めします。

2.3rd-party APIsの使用
拡張アプリケーションはクラウド上で実行され、OData を API として呼び出すようになったため、アプリケーションはインターネットを介して 3rd API を呼び出すこともできますが、これらは以前の ABAP ではそれほど簡単ではありませんでした。
API を使用してテキストを翻訳したり、画像をテキストに変換したり、銀行から為替レートを取得したりするなど多くの機能をアプリケーションに追加できます。
システムの制限を気にせずに拡張アプリケーションに追加できるすべての優れた機能を想像してみてください。または、本番環境でダンプを作成することもできますが、これらは ABAP コンサルタントにとっては悩みの種でした。

3.ソースコードの管理方法
昔、オンプレミスシステムでABAPプログラム/拡張が作成されたので、開発者はソースコードの管理方法についてあまり心配する必要はありませんでした。
ABAPコードを書いた後に有効化だけで実行できる。変更したい時に、そのプログラムで編集し、有効化できます。ERPはソースコードの整理と保守に大いに役立ちましたが、BTPではソースコードを自分で保守および整理する必要があります。クラウド上での移送リクエストとアクティベーションの概念がないので、ソースコードを管理するには、ソースバージョン管理システム(Git など)を使用します。

4.ユーザー資格情報の管理方法
オンプレミス システムの場合、T-Code SU01を使用してユーザーIDを作成すると、そのユーザーIDでログインしたり、システムと対話したりできます。
ただし、BTP では、IDプロバイダーをセットアップし、その ID プロバイダーでユーザー ID を維持する必要があります。クラウド上のユーザーがいくつかのオンプレミス ODataサービスを呼び出す場合、そのIDをクラウドコネクタに転送し、次にクラウドコネクタからオンプレミス システムに転送する必要があります。そのプロセスはプリンシパル伝送と呼ばれます。

さいごに

オンプレミスではなく、BTPで開発するには、従来のABAP スキルセットとは非常に異なるスキルセットが必要です。従来のABAP コンサルタントにとっては最初は障壁になるかもしれませんが、これを乗り越えることができれば、BTPでの開発は、オンプレミスシステムに素晴らしい機能を追加する素晴らしい機会をたくさんもたらすでしょう。また、新しいことを学び、新しいものを作成し、世界を変えることは、開発者にとって楽しい旅でもあります。