調達から支払いまで:請求書処理のデータテンプレート
調達から支払いまで:請求書処理のデータテンプレート
- 収集を推奨する属性
- 追跡すべき主要なアクティビティ
- SAP ECCからの抽出方法
調達から支払いまで:請求書処理の属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ Activity | 請求書処理のライフサイクル中に発生した、特定の業務ステップまたはイベントの名称です。 | ||
| 説明 Activity属性は、請求書処理ワークフロー内の個別の段階またはアクションを表します。これらのアクティビティは、伝票の作成、ステータス変更、承認、SAPの変更ログに記録されたユーザー操作など、さまざまなシステムイベントから導出されます。 アクティビティの分析は、プロセスマイニングの中核です。プロセスマップの可視化、ボトルネック(例:「Invoice Sent For Approval」の後の長い待ち時間)の特定、手戻りループ(例:「Payment Block Set」と「Payment Block Released」の繰り返し)、コンプライアンス違反の検出が可能になります。アクティビティの順序と頻度から、実際の現行プロセスの流れが明らかになります。 重要な理由 プロセスマップ上のステップを定義し、プロセスフローの可視化、ボトルネックの発見、手戻りの特定を可能にします。 入手先 通常は、トランザクションコード(SY-TCODE)、RBKPなどのテーブルにあるステータスフィールド(例:RBSTAT)、CDHDRおよびCDPOSテーブルの変更イベントなど、複数の情報源から導出されます。 例 請求書を仮保存請求書を承認に回付請求書を承認請求書を転記請求書を消込 | |||
| イベント時刻 EventTime | アクティビティが発生した日時を示す正確なタイムスタンプです。 | ||
| 説明 Event Timeは、業務アクティビティが実行され、ソースシステムに記録された正確な時点を記録します。このタイムスタンプはプロセスの時系列を支える基盤であり、各請求書のアクティビティを一貫した順序に並べます。 分析では、Event Timeがアクティビティ間のサイクルタイム、待ち時間、処理時間など、時間に基づくすべての指標の計算に欠かせません。「Invoice End-to-End Cycle Time」や「Payment Block Resolution Duration」などのダッシュボードでは、プロセス上の任意の2地点間の経過時間を測定するために必要なデータを提供します。遅延やパフォーマンス上のボトルネックを特定するには、正確なタイムスタンプが欠かせません。 重要な理由 イベントを正しい順序に並べ、サイクルタイムやボトルネックの継続時間など、すべてのパフォーマンス指標を計算するために欠かせません。 入手先 通常は、変更文書ヘッダーテーブルCDHDRの変更日(UDATE)と変更時刻(UTIME)を組み合わせて導出します。特定の作成イベントでは、RBKPなどのテーブルにある作成日と作成時刻(ERNAM、ERZET)が使われる場合があります。 例 2023-03-15T10:30:00Z2023-03-16T14:05:21Z2023-03-28T09:00:00Z | |||
| 請求書番号 InvoiceNumber | 仕入先請求書文書を一意に識別する番号です。 | ||
| 説明 請求書番号は、請求書処理の一連の流れを追跡するための一意のケース識別子です。各番号は仕入先から受領した1件の請求書に対応し、データ取得から最終支払いまで、関連するすべてのアクティビティを1つのプロセスインスタンスとして追跡できます。 プロセスマイニング分析では、この属性がすべての請求書のライフサイクルを再構成する基盤となります。SAPに記録された仮保存、転記、ブロック、消込などの個別のイベントを、時系列に結び付けることができます。これにより、各請求書がどのように処理されたか、どのくらい時間がかかったか、標準プロセスからどこで逸脱したかを明確に把握できます。 重要な理由 1件の請求書に関連するすべてのイベントを結び付ける主キーであり、プロセス分析とバリアント探索の基盤となります。 入手先 通常は、SAPテーブルRBKPのBELNRフィールドにある文書番号を使用します。完全に一意にするため、会社コード(BUKRS)と会計年度(GJAHR)を連結することもあります。 例 510004567851000456795100045680 | |||
| ユーザー名 UserName | アクティビティを実行した担当者のSAPユーザーIDです。 | ||
| 説明 User Name属性は、プロセス内の特定のアクティビティを実行した担当者を識別します。通常は、トランザクションまたは変更イベントとともに記録されたSAPユーザー名です。 この属性は、ユーザーまたはチーム単位のパフォーマンス分析に欠かせません。「最も承認が速い担当者は誰か」「最も多く手戻りを発生させているユーザーは誰か」といった問いに答えられます。ダッシュボードでは、業務量の分布、トレーニングの必要性、従業員間のパフォーマンス差を分析するために使われます。 重要な理由 個人またはチーム単位でパフォーマンスと業務量を分析でき、優れたパフォーマンスを上げている担当者、トレーニングの機会、リソースの偏りを特定できます。 入手先 変更文書ヘッダーテーブルCDHDRの「Changed By」フィールド(USERNAME)です。作成イベントでは、RBKPなどのテーブルにある「Entered by」フィールド(ERNAM)が使われる場合があります。 例 JSMITHBWILSONCHEN | |||
| 仕入先番号 VendorNumber | 請求書を提出した仕入先またはサプライヤーを一意に識別する番号です。 | ||
| 説明 Vendor Numberは、仕入先を識別するマスターデータのキーです。請求書取引を特定のビジネスパートナーに関連付け、仕入先の特性に基づく分析を可能にします。 Vendor Numberでプロセスを分析すると、仕入先との関係やパフォーマンスに関する重要な傾向が見えてきます。たとえば、支払ブロックや不一致につながる問題のある請求書を繰り返し提出する仕入先や、最も効率よく処理される仕入先の請求書を特定できます。この情報は、仕入先管理や戦略的ソーシングの取り組みに役立ちます。 重要な理由 仕入先単位の分析を可能にし、特定のサプライヤーに関連する傾向、問題、効率性を特定できます。 入手先 請求書伝票ヘッダーテーブルRBKPの「Invoicing Party」フィールド(LIFNR)です。 例 100345100876200112 | |||
| 支払ブロック理由 PaymentBlockReason | 請求書が支払い対象からブロックされた理由を示すコードです。 | ||
| 説明 請求書に不一致がある場合や、追加調査が必要な場合は、支払ブロックが設定されます。Payment Block Reasonコードは、数量差異、価格差異、手動ブロックなど、ブロックの理由を示します。 「Payment Block Resolution Duration」ダッシュボードに欠かせません。理由別にブロックの頻度と継続時間を分析すると、支払遅延の根本原因を特定できます。たとえば、「Price Discrepancy」が長期ブロックの主な理由であれば、マスターデータや購買発注プロセスに対処すべき問題がある可能性を示します。 重要な理由 請求書が遅延した理由を明らかにし、支払ブロックの根本原因分析と、プロセス改善施策の優先順位付けに役立ちます。 入手先 支払ブロック理由は、RSEGテーブルの明細レベル(フィールドSPGRS)または会計伝票テーブルBSEG(フィールドZLSPR)で確認できます。 例 RIM | |||
| 支払期日 PaymentDueDate | 支払条件に基づき、請求書の支払いを仕入先に行う期限です。 | ||
| 説明 Payment Due Dateは、請求書の基準日と合意済みの支払条件に基づいて計算されます。支払いの遅延や、それによる違約金の発生、仕入先との関係悪化を避けるための期限です。 「On-Time Payment Rate」や「Cash Discount Opportunity Loss」などのパフォーマンスおよびコンプライアンスKPIに欠かせません。実際の支払日(Clearing Date)とPayment Due Dateを比較することで、支払いが期日どおり、早期、または遅延だったかを自動的に判定できます。Payment Terms Adherenceダッシュボードの基盤となる属性です。 重要な理由 期日どおりの支払パフォーマンスを測定し、早期支払割引を獲得できる機会を特定するための基準になります。 入手先 この日付は計算されることが多く、支払基準日(ZFBDT)はBSEGテーブルにあります。期日のロジックは、支払条件(BSEG-ZTERM)にも依存します。 例 2023-04-192023-05-052023-05-11 | |||
| 消込日 ClearingDate | 支払いが行われ、買掛金から請求書が消し込まれた日付です。 | ||
| 説明 Clearing Dateは、請求書ライフサイクルの最終ステップである支払いを示します。システム上で支払伝票によって未消込の請求明細が消し込まれた日付です。実際に支払いが実行された時点を表します。 「Average Invoice Cycle Time」や「On-Time Payment Rate」など、多くの重要なKPIの終点になります。Payment Due Dateと比較して支払パフォーマンスを測定します。現金割引の分析では、割引期間と比較し、割引を獲得できる期限内に支払われたかを確認します。 重要な理由 プロセスの完了を示し、総サイクルタイム、期日どおりの支払率、現金割引の獲得額を計算する基準になります。 入手先 消込済み明細では、消込済み仕入先明細テーブルBSAKの「Clearing Date」フィールド(AUGDT)です。 例 2023-04-152023-05-022023-05-20 | |||
| 請求書金額 InvoiceAmount | 原文書の通貨で示した請求書の総額です。 | ||
| 説明 Invoice Amountは、仕入先が提出した請求書の総額を表します。各請求書ケースにおける重要な財務指標です。 プロセスマイニングでは、金額に基づく分析に欠かせません。請求書金額でプロセスをフィルタリングまたは分類でき、金額はプロセスの複雑さや承認要件と相関することがよくあります。たとえば、高額な請求書には、より厳格な別の承認経路が設定されている場合があります。また、高額請求書が必要な承認ステップを省略していないかを確認するなど、コンプライアンス分析にも使われます。 重要な理由 金額に基づく分析を可能にし、高額請求書の優先順位付けや、請求書金額がプロセスフローとコンプライアンスに与える影響の把握に役立ちます。 入手先 請求書伝票ヘッダーテーブルRBKPの「Gross invoice amount」フィールド(RMWWR)です。 例 1500.7512500.00850.20 | |||
| 購買発注番号 PurchaseOrderNumber | 請求書との照合対象となる購買発注(PO)の識別子です。 | ||
| 説明 Purchase Order Numberは、請求書を元の調達伝票に関連付けます。PO、入庫、請求書による三者照合や、POに基づく請求書処理の効率を分析するうえで基本となる属性です。 「Invoice-PO Matching Discrepancy Rate」などのダッシュボードに欠かせません。プロセスをPO請求書と非PO請求書に分けて分析できます。両者は処理経路や複雑さが大きく異なることがよくあります。特定のPOに関する問題を分析すれば、調達プロセスの上流にある問題の原因を特定できます。 重要な理由 請求書を調達プロセスに関連付け、PO請求書と非PO請求書の分析や、照合不一致の特定を可能にします。 入手先 通常は明細レベルにあります。「Purchase Order Number」(EBELN)は請求書明細テーブルRSEGに記録されます。ヘッダーレベルに集約する必要がある場合があります。 例 450001756345000175644500017565 | |||
| 転記日 PostingDate | 請求書が正式に財務元帳へ転記された日付です。 | ||
| 説明 Posting Dateは、会計プロセスにおける重要な日付です。請求書費用を総勘定元帳で認識する会計期間を決定します。通常は、請求書処理中に買掛金担当者が設定します。 プロセス分析では、この日付が示す「Invoice Posted」アクティビティが主要なマイルストーンになります。請求書の受領からPosting Dateまでの期間は、全体のサイクルタイムを構成する重要な要素です。また、週または月ごとの転記済み請求書数を追跡するなど、財務報告や処理量分析にも欠かせません。 重要な理由 プロセス上の重要なマイルストーンを示し、取引の会計期間を決定するとともに、サイクルタイム計算の主要な要素になります。 入手先 請求書伝票ヘッダーテーブルRBKPの「Posting Date」フィールド(BUDAT)です。 例 2023-03-202023-04-052023-04-11 | |||
| ソースシステム SourceSystem | データの抽出元となった特定のソースシステムを識別します。 | ||
| 説明 Source System属性は、イベントデータの発生元を示します。たとえば、特定のSAP ECCインスタンス名などです。複数のERPシステムを利用している環境や、異なる情報源のデータを統合する環境では、特に重要です。 分析では、この属性によって、別々のインスタンスで稼働している可能性がある複数のシステム、地域、事業部門間で、プロセスとパフォーマンスを区別できます。データの系譜を明確にし、システム単位のフィルタリングと分析を可能にします。 重要な理由 複数システムが存在する環境で重要なコンテキストを提供し、適切なデータ分離とシステム単位のパフォーマンス分析を可能にします。 入手先 通常は、データ抽出時に追加される固定値です。SAP System ID(TADIR-SRCSYSTEM)または特定のSAPインスタンスに手動で割り当てた識別子を表します。 例 SAPECC_PROD_EUECC_US_FINSAP_ERP_6_EHP8 | |||
| 会社コード CompanyCode | 請求書が処理される法人または会社を識別する番号です。 | ||
| 説明 Company Codeは、SAP Financialsにおける基本的な組織単位で、独立した法人を表します。請求書を含むすべての財務取引は、特定の会社コードに転記されます。 この属性により、法人単位でプロセスを分けて分析できます。企業グループ内の各社について、プロセスのパフォーマンス、コンプライアンス、効率を比較するうえで欠かせません。ダッシュボードをCompany Codeでフィルタリングすれば、会社ごとの請求書処理KPIを確認できます。 重要な理由 組織内の異なる法人間でプロセスを比較し、パフォーマンスをベンチマークできます。 入手先 請求書伝票ヘッダーテーブルRBKPの「Company Code」フィールド(BUKRS)です。 例 10002000US01 | |||
| 伝票タイプ DocumentType | 会計伝票を、仕入先請求書やクレジットメモなどに分類するコードです。 | ||
| 説明 Document Typeは、SAPでさまざまな業務取引を分類するために使われます。請求書処理では、標準請求書を示す「RE」や、仕入先クレジットメモを示す「KG」などが一般的です。伝票タイプは、使用する番号範囲など、転記に関する設定を制御します。 分析では、この属性によって特定の取引タイプに絞ってプロセスを確認できます。たとえば、クレジットメモの処理は標準請求書とは大きく異なる場合があります。Document Typeでフローを分けることで、より正確で意味のあるプロセスビューを作成できます。 重要な理由 請求書とクレジットメモなど、異なるプロセスに従う業務取引を分けて分析できます。 入手先 請求書伝票ヘッダーテーブルRBKPの「Document Type」フィールド(BLART)です。 例 REKRKG | |||
| 最終データ更新日時 LastDataUpdate | ソースシステムからプロセスのデータが最後に更新された日時を示すタイムスタンプです。 | ||
| 説明 最新のデータ抽出または更新が行われた日時を記録します。個々のイベントではなくデータセット全体に適用され、データがいつ時点のものかを明確に示します。 これは、ダッシュボードの利用者や分析担当者にとって重要なメタデータ属性です。分析対象の期間を把握し、最新の情報に基づいて意思決定できるようにします。通常はダッシュボード上に目立つ形で表示され、データの更新状況を知らせます。 重要な理由 データの更新状況を利用者に知らせ、分析や意思決定が最新の情報に基づいて行われるようにします。 入手先 データ更新時に、データ抽出ツールまたはETLツールがこの値を生成し、データセットに追加します。 例 2024-05-20T08:00:00Z2024-05-21T08:00:00Z2024-05-22T08:00:00Z | |||
| 却下理由 RejectionReason | 承認ワークフロー中に請求書が却下された理由を説明するコードまたはテキストです。 | ||
| 説明 承認者が請求書を却下する際は、通常、理由を記載します。「Incorrect PO number」「Duplicate Invoice」「Amount incorrect」などの問題を示す標準コードまたは自由記述のコメントです。 このデータは「Invoice Rejection Reasons & Trends」ダッシュボードに欠かせません。却下理由ごとの頻度を分析すると、よくある問題を特定し、是正措置を講じられます。たとえば、「Incorrect PO number」が頻発する場合、仕入先とのコミュニケーション改善やデータ入力担当者へのトレーニングが必要な可能性があります。この分析は、プロセスの手戻り削減に重要です。 重要な理由 却下の根本原因を明らかにし、手戻りを減らして初回正解率を高めるための、対象を絞ったプロセス改善を可能にします。 入手先 この情報は、単一の標準フィールドに保存されていないことがよくあります。ワークフローコンテナーログ、伝票に関連付けられた長文テキストフィールド、またはカスタムワークフローソリューションの専用フィールドに記録されている場合があります。 例 DUPLICATE_INVWRONG_AMTNO_PO_MATCH | |||
| 支払条件 PaymentTerms | 仕入先と合意した支払条件を定義するコードです。割引期間や支払期日などを示します。 | ||
| 説明 Payment Termsは、請求書の支払期限と、早期支払いで利用できる現金割引の有無や条件を定義します。たとえば「Net 30 days」は30日以内の全額支払いを意味し、「2% 10, Net 30」は10日以内なら2%割引、そうでなければ30日以内に全額支払うことを意味します。 「Cash Discount Opportunity Loss」ダッシュボードと「Cash Discount Capture Rate」KPIの基盤となる属性です。分析では、支払条件を転記日や支払日と組み合わせ、割引が利用可能だったか、実際に適用できたかを判定します。Payment Terms Adherenceダッシュボードにも欠かせません。 重要な理由 現金割引の獲得率を分析し、プロセス遅延が財務に与える影響を把握するために欠かせません。 入手先 請求書伝票ヘッダーテーブルRBKPの「Terms of Payment Key」フィールド(ZTERM)です。 例 Z0010001NT30 | |||
| 期限超過フラグ IsOverdue | 請求書が支払期日を過ぎて支払われたかどうかを示す計算済みフラグです。 | ||
| 説明 「Clearing Date」(実際の支払日)と「Payment Due Date」を比較して計算するブール型属性です。消込日が支払期日より後であればtrue、そうでなければfalseになります。各請求書の期日どおりの支払パフォーマンスを、簡潔かつ直接的に測定できます。 この属性により、ダッシュボードでの分析と可視化が簡単になります。フィルタリングや集計によって「On-Time Payment Rate」KPIを容易に計算できます。期限超過の請求書と期日どおりに支払われた請求書のプロセスフローを比較し、支払遅延につながるプロセスの傾向を明らかにできます。 重要な理由 期日どおりの支払パフォーマンスを簡単に分析し、期日どおりの請求書と遅延した請求書のプロセスを比較できます。 入手先 SAPには存在しません。データ変換時に、次の式で計算されます:ClearingDate > PaymentDueDate。 例 truefalse | |||
| 現金割引失効フラグ IsCashDiscountLost | 利用可能だった現金割引を逃したかどうかを示す計算済みフラグです。 | ||
| 説明 支払条件と実際の支払日に基づいて計算するブール型属性です。Payment Termsに早期支払割引が設定されており、Clearing Dateが割引期間の終了後であればtrueになります。プロセスの非効率による財務上の損失を直接測定できます。 この属性は「Cash Discount Opportunity Loss」ダッシュボードの基盤です。処理遅延による財務的影響を簡単に定量化できます。このフラグがtrueのケースに絞り込むことで、割引の取り逃しにつながるプロセスバリアントやボトルネックを調査でき、プロセス改善の必要性を示す明確な根拠になります。 重要な理由 プロセス遅延による財務上の損失を直接定量化し、請求書処理ワークフローを最適化する明確な根拠を示します。 入手先 SAPには存在しません。データ変換時に「PaymentTerms」を解釈し、「ClearingDate」と割引期日を比較して計算されます。 例 truefalse | |||
| 終了時刻 EndTime | アクティビティが完了した日時を示すタイムスタンプです。瞬時に発生するイベントでは、Start Timeと同じ値になります。 | ||
| 説明 End Time属性は、特定のアクティビティが完了した時点を示します。SAPの多くのイベントは時点として記録されるため、End TimeはStart Timeと同じになります。一方、実際の作業を伴う承認ステップなど、測定可能な継続時間を持つアクティビティでは、その作業の完了時点を表します。 プロセス分析で個別のEnd Timeを設定すると、アクティビティの処理時間を、その前に発生する待ち時間と分けて測定できます。これにより、アクティビティの実行にかかった時間と、開始を待っていた時間を区別でき、リソース効率をより深く把握できます。 重要な理由 アクティビティの処理時間を計算し、アクティビティ間の待ち時間と区別できるため、ボトルネック分析の精度が向上します。 入手先 Start Timeと同じ値になることが多く、CDHDR-UDATEとCDHDR-UTIMEから導出されます。場合によっては、タスクの開始と終了を明示的に記録するワークフローログから導出します。 例 2023-03-15T10:35:10Z2023-03-16T14:10:00Z2023-03-28T09:02:45Z | |||
| 総勘定元帳勘定 GeneralLedgerAccount | 請求書の費用または原価が転記される総勘定元帳勘定番号です。 | ||
| 説明 General Ledger(G/L)Accountは、勘定コード表の中で請求書の財務的影響を記録する勘定科目です。財務報告と原価管理に欠かせないデータです。 プロセスマイニングでは、G/L勘定を分析することで、プロセスフローに財務の観点を加えられます。「General Ledger Account Usage Analysis」ダッシュボードでは、支出の傾向、請求書の勘定誤りの可能性、原価が正しい部門やプロジェクトに配賦されているかを確認できます。プロセスの実行と財務的影響を結び付けるのに役立ちます。 重要な理由 プロセスに財務の観点を加え、原価配賦、支出傾向、請求書の勘定誤りの可能性を分析できます。 入手先 明細レベルにあります。「G/L Account Number」(HKONT)は、PO請求書では請求書明細テーブルRSEGに、直接FI請求書ではBSEGに記録されます。 例 630000655100741000 | |||
| 通貨 Currency | 請求書金額の通貨コードです。 | ||
| 説明 Currency属性は、請求書金額の通貨を示します。たとえば、USD、EUR、JPYなどです。 この属性はInvoice Amountを解釈するために欠かせないコンテキストを提供します。複数の通貨を扱うグローバルな組織では、財務データを正しく解釈・集計できます。通貨で分析をフィルタリングし、異なる通貨圏の処理効率や問題を比較できます。財務データを意味のある形で集計するには、単一の報告通貨への換算が必要になる場合があります。 重要な理由 財務金額を正しく解釈するために必要なコンテキストを提供し、通貨に基づくフィルタリングと分析を可能にします。 入手先 請求書伝票ヘッダーテーブルRBKPの「Currency Key」フィールド(WAERS)です。 例 USDEURGBP | |||
調達から支払いまで:請求書処理のアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| 支払いブロックを設定 | 請求書の明細項目にブロックが設定され、支払いができなくなった時点で発生します。3点照合の不一致により自動的に設定される場合や、さまざまな理由で手動設定される場合があります。 | ||
| 重要な理由 このイベントは、支払いブロック解消までの時間を測定し、支払い遅延の根本原因を特定するうえで重要です。価格、数量、必要な承認に関する問題を明らかにします。 入手先 BSEGテーブルのZLSPRフィールド(支払いブロックキー)について、変更文書ログ(CDHDRおよびCDPOS)から追跡できる明示的なイベントです。 取得 BSEG-ZLSPRの値が空白から空白以外に変わった時点の変更文書(CDHDR)のタイムスタンプです。 イベントタイプ explicit | |||
| 請求書データを取得 | SAPで請求書文書が最初に作成されたことを示します。請求書は仮保存文書または転記済み文書として作成されます。通常、請求書のライフサイクルでシステムに記録される最初のイベントであり、プロセスの開始時刻となります。 | ||
| 重要な理由 このアクティビティは、請求書処理のエンドツーエンドのサイクルタイムを測定する際の主な開始点です。この時点からの所要時間を分析することで、初期データ入力や文書作成の段階における遅延を特定できます。 入手先 作成時刻は、SAPテーブルBKPFのCPUDTフィールド(会計文書入力日)とCPUTMフィールド(入力時刻)に記録されます。 取得 BKPFテーブルのヘッダーにある文書作成時刻(CPUDT)を使用します。 イベントタイプ explicit | |||
| 請求書を取り消し | 転記済みの請求書文書が取り消されたことを示します。元の請求書による財務上の影響を相殺するため、反対仕訳文書が作成されます。 | ||
| 重要な理由 このアクティビティは、重要な例外処理と手戻り経路を示します。取り消しの頻度と理由を分析することで、請求書の検証や転記プロセスにおける構造的な問題を発見できます。 入手先 文書ヘッダーテーブルBKPFに記録される明示的なイベントです。取り消された文書のヘッダーには、反対仕訳文書番号(STBLG)と会計年度(STJAH)が含まれます。 取得 BKPF-STBLGに値が設定されている文書を特定します。イベントのタイムスタンプには、反対仕訳文書の転記日を使用します。 イベントタイプ explicit | |||
| 請求書を消込 | 請求書のライフサイクルが正常に完了する最後のステップです。支払文書によって未決済の債務が消し込まれ、支払いが実行されたことを示します。 | ||
| 重要な理由 主要な終了イベントとして、エンドツーエンドの総サイクルタイムを算出するうえで重要です。プロセスが正常に完了したことを確認し、期日どおりの支払いパフォーマンスの測定に使用します。 入手先 請求書の明細項目テーブルBSEGに記録される明示的なイベントです。消込日はAUGDTフィールドに、消込文書番号はAUGBLフィールドに保存されます。 取得 請求書文書の明細項目にある消込日(BSEG-AUGDT)を使用します。 イベントタイプ explicit | |||
| 請求書を転記 | 請求書が総勘定元帳に正式に記録され、債務が計上される重要な財務イベントです。文書が一時的な仮保存状態から、確定した会計仕訳へ移行します。 | ||
| 重要な理由 転記は請求書の有効性を確認する重要なマイルストーンです。支払いの前提条件であり、処理量を示す主要な指標でもあります。 入手先 文書ヘッダーテーブルBKPFに記録される明示的なイベントです。タイムスタンプには転記日BKPF-BUDATを使用します。文書は「仮保存」ステータスではなくなります。 取得 仮保存されていない文書(BKPF-BSTATが空白または「 」)には、転記日(BKPF-BUDAT)を使用します。 イベントタイプ explicit | |||
| 支払いブロックを解除 | 請求書の明細項目から支払いブロックが解除され、支払い処理に進める状態になったことを示します。以前に特定された問題が解消されたことを意味します。 | ||
| 重要な理由 このアクティビティでブロック継続時間の測定が完了します。ブロックの設定から解除までの時間を分析することで、問題解消プロセスの効率を把握できます。 入手先 BSEGテーブルのZLSPRフィールド(支払いブロックキー)について、ブロックが解除された時点を変更文書ログ(CDHDRおよびCDPOS)から追跡します。 取得 BSEG-ZLSPRの値が空白以外から空白に変わった時点の変更文書(CDHDR)のタイムスタンプです。 イベントタイプ explicit | |||
| 請求書が支払期日を超過 | 現在の日付が請求書の正味支払期日を過ぎても、まだ支払われていない場合に発生する計算イベントです。支払期日は、支払い条件と基準日から決まります。 | ||
| 重要な理由 このアクティビティは、期日どおりの支払い率KPIを監視するうえで欠かせません。支払い遅延のリスクがある請求書を早期に把握できるため、仕入先との関係悪化やペナルティを防ぎやすくなります。 入手先 現在の日付と正味支払期日を比較して計算します。支払期日は、基準日(BSEG-ZFBDT)と支払い条件(BSEG-ZTERM)から算出します。 取得
イベントタイプ calculated | |||
| 請求書を仮保存 | 請求書がSAPに入力されたものの、まだ総勘定元帳に転記されていないことを示します。財務転記の前に、確認、修正、承認を行うための一時的な状態です。 | ||
| 重要な理由 請求書が仮保存された時点と、その状態が続いた時間を追跡することで、転記前の検証・承認プロセスにおけるボトルネックを把握できます。データ入力にかかった時間と財務処理にかかった時間を分けて分析できます。 入手先 この状態は、テーブルBKPFの文書ステータスフィールドBSTATから推定します。値が「V」(仮保存文書)または「W」(変更承認付き仮保存文書)の場合、仮保存状態を示します。 取得 ステータスフィールドBKPF-BSTATが「V」の文書を特定します。イベントのタイムスタンプには作成日BKPF-CPUDTを使用します。 イベントタイプ inferred | |||
| 請求書を却下 | 承認プロセス中に請求書が却下されたことを示します。通常は修正して再提出する必要があり、手戻りループが発生します。 | ||
| 重要な理由 却下を追跡することは、誤ったデータや方針違反など、失敗の共通原因を特定するうえで重要です。手戻りの量を把握し、プロセス改善や仕入先への教育が必要な領域を特定できます。 入手先 通常は、SAP Business Workflowのログに却下ステップとして記録されます。特定のステータス変更や請求書文書に追加されたメモから推定することもできます。 取得 ワークフローログに記録された却下ステップの時刻、または却下を示す文書ステータスの変更時刻です。 イベントタイプ inferred | |||
| 請求書を承認 | 指定された権限者が請求書を正式に承認し、転記と支払いに進める状態になったことを示します。多くの場合、ワークフローの最終工程にあたります。 | ||
| 重要な理由 このマイルストーンで承認サイクルタイムの測定が完了します。プロセスのブロックが解除され、適時の支払いが可能になるほか、承認者間の業務負荷配分も分析できます。 入手先 通常は、SAP Business Workflowのテーブルから承認タスクの完了を特定して取得します。代わりに、承認に関連する支払いブロックの解除から推定することもできます。 取得 ワークフローログに記録された承認ステップの完了時刻、または特定の支払いブロックが解除された時刻です。 イベントタイプ inferred | |||
| 請求書を承認に回付 | 請求書が正式な承認ワークフローに送信された時点を示します。データの取得方法は、使用しているSAP Workflowまたはサードパーティシステムの実装内容によって大きく異なります。 | ||
| 重要な理由 このアクティビティは、請求書承認サイクルタイムKPIの計測を開始します。承認チェーンの遅延を特定し、承認者のパフォーマンスを分析するうえで欠かせません。 入手先 通常は、SAP Business Workflowのテーブル(例:SWW_WI2OBJ、SWWLOG)から、特定の承認タスクの開始を特定して取得します。単純な構成では、カスタムフィールドのステータス変更から推定する場合もあります。 取得 請求書文書に関連付けられたSAPワークフローログまたはカスタムステータスフィールドの分析が必要です。 イベントタイプ inferred | |||
抽出ガイド
ステップ
- ABAPプログラムの作成:トランザクション
SE38またはSE80を使い、Z_PM_INVOICE_EXTRACTなどの新しい実行可能プログラムを作成します。適切なタイトルを入力し、タイプを「Executable Program」に設定します。 - 選択画面の定義:プログラム内に選択画面を定義し、ユーザーがデータをフィルタリングできるようにします。主要なパラメータには、会社コード(
BUKRS)、会計年度(GJAHR)、転記日付範囲(BUDAT)、アプリケーションサーバー上の出力ファイルパスを指定するパラメータを含めます。 - データ構造の宣言:最終イベントログを格納する内部テーブル構造を定義します。この構造には、必要な属性と推奨属性である
InvoiceNumber、アクティビティ、EventTime、UserName、VendorNumber、PurchaseOrderNumber、InvoiceAmount、PostingDate、PaymentDueDate、PaymentBlockReason、ClearingDateをすべて含めます。 - データ選択ロジックの実装:請求書データを選択するABAPの中核ロジックを記述します。複数の選択結果を最終イベントログテーブルに統合します。
- まず、選択画面の条件に基づき、主要な請求書テーブル
BKPF、BSEG、RBKP、RSEGからヘッダーと明細のデータを選択します。 - 各請求書について、作成タイムスタンプから
Invoice Data Captured、転記タイムスタンプからInvoice Postedなどの基本イベントを生成します。 - 変更文書テーブル
CDHDRとCDPOSを照会し、支払ブロック(BSEGのZLSPRフィールド)に関する変更を検索します。該当する変更ごとに、Payment Block SetとPayment Block Releasedイベントを作成します。 BSEGテーブルの消込伝票(AUGBL)と消込日(AUGDT)を確認し、Invoice Clearedイベントを特定します。BKPFヘッダーの反対仕訳伝票(STBLG)を確認し、Invoice Reversedイベントを特定します。- ワークフローイベント(
Invoice Sent For Approval、Approved、Rejected)を取得するカスタムロジックを実装します。この部分は顧客ごとの差異が大きいため、使用しているワークフローのテーブルまたはステータスフィールドに合わせてコードを調整する必要があります。
- まず、選択画面の条件に基づき、主要な請求書テーブル
- 計算イベントの生成:プログラムロジック内で
Invoice Becomes Overdueイベントを計算します。未払いの請求書について、請求書の支払期日(PaymentDueDate)と現在日を比較して判定します。支払期日が過去の場合は、EventTimeに支払期日を設定したイベントを作成します。 - イベントログテーブルへの格納:各ソースから請求書データを収集し、形式を整えたら、最終的な内部イベントログテーブルに新しい行を追加します。1つのアクティビティにつき1行とします。
- データのファイルへのエクスポート:
OPEN DATASET、TRANSFER、CLOSE DATASETステートメントを使い、最終的な内部テーブルの内容を、選択画面で指定したSAPアプリケーションサーバーのパスにフラットファイルとして書き込みます。セミコロンやタブなど、一貫した区切り文字を使用してCSVファイルを作成します。 - 抽出のスケジュール設定:定期的にデータを抽出する場合は、希望する選択条件でプログラムのバリアントを作成し、トランザクション
SM36を使ってバックグラウンドジョブとしてスケジュールします。 - 出力ファイルの取得:トランザクション
AL11を使ってSAPアプリケーションサーバーのディレクトリにアクセスし、生成されたファイルを探します。トランザクションCG3Yを使って、アプリケーションサーバーからローカルマシンにファイルをダウンロードします。 - アップロードの準備:プロセスマイニングツールにアップロードする前に、CSVファイルを開き、ヘッダーが正しいこと、データ形式(特にタイムスタンプ)が一貫していること、区切り文字が想定どおりであることを確認します。ファイルはUTF-8で保存してください。
設定
- 選択条件:ABAPレポートには、詳細な選択画面を含める必要があります。特に重要なフィルターは次のとおりです。
会社コード(BUKRS):抽出対象を特定の法人に限定します。転記日付(BUDAT):抽出期間を指定します。例えば、一度に3~6か月分など、扱いやすい単位で抽出することを推奨します。伝票タイプ(BLART):ロジスティクス請求書の「RE」や仕入先請求書の「KR」など、関連する請求書伝票タイプだけを含めます。
- 出力ファイルパス:出力ファイルを作成するSAPアプリケーションサーバー上の完全なパスとファイル名を指定する必須パラメーターです。レポートを実行するユーザーには、このディレクトリへの書き込み権限が必要です。
- パフォーマンスに関する考慮事項:大規模なデータセットでは、システムの性能低下を避けるため、利用の少ない時間帯にレポートをバックグラウンドジョブとして実行してください。ロジックではテーブルから必要なフィールドだけを選択し、可能な限り標準SAPデータベースインデックスを使用します。
- 前提条件と権限:この抽出を実行するユーザーまたはサービスアカウントには、次の権限が必要です。
- ABAPレポートの実行権限(
S_PROGRAMの一部)。 BKPF、BSEG、RBKP、RSEG、CDHDR、CDPOSなど、財務およびロジスティクステーブルへの読み取りアクセス。- 指定したアプリケーションサーバーディレクトリ(
S_DATASET)へのファイル書き込み権限。 - 開発、スケジュール設定、ファイル取得に必要なトランザクション
SE38、SM36、AL11、CG3Yへのアクセス。
- ABAPレポートの実行権限(
a サンプルクエリ abap
REPORT Z_PM_INVOICE_EXTRACT.
*&---------------------------------------------------------------------*
*& Tables for Selection Screen
*&---------------------------------------------------------------------*
TABLES: BKPF, RBKP.
*&---------------------------------------------------------------------*
*& Data Declarations
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_event_log,
InvoiceNumber TYPE belnr_v,
Activity TYPE string,
EventTime TYPE timestamp,
UserName TYPE uname,
VendorNumber TYPE lifnr,
PurchaseOrderNumber TYPE ebeln,
InvoiceAmount TYPE wrbtr,
PostingDate TYPE budat,
PaymentDueDate TYPE faedt,
PaymentBlockReason TYPE rstgr,
ClearingDate TYPE augdt,
END OF ty_event_log.
DATA: gt_event_log TYPE TABLE OF ty_event_log,
gs_event_log TYPE ty_event_log.
DATA: lt_bkpf TYPE TABLE OF bkpf,
ls_bkpf TYPE bkpf,
lt_bseg TYPE TABLE OF bseg,
ls_bseg TYPE bseg.
DATA: lt_rbkp TYPE TABLE OF rbkp,
ls_rbkp TYPE rbkp.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_budat FOR bkpf-budat.
PARAMETERS: p_fpath TYPE string OBLIGATORY DEFAULT '/usr/sap/tmp/invoice_events.csv'.
*&---------------------------------------------------------------------*
*& Start of Program Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
" Select FI Invoices (e.g., Doc Type KR)
SELECT * FROM bkpf INTO TABLE lt_bkpf
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat
AND blart = 'KR'.
" Select MM Invoices
SELECT * FROM rbkp INTO TABLE lt_rbkp
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat.
* --- Process FI Invoices ---
LOOP AT lt_bkpf INTO ls_bkpf.
CLEAR gs_event_log.
gs_event_log-InvoiceNumber = ls_bkpf-belnr.
gs_event_log-PostingDate = ls_bkpf-budat.
SELECT SINGLE * FROM bseg INTO ls_bseg
WHERE bukrs = ls_bkpf-bukrs
AND belnr = ls_bkpf-belnr
AND gjahr = ls_bkpf-gjahr
AND koart = 'K'. " Vendor Line Item
IF sy-subrc = 0.
gs_event_log-VendorNumber = ls_bseg-lifnr.
gs_event_log-InvoiceAmount = ls_bseg-wrbtr.
gs_event_log-ClearingDate = ls_bseg-augdt.
" Calculate Due Date
CALL FUNCTION 'DETERMINE_DUE_DATE'
EXPORTING
i_bseg = ls_bseg
IMPORTING
e_faedt = gs_event_log-PaymentDueDate.
ENDIF.
" Activity: Invoice Data Captured
gs_event_log-Activity = 'Invoice Data Captured'.
CONVERT DATE ls_bkpf-cpudt TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Parked (if BSTAT = 'V')
IF ls_bkpf-bstat = 'V'.
gs_event_log-Activity = 'Invoice Parked'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Posted
gs_event_log-Activity = 'Invoice Posted'.
CONVERT DATE ls_bkpf-budat TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Cleared
IF ls_bseg-augbl IS NOT INITIAL.
gs_event_log-Activity = 'Invoice Cleared'.
CONVERT DATE ls_bseg-augdt INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bseg-usnam_cl.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Becomes Overdue
IF gs_event_log-PaymentDueDate IS NOT INITIAL AND gs_event_log-PaymentDueDate < sy-datum AND ls_bseg-augbl IS INITIAL.
gs_event_log-Activity = 'Invoice Becomes Overdue'.
CONVERT DATE gs_event_log-PaymentDueDate INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = 'SYSTEM'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Reversed
IF ls_bkpf-stblg IS NOT INITIAL.
DATA: ls_rev_bkpf TYPE bkpf.
SELECT SINGLE budat, usnam FROM bkpf INTO ls_rev_bkpf
WHERE belnr = ls_bkpf-stblg AND bukrs = ls_bkpf-bukrs AND gjahr = ls_bkpf-gjahr.
IF sy-subrc = 0.
gs_event_log-Activity = 'Invoice Reversed'.
CONVERT DATE ls_rev_bkpf-budat INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_rev_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
ENDIF.
ENDIF.
ENDLOOP.
* --- NOTE: The logic for MM invoices (from lt_rbkp) would be similar, joining RBKP with RSEG.
* --- NOTE: The logic for Payment Blocks and Workflow events requires reading change documents (CDHDR/CDPOS)
* --- or custom workflow tables. Below is a conceptual example for payment blocks.
* --- Conceptual Example for 'Payment Block Set' / 'Released' using Change Docs
* DATA: lt_cdhdr TYPE TABLE OF cdhdr, ls_cdhdr TYPE cdhdr,
* lt_cdpos TYPE TABLE OF cdpos, ls_cdpos TYPE cdpos.
* SELECT * FROM cdhdr INTO TABLE lt_cdhdr
* WHERE objectclas = 'BELEG' AND objectid IN (SELECT belnr FROM bkpf WHERE ...).
* LOOP AT lt_cdhdr.
* SELECT * FROM cdpos INTO TABLE lt_cdpos
* WHERE changenr = ls_cdhdr-changenr AND tabname = 'BSEG' AND fname = 'ZLSPR'.
* LOOP AT lt_cdpos.
* "... logic to create 'Payment Block Set' (if VALUE_NEW is not blank)
* "... or 'Payment Block Released' (if VALUE_NEW is blank) events.
* ENDLOOP.
* ENDLOOP.
* --- Conceptual Example for Workflow events ('Sent For Approval', 'Approved', 'Rejected')
* --- This part MUST be customized based on your specific workflow implementation (e.g., OpenText VIM, SAP WF).
* --- You would query the relevant workflow tables or status change tables here.
*&---------------------------------------------------------------------*
*& Write to File
*&---------------------------------------------------------------------*
END-OF-SELECTION.
DATA: lv_string TYPE string,
lv_header TYPE string.
" Create Header
lv_header = 'InvoiceNumber;Activity;EventTime;UserName;VendorNumber;PurchaseOrderNumber;InvoiceAmount;PostingDate;PaymentDueDate;PaymentBlockReason;ClearingDate'.
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
TRANSFER lv_header TO p_fpath.
LOOP AT gt_event_log INTO gs_event_log.
CONCATENATE gs_event_log-InvoiceNumber
gs_event_log-Activity
gs_event_log-EventTime
gs_event_log-UserName
gs_event_log-VendorNumber
gs_event_log-PurchaseOrderNumber
gs_event_log-InvoiceAmount
gs_event_log-PostingDate
gs_event_log-PaymentDueDate
gs_event_log-PaymentBlockReason
gs_event_log-ClearingDate
INTO lv_string SEPARATED BY ';'.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
ELSE.
MESSAGE 'Error opening file.' TYPE 'E'.
ENDIF. 準備はできましたか?
このテンプレートに沿って進めることで、調達から支払いまでの請求書処理に関する有益な情報を見つけ、業務を大きく改善できます。今すぐデータ抽出を始め、業務を変革しましょう。
今日から調達から支払いまでの請求書処理を最適化
非効率な箇所を特定し、請求書処理のサイクルタイムを30%短縮します。
クレジットカードは不要です。数分で設定できます。