技術・ツール

SAP IDoc入門|システム間連携の基本フォーマットとモニタリング・S/4HANA時代の位置づけ

目次

はじめに:なぜIDocは今でも現役なのか

「IDocって古い技術でしょ?」と言われることがありますが、実際には世界中のSAPユーザーで今も毎日数十億件のIDocが流れています。SAP S/4HANA時代の今でも、企業間EDI連携・銀行連携・物流連携・倉庫システム連携・税務当局報告など、非同期で確実にデータを送受信したい場面ではIDocがほぼデファクトです。

なぜIDocが廃れないのか(why so)。理由は「非同期・順序保証・再送可能・モニタリング標準装備」という4点が業務システム間連携で必須要件であり、これらをIDocほど成熟した形で提供する仕組みが他にあまりないからです。OData APIやREST APIはリクエスト/レスポンスの同期通信が得意ですが、「失敗したら再送」「障害復旧後にまとめて取り込み」といった業務要件にはIDocのほうが圧倒的に向いています。

ではどう向き合えばよいか(so what)。「IDocは古い・新しい」ではなく「同期API」「非同期メッセージ(IDoc)」「イベント駆動」を業務特性に応じて使い分けるのが現代SAPアーキテクチャの基本姿勢です。本記事ではIDocの基本概念、構造、モニタリング、S/4HANA時代の位置づけまでを整理します。SAP全体の連携基盤についてはSAP Integration Suite入門も参照してください。

IDocとは何か

IDoc(Intermediate Document)は、SAPシステムがアプリケーションデータを構造化して外部システムや他SAPシステムとやり取りするための「中間ドキュメント」フォーマットです。ALE(Application Link Enabling)という枠組みの中で動き、IDocそのものはデータ構造、ALEは送受信を制御する仕組み、と考えると役割が整理できます。

IDocには大きく2種類あります。

種類用途
Outbound IDocSAP→外部システムへの送信
Inbound IDoc外部システム→SAPへの受信

業務的には「請求書を取引先システムに送る」「倉庫システムから入庫実績を受け取る」「銀行からの入金消込を受け取る」といった用途で使われます。

IDocの構造:3層モデル

IDocは3つの階層で構成されます。これを理解するとWE02でのデバッグが一気に楽になります。

階層名称内容
1コントロールレコード(EDIDC)送信者・受信者・IDocタイプ・メッセージタイプ・ステータス
2データレコード(EDIDD)業務データ本体。セグメント単位で階層構造を持つ
3ステータスレコード(EDIDS)各処理ステップでのステータス遷移履歴
flowchart LR
  A[コントロール
EDIDC] --> B[データ
EDIDD] B --> C[ヘッダ
セグメント] B --> D[明細
セグメント] B --> E[条件
セグメント] A --> F[ステータス
EDIDS]
凡例 構造の包含関係 [ ] テーブル/セグメント EDIDC/EDIDD/EDIDS = IDoc格納テーブル

ポイントは、データレコードが「セグメント」という単位で繰り返し可能な階層構造を持つことです。たとえば請求書IDocなら、ヘッダ1件・明細N件・条件M件、という構造を1つのIDocに収められます。なぜこうなっているか:1業務ドキュメント(請求書1枚など)を1IDocとしてまるごと運ぶことで、トランザクション境界とデータ境界を一致させ、再送時の整合性を保ちやすくするためです。

主要なIDocタイプとメッセージタイプ

IDocには「IDocタイプ(構造の型)」と「メッセージタイプ(業務の意味)」の2軸があります。同じIDocタイプを違うメッセージタイプで使い回すこともあるため、両方を理解する必要があります。

メッセージタイプ業務IDocタイプ例
ORDERS受注ORDERS05
DESADV出荷通知DELVRY07
INVOIC請求書INVOIC02
MATMAS品目マスタMATMAS05
DEBMAS顧客マスタDEBMAS07
CREMAS仕入先マスタCREMAS05
PAYEXT支払指図(銀行連携)PEXR2002
WMMBXY在庫転記WMMBID02

世界中のEDIで標準化されているメッセージタイプ(ORDERS/DESADV/INVOICなど)はEDIFACTやANSI X12といった国際標準のSAP実装になっており、取引先システムとの連携で頻繁に登場します。

ALE:IDocの送受信を制御する仕組み

ALEはIDocを「誰から」「誰に」「どのフィルタで」送るかを制御する仕組みです。代表的な要素は次の3つです。

  • 論理システム(Logical System):送信元・受信先のシステムを論理名で識別
  • パートナプロファイル(WE20):パートナごとにメッセージタイプ・処理オプション・ポートを設定
  • 配信モデル(BD64):どのシステムからどのシステムへ何を送るかの全体マップ

なぜこれらが分離されているか(why so)。実システム名を直接コーディングしてしまうと、テスト→本番の移送時にすべて書き換えが必要になるからです。論理システム名で抽象化することで、環境ごとの差異を設定だけで吸収できます。論理システム→物理システムのマッピングを正しく設計することが、IDoc運用の安定性を決める最大のポイントです。

IDocのモニタリングとリカバリ

IDocは「送りっぱなしで終わらない」ことが最大の強みです。標準で多数のモニタリング画面が用意されています。

Tコード用途
WE02IDoc一覧表示(最頻出)
WE05IDoc一覧(旧版)
WE19テストツール/既存IDocのコピー&編集
BD87ステータスモニタ/再処理
WE60IDocタイプの構造表示
WE21ポート定義
WE20パートナプロファイル設定
SM58tRFCキューモニタ(IDoc送信失敗時の確認)

主要ステータス番号

IDocステータスは2桁の数字で表されます。覚えておくと運用が楽になります。

  • 03:通信OK(送信成功)
  • 12:処理OK
  • 16:機能モジュールが見つからない
  • 26:構文エラー(送信側)
  • 29:ALEサービスエラー
  • 51:アプリケーション処理エラー(インバウンド)
  • 53:処理OK(インバウンド)
  • 64:処理待ち(インバウンド)
  • 68:エラーで中止

特に51は実務でもっとも頻出するエラーで、「IDocは届いたがアプリケーション側で業務エラーが出た」という状態を表します。WE02で開いて、ステータスレコードのエラーメッセージを読むのが復旧の第一歩です。

リカバリの流れ

flowchart LR
  A[エラー検知
BD87] --> B[原因分析
WE02] B --> C{修正方法} C -->|データ修正| D[WE19で
編集再投入] C -->|マスタ修正| E[マスタ修正後
BD87再処理] C -->|プログラム
修正| F[修正後
再処理]
凡例 リカバリ手順 { } 判定分岐 [ ] 操作

なぜ標準でここまで揃っているか。業務システム間連携の大半の障害は「データ不備」「マスタ不整合」「プログラムバグ」のいずれかであり、IDocを再送可能に設計しておけば運用担当者がコードを書かずに復旧できるからです。

S/4HANA時代の位置づけ

「S/4HANAでIDocはどうなる?」という質問はよく出ますが、答えは「現役のまま、しかし新規連携は他の選択肢と比較する」です。

S/4HANAではIDocに加え、以下の選択肢が整備されています。

方式主な用途IDocとの違い
OData / REST API同期型のリクエスト/レスポンスリアルタイム性が高い、再送機構は呼び出し側責任
Event Meshイベント駆動の非同期通知1対多の配信が容易、ペイロードは軽量
CPI / Integration Suite統合フローIDocも扱えるし、他フォーマットへの変換も可能
SOAP Web Service同期/非同期Web ServiceXML中心、IDocより自由度が高い

なぜIDocが残るか。「順序保証・再送・モニタリング標準装備」を必要とする業務要件は今後も消えないからです。新規プロジェクトでも、銀行・税務当局・大手取引先との連携ではIDocが選ばれることが多く、近年はIDocをIntegration Suiteに通して外部にREST APIとして公開する「IDoc延命型ハイブリッド構成」も一般的になっています。

現場で頻出するアドオン事例

事例1:エラーIDocの自動アラートメール

WE02で毎朝担当者がチェックする運用は破綻しがちです。日次バッチでステータス51/68のIDocを抽出し、自動でメール通知するアドオンは定番です。

事例2:IDoc処理の優先度キュー

特定のメッセージタイプ(請求書など)を優先的に処理したい場合、tRFC設定だけでは不十分なことがあり、BAdIで優先度キューを実装することがあります。

事例3:IDocのアーカイブ運用

IDocは大量に発生するためEDIDC/EDIDDテーブルが肥大化します。標準のアーカイブオブジェクト(IDOC)を使った定期アーカイブをジョブで自動化するアドオンが必要です。

事例4:IDocからAPIへの段階移行

新規取引先はAPIで連携、既存取引先はIDocのまま、という共存運用を支援するため、Integration Suiteを介したフォーマット変換アドオンを構築します。

事例5:監査向けIDocトレーサビリティレポート

特定取引先・期間のIDoc送受信履歴を監査向けに出力するレポート。CDSビューとFioriで構築するのが現代的です。

よくある疑問(FAQ)

Q. IDocとREST APIはどちらを選ぶべきですか? A. リアルタイム参照ならREST API、確実な配信と再送が必要ならIDocです。両者は競合ではなく補完関係です。

Q. IDocは外部システムが受け取れる形式ですか? A. SAP固有のXMLフォーマットです。EDIFACTやXML/JSONなど標準形式に変換するにはIntegration SuiteやSEEBURGER等の変換ツールを通します。

Q. ステータス03で止まったIDocはどう確認しますか? A. SM58でtRFCキューを確認します。通信エラーで止まっていることが多く、ネットワークかRFCコネクションの問題です。

Q. IDocの構造を変更できますか? A. 標準IDocタイプの拡張はZ拡張セグメント(CIMTYPE)で行います。標準セグメントに直接カスタム項目を追加するのはNGです。

Q. S/4HANA Public Cloudでも使えますか? A. 使えますが、扱えるIDocタイプとカスタマイズの自由度は制限されます。外部連携はIntegration Suite経由が推奨されます。詳しくはPublic vs Private比較も参照してください。

まとめ

  • IDocはSAPの非同期メッセージング基盤で、ALEと組み合わせて送受信を制御する
  • 構造は「コントロール/データ/ステータス」の3層、データはセグメント階層を持つ
  • 主要メッセージタイプ(ORDERS/DESADV/INVOICなど)は国際EDI標準に対応
  • WE02・BD87・WE19が運用三種の神器、ステータス51の意味を覚えると復旧が早い
  • S/4HANA時代でも現役、特に銀行・税務・大手取引先連携で第一選択
  • 新規プロジェクトでは同期API・イベント・IDocを業務特性で使い分けるのが定石
  • アドオンはアラート・優先度・アーカイブ・トレーサビリティ等、運用品質の底上げに使う

IDocは「古い技術」ではなく、「成熟しきって動くべきところで動き続ける技術」です。新しい連携手段を検討するときも、まずIDocで実現できないかを比較対象に置くことで、無駄な作り直しを避けられます。SAP連携を扱うエンジニアにとって、IDocの読み書きは今後も必須スキルであり続けます。

IDocの先にあるモダンな連携基盤がBTP上のIntegration SuiteやEvent Meshです。BTP全体を体系的に学んでおくと、IDocと新しい連携手段の使い分けに自信が持てます。

▶ SAP BTP Training - From Basics to Advanced 全45レクチャー / 受講生18,000人超 / 評価4.3 / ※英語での受講(日本語自動字幕あり)
← SAPワークフロー入門|従来WorkflowとFlexible Workflowの違い・S/4HANA時代の選び方 SIerのSAPエンジニアからITコンサルのSAPコンサルへ|年収・働き方・キャリアの出口が変わる話 →
← 記事一覧に戻る