返品・返金処理用データテンプレート
返品・返金処理用データテンプレート
- 収集を推奨する属性
- 追跡すべき主要なアクティビティ
- 抽出ガイド
返品・返金処理の属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ名 ActivityName | 返品プロセス内で発生した特定の業務イベントまたはステップの名称です。 | ||
| 説明 この属性は、返品ライフサイクルにおける単一の明確なアクションまたはステータス変更を表します。例として、「返品受注作成」、「入庫計上」、「クレジットメモ作成」などがあります。これらのアクティビティがプロセスマップを構成する基本要素です。 アクティビティの順序と頻度を分析すると、一般的なプロセス経路、逸脱、手戻りループを特定できます。案件内で何がどの順序で発生したかを理解するための基盤であり、プロセスマイニング分析全体に欠かせません。 重要な理由 アクティビティがプロセスの各ステップを定義します。その順序、所要時間、頻度を分析することがプロセスマイニングの中心であり、実際の業務の進み方を明らかにします。 入手先 VBUK/VBUPなどのテーブルにおけるステータス変更、VBAK、LIKP、VBRKなどの伝票作成イベント、またはCDHDR/CDPOSテーブルの変更ログから導出されます。 例 返品注文を作成入庫を転記クレジットメモを作成返品受注明細完了 | |||
| イベント時刻 EventTime | アクティビティが発生した正確な日時です。 | ||
| 説明 このタイムスタンプは、業務イベントが発生した正確な時点を示します。プロセス内のすべてのアクティビティに記録され、案件内のイベントを時系列に並べるために使われます。 イベント時刻は、アクティビティ間のサイクルタイムの計算、待機時間が発生しているボトルネックの特定、案件全体の所要時間の測定など、時間に基づく分析に欠かせません。パフォーマンス分析や、サービスレベル合意(SLA)に対するコンプライアンス確認にも利用できます。 重要な理由 すべての所要時間の計算、プロセスパフォーマンスの分析、ボトルネックの特定、各返品案件のタイムラインの把握に欠かせないタイムスタンプです。 入手先 SAPテーブル内のさまざまな日付・時刻項目から取得されます。作成イベントでは、VBAKなどのERDATおよびERZET項目が使われます。変更イベントでは、CDHDRテーブルのUDATEおよびUTIMEが使われます。 例 2023-04-15T10:22:05Z2023-04-16T14:01:30Z2023-04-18T09:15:00Z | |||
| 返品案件ID ReturnCaseId | 顧客の返品依頼を一意に識別し、関連するすべてのアクティビティと伝票を結び付ける識別子です。 | ||
| 説明 返品案件IDは、返品プロセスの開始から終了までのライフサイクル全体を追跡するための主キーです。各IDは特定の顧客返品に対応し、受注作成、納入、検査、クレジットメモ処理など、関連するすべてのイベントを含みます。 プロセス分析では、この属性がプロセスマップの作成に欠かせません。システムは個々のイベントをエンドツーエンドの案件単位にグループ化できるため、返品案件ごとのプロセスバリアント、サイクルタイム、ボトルネックを分析できます。 重要な理由 返品プロセスのすべてのステップを結び付ける基本的な案件識別子です。エンドツーエンドのプロセスフローとパフォーマンスを分析できます。 入手先 通常は、販売・物流(SD)モジュールの返品受注番号です。VBAK(販売伝票ヘッダーデータ)テーブルのVBELN項目に記録され、伝票カテゴリ(VBAK-VBTYP)は返品を示す「H」です。 例 600001236000045660000789 | |||
| ソースシステム SourceSystem | データが抽出されたシステムです。 | ||
| 説明 データの取得元を示す属性です。複数のシステムが存在する環境では欠かせません。データの出所と完全性を確認するための情報を提供します。 分析では、異なるソースシステムのプロセスを組み合わせる際に、データのセグメント化やフィルタリングに使います。イベントが想定したアプリケーション、ここではSAP ECCから取得されたことを確認できます。 重要な理由 データの取得元を示します。データガバナンスや、複数の基幹システムにまたがる分析に欠かせません。 入手先 データ抽出時に定義される固定値で、特定のSAP ECCインスタンス(例:「ECC_PROD_100」)を識別します。 例 SAP_ECC_PRODSAPECC_FINANCE_200 | |||
| 最終データ更新 LastDataUpdate | このプロセスのデータが最後に更新された時刻を示すタイムスタンプです。 | ||
| 説明 直近のデータ抽出または更新が行われた日時を記録する属性です。分析対象データの鮮度を確認できます。 分析結果がどの時点のデータに基づくものかを把握するうえで重要です。特に進行中の業務を監視する場合、データがどれだけ最新かによって、得られる結果の有効性が変わります。 重要な理由 データの鮮度を示し、プロセス分析がどの時点の情報に基づくものか、次回の更新がいつ見込まれるかを確認できます。 入手先 データ抽出ジョブの実行時刻が設定されるメタデータ属性です。 例 2023-05-20T02:00:00Z2023-05-21T02:00:00Z | |||
| 処理担当者 ProcessingAgent | アクティビティを実行した従業員のユーザーIDです。 | ||
| 説明 返品受注の作成や入庫計上など、特定のプロセスステップを実行した担当者のユーザー名を記録する属性です。通常、「変更者」または「作成者」のユーザーとして扱われます。 処理担当者別の分析は、パフォーマンス管理とリソース分析に役立ちます。優れた成果を上げている担当者、追加のトレーニングが必要な担当者、チーム内の業務負荷の分布を特定できます。「担当者別返品処理パフォーマンス」などのダッシュボードで、サイクルタイムや処理量を比較する際にも使われます。 重要な理由 ユーザーの関与状況を追跡し、チームのパフォーマンス、業務負荷の分布、トレーニングの必要性、ベストプラクティスを分析できます。 入手先 通常は、VBAK、LIKP、VBRKなどのヘッダーテーブルにあるERNAM(作成者)またはAENAM(変更者)項目に記録されています。変更イベントでは、CDHDRのUSERNAMEが使われます。 例 CBURNSDSCRANTONJHALPERT | |||
| 品目番号 MaterialNumber | 返品対象の商品を一意に識別する番号です。 | ||
| 説明 品目番号またはSKUは、返品対象となった商品を正確に特定します。商品単位で詳細な分析が可能になります。 品目番号別に返品を分析すると、返品率の高い商品を特定できます。これは、品質問題、商品説明の誤り、製造上の欠陥を示している可能性があります。「返品による在庫への影響」などのダッシュボードや、商品ごとの返品プロセスの進み方を把握するために欠かせません。 重要な理由 返品された商品を特定し、品質管理上の問題や不正確な商品説明の可能性を明らかにします。 入手先 販売伝票明細テーブルVBAPのMATNR項目に記録されています。 例 RM-1025FG-2050-BACC-5591 | |||
| 実際の返金額 ActualRefundAmount | 財務伝票に計上された、顧客への最終的な入金額です。 | ||
| 説明 この属性は、会計システムで処理・計上された、確定済みの最終返金額です。再入庫手数料、商品の状態に応じた調整、その他のポリシー適用により、申請額と異なる場合があります。 「返金額差異追跡」ダッシュボードの重要な属性です。申請額と比較することで、返金額の計算や承認プロセスにおける構造的な問題を特定し、財務の正確性を確保できます。 重要な理由 返品における最終的な財務結果を示します。申請額と比較することで、金額の正確性を確認し、財務上の漏れを特定できます。 入手先 クレジットメモに関連付けられた財務伝票から取得します。通常はBSEG(会計伝票セグメント)テーブルのWRBTRフィールド(伝票通貨の金額)にあり、該当するG/L勘定の計上を参照します。 例 150.0045.001200.75 | |||
| 返品チャネル ReturnChannel | 返品を開始したチャネルです。オンライン、店舗、コールセンターなどが該当します。 | ||
| 説明 この属性は、返品申請の発生元または受付方法を示します。Webポータル、実店舗、顧客サービス担当者経由など、返品がどの経路で開始されたかを区別できます。 返品チャネル別にプロセスを分けて分析することは、業務上の違いとリソース配分を把握するうえで重要です。たとえば、店舗での返品は検品時間が短い一方で、オンライン返品とは異なる書類手順が必要になる場合があります。これは「返品プロセスの処理量推移」ダッシュボードの主要な分析軸です。 重要な理由 返品の開始方法を区別します。チャネルによって、プロセスフロー、必要なリソース、処理時間が異なることが多いためです。 入手先 SAP ECCの標準フィールドではないことが多く、カスタムフィールド(例:VBAK内)から取得するか、販売組織(VKORG)や流通チャネル(VTWEG)などの別のデータから推定する必要があります。具体的な実装については、SAP ECCのドキュメントを確認してください。 例 オンラインポータル店舗コールセンター | |||
| 返品理由 ReturnReason | 顧客が明細を返品する理由として指定した理由コードです。 | ||
| 説明 SAPで定義された理由コードを使って、商品が返品された理由を示す属性です。例として、「輸送中の破損」、「誤った商品を発送」、「サイズが合わない」などがあります。 根本原因分析に欠かせない分析軸です。返品理由でプロセスマップやKPIをフィルタリングすると、特定の理由が長い処理時間、高い検査不合格率、特定のプロセス逸脱と関連しているかを確認できます。商品品質、物流、販売プロセスの改善にもつながります。 重要な理由 返品が発生する理由を明らかにし、商品品質、配送、商品説明の問題に対処して返品率を下げるための根本原因分析に役立ちます。 入手先 販売伝票明細テーブルVBAPのABGRU項目(販売伝票の却下理由)に記録されています。 例 001 - 商品破損002 - 商品違い005 - 到着遅延 | |||
| 返金申請額 RequestedRefundAmount | 通常は返品商品の正味金額に基づく、返金予定額です。 | ||
| 説明 この属性は、返品注文に記録された返品の初期金額を示します。財務分析と照合の基準になります。 この金額を「実際の返金額」と比較して差異を追跡します。「返金額差異追跡」ダッシュボードの主要指標です。この値を分析すると、返品による財務上の影響を把握し、価格設定やクレジット計算に関する問題を特定できます。 重要な理由 返品の初期財務価値を設定します。財務上の差異を追跡し、返品商品の総額を把握するうえで重要です。 入手先 通常は返品注文の明細レベルにある正味金額です。テーブルVBAPのNETWRフィールドにあります。 例 150.0049.991250.75 | |||
| SLA遵守状況 IsSLACompliant | 返金が合意したサービスレベル合意(SLA)以内に処理されたかどうかを示すフラグです。 | ||
| 説明 「返金処理」アクティビティの実績日と「返金SLA目標日」を比較する、計算されたブール型属性です。返金が期限内に完了していればtrue、そうでなければfalseになります。 この属性により、各ケースのSLA達成状況を明確な二値で示せるため、分析とレポート作成が簡単になります。「返金処理SLAコンプライアンス」率の計算や、SLAを遵守できなかったケースの絞り込みに使用します。 重要な理由 各ケースのSLA達成状況を明確な二値で示し、コンプライアンスの監視とレポート作成を簡単にします。 入手先 計算された属性です。ロジックは次のとおりです:「返金処理」EventTime <= RefundSLATargetDate。 例 truefalse | |||
| クレジットメモ番号 CreditMemoNumber | 返金のために発行されたクレジットメモ伝票の一意の識別子です。 | ||
| 説明 クレジットメモは、顧客への返金を正式に記録するSAPの請求伝票です。この番号で財務伝票を一意に識別できます。 この属性は、財務照合や、業務上の返品から財務決済までのプロセスを追跡するうえで欠かせません。プロセス上の主要なマイルストーンとなり、「実際の返金額」などの属性に関連する会計伝票を検索するために使用します。 重要な理由 顧客への返金を承認する財務伝票に直接つながります。財務監査と照合に欠かせない情報です。 入手先 クレジットメモは請求伝票です。番号はVBRKテーブル(請求伝票:ヘッダーデータ)のVBELNフィールドにあります。返品注文の伝票フローを通じて関連付けます。 例 900011229000334490005566 | |||
| プラント Plant | 返品商品を受け取り、処理する物理的な場所または施設です。 | ||
| 説明 SAPのプラントは、倉庫や配送センターなど、商品を取り扱う物理的な場所を表します。返品の場合は、通常、商品を受け取り、検品する場所です。 プラント別にプロセスを分析すると、施設間のパフォーマンスの違いを特定できます。どの倉庫が商品の検品を効率的に行っているか、処理量が多いかを把握でき、「商品の検品処理量と効率」ダッシュボードに役立ちます。 重要な理由 返品を処理する物理的な場所を識別し、倉庫や配送センター間でパフォーマンスを比較できます。 入手先 返品注文の明細レベルにあり、テーブルVBAPのWERKSフィールドにあります。 例 PL01WH02DC05 | |||
| 会社コード CompanyCode | 取引を担当する法人または会社です。 | ||
| 説明 会社コードは、SAP内で独立した会計単位を表します。返品や返金を含むすべての財務取引は、特定の会社コードに計上されます。 この属性は、財務レポートや、多国籍企業または複数法人からなる組織でプロセスを分けて分析する際に欠かせません。会社コード別に分析すると、企業内の異なる法人間で返品プロセスのパフォーマンスを比較できます。 重要な理由 組織内の異なる法人間で返品プロセスを絞り込み、比較できます。財務分析に欠かせない属性です。 入手先 販売伝票ヘッダーテーブルVBAKのBUKRS_VFフィールド(請求の会社コード)にあります。 例 10002000US01 | |||
| 元の販売伝票 OriginalSalesDocument | 返品の対象となる元の販売注文番号です。 | ||
| 説明 この属性は、顧客の最初の購入に直接つながります。返品と元の取引の詳細を関連付ける参照伝票です。 この関連付けがあると、より詳細な分析が可能になります。特定の注文の商品が返品された理由、元の価格や条件、顧客の注文から返品までの一連の流れを調査できます。特定のキャンペーンやチャネルで販売された商品で返品率が高いかどうかも確認できます。 重要な理由 返品を元の販売に関連付け、顧客取引全体を把握し、根本原因を詳しく分析できます。 入手先 この参照情報は返品注文の明細レベルに保存されています。テーブルVBAPのVGBELフィールド(参照伝票番号)にあります。 例 100034561000987110012345 | |||
| 返品ポリシー遵守状況 ReturnPolicyAdherence | 返品が定められたすべての業務ルールとポリシーに準拠しているかどうかを示すフラグです。 | ||
| 説明 この計算されたブール型属性は、返品ケースが会社の標準ポリシーに従って処理されたかどうかを示します。返品が許可期間内に開始されたか、商品に対して理由コードが有効か、例外処理に管理者の承認があるかなど、複数の条件を確認します。 「返品承認ポリシーコンプライアンス」ダッシュボードで使用します。遵守率を直接測定し、どのポリシーが頻繁に回避されているかを特定できるため、対象を絞ったプロセス改善やトレーニングにつなげられます。 重要な理由 業務ルールへの遵守状況を測定し、ポリシーを一貫して適用するとともに、特別な確認や承認が必要なケースを特定できます。 入手先 一連の業務ルールに基づく派生属性です。例:(返品開始日 - 元の購入日)<= 30日 AND ReturnReason IS NOT NULL。 例 truefalse | |||
| 返品注文ステータス ReturnOrderStatus | 返品注文ケース全体の処理状況です。 | ||
| 説明 この属性は、返品ケースの現在の状態を示します。「オープン」「処理中」「完了」などが該当します。販売伝票のヘッダーレベルまたは明細レベルのステータスを組み合わせて算出します。 分析では、処理中または完了した返品に絞り込むために使用できます。オープンケースの作業量と進捗を監視し、返品プロセス全体の結果を把握するのにも役立ちます。 重要な理由 ケースのライフサイクル上の位置を大まかに把握できます。オープン、処理中、クローズ済みの返品を絞り込み、分析できます。 入手先 VBUK(ヘッダーステータス)およびVBUP(明細ステータス)テーブルのステータスフィールドから算出します。たとえば、VBUK-GBSTKは伝票全体の処理ステータスです。 例 オープン処理中完了 | |||
| 返金SLA目標日 RefundSLATargetDate | サービスレベル合意に基づき、返金処理の完了が予定されている日付です。 | ||
| 説明 この属性は、返品ケースの返金プロセスを完了する期限を定義します。通常は「商品の受領から5営業日以内」などの業務ルールに基づいて算出します。 この目標日を基準に実績を測定します。「返金処理SLAコンプライアンス」ダッシュボードの中心となる項目です。顧客への約束を守れているかを監視し、SLA違反のリスクがあるケースを特定できます。 重要な理由 返金処理の目標を設定し、SLAの遵守状況を測定・報告するとともに、期限超過のケースを優先的に処理できます。 入手先 通常、SAPの標準フィールドではないため、業務ルールに基づいて算出する必要があります。基準日フィールド(例:MKPFの商品受領日)に設定された期間を加えて計算できます。SAP ECCのドキュメントまたは業務要件を確認してください。 例 2023-04-25T23:59:59Z2023-04-28T23:59:59Z2023-05-02T23:59:59Z | |||
| 返金額差異 RefundAmountDiscrepancy | 実際の返金額と申請額との差を計算した値です。 | ||
| 説明 この計算指標は、返品注文で当初申請された金額と、クレジットメモで最終的に発行された金額との差を数値化します。正の値は一部返金を示す場合があります。負の値は通常ありませんが、過払いを示す可能性があります。 「返金額差異追跡」ダッシュボードの主要指標です。商品の状態の判定、再入庫手数料、エラーなどによる金額の差異をすばやく特定・分析できます。監視することで、財務管理とポリシー遵守を徹底できます。 重要な理由 返金プロセスにおける財務上の差異を直接測定し、ポリシー違反、処理エラー、財務上の漏れを特定できます。 入手先 計算フィールド:ActualRefundAmount - RequestedRefundAmount。 例 0.00-4.99-50.00 | |||
| 顧客ID CustomerId | 返品を開始した顧客を一意に識別するIDです。 | ||
| 説明 この属性は、商品を返品する特定の顧客(SAPの用語では「Sold-to Party」)を識別します。返品取引と顧客マスターデータを関連付けます。 顧客ID別に分析すると、返品頻度の高い顧客を特定できます。これは、顧客の不満や返品ポリシーの不正利用の可能性を示している場合があります。また、顧客セグメントのデータと組み合わせることで、特定の顧客グループに異なる返品行動やプロセス体験が見られるかどうかを把握できます。 重要な理由 返品を特定の顧客に関連付け、顧客行動の分析、返品を繰り返す顧客の特定、顧客関係への影響の把握を可能にします。 入手先 販売伝票ヘッダーテーブルVBAKのKUNNRフィールド(Sold-to party)にあります。 例 CUST-100432CUST-203991CUST-831102 | |||
返品・返金処理のアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| クレジットメモをFIに転記 | クレジットメモが財務会計にリリースされ、売掛金の正式な計上になります。このステップを起点として、顧客への実際の返金処理が開始されます。 | ||
| 重要な理由 返金が企業の財務上認識された時点を示すアクティビティです。クレジットメモの作成から転記までに遅延があると、顧客への実際の返金も遅れる可能性があります。 入手先 これは推定イベントです。請求伝票ヘッダーの転記ステータス(VBRK-RFBSK)が「C」(転記伝票が作成済み)に更新された時点で特定されます。実際の会計伝票の作成日はBKPFテーブルに記録されています。 取得 VBRK-RFBSKが「C」に設定された時刻を特定するか、関連付けられたBKPF会計伝票の作成日(CPUDT)を使用します。 イベントタイプ inferred | |||
| クレジットメモを作成 | 顧客への金銭的なクレジットを承認するため、請求伝票(クレジットメモ)が生成されます。返金額を正式に確定する財務伝票です。 | ||
| 重要な理由 プロセスにおける主要な財務マイルストーンです。クレジットメモの作成までの時間を分析することで、入庫と検品の後に発生する財務伝票処理の遅延を特定できます。 入手先 VBRKテーブル(請求伝票ヘッダー)に記録される明示的なイベントです。作成日はVBRK-ERDATに保存されます。クレジットメモは、伝票フローによって返品注文またはクレジットメモ依頼に関連付けられます。 取得 該当する請求伝票について、VBRKテーブルの作成日時(ERDAT)を使用します。 イベントタイプ explicit | |||
| 使用決定を実施 | 検品後、品質エンジニアまたは検査担当者が返品商品の状態について正式な判定を行います。この判定により、在庫への戻し入れ、廃棄、修理など、その後の処理が決まります。 | ||
| 重要な理由 検品の効率と結果を把握するうえで重要なアクティビティです。この判定は、返金額と在庫管理に直接影響します。 入手先 SAP QMを使用している場合、QAVEテーブル(検査処理の使用決定)に記録される明示的なイベントです。判定日はQAVE-VDATUMに保存されます。配送との関連はQALSテーブルで確認できます。 取得 検査ロット(QALS-PRUEFLOS)を介して関連付けられたQAVEテーブルから、使用決定日(VDATUM)を使用します。 イベントタイプ explicit | |||
| 入庫を転記 | 返品された商品が倉庫または処理センターに到着した時点で発生するアクティビティです。返品配送に対する入出庫伝票の転記によって記録されます。 | ||
| 重要な理由 企業が返品商品を受領したことを示す重要なマイルストーンです。物理的な検品の開始点となり、在庫の正確性にも影響します。 入手先 返品配送明細の入出庫ステータスを示すVBUPテーブルの値(例:WBSTA=「C」)から推定できます。正確な日時は、該当する入庫に対応する品目伝票ヘッダー(MKPF-BUDAT)に記録されています。 取得 返品配送に関連付けられた品目伝票について、MKPFテーブルから転記日(BUDAT)を取得します。 イベントタイプ inferred | |||
| 返品受注完了 | 販売・物流の観点における返品プロセスの終了を示すアクティビティです。返品受注のすべての明細が完全に処理され、クローズされた時点で発生します。 | ||
| 重要な理由 プロセスの主要な終了イベントです。「返品受注作成」からこのアクティビティまでの時間を測定すると、返品案件のエンドツーエンドのサイクルタイムを把握できます。 入手先 ステータステーブルから取得した推定イベントです。販売伝票ヘッダーの全体ステータス(VBUK-GBSTK)が「C」(完全処理済み)に更新された時点で記録されます。 取得 変更伝票(CDHDR/CDPOS)から、ヘッダーステータス項目VBUK-GBSTKが「C」に変更された時刻を特定します。 イベントタイプ inferred | |||
| 返品注文を作成 | 顧客が商品の返品を依頼した際に返品プロセスが開始されたことを示すアクティビティです。SAP ECCで販売伝票タイプ「Return」(例:RE)の新しい伝票が作成された時点で記録されます。 | ||
| 重要な理由 返品プロセスの主要な開始イベントです。このアクティビティから他のアクティビティまでの時間を分析することで、総サイクルタイムを測定し、初期処理の遅延を特定できます。 入手先 VBAKテーブル(販売伝票ヘッダー)に記録される明示的なイベントです。対応する販売伝票番号(VBAK-VBELN)で、注文タイプVBAK-AUARTが「RE」の場合、作成日時はVBAK-ERDATおよびVBAK-ERZETに保存されます。 取得 販売伝票タイプ「RE」について、VBAKテーブルの作成日時(ERDAT、ERZET)を使用します。 イベントタイプ explicit | |||
| クレジットメモ依頼を作成 | 返金が必要であることを正式に記録するため、クレジットメモ依頼を作成します。多くの設定では、返品注文自体がクレジットメモ依頼として機能します。 | ||
| 重要な理由 返品プロセスにおける財務決済部分の正式な開始点です。後続の財務承認と伝票作成のトリガーになります。 入手先 販売伝票タイプ「Credit Memo Request」(例:CR)のVBAKに記録される明示的なイベントです。注文関連請求として設定されている場合は、「Return Order Created」と同じイベントになることもあります。 取得 伝票タイプ「CR」についてはVBAKの作成日時(ERDAT)を使用します。設定に応じて、返品注文の作成イベントを再利用することもできます。 イベントタイプ explicit | |||
| クレジットメモ消込完了 | 売掛金の未消込クレジット明細が、通常は顧客への支払によって消し込まれます。このイベントは、返金に関する財務処理の最終完了を示します。 | ||
| 重要な理由 このアクティビティによって出金が確認され、プロセスの財務面が完了します。顧客の視点では、返金プロセスの実質的な終了です。 入手先 FIモジュールから取得する明示的なイベントです。該当する顧客明細に対応する会計伝票の消込日は、BSEGテーブル(BSEG-AUGDT)に記録されています。 取得 クレジットメモに関連付けられた会計伝票について、BSEGまたはBSADテーブルから消込日(AUGDT)を取得します。 イベントタイプ explicit | |||
| 返品受注明細却下 | 返品受注の特定の明細が、初回確認時または検査後に却下されます。この明細については、返金などの後続処理は行われません。 | ||
| 重要な理由 却下を分析すると、無効な返品依頼を特定でき、顧客向けポリシーの案内にも役立ちます。返金には至らない、プロセス上の重要な経路です。 入手先 推定イベントです。通常は、VBAPテーブルの明細に固有の「却下理由」コード(VBAP-ABGRU)が設定された時点で記録されます。時刻は変更ログから取得する必要があります。 取得 変更伝票(CDHDR/CDPOS)から、返品明細のVBAP-ABGRU項目に値が設定された時刻を特定します。 イベントタイプ inferred | |||
| 返品受注明細完了 | 返品受注の個別明細が完全に処理済みとしてマークされます。通常は、その明細に関するすべての物流および財務上の後続伝票の処理が完了した後に発生します。 | ||
| 重要な理由 明細レベルで追跡すると、どの商品や返品理由が最も長い遅延を引き起こしているかを特定できます。プロセス完了状況をより詳細に把握できます。 入手先 ステータステーブルから取得した推定イベントです。販売伝票明細の全体ステータス(VBUP-GBSTK)が「C」(完全処理済み)に更新された時点で記録されます。 取得 変更伝票(CDHDR/CDPOS)から、明細ステータス項目VBUP-GBSTKが「C」に変更された時刻を特定します。 イベントタイプ inferred | |||
| 返品注文のブロックを解除 | 返品申請が承認され、次の段階へ進める状態になったことを示します。通常は、伝票ステータスの変更、または出荷ブロック・請求ブロックの解除によって記録されます。 | ||
| 重要な理由 返品承認における重要な承認マイルストーンです。このステップに到達するまでの時間を測定することで、返品承認プロセスのボトルネックを特定できます。 入手先 販売伝票の変更ログから導出される推定イベントです。VBAKまたはVBAPのブロック項目、あるいはVBUK/VBUPのステータス項目に対する変更を、CDHDRおよびCDPOSテーブルで確認します。 取得 関連するブロックステータスが解除された時点のタイムスタンプを、変更伝票テーブル(CDHDR/CDPOS)から特定します。 イベントタイプ inferred | |||
| 返品配送を作成 | 返品商品の物理的な受領を管理するため、配送伝票が生成されます。このイベントは、返品に関する物流プロセスが開始されたことを示します。 | ||
| 重要な理由 管理上の処理から物理的な物流への移行を追跡します。ここで遅延が発生すると、倉庫計画や返品全体のサイクルタイムに影響する可能性があります。 入手先 LIKPテーブル(配送ヘッダー)に記録される明示的なイベントです。作成日時はLIKP-ERDATに保存されます。元の返品注文との関連は、LIPSテーブル(LIPS-VGBEL)で確認できます。 取得 返品注文に関連付けられた配送について、LIKPテーブルの作成日時(ERDAT)を使用します。 イベントタイプ explicit | |||
抽出ガイド
ステップ
- ABAPプログラムを作成:トランザクションコード
SE38を使って、新しい実行可能ABAPプログラムを作成します。例としてZ_PM_RETURN_EXTRACTIONを指定します。説明的なタイトルを入力し、ローカルオブジェクトまたは開発パッケージ内に保存します。 - 選択画面を定義:プログラム内に選択画面を定義し、ユーザーがデータをフィルタリングできるようにします。主なフィルターには、返品受注の作成日範囲(
S_ERDAT)、返品用の販売伝票タイプ(S_AUART、例:「RE」)、会社コード(P_BUKRS)があります。 - データ構造を定義:必要なイベントログ形式に合わせたローカル構造型を作成します。この構造には、
ReturnCaseId、ActivityName、EventTime、SourceSystem、LastDataUpdate、ProcessingAgent、ReturnReason、その他の必要な属性を含めます。 - データ選択ロジックを実装:必要な12種類のアクティビティごとにデータを選択するABAPの中核ロジックを記述します。VBAK、VBAP、LIKP、VBRK、BKPF、CDHDR、CDPOSなどのSAPテーブルを検索します。伝票フローテーブル(VBFA)を使って、納入やクレジットメモなどの関連伝票を元の返品受注に結び付けます。
- 「返品受注作成」を抽出:選択画面の条件に基づき、
VBAKおよびVBAPテーブルからレコードを選択します。販売伝票番号(VBAK-VBELN)をReturnCaseIdとして使用します。 - ステータス変更と主要イベントを抽出:「返品受注ブロック解除」や「返品受注明細却下」などのアクティビティについては、変更伝票テーブル(
CDHDR、CDPOS)またはVBAP(ABGRU)などのテーブルのステータス項目を検索します。物流および財務上の後続アクティビティについては、VBFAを使って初期の返品受注群に関連付けたうえで、LIKP、MKPF、VBRK、BKPFなどのテーブルから選択します。 - イベントログテーブルにデータを格納:取得した各アクティビティについて、イベントログ構造で定義した内部テーブルに新しいレコードを作成します。ソースSAPテーブルのデータを対応する項目にマッピングします。たとえば、
VBAK-ERNAMをProcessingAgentに、VBAK-ERDATとVBAK-ERZETをEventTimeにマッピングします。 - アクティビティデータを統合:各アクティビティのSELECT文が、単一のメイン内部テーブルに結果を追加するようにします。これにより、各行が1つのイベントを表す最終的なフラットファイル構造が作成されます。
- タイムスタンプとシステム情報を処理:システム項目
SY-DATUMとSY-UZEITを使い、すべての行のLastDataUpdateタイムスタンプを設定します。SY-SYSIDを使ってSourceSystemを設定します。 - 出力機能を実装:
REUSE_ALV_GRID_DISPLAYなどの関数モジュールを使い、オンライン分析用のALVグリッド(SAP List Viewer)に結果を表示する機能を追加します。最終的な内部テーブルをCSVまたはフラットテキストファイルとしてユーザーのローカルマシンにダウンロードできるようにします。 - 実行とエクスポート:
SE38からプログラムを実行します。必要な選択条件を入力して実行します。データの表示または処理が完了したら、プログラムのエクスポート機能を使ってイベントログファイルを保存します。通常はヘッダー行付きのCSVなど、ProcessMindと互換性のある形式で保存してください。
設定
- 日付範囲:選択画面で返品受注の作成日範囲を指定します。初回分析では、データ量とプロセスの把握のバランスを考慮し、3~6か月の範囲を推奨します。
- 返品伝票タイプ:システムで返品に使用している販売伝票タイプでフィルタリングします。例として、「RE」は返品、「CR」はクレジットメモ依頼を表します。正しいプロセスだけを抽出するための重要なフィルターです。これらの値を
S_AUART選択オプションに入力します。 - 会社コード:該当する会社コード(
P_BUKRS)を指定し、特定の法人にデータを限定します。複数法人の環境では欠かせません。 - 前提条件:プログラムを実行するユーザーには、
SE38(プログラム実行)と、基盤となるSD、MM、FIテーブル(例:VBAK、LIKP、VBRK、BKPF、CDHDR)へのアクセス権限が必要です。開発にはABAP開発者ロールが必要です。 - パフォーマンス:複数年にわたる非常に大規模なデータセットでは、実行時間が長くなる場合があります。バックグラウンドジョブ(
SM36)として実行し、オンライン表示ではなくアプリケーションサーバーのファイルシステムに出力する方法を検討してください。
a サンプルクエリ abap
REPORT Z_PM_RETURN_EXTRACTION.
" =======================================================================
" DATA DECLARATIONS
" =======================================================================
TYPES: BEGIN OF ty_event_log,
returncaseid TYPE vbeln_va,
activityname TYPE string,
eventtime TYPE timestamp,
sourcesystem TYPE sysysid,
lastdataupdate TYPE timestamp,
processingagent TYPE ernam,
returnreason TYPE augru,
materialnumber TYPE matnr,
returnchannel TYPE string, " Placeholder, needs custom logic
requestedrefundamount TYPE netwr,
actualrefundamount TYPE netwr,
END OF ty_event_log.
DATA: lt_event_log TYPE TABLE OF ty_event_log,
ls_event_log TYPE ty_event_log.
DATA: lv_timestamp TYPE timestamp,
lv_last_update TYPE timestamp.
" =======================================================================
" SELECTION SCREEN
" =======================================================================
SELECT-OPTIONS: s_erdat FOR sy-datum OBLIGATORY,
s_auart FOR vbak-auart.
PARAMETERS: p_bukrs TYPE bukrs OBLIGATORY.
" =======================================================================
" MAIN LOGIC
" =======================================================================
START-OF-SELECTION.
" Set static values for the extraction run
GET TIME STAMP FIELD lv_last_update.
" 1. Return Order Created & 6. Credit Memo Request Created
" Note: In many SAP standard processes, the Return Order itself acts as the Credit Memo Request.
SELECT h~vbeln, h~erdat, h~erzet, h~ernam, h~augru, i~matnr, i~netwr
INTO TABLE @DATA(lt_return_orders)
FROM vbak AS h
INNER JOIN vbap AS i ON h~vbeln = i~vbeln
WHERE h~erdat IN @s_erdat
AND h~auart IN @s_auart
AND h~bukrs_vf = @p_bukrs.
LOOP AT lt_return_orders INTO DATA(ls_return_order).
" Activity: Return Order Created
ls_event_log-returncaseid = ls_return_order-vbeln.
ls_event_log-activityname = 'Return Order Created'.
CONVERT DATE ls_return_order-erdat TIME ls_return_order-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_return_order-ernam.
ls_event_log-returnreason = ls_return_order-augru.
ls_event_log-materialnumber = ls_return_order-matnr.
ls_event_log-requestedrefundamount = ls_return_order-netwr.
APPEND ls_event_log TO lt_event_log.
" Activity: Credit Memo Request Created
ls_event_log-activityname = 'Credit Memo Request Created'.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
IF lt_return_orders IS NOT INITIAL.
" 2. Return Order Block Removed (Example for Delivery Block)
SELECT objectid, udate, utime, username
FROM cdhdr
INTO TABLE @DATA(lt_block_changes)
FOR ALL ENTRIES IN @lt_return_orders
WHERE objectclas = 'VERKBELEG'
AND objectid = @lt_return_orders-vbeln
AND tcode = 'VA02'.
IF sy-subrc = 0.
SELECT objectid, fname, value_new
INTO TABLE @DATA(lt_cdpos_block)
FROM cdpos
FOR ALL ENTRIES IN @lt_block_changes
WHERE objectclas = @lt_block_changes-objectclas
AND objectid = @lt_block_changes-objectid
AND changenr = @lt_block_changes-changenr
AND tabname = 'VBAK'
AND fname = 'LIFSK' " Delivery Block field
AND value_new = ''.
LOOP AT lt_cdpos_block INTO DATA(ls_cdpos_block).
READ TABLE lt_block_changes INTO DATA(ls_block_change) WITH KEY objectid = ls_cdpos_block-objectid.
IF sy-subrc = 0.
ls_event_log-returncaseid = ls_cdpos_block-objectid.
ls_event_log-activityname = 'Return Order Block Removed'.
CONVERT DATE ls_block_change-udate TIME ls_block_change-utime INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_block_change-username.
CLEAR: ls_event_log-returnreason, ls_event_log-materialnumber, ls_event_log-requestedrefundamount, ls_event_log-actualrefundamount.
APPEND ls_event_log TO lt_event_log.
ENDIF.
ENDLOOP.
ENDIF.
" Get subsequent documents from flow
SELECT vbelv, vbtyp_n, vbeln, rfbsk
INTO TABLE @DATA(lt_doc_flow)
FROM vbfa
FOR ALL ENTRIES IN @lt_return_orders
WHERE vbelv = @lt_return_orders-vbeln
AND vbtyp_n IN ('J', 'R', 'M'). " J=Delivery, R=Goods Mvmt, M=Invoice
" 3. Return Delivery Created
SELECT vbeln, erdat, erzet, ernam FROM likp
INTO TABLE @DATA(lt_deliveries)
FOR ALL ENTRIES IN @lt_doc_flow
WHERE vbeln = @lt_doc_flow-vbeln AND @lt_doc_flow-vbtyp_n = 'J'.
LOOP AT lt_deliveries INTO DATA(ls_delivery).
READ TABLE lt_doc_flow INTO DATA(ls_doc_flow_del) WITH KEY vbeln = ls_delivery-vbeln.
ls_event_log-returncaseid = ls_doc_flow_del-vbelv.
ls_event_log-activityname = 'Return Delivery Created'.
CONVERT DATE ls_delivery-erdat TIME ls_delivery-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_delivery-ernam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 4. Goods Receipt Posted
SELECT mblnr, mjahr, budat, cputm, usnam FROM mkpf
INTO TABLE @DATA(lt_goods_receipt)
FOR ALL ENTRIES IN @lt_doc_flow
WHERE xblnr = @lt_doc_flow-vbeln AND @lt_doc_flow-vbtyp_n = 'R'.
LOOP AT lt_goods_receipt INTO DATA(ls_goods_receipt).
READ TABLE lt_doc_flow INTO DATA(ls_doc_flow_gr) WITH KEY vbeln = ls_goods_receipt-mblnr.
ls_event_log-returncaseid = ls_doc_flow_gr-vbelv.
ls_event_log-activityname = 'Goods Receipt Posted'.
CONVERT DATE ls_goods_receipt-budat TIME ls_goods_receipt-cputm INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_goods_receipt-usnam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 5. Usage Decision Made (Requires QM Module implementation)
SELECT q~prueflos, q~vdatu, q~vzeit, q~vname
FROM qals AS q
INNER JOIN qave AS v ON q~prueflos = v~prueflos
INTO TABLE @DATA(lt_usage_decisions)
FOR ALL ENTRIES IN @lt_deliveries
WHERE q~kdauf = @lt_deliveries-vbeln.
LOOP AT lt_usage_decisions INTO DATA(ls_ud).
SELECT SINGLE vbelv FROM vbfa INTO @DATA(lv_vbelv_ud) WHERE vbeln = @ls_ud-prueflos.
ls_event_log-returncaseid = lv_vbelv_ud.
ls_event_log-activityname = 'Usage Decision Made'.
CONVERT DATE ls_ud-vdatu TIME ls_ud-vzeit INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_ud-vname.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 7. Credit Memo Created
SELECT h~vbeln, h~erdat, h~erzet, h~ernam, i~netwr, i~vgbel
INTO TABLE @DATA(lt_cred_memos)
FROM vbrk AS h
INNER JOIN vbrp AS i ON h~vbeln = i~vbeln
FOR ALL ENTRIES IN @lt_doc_flow
WHERE h~vbeln = @lt_doc_flow-vbeln AND @lt_doc_flow-vbtyp_n = 'M'.
LOOP AT lt_cred_memos INTO DATA(ls_cred_memo).
ls_event_log-returncaseid = ls_cred_memo-vgbel.
ls_event_log-activityname = 'Credit Memo Created'.
CONVERT DATE ls_cred_memo-erdat TIME ls_cred_memo-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_cred_memo-ernam.
ls_event_log-actualrefundamount = ls_cred_memo-netwr.
APPEND ls_event_log TO lt_event_log.
" 8. Credit Memo Posted To FI
SELECT SINGLE budat, cputime, usnam FROM bkpf
INTO @DATA(ls_bkpf_post)
WHERE awkey = @ls_cred_memo-vbeln AND awtyp = 'VBRK'.
IF sy-subrc = 0.
ls_event_log-activityname = 'Credit Memo Posted To FI'.
CONVERT DATE ls_bkpf_post-budat TIME ls_bkpf_post-cputime INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-processingagent = ls_bkpf_post-usnam.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 12. Credit Memo Cleared
SELECT SINGLE augdt FROM bseg
INTO @DATA(lv_augdt)
WHERE bukrs = @p_bukrs
AND belnr = @ls_cred_memo-vbeln
AND augdt IS NOT NULL.
IF sy-subrc = 0 AND lv_augdt IS NOT INITIAL.
ls_event_log-activityname = 'Credit Memo Cleared'.
CONVERT DATE lv_augdt INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
CLEAR: ls_event_log-processingagent.
APPEND ls_event_log TO lt_event_log.
ENDIF.
ENDLOOP.
" 9. Return Order Item Completed
SELECT vbeln, erdat, erzet, ernam, abgru FROM vbap
INTO TABLE @DATA(lt_items_completed)
FOR ALL ENTRIES IN @lt_return_orders
WHERE vbeln = @lt_return_orders-vbeln
AND gbsta = 'C'.
LOOP AT lt_items_completed INTO DATA(ls_item_completed).
ls_event_log-returncaseid = ls_item_completed-vbeln.
ls_event_log-activityname = 'Return Order Item Completed'.
CONVERT DATE ls_item_completed-erdat TIME ls_item_completed-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_item_completed-ernam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 10. Return Order Completed
SELECT vbeln, erdat, erzet, ernam FROM vbak
INTO TABLE @DATA(lt_orders_completed)
FOR ALL ENTRIES IN @lt_return_orders
WHERE vbeln = @lt_return_orders-vbeln
AND gbsta = 'C'.
LOOP AT lt_orders_completed INTO DATA(ls_order_completed).
ls_event_log-returncaseid = ls_order_completed-vbeln.
ls_event_log-activityname = 'Return Order Completed'.
CONVERT DATE ls_order_completed-erdat TIME ls_order_completed-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_order_completed-ernam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 11. Return Order Item Rejected
SELECT vbeln, erdat, erzet, ernam FROM vbap
INTO TABLE @DATA(lt_items_rejected)
FOR ALL ENTRIES IN @lt_return_orders
WHERE vbeln = @lt_return_orders-vbeln
AND abgru IS NOT NULL AND abgru <> ''.
LOOP AT lt_items_rejected INTO DATA(ls_item_rejected).
ls_event_log-returncaseid = ls_item_rejected-vbeln.
ls_event_log-activityname = 'Return Order Item Rejected'.
CONVERT DATE ls_item_rejected-erdat TIME ls_item_rejected-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_item_rejected-ernam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
ENDIF.
" =======================================================================
" OUTPUT
" =======================================================================
cl_salv_table=>factory(
IMPORTING
r_salv_table = DATA(lo_alv)
CHANGING
t_table = lt_event_log ).
lo_alv->display( ). ステップ
- 前提条件:必要なSAP ECCテーブルへの読み取りアクセス権を持つデータベースユーザーを用意します。対象には、販売・物流(SD)、在庫管理(MM)、財務会計(FI)モジュールのテーブルが含まれます。データベースに接続するため、DBeaver、SAP HANA Studio、Oracle SQL Developerなどの適切なSQLクライアントツールが必要です。
- システム固有情報を確認:クエリを実行する前に、組織で返品に使用している伝票タイプを特定します。クエリ内の
[YOUR_RETURN_ORDER_TYPES]というプレースホルダーを、実際の値(標準返品の「RE」など)に置き換えます。 - クエリを準備:「query」セクションに記載された完全なSQLクエリをSQLクライアントにコピーします。
- パラメーターを設定:クエリの先頭にある
BaseReturnOrdersという共通テーブル式(CTE)を確認します。[START_DATE]と[END_DATE]を置き換えて、対象の日付範囲をWHERE句に指定します。返品受注タイプの一覧を更新し、必要に応じて特定の会社コード(BUKRS_VF)でフィルタリングします。 - クエリを実行:変更したクエリをSAP ECCデータベースに対して実行します。実行時間は、選択した日付範囲とデータベースの規模によって異なります。
- 生のデータを確認:クエリが完了したら、出力を簡単に確認します。
ReturnCaseId、ActivityName、EventTimeの各列に値が入り、複数のアクティビティのデータが表示されていることを確認します。 - CSVにエクスポート:SQLクライアントから結果セット全体をCSVファイルにエクスポートします。すべての文字を正しく保持するため、UTF-8エンコーディングを使用します。
- アップロード用に準備:CSVファイルを開き、列ヘッダーが必要な属性名と完全に一致していることを確認します。例:
ReturnCaseId、ActivityName、EventTime、SourceSystemなど。SQLクライアントによってヘッダーが変更されている場合は修正します。 - 最終アップロード:整形済みのCSVファイルをProcessMindプラットフォームにアップロードして分析します。
設定
- 返品伝票タイプ:クエリには、SAPシステムで返品受注を表す販売伝票タイプを設定する必要があります。
[YOUR_RETURN_ORDER_TYPES]プレースホルダーを置き換えて設定します。一般的な例として「RE」や、カスタムの「Z」タイプがあります。 - 日付範囲:抽出対象の日付範囲を適切に定義することが重要です。初回分析では通常、3~6か月分のデータを推奨します。
[START_DATE]と[END_DATE]のプレースホルダーに「YYYYMMDD」形式で設定します。 - 会社コード:複数の会社コードを持つ組織では、対象を絞った分析のためにデータをフィルタリングする必要があります。初期CTEに
VBAK.BUKRS_VF = '[YOUR_COMPANY_CODE]'のようなフィルターを追加すると、対象範囲を限定できます。 - データベース方言:提供されているクエリでは一般的なSQL関数を使用しています。ただし、
TO_TIMESTAMPなどの日付・時刻変換や文字列連結(CONCAT)は、基盤となるデータベースシステム(Oracle、HANA、DB2など)に応じて構文を一部調整する必要があります。 - 必要な権限:データベースユーザーには、次の主要テーブルへの読み取りアクセス権が必要です:VBAK、VBAP、VBFA、LIKP、LIPS、VBRK、VBRP、MKPF、MSEG、BKPF、BSAD、QALS、QAVE、CDHDR、CDPOS。
a サンプルクエリ sql
WITH BaseReturnOrders AS (
SELECT
VBAK.VBELN AS ReturnOrderNumber,
VBAP.POSNR AS ReturnOrderItemNumber
FROM VBAK
JOIN VBAP ON VBAK.VBELN = VBAP.VBELN
WHERE VBAK.AUART IN ('[YOUR_RETURN_ORDER_TYPES]') -- e.g., 'RE'
AND VBAK.ERDAT BETWEEN '[START_DATE]' AND '[END_DATE]' -- e.g., '20230101' and '20231231'
)
-- 1. Return Order Created
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Created' AS "ActivityName",
TO_TIMESTAMP(CONCAT(VBAK.ERDAT, VBAK.ERZET), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
VBAK.ERNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
UNION ALL
-- 2. Return Order Block Removed
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Block Removed' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CDHDR.USERNAME AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN CDHDR ON B.ReturnOrderNumber = CDHDR.OBJECTID
JOIN CDPOS ON CDHDR.OBJECTCLAS = CDPOS.OBJECTCLAS AND CDHDR.OBJECTID = CDPOS.OBJECTID AND CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
WHERE CDHDR.OBJECTCLAS = 'VERKBELEG'
AND CDPOS.TABNAME = 'VBAK'
AND CDPOS.FNAME IN ('LIFSK', 'FAKSK')
AND CDPOS.VALUE_NEW = ''
AND CDPOS.VALUE_OLD <> ''
UNION ALL
-- 3. Return Delivery Created
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Delivery Created' AS "ActivityName",
TO_TIMESTAMP(CONCAT(LIKP.ERDAT, LIKP.ERZET), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
LIKP.ERNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'J'
JOIN LIKP ON VBFA.VBELN = LIKP.VBELN
UNION ALL
-- 4. Goods Receipt Posted
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Goods Receipt Posted' AS "ActivityName",
TO_TIMESTAMP(CONCAT(MKPF.CPUDT, MKPF.CPUTM), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
MKPF.USNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'J'
JOIN LIPS ON VBFA.VBELN = LIPS.VBELN AND VBFA.POSNN = LIPS.POSNR
JOIN MSEG ON LIPS.VBELN = MSEG.LFBNR AND LIPS.POSNR = MSEG.LFPOS
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART IN ('651', '653', '655') -- Standard returns movement types
UNION ALL
-- 5. Usage Decision Made
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Usage Decision Made' AS "ActivityName",
TO_TIMESTAMP(CONCAT(QAVE.ADAT, QAVE.ATIM), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
QAVE.AENAME AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'J'
JOIN QALS ON VBFA.VBELN = QALS.VBELN AND VBFA.POSNN = QALS.POSNR -- Linking inspection lot to delivery item
JOIN QAVE ON QALS.PRUEFLOS = QAVE.PRUEFLOS
UNION ALL
-- 6. Credit Memo Request Created (assumes a separate doc, or can be the return order itself)
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Credit Memo Request Created' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CMR_VBAK.ERDAT, CMR_VBAK.ERZET), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CMR_VBAK.ERNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'K' -- 'K' is Credit Memo Request
JOIN VBAK AS CMR_VBAK ON VBFA.VBELN = CMR_VBAK.VBELN
UNION ALL
-- 7. Credit Memo Created
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Credit Memo Created' AS "ActivityName",
TO_TIMESTAMP(CONCAT(VBRK.ERDAT, VBRK.ERZET), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
VBRK.ERNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
VBRP.NETWR AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'M'
JOIN VBRK ON VBFA.VBELN = VBRK.VBELN
JOIN VBRP ON VBRK.VBELN = VBRP.VBELN AND VBFA.POSNN = VBRP.POSNR
WHERE VBRK.FKART IN ('[YOUR_CREDIT_MEMO_TYPES]') -- e.g., 'G2'
UNION ALL
-- 8. Credit Memo Posted To FI
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Credit Memo Posted To FI' AS "ActivityName",
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
BKPF.USNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
VBRP.NETWR AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'M'
JOIN VBRK ON VBFA.VBELN = VBRK.VBELN
JOIN VBRP ON VBRK.VBELN = VBRP.VBELN AND VBFA.POSNN = VBRP.POSNR
JOIN BKPF ON VBRK.VBELN = BKPF.AWKEY AND BKPF.AWTYP = 'VBRK'
UNION ALL
-- 9. Return Order Item Completed
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Item Completed' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CDHDR.USERNAME AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN CDHDR ON CONCAT(B.ReturnOrderNumber, LPAD(B.ReturnOrderItemNumber, 6, '0')) = CDHDR.OBJECTID
JOIN CDPOS ON CDHDR.OBJECTCLAS = CDPOS.OBJECTCLAS AND CDHDR.OBJECTID = CDPOS.OBJECTID AND CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
WHERE CDHDR.OBJECTCLAS = 'VERKBELEG'
AND CDPOS.TABNAME = 'VBUP'
AND CDPOS.FNAME = 'GBSTA'
AND CDPOS.VALUE_NEW = 'C'
UNION ALL
-- 10. Return Order Completed
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Completed' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CDHDR.USERNAME AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN CDHDR ON B.ReturnOrderNumber = CDHDR.OBJECTID
JOIN CDPOS ON CDHDR.OBJECTCLAS = CDPOS.OBJECTCLAS AND CDHDR.OBJECTID = CDPOS.OBJECTID AND CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
WHERE CDHDR.OBJECTCLAS = 'VERKBELEG'
AND CDPOS.TABNAME = 'VBUK'
AND CDPOS.FNAME = 'GBSTK'
AND CDPOS.VALUE_NEW = 'C'
UNION ALL
-- 11. Return Order Item Rejected
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Item Rejected' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CDHDR.USERNAME AS "ProcessingAgent",
CDPOS.VALUE_NEW AS "ReturnReason", -- Using rejection reason for this specific event
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN CDHDR ON CONCAT(B.ReturnOrderNumber, LPAD(B.ReturnOrderItemNumber, 6, '0')) = CDHDR.OBJECTID
JOIN CDPOS ON CDHDR.OBJECTCLAS = CDPOS.OBJECTCLAS AND CDHDR.OBJECTID = CDPOS.OBJECTID AND CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
WHERE CDHDR.OBJECTCLAS = 'VERKBELEG'
AND CDPOS.TABNAME = 'VBAP'
AND CDPOS.FNAME = 'ABGRU'
AND CDPOS.VALUE_NEW <> ''
UNION ALL
-- 12. Credit Memo Cleared
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Credit Memo Cleared' AS "ActivityName",
TO_TIMESTAMP(BSAD.AUGDT, 'YYYYMMDD') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CLEAR_DOC.USNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
VBRP.NETWR AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'M'
JOIN VBRK ON VBFA.VBELN = VBRK.VBELN
JOIN VBRP ON VBRK.VBELN = VBRP.VBELN AND VBFA.POSNN = VBRP.POSNR
JOIN BSAD ON VBRK.VBELN = BSAD.VBELN
JOIN BKPF AS CLEAR_DOC ON BSAD.AUGBL = CLEAR_DOC.BELNR AND BSAD.BUKRS = CLEAR_DOC.BUKRS AND BSAD.GJAHR_AUGL = CLEAR_DOC.GJAHR; 準備はできましたか?
このテンプレートを今すぐ使い始め、データ収集を効率化し、返品・返金プロセスに関する有用な分析結果を得ましょう。
返品・返金処理を今すぐ最適化
SAP ECCの返品処理を効率化し、サイクルタイムを30%短縮しましょう。今すぐ開始できます。
クレジットカード不要。数分でセットアップできます。