返品・返金処理のデータテンプレート
返品・返金処理のデータテンプレート
- 収集を推奨する属性
- 追跡すべき主なアクティビティ
- データ抽出ガイド
返品・返金処理の属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ名 ActivityName | 返品プロセスで発生した特定の業務イベントまたはステップの名前です。 | ||
| 説明 この属性は、返品ライフサイクルにおける個別のアクションやステータス変更を示します。たとえば、「返品受注の作成」「入庫の転記」「クレジットメモの作成」などです。これらのアクティビティがプロセスマップを構成します。 アクティビティの順序や頻度を分析すると、よくあるプロセス経路、逸脱、手戻りのループを特定できます。ケース内で何がどの順番で起きたかを把握するための基礎となり、あらゆるプロセスマイニング分析に欠かせません。 重要な理由 アクティビティはプロセスの各ステップを表します。その順序、所要時間、頻度を分析することがプロセスマイニングの中心であり、実際の業務の進め方を明らかにします。 入手先 VBUK/VBUPなどのテーブルのステータス変更、伝票作成イベント(VBAK、LIKP、VBRKなど)、またはCDHDR/CDPOSテーブルの変更ログから取得します。 例 返品オーダーを作成入庫を転記クレジットメモを作成返品受注の明細完了 | |||
| イベント日時 EventTime | アクティビティが発生した正確な日時です。 | ||
| 説明 このタイムスタンプは、業務イベントが発生した正確な時点を示します。プロセス内のすべてのアクティビティについて記録され、ケース内のイベントを時系列で把握できます。 イベント日時は、アクティビティ間のサイクルタイムの計算、待ち時間が発生しているボトルネックの特定、ケース全体の所要時間の測定など、時間に基づく分析に欠かせません。パフォーマンス分析や、サービスレベル合意(SLA)に対するコンプライアンスの確認にも利用できます。 重要な理由 あらゆる所要時間の計算、プロセスパフォーマンスの分析、ボトルネックの特定、各返品ケースの経過把握に欠かせないタイムスタンプです。 入手先 SAPテーブル内のさまざまな日付・時刻項目から取得します。作成イベントでは、ERDAT項目とERZET項目(VBAKなど)が使われます。変更イベントでは、CDHDRテーブルのUDATE項目とUTIME項目が使われます。 例 2023-04-15T10:22:05Z2023-04-16T14:01:30Z2023-04-18T09:15:00Z | |||
| 返品ケースID ReturnCaseId | 顧客の返品依頼を一意に識別し、関連するすべてのアクティビティと伝票を結び付けるIDです。 | ||
| 説明 返品ケース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項目(伝票通貨額)を参照します。 例 150.0045.001200.75 | |||
| 返品チャネル ReturnChannel | オンライン、店舗、コールセンターなど、返品手続きが開始されたチャネルです。 | ||
| 説明 この属性は、返品依頼の受付元または受付方法を示します。ウェブポータル、実店舗、カスタマーサービス担当者を通じて開始された返品を区別できます。 返品チャネル別にプロセスを分類すると、業務の違いやリソース配分を把握できます。たとえば、店舗での返品は検査が早く済む一方、オンライン返品とは必要な文書化の手順が異なる場合があります。「返品プロセスの処理量の推移」ダッシュボードで使う重要な分析軸です。 重要な理由 返品の受付方法を区別できます。チャネルによってプロセスの流れ、必要なリソース、サイクルタイムが異なる場合があります。 入手先 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では「受注先」と呼ばれ、返品取引を顧客マスターデータに関連付けます。 顧客ID別に分析すると、返品頻度の高い顧客を特定できます。顧客の不満や返品ポリシーの不適切な利用を示している可能性があります。顧客セグメントのデータと組み合わせれば、顧客グループごとの返品傾向やプロセス上の体験の違いも把握できます。 重要な理由 返品を特定の顧客に関連付けます。顧客の行動や返品の繰り返し、顧客との関係への影響を分析できます。 入手先 販売伝票ヘッダーテーブルVBAKのKUNNR項目(受注先)に記録されています。 例 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 | |||
| 返品オーダーを作成 | 顧客から商品の返品申請があり、返品プロセスが始まったことを示すアクティビティです。SAP ECCで「返品」タイプ(例:RE)の新しい販売伝票が作成された時点で記録されます。 | ||
| 重要な理由 返品プロセスの主な開始イベントです。このアクティビティから後続のアクティビティまでの時間を分析すると、サイクルタイム全体を測定し、初期処理の遅れを特定できます。 入手先 VBAKテーブル(販売伝票ヘッダー)に明示的に記録されるイベントです。該当する販売伝票番号(VBAK-VBELN)について、オーダータイプVBAK-AUART = 'RE'の作成タイムスタンプがVBAK-ERDATおよびVBAK-ERZETに保存されます。 記録 販売伝票タイプ「RE」について、VBAKテーブルの作成タイムスタンプ(ERDAT、ERZET)を使用します。 イベントタイプ explicit | |||
| 返品受注の完了 | このアクティビティは、販売管理の観点から返品プロセスが終了したことを示します。返品受注のすべての明細が処理され、クローズされた時点で発生します。 | ||
| 重要な理由 これはプロセスの主要な終了イベントです。「返品受注の作成」からこのアクティビティまでの時間を測定すると、返品ケースのエンドツーエンドのサイクルタイムを把握できます。 入手先 これはステータステーブルから推定されるイベントです。販売伝票ヘッダーの全体ステータス(VBUK-GBSTK)が「C」(処理完了)に更新された時点で記録します。 記録 変更伝票(CDHDR/CDPOS)を参照し、ヘッダーステータス項目VBUK-GBSTKが「C」に変わった日時を特定します。 イベントタイプ inferred | |||
| クレジットメモの消込 | 売掛金の未消込クレジット明細が、通常は顧客への支払によって消し込まれます。このイベントをもって、返金に関する財務処理が完了します。 | ||
| 重要な理由 このアクティビティは、顧客への支払が行われたことを確認し、プロセスの財務面を完了させます。顧客の視点では、返金手続きの実質的な終了点です。 入手先 これはFIモジュールに記録される明示的なイベントです。該当する顧客明細の会計伝票消込日は、BSEGテーブル(BSEG-AUGDT)に保存されます。 記録 クレジットメモに関連付けられた会計伝票について、BSEGテーブルまたはBSADテーブルの消込日(AUGDT)を使用します。 イベントタイプ explicit | |||
| クレジットメモ申請を作成 | 返金の必要性を正式に記録するため、クレジットメモ申請を作成します。多くの設定では、返品オーダー自体がクレジットメモ申請の役割を果たします。 | ||
| 重要な理由 返品プロセスにおける金銭精算の正式な開始点です。後続の会計承認や伝票作成のきっかけになります。 入手先 販売伝票タイプ「クレジットメモ申請」(例:CR)のVBAKに明示的に記録されるイベントの場合があります。また、オーダー関連請求として設定されている場合は、「返品オーダーを作成」と同じイベントになることもあります。 記録 伝票タイプ「CR」については、VBAKの作成タイムスタンプ(ERDAT)を使用します。または、返品オーダーの作成イベントを再利用します。 イベントタイプ explicit | |||
| 返品オーダーのブロックを解除 | 返品申請が承認され、次の段階へ進める状態になったことを示します。通常は、伝票ステータスの変更、または出荷ブロックや請求ブロックの解除によって記録されます。 | ||
| 重要な理由 承認における重要な節目です。この段階に到達するまでの時間を測定すると、返品の承認プロセスにおけるボトルネックを特定できます。 入手先 販売伝票の変更ログから推定するイベントです。VBAKまたはVBAPのブロック項目、あるいはVBUK/VBUPのステータス項目の変更を、CDHDRおよびCDPOSテーブルで確認します。 記録 関連するブロックステータスが解除された時刻を、変更伝票テーブル(CDHDR/CDPOS)から特定します。 イベントタイプ inferred | |||
| 返品の出荷伝票を作成 | 返品商品の物理的な受領を管理するため、出荷伝票を作成します。このイベントは、返品に関する物流プロセスが始まったことを示します。 | ||
| 重要な理由 事務処理から物理的な物流への移行を追跡します。ここで遅れが生じると、倉庫の計画や返品全体のサイクルタイムに影響する可能性があります。 入手先 LIKPテーブル(出荷伝票ヘッダー)に明示的に記録されるイベントです。作成タイムスタンプはLIKP-ERDATに保存されます。元の返品オーダーとの関連はLIPSテーブル(LIPS-VGBEL)で確認できます。 記録 返品オーダーに関連付けられた出荷伝票について、LIKPテーブルの作成タイムスタンプ(ERDAT)を使用します。 イベントタイプ explicit | |||
| 返品受注の明細却下 | 返品受注の特定の明細が、初回審査時または検査後に却下されます。この明細については、返金などの後続処理が行われません。 | ||
| 重要な理由 却下を分析すると、無効な返品依頼を特定し、顧客へのポリシー説明の改善に役立てられます。返金に至らないプロセス上の重要な経路です。 入手先 これは推定イベントです。通常、VBAPテーブルの明細に一意の「却下理由」コード(VBAP-ABGRU)が設定された時点で特定します。日時は変更ログから取得する必要があります。 記録 変更伝票(CDHDR/CDPOS)を参照し、返品明細のVBAP-ABGRU項目に値が設定された日時を特定します。 イベントタイプ inferred | |||
| 返品受注の明細完了 | 返品受注の個別明細が、処理完了としてマークされます。通常は、その明細に関する物流および財務上の後続伝票がすべて処理された後に完了します。 | ||
| 重要な理由 明細単位で追跡することで、どの商品や返品理由で遅延が長くなるかを特定できます。プロセスの完了状況をより細かく把握できます。 入手先 これはステータステーブルから推定されるイベントです。販売伝票明細の全体ステータス(VBUP-GBSTK)が「C」(処理完了)に更新された時点で記録します。 記録 変更伝票(CDHDR/CDPOS)を参照し、明細ステータス項目VBUP-GBSTKが「C」に変わった日時を特定します。 イベントタイプ inferred | |||
データ抽出ガイド
ステップ
- 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などのテーブルにあるステータス項目を参照します。後続の物流・会計アクティビティについては、LIKP、MKPF、VBRK、BKPFなどから選択し、VBFAを使って最初に抽出した返品受注に紐付けます。 - イベントログテーブルへの格納:取得した各アクティビティについて、イベントログ構造で定義した内部テーブルにレコードを追加します。ソースとなるSAPテーブルのデータを対応する項目に割り当てます。たとえば、
VBAK-ERNAMをProcessingAgentに、VBAK-ERDATとVBAK-ERZETをEventTimeに割り当てます。 - アクティビティデータの統合:各アクティビティのSELECT文の結果を、1つのメイン内部テーブルに追加します。これにより、各行が1つのイベントを表す最終的なフラットファイルが作成されます。
- タイムスタンプとシステム情報の設定:システム項目
SY-DATUMとSY-UZEITを使い、すべての行のLastDataUpdateタイムスタンプを設定します。SY-SYSIDをSourceSystemに設定します。 - 出力機能の実装:
REUSE_ALV_GRID_DISPLAYなどの汎用モジュールを使い、オンライン分析用のALVグリッド(SAP List Viewer)に結果を表示する機能を追加します。最終的な内部テーブルをCSVまたはフラットテキストファイルとしてローカルマシンにダウンロードできるようにします。 - 実行とエクスポート:
SE38からプログラムを実行します。必要な選択条件を入力して実行し、データが表示または処理されたら、プログラムのエクスポート機能でイベントログファイルを保存します。ProcessMindで読み込める形式(通常はヘッダー行付きのCSV)で保存してください。
設定
- 日付範囲:選択画面で返品受注の作成日範囲を指定します。初回の分析では、データ量と分析に必要な情報のバランスを取るため、3~6か月分を推奨します。
- 返品伝票タイプ:システムで返品に使う販売伝票タイプを指定します。例として、返品の「RE」やクレジットメモ依頼の「CR」があります。対象プロセスを正しく絞り込むために欠かせない条件です。これらの値を
S_AUARTの選択オプションに入力します。 - 会社コード:対象を特定の法人に絞るには、該当する会社コード(
P_BUKRS)を指定します。複数の会社がある環境では特に重要です。 - 前提条件:プログラムを実行するユーザーには、
SE38(プログラム実行)の権限と、基盤となるSD、MM、FIテーブル(例:VBAK、LIKP、VBRK、BKPF、CDHDR)へのアクセス権限が必要です。開発にはABAP開発者のロールが必要です。 - パフォーマンス:複数年にわたる大規模なデータを処理する場合、実行に時間がかかることがあります。バックグラウンドジョブ(
SM36)として実行し、オンライン表示ではなくアプリケーションサーバーのファイルシステムに出力する方法をご検討ください。
クエリの例 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クライアントにコピーします。
- パラメーターの設定:クエリの先頭にある共通テーブル式(CTE)
BaseReturnOrdersを探します。WHERE句の[START_DATE]と[END_DATE]を置き換えて、対象の日付範囲を指定します。返品受注タイプの一覧を更新し、必要に応じて特定の会社コード(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の各テーブルへの読み取りアクセス権が必要です。
クエリの例 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%短縮しましょう。今すぐ始められます。
クレジットカード不要、数分で設定できます