ブログ

【SAP Integration Suite活用事例】Concur X S/4 HANA Cloud 連携:SFTPとiFlowで業務効率化!

この記事をSNSでシェア!

はじめに

本記事では、SAP Integration Suiteを活用して、SAP ConcurとS/4HANA Cloud(S4HC)間の連携を実現した事例をご紹介します。SFTP連携とiFlow(Integration Flow)を活用した実装の流れ、技術的な工夫点、そして開発のポイントを整理します。経費精算とマスタデータの双方向連携により、業務効率化と内部統制の強化をどのように図ったのかを具体的に解説します。

SAP Integration Suiteとは

SAP Integration Suiteは、SAPが提供するクラウドベースの統合プラットフォーム(iPaaS)です。
API管理、データ統合、B2B統合など多様な機能を備え、SAP製品間はもちろん、さまざまな外部システムとのシームレスな接続を可能にします。

SAP Concurとは

SAP Concurは、出張・経費管理に特化したクラウドサービスです。申請・承認から会計連携までを一元管理し、ガバナンス強化、不正防止、業務効率化を通じて企業の経費管理改革を支援します。

iFlowの概要:S/4HANA CloudとConcurの双方向連携

今回構築したiFlowは、S4HCとConcur間をSFTP経由で連携する双方向フローで構成されています。連携の詳細は、マスタデータを送る「アウトバウンド」と、実績データを受け取る「インバウンド」に分けて解説します。

A. アウトバウンド(S4HC → Concur:マスタ連携)

1. マスタデータ取得

S4HCの主要なマスタデータをAPI経由で取得し、Concur側へファイル連携するフローです。

  • WBS要素(プロジェクト)
  • 原価センタ(組織)
  • BPマスタ(支払先)

2. ユーザ情報取得

  • 連携に必要なユーザー情報は、IAS(Identity Authentication Service)から取得します。

3. データ加工

  • Concurのファイルフォーマット要件に合わせ、マッピングやデータ変換処理を実施します。

4. セキュリティ処理

  • PGP暗号化を実施し、セキュアなファイル転送を確保します。

5. ファイル送信

  • 暗号化されたデータをConcur側のSFTPサーバへ送信します。


B. インバウンド(Concur → S4HC:費用実績連携)

1. データ取得

  • ConcurのSFTPサーバから、費用実績データファイルを取得します。

2. 詳細データ取得・加工

  • S4HC内の補足データ(勘定コード、税計算方法詳細など)を取得し、内税の税計算を実施。
  • iFlow内でこれらをマージし、登録用のデータ形式に変換します。

3. 仕訳連携

  • 最終データをSOAPプロトコルを使用してS4HCへ送信し、仕訳伝票として登録します。

開発上の工夫・課題と対処

■ ローコード開発の柔軟性を高めるGroovyスクリプトの併用

SAP Integration Suiteは視覚的なローコード開発が基本であり、開発しやすく保守性も高いのが利点です。しかし、複雑な業務ロジックや特定の例外処理には、ローコードだけでは対応が難しいケースがあります。そこで本プロジェクトでは、Groovyスクリプトを併用することで、柔軟性を確保しました。

【対応事例】ファイル存在チェックによるPGPエラーの確実な回避

ConcurのSFTPからファイルを取得後、PGP暗号化を行う際、ファイルが存在しないと暗号化ステップでフローがエラー停止するという問題がありました。安定稼働のため、PGP暗号化処理の直前にGroovyスクリプトで以下の通りファイル存在チェックを実装し、エラーを事前回避する仕組みを構築しました。

1. Groovyスクリプトにてファイル存在を確認

InputStreamを取得してボディの有無を確認し、その結果をプロパティに格納します。

FileCheck.groovy
// Groovy スクリプトの例 
import com.sap.gateway.ip.core.customdev.util.Message;

def Message processData(Message message) {
    // BodyをInputStreamで取得
    def body = message.getBody(java.io.InputStream);
    // 変数を取得
    message.setProperty('EmptyPayload', body == null);
    return message;
}

2. Router(分岐)を追加

スクリプトの後にRouterを追加し、Groovyで設定したプロパティの値に基づいて処理を分岐させます。これにより、ペイロード(ファイル)がない場合は後続処理をスキップし、エラーを防ぎます。

■ 課題:ローコード開発における詳細設計書の作成方法

iFlow開発では、Javaなどのプロコード開発と異なり、「詳細設計書をどう作るか」が大きな課題となります。

SAP Integration SuiteはGUIベースのローコード開発のため、処理ロジックが画面設定やプロパティに分散しがちです。また、iFlowの動作理解には、プラットフォームの知識に加え、SAP特有の構成に関する知見も求められます。このため、従来の「ソースコードをベースとした詳細設計書」をそのまま適用することは困難です。

プロジェクトでは、主に以下の課題意識が生まれました。

  • GUIベースの設定を、どのように設計書として明確に表現するか?
  • 画面キャプチャだけで、仕様を十分に伝えられるのか?
  • マッピングや動的な処理条件を、どのように文書化するのか?

ローコード開発の運用効率と属人性を排除するためには、現時点の課題を整理し、新しい設計書のあり方や補完的なドキュメント手法の確立が不可欠であると考えています。

おわりに

本記事では、SAP Integration Suiteを活用した、SAP ConcurとS/4HANA CloudのSFTP連携事例をご紹介しました。

ファイル連携を含むiFlow開発では、ローコードの利点を最大限に活かしつつも、Groovyスクリプトによる柔軟性の確保や、PGP暗号化・ファイル存在チェックによる安定性の担保など、実運用に耐えるための現場の工夫が不可欠となります。

また、設計・運用設計においては、ローコードに適した「プロセス単位での情報整理」が、見通しの良い開発と保守の鍵となります。

これからiFlow開発をご検討されている方々にとって、本事例が具体的な参考となれば幸いです。

投稿者プロフィール

Miho D.B.
Miho D.B.
2023年度入社。Java系や内部管理会計開発などを経て、現在ではSAP BTP/Fioriの開発案件に携わっています。
この記事をSNSでシェア!