Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
takayuki_tanaka
Product and Topic Expert
Product and Topic Expert

SAP Build Process Automationにおけるアクションによる外部API呼び出し時のエラーハンドリング

 

はじめに

今日のデジタルトランスフォーメーションの時代において、効率化と自動化はビジネスの成功に不可欠です。SAP Build Process Automationは、このニーズに応える強力なツールですが、外部APIとの連携にはまだいくつか課題が存在します。そのうちの一つがアクションによる外部APIコール時のエラーハンドリングです。

下記、SAP Roadmapsにもあるように、SAPはこのエラーハンドリングの問題を解決するためのアップデートを予定しています。このアップデートにより、ユーザーはより直感的に、また効率的に外部APIとの連携を図ることができるようになると期待されています。

SAP Roadmaps

しかしアップデートが実現するまでは、RPAを組み込むことで、この問題を解決することが可能です。
この記事では、APIコールの失敗時のエラーハンドリング方法と、その回避策を深掘りしていきます。

目次

  1. プロセスにおけるアクション実行時のエラー挙動
  2. RPAを用いたエラーハンドリング

 

1. プロセスにおけるアクション実行時のエラー挙動

現在のバージョンのSAP Build Process Automationでは、アクションでエラーが発生するとその時点でプロセスの実行が停止し、エラー状態となります。

00_ERROR_Annotate.png

したがって、下図のようにアクションのアウトプットに基づいてワークフローを組んでも、アクションコンポーネント以降のプロセスが実行されることはありません。

01_invalidProcess.png

そこで登場するのが、SAP Build Process Automationのワークフロー機能と合わせて提供されているRPAの機能です。このRPAの機能ではもう少し細かい制御を現在でも行うことができます。

次の章では、このPRAを利用してアクションによるAPI呼び出しのエラーハンドリングを行い、プロセスと統合する方法の一例について、ご紹介します。

 

2. RPAを用いたエラーハンドリング

まず全体像としては、条件分岐を行う前にRPAを実行するステップを挟みます。このRPAの中でアクションプロジェクトを用いて外部APIのコールを行います。

03_validProcess_WF.png

まずRPAモジュールの中で変数 「Status」 を定義します。これは 「201/4xx」 などのHTTPステータスコードに対応するような変数だと認識してください。(もちろん厳密には後述しますが、クライアント側で変数を作成・割り当てしているだけなので実際のHTTPステータスコードとは異なります。)

RPAモジュールの中では多くのプログラミング言語と同じように 「Try - Catch」の構文を用いることが可能です。これを用いて、Errorを捕捉します。

04_RPA_createStatus.png

今回は成功した場合には、「Status」 には201、失敗した場合には「Status」に400を代入します。

05_RPA_201.png

06_RPA_400.png

そして最後に、この変数 「Status」 をRPAのアウトプット変数として設定します。これにより、アクションの実行後にプロセスからこの結果にアクセスすることができるようになります。

07_RPA_exportStatus.png

最後に、条件コンポーネントで 「Status」 の値に基づいて条件分岐をしていきます。

08_validProcess_if.png

 

まとめ

本ブログでは SAP Build Process Automationにおけるエラーハンドリング方法の一例をご紹介しました。アップデートも間もなく行われる予定ですが、もし直近で機能が必要な場合には、本ブログでご紹介した内容を試してみるのも良いかもしれません。