この記事は SAP Advent Calendar 2022 の12月4日分の記事として執筆しています。

日本語のCAP情報が不足していると感じたため、本記事ではCAP初心者向けのTipsや参考情報を紹介したいと思います。

CAPについて

SAP Cloud Application Programing Modelとは、サーバサイドアプリケーションを作成するためのフレームワークであり、簡単にODataサービスを作成することができます。
Fiori ElementsやUI5の相棒として使われます。

なお、CAPはNode.jsで開発するか、Javaで開発するかを選択することができますが、本記事ではNode.jsを選択することとします。

CAPの使い方(基本)

CAPの最もオーソドックスな使い方は、HANA Cloud内のテーブルを読み書きするためのODataサービスを作成する。
ということになります。

下記の記事やチュートリアルを参考にすると良いでしょう。

https://qiita.com/tami/items/d1b69a93da14e288faf2

https://developers.sap.com/tutorials/appstudio-cap-app.html

外部APIを呼び出す

外部のOData APIを呼び出すケースも考えられます。

例えばS/4HANAの拡張アプリケーションをUI5+CAPで作成する場合には、アプリからはHANA Cloudの読み書きができるだけでは不十分で、S/4HANAのAPIも呼び出す必要があるでしょう。

下記のチュートリアルが参考になります。

https://developers.sap.com/tutorials/btp-app-ext-service-add-consumption.html

Expressを利用する

Node.jsでWebアプリケーションを作成するときに最もよく使われるフレームワークがExpressです。

そもそもCAPはExpress上で動いているのですが、素のExpressを利用したくなることがあります。

CAPの標準機能だけではどのように実装すれば良いかわからない場合があったとしても、ExpressはWeb上にサンプルコードや参考情報が非常に多く、大抵のことはできるようになるでしょう。

例えばエクセルやCSVをアップロードして、サーバ側で処理してDBに格納するなどもExpressであれば簡単です。

Expressを利用するには、server.jsという名前でファイル作成し、srv直下に置くだけで利用できます。

中身は下記のようにして下さい。

https://<ホスト名>/endpoint や https://<ホスト名>/endpoint2にブラウザでアクセスすると、Expressのルーティングが有効になっていることを確認できます。

もちろん、server.jsのソースコード上部で必要なモジュールをどんどんrequireし、様々なNode.js向けのモジュール(ライブラリ)を活用した複雑な処理を実装することが可能です。

const cds = require('@sap/cds');

cds.on('bootstrap', app => {

	app.post('/endpoint', function(req, res, next) {
		// express handler logic here.
		res.status(202).send("OK");
	});

	app.get('/endpoint', function(req, res, next) {
		// express handler logic here.
		res.status(202).send("OK");
	});

	app.get('/endpoint2', function(req, res, next) {
		// express handler logic here.
		res.send("OKです");
	}); 
  
});
	
module.exports = cds.server;

 

おわりに

以上、CAPのチュートリアルから少し踏み込んで、実案件で出てきそうなTipsについて紹介しました。

簡単にODataが作れて、自由度の高いサーバ(素のExpress併用)としても使えて、CAPは非常に使い勝手が良いと感じています。これまでCAPを触ったことが無い方も是非チャレンジしてみて下さい。

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x