本記事でやりたいこと
SAP S/4HANA のデータを更新できるアプリをOutsystemsで作成する
アジェンダ
・ODataの公開
・OutSystemsのAPIとして登録
・更新処理の実装
ODataの公開
方法1 API Managementの利用
こちらの過去記事を参考にODataをAPI化します
Integration Builderは使用してもいいですが、今回は使わずRestApiとして実装しようと思います
方法2 CAPアプリの作成
こちらの2つのチュートリアルを参考にS/4HANAのデータをOData化として公開するCAPアプリをBTP上で開発します
この2つのチュートリアルだけでは足りない部分もあると思いますが、気が向いたら更新します
2つの方法の比較
コスト サービス利用料
CAPアプリのほうが安くなります
API Management(IntegrationSuite)はBTPサービスの中でも高額な利用料が発生します
CAPアプリはCF環境やBASの利用くらいでIntegrationSuiteに比べると少額です(月々数千円と数十万くらいの差額)
コスト 開発コスト(工数)
API Managementのほうが安くなります
CAPはフレームワークですべての処理をコーディングする訳では無いとは言えIT知識も必要になります
基幹システムのデータをAPI化として公開する以上それなりのセキュリティ設定も必要になります
管理
API Managementのほうがよいです
資産としての管理はもちろん、APIの利用状況もモニター画面で確認できます
OutSystemsのAPIとして登録
GET METHODの追加
OutSystemsのServiceStudioの画面から
Logic>Integration>RESTと辿っていきSingleAPIを追加します
こんな感じでGET METHODを追加
On Response処理の追加
On ResponseからAPIが実行後に動く処理を実装
自動でResponseの当てはめ処理が実装されますが、今回はこれだけでOK
更新処理でGETでResponse Headerで返ってくるSet-Cookieが明示的にこの処理をいれないと出てこない場合があるための対応です
POST METHODの追加
POST処理はこんな項目をRequest Headerに設定
if-matchはODataの種別的に要らなければ不要
更新処理の実装
更新処理はこんな感じでPOSTの前のGET処理を実行する
GET処理は特に特別なことはなく認証情報など必要に応じて処理を実行
x-csrf-tokenとCookie
前のGET処理でResponseHeaderで帰ってきた値を設定
この2つはS/4HANAのセキュリティの問題で必要な設定です
S/4HANAの設定を変更することでなしにすることも可能ですがセキュリティの問題が発生するため非推奨です
If-match
こちらのブログを参考に設定
PoCなどであれば画像みたいに*でも可
参考
API Managementで更新処理を実装する場合
以下のブログを参考にAPI Managementを設定することでOutsystemsで実装したx-csrf-tokenとCookieの部分を解除することができます
しかし認証機能そのものが無くなってしまうため別途OAuth2.0認証などを追加してそれをOutsystems側で解除するなどセキュリティを担保することが必要です
HANA Cloud DBをOData化してAPI Managementに登録する
過去の類似記事