SAP同士でのデータ連携、あるいはSAPへのコネクタが実装されているパッケージソフトなどとのデータ連携を行う際に、「IDoc」という形式でデータ送受信を行う場合がある。
SAP内のあらゆるマスタ・伝票が標準機能内で連携できるので、欧米では主流の機能だ。個人的所感だが、日本国内はあまり活用されておらず、ファイルインタフェースが主なところではないだろうか。
IDocは階層構造を持ち、階層はそれぞれ「セグメント」として定義し、セグメント内に項目並びと階層構造を設定する。
伝票やマスタは、一つ一つがこのセグメントに格納され、一つのIDOCとして連携される。
(例:1伝票=1IDoc)
IDocは標準機能なので開発コストを抑えてシステム間連携を実装できるのでメリットばかりに思えるが、この階層構造ゆえに送受信したデータの一覧化や検索が難しいという側面もある。
(国内で普及しないのは、もしかしたらこういった「見辛さ」ゆえかもしれない)
例えば「ある伝票番号がデータ連携されたかどうか調べたい」といった場合、一覧化のためにひと工夫が必要となる。
今回はその方法について解説する。
方法を知らない場合、大量にあるIDoc番号を一つ一つ開きながら探す羽目になる。
IDocデータを一覧化・検索する方法
Tr:BD87はIDocデータ参照する上で最も一般的な画面で、IDoc番号レベルで一覧化する機能も備えている。
ただ、Tr:BD87の画面はあくまでIDoc番号レベルの一覧であり、受信日時・インポートステータス・送信元システムといった情報は一覧化されても、IDocの中身まで考慮した一覧画面は提供していない。
IDocの中身を見るには、IDoc番号を選択し、中身を開く必要がある。このとき、IDoc番号を跨いだ一覧化はできない。
セグメントの項目や階層の深さは設定により千差万別なので、当然と言えば当然なのだが、それではIDocの中身まで考慮した一覧化や検索に不便だ。
よって、以下の2つの方法を活用していくことになる。
・テーブルから一覧化(テーブル:EDID4)※検索もできる
トランザクションから一覧化(Tr:WE05)
Tr:WE05ではIDoc番号、更新時刻、相手先システムやIDoc基本タイプによりIDocを検索、一覧化できる。
一覧画面は、画面左端がツリー表示されたフォルダ(送信/受信IDoc、およびメッセ―タイプ別にフォルダがわかれている)、その他の画面部分がIDocの一覧表示領域となっている。
この画面から、IDocの中身を一覧表示したいメッセージタイプを選び、画面上部の『特定セグメント一覧』ボタンを選択する。
セグメントIDを入力する小ウインドウがポップするので、表示したい対象のセグメントIDを入力する。
・ヘッダレベルの一覧が欲しければセグメント:E1FIKPFを入力する。
・明細レベルの一覧が欲しければセグメント:E1FISEGを入力する。
するとIDocを跨いだ一覧表示が可能となる。エクセルに落とすと便利。
例えば特定の伝票番号が正常受信しているかどうかを調べる、といった場合は、送信元システムで送信した日時はだいたいわかるので、その周辺日時で検索しつつ、『特定セグメント一覧』からE1FIKPF(ヘッダレベル)を使って一覧化し、伝票番号を検索するといった手段が取れる。
テーブルから一覧化(テーブル:EDID4)※検索もできる
IDocのデータはテーブルEDID4に格納されている。
テーブル項目は以下図のような形で持っており、セグメント内の項目値は「Application データ」の項目に詰め込んである。
項目「Application データ」内には複数の項目の値が詰め込まれている。
したがって、以下のような検索方法を取る。
・例1:特定の会計伝票番号を検索した場合は、セグメントE1FIKPFを指定した上で、Applicationデータの検索値として、伝票番号の前後に「*」を入力して検索する。
・例2:特定の得意先・仕入先コードが含まれる伝票明細を検索したい場合は、セグメントE1FISEGを指定した上で、Applicationデータの検索値として、得意先・仕入先コードの前後に「*」を入力して検索する。
ただし、EDID4の検索は時間がかかるので、まずある程度対象のIDoc番号(キー情報)を絞るなどした方が良い。(Tr:WE05やTr:BD87との合わせ技になる)
また、一つの繋がりとなっている文字列として保持しているので、厳密な項目値による検索はできない(例えば伝票日付と転記日付は見分けがつかない)といった制限はある。
(関連記事)
