SAP GUIに関するまとめ

SAP関連アプリのカスタマイズをする際には、新旧いろいろなフレームワークが登場します。特に、2027年のSAP ERPレガシーシステム (ECC) のメインストリームサポート終了に向けて移行が活発になってきているので、いままでSAPに触れていなかったのですが関係することになりそうです。そこで、フレームワークの種類や今までの経緯について初心者目線からまとめてみました。

# SAP 2027年問題とは
SAP S/4HANAに移行していないレガシーなSAP ERPシステムのメインストリームサポートが終了する2027年までに、SAP導入企業が何かしらの対応を迫られるという問題のことです。当初は2025年にサポート終了する予定でしたが、サポート終了まで5年を切った2020年2月に、SAPはサポート終了を2025年末から2027年末に延長すると発表しました。今後も延長される可能性もなくはありません。

経済産業省が発表した「DXレポート」で語られた「2025年の崖」とたまたま同じ年だったので、ごっちゃにして語られていることも多いですが、別の話です。

### SAPシステムの歴史

※出典:図解入門 よくわかる最新SAPの導入と運用 (秀和システム)
**大企業向けパッケージ**

|年|1973～|1979～|1992～|2004～|2013～|2015～|
|:--|:--|:--|:--|:--|:--|:--|
|世代|1|1|2|3|3|4|
|バージョン|RF<br/>(R/1)|R/2|R/3|ECC5.0/6.0|SoH|S/4HANA|
|特徴|初期バージョン (メインフレーム向け財務会計)|メインフレーム向け|クライアント・サーバー向け|NetWeaverに統合|データベースがSAP HANAに刷新|クラウド化対応。テーブル、マスター画面な等の刷新|
|データベース|DBMS|RDBMS|RDBMS|RDBMS|SAP HANA|SAP HANA|

**中堅・中小企業向けパッケージ**

|年|2004～|2007～|
|:--|:--|:--|
|バージョン|BusinessOne<br/>(B1)|ByDesign|
|特徴|オンプレミス|SaaS型(クラウド)|


# フレームワーク/ツールの用語集

* **ECC**: ERP Central Componentの略で、SAP社の第三世代ERP「SAP ERP6.0」の中核となるソフトウェア。ECCはR/3の後継で、S/4HANAの前バージョン。2027年にサポートが終了する。
* **ABAP**: Advanced Business Application Programmingの略。「アバップ」と読む。R/3やS/4HANAなどのSAPシステムの構築やAdd-On開発に用いられる高級言語のこと。SAP独自のプログラミング言語。
* **BAPI**:Business Application Programming Interfaceの略。「バピ」と読む。SAP システム内のプロセスおよびデータへのアクセスを提供するインタフェースのこと。SAP ECCからあり、汎用モジュールもしくはビジネスオブジェクトとして関数の形式で実装されているレガシーAPIです。外部からはRFC(Remote Function Call)と呼ばれるSAP独自プロトコルで呼び出すことが可能です。SAP API Business Hubには記載されておらず、各S/4HANAのシステム内やオンラインヘルプ等で確認することが必要になります。
* **IDoc**: Intermediate Documentの略で、日本語では中間文書と書かれている場合もあります。SAP ECCからあるレガシーAPIです。もともとIDocは様々なEDIフォーマットに対応するための中間ファイルフォーマットを定義し、外部ミドルウェア等でIDocデータと取引先で利用されるフォーマットとの変換をすることでデータ交換を実現するという技術でした。そのため、今現在でもIDocは受発注のB2Bシナリオなどでよく使われています。
* **Add-On開発**: ECCの標準機能で足りない場合に、不足機能を補う際に必要な開発。ただし、これをやってしまうとシステムが複雑になり、バージョンアップの際に様々な問題が出てくることがあります。ちなみに、SAP S/4HANAになっての新しい拡張方式には、SAP S/4HANA アプリケーション内の拡張である「In-App拡張」と SAP Cloud Platform による拡張である「Side-by-Side拡張」の2つのタイプがあります。SAP S/4HANA オンプレミス・エディションは、従来型の拡張・開発が可能でありながら、新しい拡張方式も使うことができます。一方、SAP S/4HANA クラウド・エディションは、新しい拡張方式のみ使うことができ、従来型の拡張・開発はできません。
    * **レポートプログラム**:ECCでAdd-On開発を行う際、一番よく使用するプログラムです。レポート出力だけでなく、様々な用途のインターフェイスを実装できます。レイアウトツールを使わなくても、簡単な命令文で選択画面の生成も可能です。
    * **Dynpro**:Dynamic programming（動的プログラム）の略。「ディンプロ」と読む。ECCでAdd-On開発を行う際に、レポートプログラムでは実現できない複雑な画面の生成や、複数画面の画面遷移順序の指定などを行うことができ、複雑な顧客要件を実現する際に使われます。ABAPまたはJavaで開発できる<b>Web Dynpro (WD)</b>というWebアプリケーションを開発するためのフレームワーク (WDA, WD4J) も2003年から登場しています。
* **In-app拡張**: SAP S/4HANAからの新しい拡張方式で、キーユーザと呼ばれる習熟度の高い業務ユーザ向けに拡張のためのツールセットを提供しており、UIレイアウトの変更、レポートや帳票の作成、項目の追加、簡易版 ABAP によるロジックの追加などが行えます。これらの拡張オブジェクトは SAP 標準オブジェクトとは別レイヤーで管理されており、アップグレードの際に影響を受けません。SAP S/4HANAでは、ODataやSOAPといったREST APIが用意されています。最新のS/4HANA APIは大部分がODataで作られていることもあり、まずはODataのAPIを探すのが良いでしょう。([参考リンク](https://blogs.sap.com/2018/11/22/sap-cloud-platform%E6%B4%BB%E7%94%A8%EF%BC%9As4hana%E6%8B%A1%E5%BC%B5%E3%81%A7%E3%81%AEinapp%E3%81%A8sidebyside/)、[参考リンク](https://www.sapjp.com/blog/archives/16473)、[参考リンク](https://blogs.sap.com/2020/04/23/how-to-find-an-api-on-sap-s-4hana-op-ja/))
* **Side-by-Side拡張**: SAP S/4HANAからの新しい拡張方式で、SAP S/4HANA と連携するカスタムアプリケーションを SAP Cloud Platform 上に迅速に開発することができます。カスタムアプリケーション全体を SAP Cloud Platform 上で稼働させることもできますが、例えば、UI 層（SAP Fiori）だけを SAP Cloud Platform 上で稼働させ、オンプレミス の SAP S/4HANA と連携させることも可能です。SAP S/4HANAでは、ODataやSOAPといったREST APIが用意されています。最新のS/4HANA APIは大部分がODataで作られていることもあり、まずはODataのAPIを探すのが良いでしょう。([参考リンク](https://blogs.sap.com/2018/11/22/sap-cloud-platform%E6%B4%BB%E7%94%A8%EF%BC%9As4hana%E6%8B%A1%E5%BC%B5%E3%81%A7%E3%81%AEinapp%E3%81%A8sidebyside/)、[参考リンク](https://www.sapjp.com/blog/archives/16473)、[参考リンク](https://blogs.sap.com/2020/04/23/how-to-find-an-api-on-sap-s-4hana-op-ja/))
* **SAP GUI**: ECCのユーザーインターフェイスのこと。ログインすることでユーザー定義メニュー、SAPメニューが表示されます。Windows、Mac、Unixにインストールして使うことができ、Windows用、Java用、HTML用インストーラがあります。([参考リンク](https://wiki.scn.sap.com/wiki/display/ATopics/SAP+GUI+Family)、[参考リンク](https://help.sap.com/doc/saphelp_nw70/7.0.12/ja-JP/e7/c7af3fda5a3c17e10000000a114084/frameset.htm))
* **SAP GUI Scripting**: SAP GUI for Windows/Javaの機能を拡張するための自動化インターフェイス。レコーディングやマクロのようなスクリプトでの自動化を提供。SAP GUI 6.20 for Windows と SAP GUI 6.20 for Java Revision 6以降で利用可能。RPAツールによるSAP統合コマンドを利用するには、SAP GUI Scripting機能がONになっている必要がある。
([参考リンク](https://wiki.scn.sap.com/wiki/display/ATopics/SAP+GUI+Scripting))
* **SAP Fiori**: SAP S/4HANAの新しいユーザインタフェース。「フィオーリ」と読む。イタリア語で「花」の意味。2013年6月に発表され、それまでのSAP GUIに替わるHTML5、Javascript、CSSベースのフレームワーク。最新のバージョンは3。旧来のGUI画面をユーザの役割ベースに再設計しました。最新のバージョンは3。ブラウザベースのアクセスでスマートフォンやタブレットからのモバイルアクセスにも対応しました。SAP GUIの時と比べてユーザーインターフェイスのレイヤーが分離し、ABAPとは独立して記載するようになりました。また、ラウンチパッドと呼ばれる表示形式によって、ユーザーが必要とする複数の画面を一元化して参照することができます。当初はモバイル端末への対応にフォーカスしていましたが、第二世代は、2015年リリースされたSAP S/4HANAへの操作性や使い勝手の良さを追求して、最新の第三世代ではSAPがインテリジェントエンタープライズと仕組みを実現する手段として位置づけられています。([参考リンク](https://www.sapjp.com/blog/archives/3711))
* **SAP NWBC**: 「NetWeaber Business Client」の略。単一のプラットフォームからすべてのアプリケーション (SAP GUI、SAP Fioriで作られたアプリ) にアクセスするためのユーザーインターフェイス。 各アプリケーション、SAPログオン、Internet Explorerで開くことなく、各アプリケーションを操作できます。NWBC for HTML、NWBC for Desktopが存在。([参考リンク](https://www.finddevguides.com/Sap-netweaver-business-client))
* **SAPUI5**: 「SAP UI Development Toolkit for HTML5」の略。SAPのWeb画面開発用のツールで、つまりはSAP Fioriアプリを開発できる。NWBC for HTML、NWBC for  ([参考リンク](https://sapui5.hana.ondemand.com/1.42.12/#docs/guide/95d113be50ae40d5b0b562b84d715227.html))
* **SAP HANA**: 2011年にSAP社からリリースされたハイパフォーマンスなカラムストア型リレーショナルインメモリーデータベース。HANAはHAsso's New Architectureの略[^1]。オンプレミスまたはクラウドで利用できます。狭義にはインメモリデータベース機能のみを指しますが、広義には開発環境なども含めたHANA実行環境全体のプラットフォーム全体を指します。SAP社はRDBMSからSAP HANAのアーキテクチャに全面移行しています。ちなみに、SAP HANAはデータベースの名前ですが、SAP S/4HANAはSAP HANAに乗っかるERPモジュールの名前であり、別物であるので注意。([参考リンク](https://www.sap.com/japan/products/hana.html))
* **SAP S/4HANA**: 「SAP HANA」を標準プラットフォームとする同社の第4世代のERP製品。「S/4」のSはSimple、4はSAP社の第四世代ERPであることを表す[^2]。ちなみに、R/1からR/3までの「R」はRealtimeを表す。
* **SAP NetWeaver**: SAPアプリケーション基盤となるミドルウェア。「BASIS」というコンポーネント名で呼ばれる。SAPアプリケーション用の実行環境（ランタイム）、開発支援ツール、データ分析ツール、リリースおよび運用支援ツールなどの複数のコンポーネントが含まれる。([参考リンク](https://www.sapjp.com/blog/archives/13935)、[参考リンク](https://www.sap.com/documents/2017/12/022caa96-e67c-0010-82c7-eda71af511fa.html))
* **SoH**: SAP Suite on HANAの略。SAPA HANA上で利用できるSAP ECC。S/4HANAが出る前に、データベースだけRDBMSからSAP HANAになったバージョン。
* **EHP**: Enhancement Packageの略。マイクロソフトで言う「サービスパック」のようなもの。SAP ERP6向けに7まで出ている。「EHP7 for SAP ERP6.0」のような名称となる。

# SAPシステムの自動化に使われる方式

* **SAP GUI Automation**: SAP ECCでもSAP S/4HANAでも両方使えます。RPA側でSAP GUI Automationメカニズムが提供されていれば高い精度で自動化できるでしょう。その際にはSAP GUI Scripting APIをONにする必要があります。
* **レガシーAPI (BAPI, IDoc)の呼び出し**: SAP ECCでもSAP S/4HANAでも両方使えます。SAP専門APIに関する知識が必要になりますが、高速かつ安定稼働が望めます。[SAP Connector for Microsoft .NET (NCo)](https://support.sap.com/en/product/connectors/msnet.html) というモジュールを使うことで、WindowsからBAPIを呼び出すことができます。sapnco.dllやsapnco_utils.dllというファイルで実装されています。Javaからは[SAP Java Connector (Jco)](https://support.sap.com/ja/product/connectors/jco.html)経由で呼び出すことができます。
* **ブラウザー経由でSAP Fioriを操作**:SAP S/4HANAでのみ使えます。HTML5, Javascript, CSSベースなのでWebブラウザーの自動化で対応しますが、Javascriptが多用されており、工夫が必要な場合があります。
* **OData/SOAP APIの呼び出し**:SAP S/4HANAでのみ使えます。SAP専門APIに関する知識が必要になりますが、安定稼働が望めます。

[^1]: [10年の時を超えてクラウド基盤になったHANA](https://www.itmedia.co.jp/enterprise/articles/1305/17/news071.html) - IT Media
[^2]: [いよいよベールを脱いだ新ERP : SAP Business Suite 4 SAP HANA](https://www.sapjp.com/blog/archives/10316) - SAP Japan Blog

# 参考情報

* [図解入門 よくわかる最新SAPの導入と運用 (秀和システム)](https://www.shuwasystem.co.jp/book/9784798055503.html) 2018/12, ISBN 9784798055503
* [SAP～ABAPerへの道～ Wiki](https://seesaawiki.jp/w/chocolate_mousse/d/FrontPage)
* [SAP Fioriのコンセプトとそれを実現する技術](https://www.sapjp.com/blog/archives/12657) - SAP Japan Blog
* [How to find an API on SAP S/4HANA OP (JA)](https://blogs.sap.com/2020/04/23/how-to-find-an-api-on-sap-s-4hana-op-ja/) - SAP Community Blog
* [SAP Versions Release and History of Evolution](https://www.stechies.com/about-sap-erp-solution-different-versions/) - STeches
* [SAP製品バージョン](https://support.sap.com/ja/my-support/software-downloads/support-package-stacks/product-versions.html) - SAP