İade ve Geri Ödeme İşleme Veri Şablonunuz
İade ve Geri Ödeme İşleme Veri Şablonunuz
- Toplanması Önerilen Nitelikler
- Takip Edilmesi Gereken Temel Aktiviteler
- Veri Çekim Rehberliği
İade ve Geri Ödeme İşlemleri Öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Faaliyet Adı ActivityName | İade süreci içinde meydana gelen belirli bir iş olayının veya adımının adı. | ||
| Açıklama Bu öznitelik, iade yaşam döngüsündeki 'İade Siparişi Oluşturuldu', 'Mal Girişi Kaydedildi' veya 'Alacak Dekontu Oluşturuldu' gibi tek, farklı bir eylemi veya durum değişikliğini tanımlar. Bu faaliyetler, süreç haritasının yapı taşlarını oluşturur. Bu faaliyetlerin sırasını ve sıklığını analiz etmek, en yaygın süreç yollarını, sapmaları ve yeniden işleme döngülerini belirlemeye yardımcı olur. Bir vakada ne olduğunu ve hangi sırayla gerçekleştiğini anlamak için hayati öneme sahiptir ve tüm Process Mining analizlerinin temelini oluşturur. Neden önemli Aktiviteler, süreçteki adımları tanımlar. Sıralarını, sürelerini ve sıklıklarını analiz etmek, Nereden alınır VBUK/VBUP gibi tablolardaki durum değişikliklerinden, belge oluşturma Örnekler İade Siparişi OluşturulduMal Kabul Kaydı YapıldıAlacak Dekontu Oluşturulduİade Sipariş Kalemi Tamamlandı | |||
| İade Vaka Kimliği ReturnCaseId | Bir müşterinin iade talebi için benzersiz tanımlayıcı, ilgili tüm faaliyetleri ve belgeleri birbirine bağlar. | ||
| Açıklama İade Vaka Kimliği, bir iade sürecinin başlangıcından kapanışına kadar tüm yaşam döngüsünü izlemek için birincil anahtar görevi görür. Her Kimlik, sipariş oluşturma, teslimat, inceleme ve alacak dekontu işleme gibi ilgili tüm olayları kapsayan belirli bir müşteri iadesine karşılık gelir. Süreç analizinde, bu öznitelik süreç haritasını oluşturmak için temeldir. Sistemlerin bireysel olayları uçtan uca vaka yolculuklarında gruplandırmasına olanak tanıyarak, her ayrı iade örneği için süreç varyantlarının, döngü sürelerinin ve darboğazların analizini sağlar. Neden önemli Bu, bir iade yolculuğunun tüm adımlarını birbirine bağlayan, uçtan uca süreç akışını ve performansını analiz etmeyi mümkün kılan temel vaka tanımlayıcısıdır. Nereden alınır Bu genellikle Satış ve Dağıtım (SD) modülünden gelen İade Sipariş numarasıdır. Belge kategorisinin (VBAK-VBTYP) 'H' (İadeler için) olduğu VBAK tablosunda (Satış Belgesi Başlık Verileri), VBELN alanında bulunur. Örnekler 600001236000045660000789 | |||
| Olay Zamanı EventTime | Aktivitenin gerçekleştiği kesin tarih ve saat. | ||
| Açıklama Bu zaman damgası, bir iş olayının tam olarak gerçekleştiği anı işaretler. Süreçteki her faaliyet için kaydedilir ve bir vaka içindeki olayların kronolojik sırasını sağlar. Olay Zamanı, faaliyetler arasındaki döngü sürelerini hesaplama, bekleyerek zaman kaybedilen darboğazları belirleme ve genel vaka süresini ölçme dahil olmak üzere tüm zaman tabanlı analizler için kritik öneme sahiptir. Performans analizini ve hizmet seviyesi anlaşmalarına (SLA'lar) karşı uyumluluk kontrollerini sağlar. Neden önemli Bu zaman damgası, tüm süreleri hesaplamak, süreç performansını analiz etmek, darboğazları belirlemek ve her iade vakasının zaman çizelgesini anlamak için hayati öneme sahiptir. Nereden alınır SAP tablolarındaki çeşitli tarih ve saat alanlarından alınmıştır. Oluşturma olayları için genellikle ERDAT ve ERZET alanlarıdır (örn. VBAK'ta). Değişiklik olayları için ise CDHDR tablosundaki UDATE ve UTIME'dır. Örnekler 2023-04-15T10:22:05Z2023-04-16T14:01:30Z2023-04-18T09:15:00Z | |||
| Kaynak Sistem SourceSystem | Verilerin çekildiği sistem. | ||
| Açıklama Bu öznitelik, birden fazla sistemin bulunduğu ortamlarda hayati öneme sahip olan verinin kaynağını tanımlar. Bağlam sağlar ve veri soy ağacı ile bütünlüğünü sağlamaya yardımcı olur. Analiz için, farklı kaynak sistemlerden gelen süreçleri birleştirirken verileri bölümlendirmek veya filtrelemek için kullanılır. Olayların beklenen uygulamadan, bu durumda SAP ECC'den geldiğini doğrular. Neden önemli
Nereden alınır Bu, belirli SAP ECC örneğini (örn. 'ECC_PROD_100') tanımlamak için veri çıkarma sırasında tanımlanan statik bir değerdir. Örnekler SAP_ECC_PRODSAPECC_FINANCE_200 | |||
| Son Veri Güncellemesi LastDataUpdate | Bu süreç için verilerin en son ne zaman yenilendiğini gösteren zaman damgası. | ||
| Açıklama Bu öznitelik, en son veri çıkarma veya güncelleme tarihini ve saatini kaydeder. Analiz edilen verinin güncelliği hakkında şeffaflık sağlar. Analizde, içgörülerin güncelliğini anlamak için önemlidir. Kullanıcılar verinin ne kadar güncel olduğunu görebilir, bu da herhangi bir bulgunun alaka düzeyini, özellikle devam eden operasyonları izlerken etkiler. Neden önemli
Nereden alınır Bu, veri çıkarma işinin yürütme zaman damgasıyla doldurulmuş bir meta veri özniteliğidir. Örnekler 2023-05-20T02:00:00Z2023-05-21T02:00:00Z | |||
| Gerçek Geri Ödeme Tutarı ActualRefundAmount | Müşteriye, finansal belgelere kaydedildiği üzere, nihai olarak yatırılan tutar. | ||
| Açıklama Bu öznitelik, muhasebe sisteminde işlenen ve kaydedilen nihai, onaylanmış geri ödeme değeridir. Bu tutar, yeniden stoklama ücretleri, ürün durumuna göre yapılan ayarlamalar veya diğer politika uygulamaları nedeniyle talep edilen tutardan farklılık gösterebilir. Bu, 'Geri Ödeme Tutarı Uyumsuzluğu Takibi' Dashboard'u için kritik bir özniteliktir. Bunu talep edilen tutarla karşılaştırmak, geri ödeme hesaplama ve onay sürecindeki sistemik sorunları belirlemeye yardımcı olarak finansal doğruluğu sağlar. Neden önemli İadenin nihai finansal sonucunu temsil eder. Talep edilen tutarla karşılaştırmak, doğruluğu sağlamaya ve finansal sızıntıları belirlemeye yardımcı olur. Nereden alınır Alacak dekontuyla ilişkili finansal belgeden alınmıştır. Genellikle BSEG (Muhasebe Belgesi Segmenti) tablosunda, WRBTR alanında (belge para birimindeki tutar) ilgili G/L hesap kaydı için bulunur. Örnekler 150.0045.001200.75 | |||
| İade Kanalı ReturnChannel | İadenin başlatıldığı kanal; örneğin çevrimiçi, mağaza içi veya çağrı merkezi. | ||
| Açıklama Bu öznitelik, iade talebinin kaynağını veya alım yöntemini belirtir. Web portalı, fiziksel mağaza veya müşteri hizmetleri temsilcisi aracılığıyla başlatılan iadeler arasında ayrım yapmaya yardımcı olur. Süreci İade Kanalına göre bölümlendirmek, operasyonel farklılıkları ve kaynak tahsisini anlamak için kritik öneme sahiptir. Örneğin, mağaza içi iadeler daha hızlı inceleme sürelerine sahip olabilir ancak çevrimiçi iadelere kıyasla farklı belgeleme adımlarına sahip olabilir. Bu, 'İade Süreci Verimlilik Trendleri' Dashboard'u için anahtar bir boyuttur. Neden önemli İadelerin nasıl başlatıldığını ayırt eder; bu, genellikle farklı kanallar için süreç akışını, kaynak ihtiyaçlarını ve döngü sürelerini etkiler. Nereden alınır Bu genellikle SAP ECC'de standart bir alan değildir ve özel bir alandan (örn. VBAK'ta) alınması veya Satış Organizasyonu (VKORG) veya Dağıtım Kanalı (VTWEG) gibi diğer verilerden çıkarılması gerekebilir. Belirli uygulama için SAP ECC dokümantasyonuna başvurun. Örnekler Online PortalMağaza İçiÇağrı Merkezi | |||
| İade Nedeni ReturnReason | Müşteri tarafından ürünü iade etmek için sağlanan neden kodu. | ||
| Açıklama Bu öznitelik, SAP'deki önceden tanımlanmış neden kodlarını kullanarak bir ürünün neden iade edildiğini belirtir. Örnekler arasında 'Taşıma sırasında hasar görmüş', 'Yanlış ürün gönderilmiş' veya 'Uymuyor' yer alır. Bu, kök neden analizi için kritik bir boyuttur. Süreç haritasını veya KPI'ları İade Nedeni'ne göre filtreleyerek, analistler belirli nedenlerin daha uzun işlem süreleri, daha yüksek inceleme başarısızlık oranları veya belirli süreç sapmalarıyla ilişkili olup olmadığını belirleyebilir. Bu içgörü, ürün kalitesi, lojistik veya satış süreçlerinde iyileştirmeleri teşvik edebilir. Neden önemli İadelerin neden gerçekleştiğini açıklayarak, ürün kalitesi, nakliye veya açıklama sorunlarını ele alarak iade oranlarını azaltmak için kök neden analizine olanak tanır. Nereden alınır Satış Belgesi Kalem tablosu VBAP'da, ABGRU alanında (Satış belgelerinin reddedilme nedeni) bulunur. Örnekler 001 - Hasarlı ürün002 - Yanlış ürün005 - Çok geç ulaştı | |||
| İşlem Temsilcisi ProcessingAgent | Aktiviteyi gerçekleştiren çalışanın kullanıcı kimliği. | ||
| Açıklama Bu öznitelik, iade siparişini oluşturma veya mal girişini kaydetme gibi belirli bir süreç adımını yürütmekten sorumlu kişinin kullanıcı adını yakalar. Genellikle 'Değiştiren' veya 'Oluşturan' kullanıcı olarak adlandırılır. İşlem Temsilcisine göre analiz yapmak, performans yönetimi ve kaynak analizi için anahtardır. En iyi performans gösterenleri, ek eğitime ihtiyaç duyabilecek temsilcileri ve bir ekipteki iş yükü dağılımını belirlemeye yardımcı olur. 'Temsilci İade İşleme Performansı' gibi Dashboard'larda döngü sürelerini ve verimi karşılaştırmak için kullanılır. Neden önemli Kullanıcı katılımını izleyerek, ekip performansının, iş yükü dağıtımının analizini ve eğitim ihtiyaçlarının veya en iyi uygulamaların belirlenmesini sağlar. Nereden alınır Genellikle VBAK, LIKP, VBRK gibi başlık tablolarında ERNAM (Oluşturan) veya AENAM (Değiştiren) gibi alanlarda bulunur. Değişiklik olayları için CDHDR'de USERNAME'dir. Örnekler CBURNSDSCRANTON`JHALPERT` | |||
| Malzeme Numarası MaterialNumber | İade edilen ürün için benzersiz tanımlayıcı. | ||
| Açıklama Malzeme Numarası veya SKU, iade edilen tam öğeyi belirtir. Bu, ürün düzeyinde detaylı analiz yapılmasına olanak tanır. Malzeme Numarasına göre iadeleri analiz ederek, işletmeler yüksek iade oranlarına sahip ürünleri belirleyebilir; bu da kalite sorunları, yanlış açıklamalar veya üretim kusurlarını gösterebilir. 'İadelerin Envanter Üzerindeki Etkisi' gibi Dashboard'lar ve farklı ürünlerin iade süreci boyunca nasıl hareket ettiğini anlamak için hayati öneme sahiptir. Neden önemli Hangi ürünlerin iade edildiğini belirler, potansiyel kalite kontrol sorunlarını veya yanlış ürün açıklamalarını vurgular. Nereden alınır Satış Belgesi Kalem tablosu VBAP'da, MATNR alanında bulunur. Örnekler RM-1025FG-2050-BACC-5591 | |||
| Talep Edilen Geri Ödeme Tutarı RequestedRefundAmount | Geri ödemenin beklenen değeri, genellikle iade edilen ürün(ler)in net değerine dayanır. | ||
| Açıklama Bu öznitelik, iade siparişinde kaydedilen iadenin başlangıçtaki parasal değerini temsil eder. Finansal analiz ve mutabakat için bir temel görevi görür. Bu tutar, uyumsuzlukları izlemek için 'Gerçek Geri Ödeme Tutarı' ile karşılaştırılır ve 'Geri Ödeme Tutarı Uyumsuzluğu Takibi' Dashboard'u için anahtar bir metriktir. Bu değeri analiz etmek, iadelerin finansal etkisini izlemeye ve fiyatlandırma veya kredi hesaplamasındaki potansiyel sorunları belirlemeye yardımcı olur. Neden önemli İadenin başlangıç finansal değerini belirler; bu, finansal tutarsızlıkları izlemek ve iade edilen malların toplam değerini anlamak için kritik öneme sahiptir. Nereden alınır Bu değer, genellikle iade siparişi kalem seviyesinden alınan net değerdir. VBAP tablosunda, NETWR alanında bulunur. Örnekler 150.0049,991250.75 | |||
| Geri Ödeme SLA Hedef Tarihi RefundSLATargetDate | Hizmet seviyesi anlaşmalarına göre geri ödemenin işlenmesinin beklendiği tarih. | ||
| Açıklama Bu öznitelik, belirli bir iade vakası için geri ödeme sürecini tamamlama süresini tanımlar. Genellikle 'mal girişinden itibaren 5 iş günü' gibi iş kurallarına göre hesaplanır. Bu hedef tarih, gerçek performansın ölçüldüğü kıyaslama noktasıdır. Müşteri taahhütlerine uyumu izlemesine ve SLA'larını ihlal etme riski taşıyan vakaları belirlemesine olanak tanıyan 'Geri Ödeme İşleme SLA Uyumluluğu' Dashboard'unun temel bileşenidir. Neden önemli Geri ödeme işlemlerinin performans hedefini belirler, böylece işletmenin SLA uyumluluğunu ölçmesine, raporlamasına ve vadesi geçmiş vakaları önceliklendirmesine olanak tanır. Nereden alınır Bu genellikle standart bir SAP alanı değildir ve iş kurallarına göre türetilmesi gerekebilir. Anahtar bir tarih alanından (örn. MKPF'den mal giriş tarihi) artı yapılandırılmış bir süreden hesaplanabilir. SAP ECC dokümantasyonuna veya iş gereksinimlerine başvurun. Örnekler 2023-04-25T23:59:59Z2023-04-28T23:59:59Z2023-05-02T23:59:59Z | |||
| Geri Ödeme Tutarı Tutarsızlığı RefundAmountDiscrepancy | Fiili ve talep edilen geri ödeme tutarları arasındaki hesaplanan fark. | ||
| Açıklama Bu hesaplanmış metrik, iade siparişinde başlangıçta talep edilen ile alacak dekontunda nihayetinde düzenlenen arasındaki parasal farkı nicelendirir. Pozitif bir değer kısmi bir geri ödemeyi gösterebilirken, negatif bir değer nadirdir ancak fazla ödemeyi işaret edebilir. Bu öznitelik, 'Geri Ödeme Tutarı Uyumsuzluğu Takibi' Dashboard'u için anahtar ölçümdür. Ürün durumu değerlendirmeleri, yeniden stoklama ücretleri veya hatalardan kaynaklanabilecek finansal sapmaları olan vakaları hızlıca belirlemeye ve analiz etmeye yardımcı olur. Bunu izlemek, finansal kontrolü ve politika uyumunu sağlamaya yardımcı olur. Neden önemli Geri ödeme sürecindeki finansal sapmaları doğrudan ölçerek, politika Nereden alınır Hesaplanan alan: ActualRefundAmount - RequestedRefundAmount. Örnekler 0.00-4.99-50.00 | |||
| İade Politikasına Uygunluk ReturnPolicyAdherence | İadenin tanımlanmış tüm iş kurallarına ve politikalarına uygun olup olmadığını gösteren bir işaretleyici. | ||
| Açıklama Bu hesaplanmış boolean özniteliği, bir iade vakasının standart, belirlenmiş şirket politikalarına uyup uymadığını gösterir. Mantık, iadenin izin verilen süre içinde başlatılıp başlatılmadığı, neden kodunun ürün için geçerli olup olmadığı veya bir istisna için yönetici onayı alınıp alınmadığı gibi birden fazla koşulu kontrol etmeyi içerebilir. Bu öznitelik, 'İade Onay Politikası Uyumluluğu' Dashboard'una güç verir. Uyum oranının doğrudan ölçülmesine olanak tanır ve en sık atlanan politikaları belirlemeye yardımcı olarak hedefe yönelik süreç iyileştirmesi veya eğitim sağlar. Neden önemli İş kurallarına karşı Nereden alınır Bu, bir dizi iş kuralına dayalı türetilmiş bir özniteliktir. Örneğin: (İade Başlangıç Tarihi - Orijinal Satın Alma Tarihi) <= 30 gün VE İadeNedeni BOŞ DEĞİL. Örnekler truefalse | |||
| İade Sipariş Durumu ReturnOrderStatus | İade sipariş vakasının genel işlem durumu. | ||
| Açıklama Bu öznitelik, 'Açık', 'İşlemde' veya 'Tamamlandı' gibi iade vakasının mevcut durumunun bir anlık görüntüsünü sağlar. Satış belgesinin başlık veya kalem seviyesindeki durumların birleşiminden türetilir. Analizde, bu öznitelik aktif veya tamamlanmış iadelere odaklanmak için vakaları filtrelemek için kullanışlıdır. Açık vakaların genel iş yükünü ve ilerlemesini izlemeye yardımcı olabilir ve her iade yolculuğu için üst düzey bir sonuç sağlar. Neden önemli Bir vakanın yaşam döngüsünde nerede olduğuna dair üst düzey bir görünüm sunarak, açık, devam eden veya kapanmış iadelerin filtrelenmesine ve analizine olanak tanır. Nereden alınır VBUK (Başlık Durumu) ve VBUP (Kalem Durumu) tablolarındaki durum alanlarından türetilmiştir. Örneğin, VBUK-GBSTK belgenin genel işlem durumudur. Örnekler Açıkİşlemde.Tamamlandı | |||
| Kredi Notu Numarası CreditMemoNumber | Geri ödeme için düzenlenen alacak dekontu belgesi için benzersiz tanımlayıcı. | ||
| Açıklama Alacak Dekontu, SAP'de müşteriye ödenecek geri ödemeyi resmileştiren resmi faturalama belgesidir. Bu numara, ilgili finansal belgeyi benzersiz şekilde tanımlar. Bu öznitelik, finansal mutabakat ve operasyonel iadeden finansal ödemeye kadar süreci izlemek için hayati öneme sahiptir. Süreçte önemli bir dönüm noktası olarak hizmet eder ve 'Gerçek Geri Ödeme Tutarı' gibi öznitelikler için ilgili muhasebe belgelerini bulmak için kullanılır. Neden önemli Müşteri geri ödemesini yetkilendiren finansal belgeye doğrudan bir bağlantı sağlayarak finansal denetim ve mutabakat için hayati bir rol oynar. Nereden alınır Alacak dekontu bir faturalama belgesidir. Numarası VBRK tablosunda (Faturalama Belgesi: Başlık Verileri), VBELN alanında bulunur. Bağlantı, iade siparişinin belge akışı aracılığıyla bulunur. Örnekler 900011229000334490005566 | |||
| Müşteri Kimliği CustomerId | İadeyi başlatan müşteri için benzersiz tanımlayıcı. | ||
| Açıklama Bu öznitelik, ürünü iade eden belirli müşteriyi (SAP terimleriyle 'Satılan Taraf') tanımlar. İade işlemini müşteri ana verilerine bağlar. Müşteri Kimliğine göre analiz yapmak, sık sık iade yapan müşterileri belirlemeye yardımcı olur; bu da memnuniyetsizlik veya iade politikalarının potansiyel kötüye kullanımını işaret edebilir. Ayrıca, belirli müşteri gruplarının farklı iade davranışlarına veya süreç deneyimlerine sahip olup olmadığını anlamak için müşteri segmentasyon verileriyle birlikte kullanılabilir. Neden önemli İadeleri belirli müşterilerle bağlar, bu da müşteri davranışlarının analiz edilmesine, tekrar iade yapanların belirlenmesine ve müşteri ilişkileri üzerindeki etkiye olanak tanır. Nereden alınır Satış Belgesi Başlık tablosu VBAK'da, KUNNR alanında (Satılan taraf) bulunur. Örnekler CUST-100432CUST-203991CUST-831102 | |||
| Orijinal Satış Belgesi OriginalSalesDocument | İadenin yapıldığı orijinal satış siparişinin numarası. | ||
| Açıklama Bu öznitelik, ilk müşteri satın alımına doğrudan bir bağlantı sağlar. İadeyi orijinal işlem detaylarına bağlayan bir referans belgesidir. Bu bağlantıya sahip olmak, daha derin analizler için son derece değerlidir. Analistlerin belirli siparişlerden yapılan satışların neden iade edildiğini araştırmasına, orijinal fiyatlandırmayı ve koşulları kontrol etmesine ve eksiksiz müşteri siparişten iadeye yaşam döngüsünü anlamasına olanak tanır. Belirli kampanyalar veya kanallar aracılığıyla satılan ürünlerin daha yüksek iade oranlarına sahip olup olmadığına dair soruları yanıtlamaya yardımcı olabilir. Neden önemli İadeyi orijinal satışa bağlar, bu da müşteri işleminin tam döngülü bir görünümünü ve daha derin kök neden analizini mümkün kılar. Nereden alınır Bu referans, iade siparişinin kalem düzeyinde saklanır. VBAP tablosunda, VGBEL alanında (referans belgenin belge numarası) bulunabilir. Örnekler 100034561000987110012345 | |||
| Şirket Kodu CompanyCode | İşlemden sorumlu tüzel kişilik veya şirket. | ||
| Açıklama Şirket Kodu, SAP içinde bağımsız bir muhasebe birimini temsil eder. İadeler ve geri ödemeler de dahil olmak üzere tüm finansal işlemler belirli bir şirket koduna kaydedilir. Bu öznitelik, finansal raporlama ve çok uluslu veya çoklu varlık kuruluşlarında süreci bölümlendirmek için hayati öneme sahiptir. Şirket Koduna göre analiz yapmak, kurum içindeki farklı tüzel kişilikler arasında iade süreci performansının karşılaştırılmasına olanak tanır. Neden önemli Bir kuruluş içindeki farklı tüzel kişilikler arasında iade süreçlerinin filtrelenmesine ve karşılaştırılmasına olanak tanır; bu, finansal analiz için kritik öneme sahiptir. Nereden alınır Satış Belgesi Başlık tablosu VBAK'da, BUKRS_VF alanında (Faturalama için şirket kodu) bulunur. Örnekler 10002000US01 | |||
| SLA Uyumlu mu? IsSLACompliant | Geri ödemenin mutabık kalınan hizmet seviyesi anlaşması (SLA) kapsamında işlenip işlenmediğini gösteren bir işaretleyici. | ||
| Açıklama Bu, 'Geri Ödeme İşlendi' aktivitesinin gerçek tarihini 'Geri Ödeme SLA Hedef Tarihi' ile karşılaştıran hesaplanmış bir boolean özniteliğidir. Geri ödeme zamanında tamamlandıysa doğru, aksi takdirde yanlış sonucunu verir. Bu öznitelik, her vakanın SLA performansı için net, ikili bir sonuç sağlayarak analiz ve raporlamayı basitleştirir. Genel 'Geri Ödeme İşleme SLA Uyumluluğu' oranını hesaplamak için kullanılır ve uyumsuz vakaları izole etmek ve analiz etmek için kolay filtrelemeye olanak tanır. Neden önemli Her vaka için SLA performansının net, ikili bir göstergesini sağlayarak uyumluluk izleme ve raporlamayı basitleştirir. Nereden alınır Bu, hesaplanmış bir özniteliktir. Mantık şöyledir: 'Geri Ödeme İşlendi' Olay Zamanı <= RefundSLATargetDate. Örnekler truefalse | |||
| Tesis Plant | İade edilen ürünün alındığı ve işlendiği fiziksel konum veya tesis. | ||
| Açıklama SAP'deki Tesis, ürünlerin elleçlendiği bir depo veya dağıtım merkezi gibi fiziksel bir konumu temsil eder. İadeler için bu, genellikle ürünün alındığı ve incelendiği yerdir. Tesise göre süreci analiz etmek, farklı tesisler arasındaki performans farklılıklarını belirlemeye yardımcı olur. Hangi depoların ürün incelemede daha verimli olduğunu veya daha yüksek verime sahip olduğunu vurgulayabilir, bu da 'Ürün İnceleme Verimi ve Verimliliği' Dashboard'unu destekler. Neden önemli İadeyi işleyen fiziksel konumu belirler, bu da farklı depolar veya dağıtım merkezleri arasında performans karşılaştırmasına olanak tanır. Nereden alınır İade siparişinin kalem seviyesinde, VBAP tablosunda, WERKS alanında bulunur. Örnekler PL01WH02DC05 | |||
| Uçtan Uca Döngü Süresi EndToEndCycleTime | Bir iade vakası için ilk aktiviteden son aktiviteye kadar geçen toplam süre. | ||
| Açıklama Bu, ilk olay (örn. 'İade Siparişi Oluşturuldu') ile son olay (örn. 'İade Siparişi Tamamlandı' veya 'Alacak Dekontu Temizlendi') arasındaki süre olarak hesaplanan vaka düzeyinde bir metriktir. Bir iadenin süreçte geçirdiği toplam süreyi temsil eder. Bu, genel süreç verimliliği için birincil bir temel performans göstergesidir. Zaman içindeki iyileşmeleri izlemek için trend analizinde ve karşılaştırmalarda kullanılır. Bu metriğin dağılımını analiz etmek, ürün türü veya iade nedeni gibi daha uzun veya daha kısa çözüm süreleriyle ilişkili faktörleri belirlemeye yardımcı olur. Neden önemli İade sürecinin toplam süresini ölçer, genel süreç verimliliğinin ve müşteri deneyiminin temel bir göstergesini sağlar. Nereden alınır Bu, hesaplanmış bir metriktir. Bir vakadaki son aktivitenin zaman damgası eksi ilk aktivitenin zaman damgasıdır. Örnekler 5 gün 4 saat12 gün 8 saat3 gün 2 saat | |||
İade ve Geri Ödeme İşlemleri Faaliyetleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Alacak Dekontu Oluşturuldu | Müşteriye finansal kredi yetkisi vermek için bir faturalama belgesi (kredi notu) oluşturulur. Bu, geri ödeme miktarını resmileştiren resmi finansal belgedir. | ||
| Neden önemli Bu, süreçteki önemli bir finansal dönüm noktasıdır. Alacak dekontunu oluşturma süresini analiz etmek, mal girişi ve incelemeden sonra finansal belge işlemedeki gecikmeleri belirlemeye yardımcı olur. Nereden alınır Bu, VBRK tablosunda (Faturalama Belgesi Başlığı) kaydedilen açık bir olaydır. Oluşturma tarihi VBRK-ERDAT'tır. Alacak dekontu, belge akışında iade siparişi veya alacak dekontu talebine bağlıdır. Yakala İlgili faturalama belgesi için VBRK tablosundaki oluşturma zaman damgasını (ERDAT) kullanın. Event tipi explicit | |||
| İade Siparişi Oluşturuldu | Bu aktivite, bir müşteri bir ürün iade etmek istediğinde iade sürecinin başlangıcını işaret eder. SAP ECC'de 'İade' (örn. RE) türünde yeni bir satış belgesi oluşturulduğunda kaydedilir. | ||
| Neden önemli Bu, iade süreci için birincil başlangıç olayıdır. Bu aktiviteden diğerlerine kadar geçen süreyi analiz etmek, toplam döngü süresini ölçmeye ve başlangıçtaki işleme gecikmelerini belirlemeye yardımcı olur. Nereden alınır Bu, VBAK tablosunda (Satış Belgesi Başlığı) kaydedilen açık bir olaydır. Oluşturma zaman damgası, VBAK-AUART = 'RE' sipariş türüne sahip ilgili satış belgesi numarası (VBAK-VBELN) için VBAK-ERDAT ve VBAK-ERZET'te saklanır. Yakala 'RE' satış belgesi türü için VBAK tablosundaki oluşturma zaman damgasını (ERDAT, ERZET) kullanın. Event tipi explicit | |||
| İade Siparişi Tamamlandı | Bu aktivite, satış ve dağıtım açısından iade sürecinin sonunu işaret eder. İade siparişindeki tüm kalemler tamamen işlenip kapatıldığında meydana gelir. | ||
| Neden önemli Bu, süreç için birincil bitiş olayıdır. 'İade Siparişi Oluşturuldu'dan bu aktiviteye kadar geçen süreyi ölçmek, iade vakası için uçtan uca döngü süresini verir. Nereden alınır Bu, durum tablolarından çıkarılan bir olaydır. Satış belgesi başlığının genel durumu (VBUK-GBSTK) 'C' (Tamamen işlendi) olarak güncellendiğinde kaydedilir. Yakala Başlık durum alanı VBUK-GBSTK 'C' olarak değiştiğinde, değişiklik belgelerinden (CDHDR/CDPOS) zaman damgasını belirleyin. Event tipi inferred | |||
| Kredi Notu FI'ye Kaydedildi | Alacak dekontu finansal muhasebeye serbest bırakılır ve bu da onu resmi bir alacak kaydı haline getirir. Bu adım, müşteriye gerçek geri ödeme sürecini tetikler. | ||
| Neden önemli Bu aktivite, geri ödemenin şirket tarafından finansal olarak tanındığı noktayı işaret eder. Alacak dekontu oluşturma ve kaydetme arasındaki gecikmeler, müşteriye yapılan gerçek geri ödemeyi yavaşlatabilir. Nereden alınır Bu, faturalama belgesi başlığındaki kayıt durumu (VBRK-RFBSK) 'C' (Kayıt belgesi oluşturuldu) olarak güncellendiğinde belirlenen çıkarımsal bir olaydır. Gerçek muhasebe belgesi oluşturma tarihi BKPF tablosundadır. Yakala VBRK-RFBSK 'C' olarak ayarlandığında zaman damgasını belirleyin veya bağlı BKPF muhasebe belgesinden oluşturma tarihini (CPUDT) kullanın. Event tipi inferred | |||
| Kullanım Kararı Verildi | İncelemeden sonra, bir kalite mühendisi veya denetçisi, iade edilen ürünün durumu hakkında resmi bir karar verir. Bu karar, stoğa iade, hurdaya ayırma veya onarım gibi sonraki süreci belirler. | ||
| Neden önemli Bu aktivite, inceleme verimliliğini ve sonuçlarını anlamak için çok önemlidir. Karar, geri ödeme miktarını ve envanter yönetimini doğrudan etkiler. Nereden alınır SAP QM kullanılıyorsa, bu QAVE tablosunda (Denetim işleme kullanım kararı) yakalanan açık bir Yakala QAVE tablosundaki kullanım kararı tarihini (VDATUM), denetim partisi (QALS-PRUEFLOS) aracılığıyla bağlı olarak kullanın. Event tipi explicit | |||
| Mal Kabul Kaydı Yapıldı | Bu aktivite, iade edilen fiziksel ürünün depoda veya işleme merkezinde alındığında meydana gelir. İade teslimatına karşı bir mal hareketi belgesinin kaydedilmesiyle yakalanır. | ||
| Neden önemli Şirketin iade edilen ürünü teslim aldığını gösteren önemli bir dönüm noktasıdır. Fiziksel inceleme için başlangıç noktasıdır ve envanter doğruluğunu etkiler. Nereden alınır Bu olay, VBUP tablosundaki iade teslimat kaleminin mal hareketi durumundan (örn. WBSTA = 'C') çıkarılabilir. Tam zaman damgası, ilgili mal girişi için malzeme belgesi başlığındadır (MKPF-BUDAT). Yakala İade teslimatına bağlı malzeme belgesi için MKPF tablosundan kayıt tarihini (BUDAT) bulun. Event tipi inferred | |||
| İade Sipariş Engeli Kaldırıldı | İade talebinin onayını temsil ederek bir sonraki aşamaya geçmesine olanak tanır. Bu, genellikle belge durumundaki bir değişiklik veya teslimat ya da faturalandırma engelinin kaldırılmasıyla kaydedilir. | ||
| Neden önemli Bu aktivite kritik bir onay dönüm noktasıdır. Bu adıma ulaşmak için geçen süreyi ölçmek, iade yetkilendirme ve onay sürecindeki darboğazları belirlemeye yardımcı olur. Nereden alınır Bu, satış belgesi değişiklik günlüklerinden türetilen çıkarımsal bir olaydır. VBAK veya VBAP'taki blok alanlarındaki değişiklikler veya VBUK/VBUP'taki durum alanları için CDHDR ve CDPOS tablolarını kontrol edin. Yakala İlgili bir blok durumu kaldırıldığında, değişiklik belgesi tablolarından (CDHDR/CDPOS) zaman damgasını belirleyin. Event tipi inferred | |||
| İade Sipariş Kalemi Reddedildi | İade siparişindeki belirli bir kalem, ilk inceleme sırasında veya incelemeden sonra reddedilir. Bu, bu kalem için geri ödeme gibi başka hiçbir işlemin yapılmayacağı anlamına gelir. | ||
| Neden önemli Reddetmeleri analiz etmek, geçersiz iade taleplerini belirlemeye yardımcı olur ve müşteri politikası iletişimini bilgilendirebilir. Bu, süreçte geri ödemeye yol açmayan önemli bir yoldur. Nereden alınır Bu, çıkarımsal bir olaydır. Genellikle VBAP tablosunda (VBAP-ABGRU) kalem için benzersiz bir 'Ret Nedeni' kodu ayarlanarak yakalanır. Zaman damgası değişiklik günlüklerinden alınmalıdır. Yakala Bir iade kalemi için VBAP-ABGRU alanı doldurulduğunda, değişiklik belgelerinden (CDHDR/CDPOS) zaman damgasını belirleyin. Event tipi inferred | |||
| İade Sipariş Kalemi Tamamlandı | İade siparişindeki bireysel bir kalem, tam olarak işlenmiş olarak işaretlenir. Bu genellikle, o kalem için tüm lojistik ve finansal takip belgeleri tamamlandıktan sonra gerçekleşir. | ||
| Neden önemli Kalem düzeyinde takip, hangi ürünlerin veya iade nedenlerinin en uzun gecikmelere yol açtığını belirlemeye yardımcı olur. Süreç tamamlanmasının daha ayrıntılı bir görünümünü sağlar. Nereden alınır Bu, durum tablolarından çıkarılan bir olaydır. Satış belgesi kaleminin genel durumu (VBUP-GBSTK) 'C' (Tamamen işlendi) olarak güncellendiğinde kaydedilir. Yakala Kalem durum alanı VBUP-GBSTK 'C' olarak değiştiğinde, değişiklik belgelerinden (CDHDR/CDPOS) zaman damgasını belirleyin. Event tipi inferred | |||
| İade Teslimatı Oluşturuldu | İade edilen malların fiziksel teslimatını yönetmek için bir teslimat belgesi oluşturulur. Bu `event`, iade için lojistik sürecin başlatıldığını gösterir. | ||
| Neden önemli İdari işleme aşamasından fiziksel lojistiğe geçişi izler. Buradaki gecikmeler, depo planlamasını ve genel iade döngü süresini etkileyebilir. Nereden alınır Bu, LIKP tablosunda (Teslimat Başlığı) kaydedilen açık bir olaydır. Oluşturma zaman damgası LIKP-ERDAT'tadır. Kaynak iade siparişine bağlantı LIPS tablosunda (LIPS-VGBEL) bulunur. Yakala İade siparişiyle ilişkili teslimat için LIKP tablosundaki oluşturma zaman damgasını (ERDAT) kullanın. Event tipi explicit | |||
| Kredi Notu Talebi Oluşturuldu | Geri ödeme ihtiyacını resmi olarak belgelemek için bir kredi notu talebi oluşturulur. Birçok yapılandırmada, iade siparişi doğrudan kredi notu talebi olarak hizmet eder. | ||
| Neden önemli Bu, iade sürecinin finansal mutabakat kısmının resmi başlangıcıdır. Sonraki finansal onaylar ve belge oluşturma için bir tetikleyici sağlar. Nereden alınır Bu, VBAK'ta 'Alacak Dekontu Talebi' (örn. CR) türündeki bir satış belgesi için açık bir olay olabilir veya sipariş türü siparişe bağlı faturalandırma olarak yapılandırılmışsa 'İade Siparişi Oluşturuldu' olayıyla aynı olabilir. Yakala 'CR' belge türü için VBAK'tan oluşturma zaman damgasını (ERDAT) kullanın veya iade siparişi oluşturma olayını yeniden kullanın. Event tipi explicit | |||
| Kredi Notu Temizlendi | Alacaklardaki açık kredi kalemi, genellikle müşteriye yapılan bir ödeme ile kapatılır. Bu olay, geri ödemenin nihai finansal kapanışını işaret eder. | ||
| Neden önemli Bu aktivite, nakit çıkışı olayını doğrular ve sürecin finansal tarafını tamamlar. Müşteri bakış açısıyla geri ödeme yolculuğunun gerçek sonudur. Nereden alınır Bu, FI modülünden açık bir olaydır. Muhasebe belgesinin temizleme tarihi, ilgili müşteri kalemleri için BSEG tablosunda (BSEG-AUGDT) saklanır. Yakala Alacak dekontuna bağlı muhasebe belgesi için BSEG veya BSAD tablosundaki temizleme tarihini (AUGDT) kullanın. Event tipi explicit | |||
Veri Çekim Kılavuzları
Adımlar
- ABAP Programı Oluşturma:
SE38işlem kodunu kullanarak yeni bir yürütülebilir ABAP programı oluşturun, örneğinZ_PM_RETURN_EXTRACTION. Açıklayıcı bir başlık sağlayın ve yerel bir nesne veya bir geliştirme paketi içinde kaydedin. - Seçim Ekranı Tanımlama: Programda, kullanıcıların
verileri filtrelemesine olanak tanıyan bir seçim ekranı tanımlayın. Ana filtreler arasında iade siparişleri için oluşturma tarihi aralığı (S_ERDAT), iadeler için satış belgesi türü (S_AUART, örneğin 'RE') ve şirket kodu (P_BUKRS) bulunur. - Veri Yapıları Tanımlama: Gerekli
Event Logformatıyla eşleşen yerel bir yapı tipi oluşturun. Bu yapı,ReturnCaseId,ActivityName,EventTime,SourceSystem,LastDataUpdate,ProcessingAgent,ReturnReasonve diğer gerekliöznitelikleriçin alanlar içermelidir. - Veri Seçim Mantığı Uygulama: Gerekli 12 aktivitenin her biri için
veriseçmek üzere temel ABAP mantığını yazın. Bu, VBAK, VBAP, LIKP, VBRK, BKPF, CDHDR ve CDPOS gibi çeşitli SAP tablolarını sorgulamayı içerir. Teslimatlar ve kredi notları gibi ilgili belgeleri orijinal iade siparişine geri bağlamak için belge akış tablosunu (VBFA) kullanın. - 'İade Siparişi Oluşturuldu' Ayıklama: Seçim ekranı kriterlerine göre
VBAKveVBAPtablolarından kayıtları seçin. Satış belgesi numarası (VBAK-VBELN),ReturnCaseIdolarak hizmet edecektir. - Durum Değişiklikleri ve Ana
Event'leri Ayıklama: 'İade Siparişi Bloğu Kaldırıldı' veya 'İade Siparişi Kalemi Reddedildi' gibi aktiviteler için, değişiklik belgesi tablolarını (CDHDR,CDPOS) veyaVBAP(ABGRU) gibi tablolardaki durum alanlarını sorgulayın. Lojistik ve finansal takip aktiviteleri için, ilk iade siparişleri setine bağlı olduklarından emin olmak içinVBFAkullanarakLIKP,MKPF,VBRKveBKPFgibi tablolardan seçim yapın. Event LogTablosunu Doldurma: Ayıklanan her aktivite için,Event Logyapınızla tanımlanmış dahili bir tabloda yeni bir kayıt oluşturun. Kaynak SAP tablolarındakiverileri ilgili alanlara eşleyin, örneğinVBAK-ERNAM'ıProcessingAgent'a veVBAK-ERDATileVBAK-ERZET'iEventTime'a eşleyin.- Aktivite Verilerini Birleştirme: Bir aktivite için her SELECT ifadesinin sonuçlarını tek, ana dahili tabloya eklediğinden emin olun. Bu, her satırın bir
event'i temsil ettiği son düz dosya yapısını oluşturur. - Zaman Damgalarını ve Sistem Bilgilerini Yönetme: Her satır için
LastDataUpdatezaman damgasını doldurmak üzere sistem alanıSY-DATUMveSY-UZEIT'i kullanın.SourceSystem'i doldurmak içinSY-SYSID'yi kullanın. - Çıktı İşlevselliğini Uygulama:
REUSE_ALV_GRID_DISPLAYgibi fonksiyon modüllerini kullanarak sonuçları çevrimiçi analiz için bir ALV ızgarasında (SAP Liste Görüntüleyici) görüntüleme işlevselliği ekleyin. Son dahili tabloyu kullanıcının yerel makinesine CSV veya düz metin dosyası olarak indirme seçeneği sunun. - Çalıştırma ve Dışa Aktarma: Programı
SE38aracılığıyla çalıştırın. İstenen seçim kriterlerini girin ve çalıştırın.veriler görüntülendikten veya işlendikten sonra,Event Logdosyasını kaydetmek için programın dışa aktarma özelliğini kullanın. Dosyanın ProcessMind ile uyumlu bir formatta, tipik olarak başlık satırı içeren bir CSV olarak kaydedildiğinden emin olun.
Konfigürasyon
- Tarih Aralığı: Seçim ekranında, iade siparişi oluşturma tarihi için bir tarih aralığı belirtin.
verihacmi ile süreç içgörüsünü dengelemek için ilk analiz için 3 ila 6 aylık bir aralık önerilir. - İade Belgesi Türü: Sisteminizde iadeler için kullanılan belirli satış belgesi türüne göre filtreleme yapın; örneğin, İadeler için 'RE', Kredi Notu Talebi için 'CR'. Bu, doğru süreci izole etmek için kritik bir filtredir. Bu değerleri
S_AUARTseçim seçeneğine girin. - Şirket Kodu:
verileri belirli bir tüzel kişiliğe sınırlamak için ilgili şirket kodunu (P_BUKRS) belirtin. Bu, çok şirketli ortamlarda esastır. - Ön Koşullar: Programı çalıştıran kullanıcının
SE38(program yürütme) yetkilerine ve temel SD, MM ve FI tablolarına (örneğin VBAK, LIKP, VBRK, BKPF, CDHDR) erişime ihtiyacı vardır. Geliştirme, bir ABAP geliştirici rolü gerektirir. - Performans: Çok yıllı çok büyük
verikümeleri için program uzun çalışma süreleri yaşayabilir. Bunu birbackground job(SM36) olarak çalıştırmayı ve çıktıyı çevrimiçi görüntülemek yerine uygulama sunucusu dosya sistemine yazmayı düşünün.
a Örnek Sorgu 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( ). Adımlar
- Ön Koşullar: Gerekli SAP ECC tablolarına okuma erişimi olan bir veritabanı kullanıcınız olduğundan emin olun. Bu, Satış ve Dağıtım (SD), Malzeme Yönetimi (MM) ve Finansal Muhasebe (FI) modüllerinden tablolara erişimi içerir. Veritabanına bağlanmak için DBeaver, SAP HANA Studio veya Oracle SQL Developer gibi uygun bir SQL istemci aracına ihtiyacınız olacaktır.
- Sistem Özelliklerini Belirleme: Sorguyu çalıştırmadan önce, kuruluşunuzda iadeler için kullanılan belirli belge türlerini belirlemelisiniz. Sorgu, standart iadeler için 'RE' gibi gerçek değerlerle değiştirmeniz gereken
[YOUR_RETURN_ORDER_TYPES]yer tutucusunu kullanır. - Sorguyu Hazırlama: 'query' bölümünde sağlanan SQL sorgusunun tamamını SQL istemcinize kopyalayın.
- Parametreleri Yapılandırma: Sorgunun başında
BaseReturnOrdersadlı Ortak Tablo İfadesini (CTE) bulun. İstenen tarih aralığını belirtmek içinWHEREyan tümcesini[START_DATE]ve[END_DATE]değerlerini değiştirerek düzenleyin. İade siparişi türleri listesini güncelleyin ve gerekirse belirli bir şirket koduna (BUKRS_VF) göre filtreleyin. - Sorguyu Çalıştırma: Değiştirilen sorguyu SAP ECC veritabanına karşı çalıştırın. Yürütme süresi, seçilen tarih aralığına ve veritabanının boyutuna bağlı olarak değişebilir.
- Ham
Verileri İnceleme: Sorgu tamamlandıktan sonra, çıktıyı hızlıca gözden geçirin.ReturnCaseId,ActivityNameveEventTimesütunlarının doldurulmuş olduğunu ve birden fazla aktivite içinverilerin göründüğünü kontrol edin. - CSV'ye Dışa Aktarma: Tüm sonuç kümesini SQL istemcinizden bir CSV dosyasına dışa aktarın. Tüm karakterlerin doğru şekilde korunmasını sağlamak için UTF-8 kodlamasını kullanın.
- Yükleme İçin Hazırlık: CSV dosyasını açın ve sütun başlıklarının
ReturnCaseId,ActivityName,EventTime,SourceSystemvb. gibi gerekliözniteliklerle tam olarak eşleştiğini doğrulayın. SQL istemciniz dışa aktarma sırasında başlıkları değiştirdiyse düzeltin. - Son Yükleme: Temiz CSV dosyasını analiz için ProcessMind platformuna yükleyin.
Konfigürasyon
- İade Belgesi Türleri: Sorgu, SAP sisteminizde iade siparişlerini temsil eden belirli satış belgesi türleri ile yapılandırılmalıdır. Bu,
[YOUR_RETURN_ORDER_TYPES]yer tutucusunu değiştirerek yapılır. Yaygın örnekler arasında 'RE' veya özel 'Z' türleri bulunur. - Tarih Aralığı: Veri çıkarma için uygun bir tarih aralığı tanımlamak kritik öneme sahiptir. İlk analiz için genellikle 3 ila 6 aylık
veriönerilir. Bunu,[START_DATE]ve[END_DATE]yer tutucularını 'YYYYMMDD' formatında kullanarak ayarlayın. - Şirket Kodu: Birden fazla şirket kodu olan kuruluşlar için,
verileri filtrelemek odaklanmış bir analiz için esastır. Kapsamı sınırlamak için ilk CTE'yeVBAK.BUKRS_VF = '[YOUR_COMPANY_CODE]'gibi bir filtre ekleyebilirsiniz. - Veritabanı Diyalekti: Sağlanan sorgu, yaygın SQL fonksiyonlarını kullanır. Ancak,
TO_TIMESTAMPve string birleştirme (CONCAT) gibi tarih ve saat dönüştürmeleri, temel veritabanı sistemine (örneğin Oracle, HANA, DB2) bağlı olarak küçük sözdizimi ayarlamaları gerektirebilir. - Gerekli Yetkilendirmeler: Veritabanı kullanıcısının aşağıdaki ana tablolara okuma erişimi olması gerekir: VBAK, VBAP, VBFA, LIKP, LIPS, VBRK, VBRP, MKPF, MSEG, BKPF, BSAD, QALS, QAVE, CDHDR ve CDPOS.
a Örnek Sorgu 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;