BeeX Tech blog

BeeXではクラウドネイティブアプリ開発、企業の基幹クラウド基盤構築、システム移行、運用保守を行っています。

SAP RAP概要

はじめに

このブログでは、SAPのABAP RestfullProgrammingModel(以下、RAP)についての概要を紹介します。「SAP RAP概要」と検索してみても、「なるほど、よくわからない」ということが多かったので本格的に学ぶ前に皆様が少しでもイメージできるようになると幸いです。
自分が検証・実装したことのあるListReport形式のアプリをベースとします。
また、こんなことできる?という一般的に気になるポイントについても触れていきます。
自分なりの表現ですので誤りもあるかと思いますがご容赦ください。

RAP(ABAP Restfull Programming Model)とは

参考
SAP Help Portal | SAP Online Help

【AIの要約より】
SAP RAPは、SAPの最新のWebベース開発フレームワークで、ABAP言語を基盤としています。
クラウド対応で拡張性の高いビジネスアプリケーションを効率的に作成することを目的としており、開発のライフサイクル全体(データモデリングからUI、API構築まで)をサポートします。

【私の解釈と所感】
SAP RAPでは、自分で作成した(または既存の)データベーステーブルをもとにCDSビューを作成し、ODataサービスとして公開します。
公開したODataサービスはUI開発や、外部システムからのAPIコールなどで利用できます。
CDSビューに対しては、ふるまい(Behavior)を定義することでデータのチェック・初期値のセット・追加機能の実装などを行うことができます。
またCDSビューに対してアノテーション(annotation)を設定しておくことで、UI生成も容易になります。
ごく単純な単一テーブルの編集などではSAP標準のキーユーザ拡張開発である「カスタムビジネスオブジェクト」で作成するほうが容易ですが、それでは対応できない場合にはRAPで開発することになると思います。
データ参照用のAPIとして公開するだけであれば、「カスタムCDSビュー」を作成することを第一に検討するとよいでしょう。

ListReport形式のアプリ概要

【用途・使用例】
・SAPに存在しないマスターデータ等を管理するアプリ
・ユーザにSAPに直接登録させない会計伝票等のデータを一時保存→承認者などによるSAPへの転記処理
・SAPに存在しないレポートを表示するアプリ
 ※カスタム分析クエリで実現できない複雑な要件のもの

【実装可能な機能例】
・登録済データの一覧表示
・データの作成・更新・削除
・登録済データをもとにデータをコピーする
・データ作成時の初期値設定
・データ保存時のデータチェック
・保存処理時に外部をコールする
・保存処理時にSAP標準データ(会計伝票、受注伝票など)を登録する
・登録済データに対しての追加機能を追加する(承認ワークフローの起動など)
・外部システムから、RAPで作成し公開したODataサービスをコールしデータを登録・更新・削除する

【イメージ】
一覧画面

個別データ画面  ※更に明細の個別データ画面へ

開発環境

【BackEnd】 ※RAP
Eclipseという無料で利用できるオープンソースの統合開発環境に、ADT(ABAP Development Tool)というアドインをインストールします。
Eclipse内で、SAP JouleやAmazonQなどのAI機能を利用することも可能です。
SAP S/4HANA Public Cloud環境に付帯するABAP環境を利用しました。

【FrontEnd】
BTP上のBusinessApplicationStudio(BAS)を利用しました。

開発順序

大まかにいうと、RAPでODataサービスを作成し、BTP(BAS)でそのODataサービスを利用してUIを生成します。

RAPの構成要素と概要

実際はGeneratorを利用して自動生成することも多いとは思いますが、RAP開発で必要なオブジェクトは多数あります。ここではその中でも主なオブジェクトについての概要を説明します。

こんなことできる?

【機能の追加(ボタンの追加)】
キーワード:action
実装先:Behavior Definition 、Behavior Definition(projection)

選択済データについての追加機能を定義できます。
UI上はボタンとして表示されます。
データ登録後に申請ボタンをクリックすることで承認ワークフローを起動するなどの処理で利用しました。

【データのコピー】
キーワード:factory action
実装先:Behavior Definition 、Behavior Definition(projection)

データの新規作成用の追加機能は、factory action として実装します。
伝票データのコピー、明細データのコピーなどで利用しました。

【データの状態によって機能を有効化/無効化する】
キーワード:features
実装先:Behavior Definition

機能の有効化/無効化はfeaturesで定義します。
データの状態によって制御を変える場合は、instanceとして定義します。
実装は「get_instance_features」メソッド内に記述します。
データのステータスによって追加したアクションの有効/無効を切替するときに利用しました。

【ユーザが権限のあるデータのみ表示する】
キーワード:Authorization Objects,Authorization Fields,AccessControlsなど
実装先:Authorization Objects,Authorization Fields,AccessControlsなど

既存の権限オブジェクト(F_BKPF_BUKなど)や独自の権限オブジェクトを元に必要なデータのみ参照できるよう定義できます。
登録するときの値チェックは、Validationロジックに別途実装が必要です。
イメージでは自分が作成したデータのみ表示するようなイメージです。

【Excelからの一括アップロード】
キーワード:xco_cp_xlsx_selection
実装先:Behavior Definition 、Behavior Definition(projection)、BAS

Excelファイルを指定するダイアログ画面などはBAS上で開発します。
ファイル情報をパラメータとして受け取った後は、RAP側でデータチェックや登録ロジックを実装します。

【SAP標準データの登録/外部APIのコール】
キーワード:BusinessObject、BAPI、API、determination
実装先:Behavior Definition

SAPが標準で提供しているBusinessObject(BO)を通して以下を実装しました。
・会計伝票のデータチェックおよび転記
・SAP BuildProcessAutomationのサービスの起動、キャンセル
データ保存時処理に組み込みすることでSAP標準データの登録ができます。

【多言語対応】
キーワード:多言語、翻訳
実装先:アプリ「翻訳の更新」、BAS(i18nファイル)

Eclipse上では多言語のテキストを登録することはできません。
新規追加したデータエレメントやメッセージなどはSAPのアプリ「翻訳の更新」から更新します。
追加したactionやfacet、タイルのタイトルなどはBAS上のファイル(i18n_en.propertiesなど)に言語別のテキストを登録します。
Page内の各オブジェクトのLabelプロパティに「{@i18n>secApprovalData}」という形式で指定します。

【作成したRAPオブジェクトのAPI公開】
キーワード:Service Definitions、Service Binding、Odata
実装先:Service Definitions、Service Binding

どのCDSビュー(projectionビュー)を公開するかを、Service Definitionsで指定します。
サービスの形式を、Service Bindingで指定します。
UI用かAPI用か、サービスのバージョンはV2かV4かなどを指定します。
BuildProcessAutomationで承認ボタンをクリックした際に、公開したODataサービスをコールしSAP会計伝票への転記を実行するなどのときに利用しました。

RAPで実装して助かったこと(便利だったこと)

実際に開発してみて感じたことは以下です。
・Generator機能である程度のところまで自動で生成できる
・データの登録・更新・削除処理が自動で実装される
・データのドラフト(一時保存)機能が自動で実装される
・親子関係のテーブルの画面遷移が自動で実装される
・同じデータに対する同時編集制御が自動で実装される
・UIが自動生成されるため、BAS側の知識が乏しくても対応可能
・BusinessObject(会計伝票登録、受注伝票登録など)が利用可能なためAPIコールより実装しやすい
・BusinessObjectにはAPIには存在しない登録前の事前データチェックロジックがあることがある
・Gitとの連携機能が標準で実装されている
・SAPのロール(および権限オブジェクト)の仕組みを利用してアプリケーションの制御を行うことができる

さいごに

このブログでは、SAP RAPについての概要を紹介しました。
SAP RAPでできることのイメージが伝われば幸いです。
BeeXではS/4HANA Public Cloud Edition向けに、会計伝票登録/承認ソリューションを提供しています。
こちらはベース技術としてSAP RAP と SAP BuildProcessAutomationを利用しています。

BeeX S/4 HANA Public Edition向け 会計伝票登録/承認ソリューション

BeeXではSAP S/4HANA Public Cloud Editionの拡張開発の取り組みを実施していますので、ご検討中のお客様は是非、お気軽に相談ください。