İade ve geri ödeme işlemleri için Veri Templateiniz
İade ve geri ödeme işlemleri için Veri Templateiniz
- Toplanması önerilen öznitelikler
- İzlenecek temel etkinlikler
- Veri çıkarma yönergeleri
İade ve geri ödeme işlemlerinin öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Etkinlik adı ActivityName | İade sürecinde gerçekleşen belirli bir iş olayının veya adımın adı. | ||
| Açıklama Bu öznitelik, iade sürecindeki tek ve belirli bir işlemi ya da durum değişikliğini açıklar. Örneğin 'İade siparişi oluşturuldu', 'Mal girişi kaydedildi' veya 'Alacak dekontu oluşturuldu'. Bu etkinlikler süreç haritasının yapı taşlarını oluşturur. Etkinliklerin sırasını ve sıklığını incelemek, en yaygın süreç yollarını, sapmaları ve yeniden çalışma döngülerini belirlemeye yardımcı olur. Bir vakada ne olduğunu ve hangi sırayla gerçekleştiğini anlamak için gereklidir; tüm Process Mining analizlerinin temelini oluşturur. Neden önemli? Etkinlikler süreçteki adımları tanımlar. Bunların sırasını, süresini ve sıklığını incelemek Process Mining çalışmalarının temelidir ve işlerin gerçekte nasıl yürütüldüğünü gösterir. Nereden alınır? VBUK/VBUP gibi tablolardaki durum değişikliklerinden, belge oluşturma olaylarından (ör. VBAK, LIKP, VBRK tablolarında) veya CDHDR/CDPOS tablolarındaki değişiklik günlüklerinden elde edilir. Örnekler İade siparişi oluşturulduMal girişi kaydedildiAlacak dekontu oluşturulduİade siparişi kalemi tamamlandı | |||
| İade vakası kimliği ReturnCaseId | Müşterinin iade talebine ait benzersiz tanımlayıcıdır; ilgili tüm etkinlikleri ve belgeleri birbirine bağlar. | ||
| Açıklama İade vakası kimliği, iade sürecinin başlangıçtan kapanışa kadar tüm yaşam döngüsünü izlemek için kullanılan birincil anahtardır. Her kimlik belirli bir müşteri iadesine karşılık gelir ve sipariş oluşturma, teslimat, kontrol ve alacak dekontu işlemleri gibi ilgili tüm olayları kapsar. Süreç analizinde bu öznitelik, süreç haritasını oluşturmanın temelini oluşturur. Sistem, tek tek olayları uçtan uca vaka akışlarında gruplandırabilir; böylece her iade vakası için süreç varyantlarını, çevrim sürelerini ve darboğazları inceleyebilirsiniz. Neden önemli? Bu temel vaka tanımlayıcısı, iade sürecindeki tüm adımları birbirine bağlayarak uçtan uca süreç akışını ve performansı incelemenizi sağlar. Nereden alınır? Bu genellikle Satış ve Dağıtım (SD) modülündeki iade siparişi numarasıdır. VBAK tablosunda (Satış Belgesi Başlık Verileri), VBELN alanında bulunur. Belge kategorisi (VBAK-VBTYP), iadeler için 'H' değerini alır. Örnekler 600001236000045660000789 | |||
| Olay zamanı EventTime | Etkinliğin gerçekleştiği kesin tarih ve saat. | ||
| Açıklama Bu zaman damgası, bir iş olayının gerçekleştiği kesin anı gösterir. Süreçteki her etkinlik için kaydedilir ve bir vakadaki olayların kronolojik sırasını ortaya koyar. Etkinlikler arasındaki çevrim sürelerini hesaplamak, beklemelerin yol açtığı darboğazları belirlemek ve toplam vaka süresini ölçmek dâhil, zamana dayalı tüm analizler için olay zamanı gereklidir. Performans analizini ve hizmet düzeyi anlaşmalarına (SLA) uyumluluk kontrollerini mümkün kılar. Neden önemli? Bu zaman damgası, süreleri hesaplamak, süreç performansını incelemek, darboğazları belirlemek ve her iade vakasının zaman çizelgesini anlamak için gereklidir. Nereden alınır? SAP tablolarındaki çeşitli tarih ve saat alanlarından alınır. Oluşturma olaylarında genellikle ERDAT ve ERZET alanları kullanılır (ör. VBAK tablosunda). Değişiklik olaylarında ise CDHDR tablosundaki UDATE ve UTIME alanları kullanılır. Örnekler 2023-04-15T10:22:05Z2023-04-16T14:01:30Z2023-04-18T09:15:00Z | |||
| Kaynak sistem SourceSystem | Verinin alındığı sistem. | ||
| Açıklama Bu öznitelik, verinin kaynağını belirtir. Birden fazla sistemin bulunduğu ortamlarda bu bilgi önem taşır; veri kökenini ve bütünlüğünü doğrulamak için bağlam sağlar. Analizde, farklı kaynak sistemlerdeki süreçleri bir araya getirirken verileri bölümlere ayırmak veya filtrelemek için kullanılır. Olayların beklenen uygulamadan, bu örnekte SAP ECC’den geldiğini doğrular. Neden önemli? Verinin kaynağını belirtir; veri yönetişimi ve birden fazla kurumsal sistemi kapsayan analizler için önemlidir. Nereden alınır? Bu, belirli SAP ECC örneğini tanımlamak için veri çıkarımı sırasında belirlenen sabit bir değerdir (ör. 'ECC_PROD_100'). Örnekler SAP_ECC_PRODSAPECC_FINANCE_200 | |||
| Son veri güncellemesi LastDataUpdate | Bu sürece ait verilerin en son ne zaman yenilendiğini gösteren zaman damgası. | ||
| Açıklama Bu öznitelik, en son veri çıkarımının veya güncellemesinin tarih ve saatini kaydeder. İncelenen verilerin ne kadar güncel olduğunu gösterir. Analiz sırasında içgörülerin güncelliğini anlamak açısından önemlidir. Kullanıcılar verilerin ne kadar güncel olduğunu görebilir; bu da özellikle devam eden operasyonları izlerken bulguların geçerliliğini etkiler. Neden önemli? Verilerin güncelliğini gösterir; kullanıcıların süreç analizinin ne kadar güncel olduğunu ve bir sonraki güncellemenin ne zaman beklendiğini anlamasını sağlar. Nereden alınır? Bu, veri çıkarma işinin yürütülme zaman damgasıyla doldurulan bir meta veri özniteliğidir. Örnekler 2023-05-20T02:00:00Z2023-05-21T02:00:00Z | |||
| Gerçekleşen iade tutarı ActualRefundAmount | Finans belgelerinde kaydedilen ve müşteriye alacak olarak yansıtılan son tutar. | ||
| Açıklama Bu öznitelik, işlenip muhasebe sistemine kaydedilen kesinleşmiş iade tutarını gösterir. Yeniden stoklama ücretleri, ürünün durumuna göre yapılan düzeltmeler veya diğer politika uygulamaları nedeniyle bu tutar talep edilenden farklı olabilir. 'İade tutarı farkı takibi' Dashboardu için önemli bir özniteliktir. Gerçekleşen tutarı talep edilen tutarla karşılaştırmak, iade tutarının hesaplanması ve onaylanmasındaki sistematik sorunları belirlemeye ve finansal doğruluğu korumaya yardımcı olur. Neden önemli? İadenin nihai finansal sonucunu gösterir. Talep edilen tutarla karşılaştırarak doğruluğu kontrol edebilir ve finansal kayıpları belirleyebilirsiniz. Nereden alınır? Alacak dekontuyla ilişkili finans belgesinden alınır. Genellikle ilgili ana defter hesabı kaydı için BSEG (Muhasebe Belgesi Kalemi) tablosundaki WRBTR alanında (belge para birimindeki tutar) bulunur. Örnekler 150.0045.001200.75 | |||
| İade kanalı ReturnChannel | İadenin başlatıldığı kanal; örneğin çevrimiçi, mağaza veya çağrı merkezi. | ||
| Açıklama Bu öznitelik, iade talebinin hangi kanaldan veya yöntemle alındığını belirtir. Web portalı, fiziksel mağaza veya müşteri hizmetleri temsilcisi aracılığıyla başlatılan iadeleri birbirinden ayırmaya yardımcı olur. Süreci iade kanalına göre bölümlere ayırmak, operasyonel farklılıkları ve kaynak dağılımını anlamak açısından önemlidir. Örneğin mağaza iadelerinde kontrol daha hızlı olabilir, ancak çevrimiçi iadelerden farklı belge adımları gerekebilir. Bu, 'İade süreci işlem hacmi eğilimleri' Dashboardu için önemli bir boyuttur. Neden önemli? İadelerin hangi kanaldan başlatıldığını gösterir. Kanal farklılıkları süreç akışını, kaynak ihtiyacını ve çevrim sürelerini etkileyebilir. Nereden alınır? Bu alan SAP ECC’de genellikle standart olarak bulunmaz. Özel bir alandan (ör. VBAK tablosunda) alınması veya Satış organizasyonu (VKORG) ya da Dağıtım kanalı (VTWEG) gibi diğer verilerden çıkarılması gerekebilir. Uygulamanıza özel bilgi için SAP ECC belgelerine başvurun. Örnekler Çevrimiçi portalMağazaÇağrı merkezi | |||
| İade nedeni ReturnReason | Müşterinin ürünü iade ederken bildirdiği neden kodu. | ||
| Açıklama Bu öznitelik, SAP’de önceden tanımlanmış neden kodlarını kullanarak ürünün neden iade edildiğini belirtir. Örnekler: 'Taşıma sırasında hasar gördü', 'Yanlış ürün gönderildi' veya 'Bedeni uymadı'. Kök neden analizinde önemli bir boyuttur. Analistler, süreç haritasını veya KPI’ları iade nedenine göre filtreleyerek belirli nedenlerin daha uzun işlem süreleriyle, daha yüksek kontrol başarısızlığı oranlarıyla veya belirli süreç sapmalarıyla ilişkili olup olmadığını görebilir. Bu içgörü, ürün kalitesi, lojistik veya satış süreçlerinde iyileştirmelere yön verebilir. Neden önemli? İadelerin neden gerçekleştiğini açıklar; ürün kalitesi, sevkiyat veya ürün açıklamalarındaki sorunları gidererek iade oranlarını azaltmaya yönelik kök neden analizini mümkün kılar. Nereden alınır? Satış Belgesi Kalemi tablosu VBAP’te, ABGRU alanında (satış belgeleri için ret nedeni) bulunur. Örnekler 001 - Ürün hasarlı002 - Yanlış ürün005 - Çok geç ulaştı | |||
| İşlemi gerçekleştiren kullanıcı ProcessingAgent | Etkinliği gerçekleştiren çalışanın kullanıcı kimliği. | ||
| Açıklama Bu öznitelik, iade siparişi oluşturma veya mal girişini kaydetme gibi belirli bir süreç adımından sorumlu kişinin kullanıcı adını kaydeder. Bu kullanıcı genellikle 'Değiştiren' veya 'Oluşturan' olarak adlandırılır. İşlemi gerçekleştiren kullanıcıya göre analiz, performans yönetimi ve kaynak analizi açısından önemlidir. En yüksek performans gösterenleri, ek eğitime ihtiyaç duyabilecek çalışanları ve ekip içindeki iş yükü dağılımını belirlemeye yardımcı olur. Çevrim sürelerini ve işlem hacmini karşılaştırmak için 'İade işlemlerinde çalışan performansı' gibi Dashboardlarda kullanılır. Neden önemli? Kullanıcıların sürece katılımını izler; ekip performansını ve iş yükü dağılımını incelemenize, eğitim ihtiyaçlarını veya iyi uygulamaları belirlemenize yardımcı olur. Nereden alınır? Genellikle VBAK, LIKP ve VBRK gibi başlık tablolarındaki ERNAM (Oluşturan) veya AENAM (Değiştiren) alanlarında bulunur. Değişiklik olaylarında CDHDR tablosundaki USERNAME alanı kullanılır. Örnekler CBURNSDSCRANTONJHALPERT | |||
| Malzeme numarası MaterialNumber | İade edilen ürüne ait benzersiz tanımlayıcı. | ||
| Açıklama Malzeme numarası veya SKU, iadeye konu olan ürünü tam olarak belirtir. Böylece ürün düzeyinde ayrıntılı analiz yapabilirsiniz. İşletmeler, iadeleri malzeme numarasına göre inceleyerek iade oranı yüksek ürünleri belirleyebilir. Bu durum kalite sorunlarına, hatalı ürün açıklamalarına veya üretim kusurlarına işaret edebilir. Bu bilgi, 'İadelerin envantere etkisi' gibi Dashboardlar ve farklı ürünlerin iade sürecindeki hareketini anlamak için gereklidir. Neden önemli? Hangi ürünlerin iade edildiğini göstererek olası kalite kontrol sorunlarını veya hatalı ürün açıklamalarını ortaya çıkarır. Nereden alınır? Satış Belgesi Kalemi tablosu VBAP’te, MATNR alanında bulunur. Örnekler RM-1025FG-2050-BACC-5591 | |||
| Talep edilen iade tutarı RequestedRefundAmount | Genellikle iade edilen ürünlerin net değerine göre belirlenen beklenen iade tutarı. | ||
| Açıklama Bu öznitelik, iade siparişinde kaydedilen ilk iade tutarını gösterir. Finansal analiz ve mutabakat için başlangıç değeri olarak kullanılır. Bu tutar, farkları izlemek için 'Gerçekleşen iade tutarı' ile karşılaştırılır ve 'İade tutarı farkı takibi' Dashboardu için önemli bir metriktir. Bu değeri incelemek, iadelerin finansal etkisini izlemeye ve fiyatlandırma ya da alacak hesaplamalarındaki olası sorunları belirlemeye yardımcı olur. Neden önemli? İadenin başlangıçtaki finansal değerini belirler; finansal farkları izlemek ve iade edilen malların toplam değerini anlamak için önemlidir. Nereden alınır? Bu değer genellikle iade siparişindeki kalemin net değeridir. VBAP tablosunda, NETWR alanında bulunur. Örnekler 150.0049.991250.75 | |||
| Alacak dekontu numarası CreditMemoNumber | İade için düzenlenen alacak dekontu belgesine ait benzersiz tanımlayıcı. | ||
| Açıklama Alacak dekontu, müşteriye ödenecek iadeyi resmîleştiren SAP fatura belgesidir. Bu numara, söz konusu finans belgesini benzersiz biçimde tanımlar. Bu öznitelik, finansal mutabakat ve operasyonel iadeden finansal sonuçlandırmaya kadar süreci izlemek için gereklidir. Sürecin önemli bir dönüm noktasıdır ve 'Gerçekleşen iade tutarı' gibi özniteliklerle ilişkili muhasebe belgelerini bulmak için kullanılır. Neden önemli? Müşteri iadesine yetki veren finans belgesine doğrudan bağlantı sağlar; finansal denetim ve mutabakat için gereklidir. Nereden alınır? Alacak dekontu bir fatura belgesidir. Numarası, VBRK tablosunda (Fatura Belgesi: Başlık Verileri), VBELN alanında bulunur. İade siparişinin belge akışı üzerinden bağlantı kurulur. Örnekler 900011229000334490005566 | |||
| İade politikasına uyum ReturnPolicyAdherence | İadenin tanımlanmış tüm iş kurallarına ve politikalara uygun olup olmadığını gösteren bir işaret. | ||
| Açıklama Bu hesaplanmış mantıksal öznitelik, iade vakasının şirketin standart politikalarına uygun ilerleyip ilerlemediğini gösterir. Mantık; iadenin izin verilen süre içinde başlatılıp başlatılmadığını, neden kodunun ürün için geçerli olup olmadığını veya istisna için yönetici onayı alınıp alınmadığını kontrol etmek gibi birden fazla koşulu içerebilir. 'İade onay politikalarına uyum' Dashboardu bu öznitelikten yararlanır. Uyum oranını doğrudan ölçmenize ve en sık hangi politikaların atlandığını belirlemenize yardımcı olur; böylece iyileştirme veya eğitim çalışmaları hedeflenebilir. Neden önemli? İş kurallarına uyumu ölçerek politikaların tutarlı biçimde uygulanmasına ve özel inceleme ya da onay gerektiren vakaların belirlenmesine yardımcı olur. Nereden alınır? Bu, bir dizi iş kuralına göre türetilen bir özniteliktir. Örneğin: (İade Başlangıç Tarihi - İlk Satın Alma Tarihi) <= 30 gün VE ReturnReason IS NOT NULL. Örnekler truefalse | |||
| İade siparişi durumu ReturnOrderStatus | İade siparişi vakasının genel işlem durumu. | ||
| Açıklama Bu öznitelik, iade vakasının 'Açık', 'İşlemde' veya 'Tamamlandı' gibi mevcut durumunu gösterir. Satış belgesinin başlık veya kalem düzeyindeki durumlarının bir araya getirilmesiyle elde edilir. Analizde, açık veya tamamlanmış iadeleri incelemek için vakaları filtrelemenizi sağlar. Açık vakalardaki genel iş yükünü ve ilerlemeyi izlemenize yardımcı olur, ayrıca her iade sürecinin genel sonucunu gösterir. Neden önemli? Vakanın yaşam döngüsündeki durumunu genel hatlarıyla gösterir; açık, devam eden veya kapalı iadeleri filtreleyip incelemenizi sağlar. Nereden alınır? VBUK (Başlık Durumu) ve VBUP (Kalem Durumu) tablolarındaki durum alanlarından elde edilir. Örneğin VBUK-GBSTK, belgenin genel işlem durumunu gösterir. Örnekler AçıkİşlemdeTamamlandı | |||
| İade SLA hedef tarihi RefundSLATargetDate | Hizmet düzeyi anlaşmalarına göre iadenin işlenmesinin beklendiği son tarih. | ||
| Açıklama Bu öznitelik, belirli bir iade vakasının tamamlanması için son tarihi tanımlar. Genellikle 'mal girişi tarihinden itibaren 5 iş günü' gibi iş kurallarına göre hesaplanır. Gerçek performans bu hedef tarihle karşılaştırılır. 'İade işlemlerinde SLA uyumluluğu' Dashboardunun temel bileşenidir; işletmenin müşterilere verdiği taahhütleri yerine getirip getirmediğini izlemesine ve SLA süresini aşma riski taşıyan vakaları belirlemesine yardımcı olur. Neden önemli? İadelerin işlenmesi için performans hedefi belirler; işletmenin SLA uyumluluğunu ölçüp raporlamasını ve geciken vakalara öncelik vermesini sağlar. Nereden alınır? Bu genellikle SAP’de standart bir alan değildir ve iş kurallarına göre türetilmesi gerekir. Bir ana tarih alanına (ör. MKPF tablosundaki mal girişi tarihi) yapılandırılmış bir süre eklenerek hesaplanabilir. SAP ECC belgelerine veya iş gereksinimlerine başvurun. Örnekler 2023-04-25T23:59:59Z2023-04-28T23:59:59Z2023-05-02T23:59:59Z | |||
| İade tutarı farkı RefundAmountDiscrepancy | Gerçekleşen ve talep edilen iade tutarları arasındaki hesaplanmış fark. | ||
| Açıklama Bu hesaplanmış metrik, iade siparişinde başlangıçta talep edilen tutarla alacak dekontunda son olarak verilen tutar arasındaki parasal farkı gösterir. Pozitif değer kısmi iadeye işaret edebilir. Negatif değer olağan dışıdır, ancak fazla ödeme anlamına gelebilir. 'İade tutarı farkı takibi' Dashboardunun temel ölçümüdür. Ürün durumu değerlendirmeleri, yeniden stoklama ücretleri veya hatalardan kaynaklanabilecek finansal sapmaları olan vakaları hızla belirleyip incelemeye yardımcı olur. Bu farkı izlemek, finansal kontrolü ve politikalara uyumu destekler. Neden önemli? İade sürecindeki finansal sapmaları doğrudan ölçerek politika ihlallerini, işlem hatalarını veya finansal kayıpları belirlemeye yardımcı olur. Nereden alınır? Hesaplanan alan: ActualRefundAmount - RequestedRefundAmount. Örnekler 0.00-4.99-50.00 | |||
| İlk satış belgesi OriginalSalesDocument | İadenin yapıldığı ilk satış siparişinin numarası. | ||
| Açıklama Bu öznitelik, müşterinin ilk satın alma işlemine doğrudan bağlantı sağlar. İadeyi ilk işlem ayrıntılarına bağlayan bir referans belgesidir. Bu bağlantı, daha ayrıntılı analizler için çok faydalıdır. Analistler belirli siparişlerdeki ürünlerin neden iade edildiğini inceleyebilir, ilk fiyat ve koşulları kontrol edebilir ve müşteri siparişinden iadeye kadar tüm yaşam döngüsünü anlayabilir. Belirli kampanyalar veya kanallar üzerinden satılan ürünlerin daha sık iade edilip edilmediği gibi sorulara yanıt bulmaya yardımcı olur. Neden önemli? İadeyi ilk satış işlemine bağlar; müşteri işleminin tamamını görmenizi ve kök nedenleri daha ayrıntılı incelemenizi sağlar. Nereden alınır? Bu referans, iade siparişinin kalem düzeyinde saklanır. VBAP tablosunda, VGBEL alanında (referans belgenin numarası) bulunabilir. Örnekler 100034561000987110012345 | |||
| Müşteri kimliği CustomerId | İadeyi başlatan müşteriye ait benzersiz tanımlayıcı. | ||
| Açıklama Bu öznitelik, ürünü iade eden müşteriyi (SAP terminolojisinde 'Malı alan taraf') tanımlar. İade işlemini müşteri ana verilerine bağlar. Müşteri kimliğine göre analiz, sık iade yapan müşterileri belirlemeye yardımcı olur. Bu durum memnuniyetsizliğe veya iade politikalarının olası kötüye kullanımına işaret edebilir. Müşteri segmentasyonu verileriyle birlikte kullanılarak belirli müşteri gruplarının iade davranışları veya süreç deneyimleri arasındaki farklar da incelenebilir. Neden önemli? İadeleri belirli müşterilerle ilişkilendirir; müşteri davranışını incelemenize, tekrar tekrar iade yapanları belirlemenize ve müşteri ilişkilerine etkisini görmenize yardımcı olur. Nereden alınır? Satış Belgesi Başlık tablosu VBAK’te, KUNNR alanında (Malı alan taraf) bulunur. Örnekler CUST-100432CUST-203991CUST-831102 | |||
| Şirket kodu CompanyCode | İşlemden sorumlu tüzel kişilik veya şirket. | ||
| Açıklama Şirket kodu, SAP içinde kendi muhasebe kayıtlarına sahip bağımsız birimi temsil eder. İade ve geri ödeme dâhil tüm finansal işlemler belirli bir şirket koduna kaydedilir. Bu öznitelik, finansal raporlama ve çok uluslu ya da birden fazla tüzel kişilikten oluşan kuruluşlarda süreçleri bölümlere ayırmak için gereklidir. Şirket koduna göre analiz yaparak kurum içindeki farklı tüzel kişiliklerin iade süreci performanslarını karşılaştırabilirsiniz. Neden önemli? Bir kuruluş içindeki farklı tüzel kişiliklerin iade süreçlerini filtreleyip karşılaştırmanızı sağlar; finansal analiz açısından önemlidir. Nereden alınır? Satış Belgesi Başlık tablosu VBAK’te, BUKRS_VF alanında (faturalama için şirket kodu) bulunur. Örnekler 10002000US01 | |||
| SLA uyumlu mu IsSLACompliant | İadenin üzerinde anlaşılan hizmet düzeyi anlaşması (SLA) içinde işlenip işlenmediğini gösteren bir işaret. | ||
| Açıklama Bu, 'İade işlendi' etkinliğinin gerçekleştiği tarihi 'İade SLA hedef tarihi' ile karşılaştıran hesaplanmış bir mantıksal özniteliktir. İade zamanında tamamlandıysa doğru, aksi durumda yanlış değerini alır. Bu öznitelik, her vakanın SLA performansını açık ve ikili bir sonuçla göstererek analiz ve raporlamayı kolaylaştırır. Genel 'İade işlemlerinde SLA uyumluluğu' oranını hesaplamak ve uyumlu olmayan vakaları filtreleyip incelemek için kullanılır. Neden önemli? Her vaka için SLA performansını açıkça gösterir; uyumluluğu izlemeyi ve raporlamayı kolaylaştırır. Nereden alınır? Bu, hesaplanmış bir özniteliktir. Mantık şöyledir: 'İade işlendi' EventTime <= RefundSLATargetDate. Örnekler truefalse | |||
| Üretim yeri Plant | İade edilen ürünün teslim alındığı ve işlendiği fiziksel konum veya tesis. | ||
| Açıklama SAP’de üretim yeri, malların işlendiği depo veya dağıtım merkezi gibi fiziksel bir konumu ifade eder. İadelerde bu, genellikle ürünün teslim alınıp kontrol edildiği yerdir. Süreci üretim yerine göre incelemek, tesisler arasındaki performans farklarını belirlemeye yardımcı olur. Hangi depoların ürün kontrolünde daha verimli olduğunu veya daha yüksek işlem hacmine ulaştığını göstererek 'Ürün kontrolü işlem hacmi ve verimliliği' Dashboardunu destekler. Neden önemli? İadeyi işleyen fiziksel konumu belirtir; farklı depoların veya dağıtım merkezlerinin performansını karşılaştırmanızı sağlar. Nereden alınır? İade siparişinin kalem düzeyinde, VBAP tablosundaki WERKS alanında bulunur. Örnekler PL01WH02DC05 | |||
İade ve geri ödeme işlemlerinin etkinlikleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Alacak dekontu FI modülüne kaydedildi | Alacak dekontu finans muhasebesine aktarılır ve resmi bir alacak kaydı hâline gelir. Bu adım, müşteriye yapılacak gerçek iade ödemesi sürecini başlatır. | ||
| Neden önemli? Bu etkinlik, şirketin iadeyi finansal kayıtlara aldığı noktayı gösterir. Alacak dekontunun oluşturulmasıyla kayda alınması arasındaki gecikmeler, müşteriye yapılacak iade ödemesini yavaşlatabilir. Nereden alınır? Bu, çıkarımla belirlenen bir olaydır. Fatura belgesi başlığındaki kayıt durumu (VBRK-RFBSK) 'C' (Kayıt belgesi oluşturuldu) olarak güncellendiğinde yakalanır. Muhasebe belgesinin gerçek oluşturulma tarihi BKPF tablosunda bulunur. Kaydedin VBRK-RFBSK alanının 'C' olarak ayarlandığı zaman damgasını belirleyin veya bağlantılı BKPF muhasebe belgesindeki oluşturulma tarihini (CPUDT) kullanın. Olay türü inferred | |||
| Alacak dekontu oluşturuldu | Müşteriye finansal alacak tanımak için bir fatura belgesi (alacak dekontu) oluşturulur. Bu, iade tutarını resmîleştiren resmi finans belgesidir. | ||
| Neden önemli? Bu, süreçte önemli bir finansal dönüm noktasıdır. Alacak dekontunun oluşturulma süresini incelemek, malların teslim alınması ve kontrol edilmesinden sonra finans belgelerinin işlenmesindeki gecikmeleri belirlemeye yardımcı olur. Nereden alınır? Bu, VBRK tablosuna (Fatura Belgesi Başlık Verileri) kaydedilen açık bir olaydır. Oluşturulma tarihi VBRK-ERDAT alanında tutulur. Alacak dekontu, belge akışında iade siparişine veya alacak dekontu talebine bağlanır. Kaydedin İlgili fatura belgesi için VBRK tablosundaki oluşturulma zaman damgasını (ERDAT) kullanın. Olay türü explicit | |||
| İade siparişi oluşturuldu | Bu etkinlik, müşteri bir ürünü iade etmek istediğinde iade sürecinin başladığını gösterir. SAP ECC’de “İade” türünde yeni bir satış belgesi (ör. RE) oluşturulduğunda kaydedilir. | ||
| Neden önemli? Bu, iade sürecinin temel başlangıç olayıdır. Bu etkinlikten diğerlerine kadar geçen süreyi analiz ederek toplam çevrim süresini ölçebilir ve ilk işlem gecikmelerini belirleyebilirsiniz. Nereden alınır? Bu, VBAK tablosuna (Satış Belgesi Başlığı) kaydedilen açık bir olaydır. İlgili satış belgesi numarası (VBAK-VBELN) ve sipariş türü VBAK-AUART = 'RE' için oluşturma zaman damgası VBAK-ERDAT ve VBAK-ERZET alanlarında tutulur. Kaydedin “RE” satış belgesi türü için VBAK tablosundaki oluşturma zaman damgasını (ERDAT, ERZET) kullanın. Olay türü explicit | |||
| İade siparişi tamamlandı | Bu etkinlik, satış ve dağıtım açısından iade sürecinin sona erdiğini gösterir. İade siparişindeki tüm kalemler tamamen işlenip kapatıldığında gerçekleşir. | ||
| Neden önemli? Bu, sürecin temel bitiş olayıdır. 'İade siparişi oluşturuldu' etkinliğinden bu etkinliğe kadar geçen süreyi ölçerek iade vakasının uçtan uca çevrim süresini hesaplayabilirsiniz. Nereden alınır? Bu, durum tablolarından çıkarımla belirlenen bir olaydır. Satış belgesi başlığının genel durumu (VBUK-GBSTK) 'C' (Tamamen işlendi) olarak güncellendiğinde yakalanır. Kaydedin Başlık durum alanı VBUK-GBSTK 'C' olarak değiştiğinde, değişiklik belgelerindeki (CDHDR/CDPOS) zaman damgasını belirleyin. Olay türü inferred | |||
| Kullanım kararı verildi | İncelemenin ardından kalite mühendisi veya denetçi, iade edilen ürünün durumu hakkında resmi bir karar verir. Bu karar, ürünün stoğa geri alınması, hurdaya ayrılması veya onarılması gibi sonraki süreci belirler. | ||
| Neden önemli? Bu etkinlik, inceleme verimliliğini ve sonuçlarını anlamak açısından önemlidir. Karar, geri ödeme tutarını ve envanter yönetimini doğrudan etkiler. Nereden alınır? SAP QM kullanılıyorsa bu, QAVE tablosunda (İnceleme işlemi kullanım kararı) kaydedilen açık bir olaydır. Karar zamanı QAVE-VDATUM alanında tutulur. Teslimat bağlantısı QALS tablosundadır. Kaydedin İnceleme partisi (QALS-PRUEFLOS) üzerinden bağlantı kurarak QAVE tablosundaki kullanım kararı tarihini (VDATUM) kullanın. Olay türü explicit | |||
| Mal girişi kaydedildi | Bu etkinlik, iade edilen fiziksel ürün depoya veya işlem merkezine ulaştığında gerçekleşir. İade teslimatına bağlı bir mal hareketi belgesinin kaydedilmesiyle izlenir. | ||
| Neden önemli? Şirketin iade edilen ürünü teslim aldığını gösteren önemli bir aşamadır. Fiziksel incelemenin başlangıç noktasıdır ve envanter kayıtlarının doğruluğunu etkiler. Nereden alınır? Bu olay, VBUP tablosundaki iade teslimatı kaleminin mal hareketi durumundan çıkarılabilir (ör. WBSTA = 'C'). Kesin zaman damgası, ilgili mal girişi için malzeme belgesi başlığında (MKPF-BUDAT) bulunur. Kaydedin İade teslimatına bağlı malzeme belgesi için MKPF tablosundaki kayıt tarihini (BUDAT) bulun. Olay türü inferred | |||
| Alacak dekontu kapatıldı | Alacak hesaplarındaki açık alacak kalemi, genellikle müşteriye yapılan bir ödeme ile kapatılır. Bu olay, iadenin finansal açıdan tamamen sonuçlandığını gösterir. | ||
| Neden önemli? Bu etkinlik, ödemenin yapıldığını doğrular ve sürecin finansal kısmını tamamlar. Müşteri açısından iade sürecinin gerçek bitiş noktasıdır. Nereden alınır? Bu, FI modülündeki açık bir olaydır. Muhasebe belgesinin kapatma tarihi, ilgili müşteri kalemi için BSEG tablosunda (BSEG-AUGDT) saklanır. Kaydedin Alacak dekontuna bağlı muhasebe belgesi için BSEG veya BSAD tablosundaki kapatma tarihini (AUGDT) kullanın. Olay türü explicit | |||
| Alacak dekontu talebi oluşturuldu | Geri ödeme ihtiyacını resmi olarak belgelemek için alacak dekontu talebi oluşturulur. Birçok yapılandırmada iade siparişinin kendisi alacak dekontu talebi olarak kullanılır. | ||
| Neden önemli? Bu, iade sürecinin finansal mutabakat bölümünün resmi başlangıcıdır. Sonraki finansal onaylar ve belge oluşturma adımları için tetikleyici görevi görür. Nereden alınır? Bu, VBAK’da “Alacak dekontu talebi” türündeki bir satış belgesi için açık bir olay olabilir (ör. CR). Sipariş türü siparişe bağlı faturalama için yapılandırılmışsa “İade siparişi oluşturuldu” olayıyla aynı olay da olabilir. Kaydedin “CR” belge türü için VBAK tablosundaki oluşturma zaman damgasını (ERDAT) kullanın veya iade siparişi oluşturma olayını yeniden kullanın. Olay türü explicit | |||
| İade siparişi blokesi kaldırıldı | İade talebinin onaylandığını ve bir sonraki aşamaya geçebileceğini gösterir. Bu durum genellikle belge durumundaki bir değişiklikten veya teslimat ya da faturalama blokesinin kaldırılmasından anlaşılır. | ||
| Neden önemli? Bu etkinlik önemli bir onay aşaması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ış belgesinin değişiklik günlüklerinden çıkarılan bir olaydır. VBAK veya VBAP’deki bloke alanlarında ya da VBUK/VBUP’deki durum alanlarında yapılan değişiklikleri CDHDR ve CDPOS tablolarında kontrol edin. Kaydedin İlgili bloke durumu kaldırıldığında, değişiklik belgesi tablolarındaki (CDHDR/CDPOS) zaman damgasını belirleyin. Olay türü inferred | |||
| İade siparişi kalemi reddedildi | İade siparişindeki belirli bir kalem, ilk inceleme sırasında veya kontrolden sonra reddedilir. Bu durumda, söz konusu kalem için iade ödemesi gibi başka bir işlem yapılmaz. | ||
| Neden önemli? Retleri incelemek, geçersiz iade taleplerini belirlemeye yardımcı olur ve müşteri politikalarıyla ilgili iletişime yön verebilir. Bu, iadeye yol açmayan önemli bir süreç yoludur. Nereden alınır? Bu, çıkarımla belirlenen bir olaydır. Genellikle VBAP tablosunda kalem için benzersiz bir 'Ret nedeni' kodu (VBAP-ABGRU) ayarlandığında yakalanır. Zaman damgası değişiklik günlüklerinden alınmalıdır. Kaydedin İade kalemi için VBAP-ABGRU alanı doldurulduğunda, değişiklik belgelerindeki (CDHDR/CDPOS) zaman damgasını belirleyin. Olay türü inferred | |||
| İade siparişi kalemi tamamlandı | İade siparişindeki tek bir kalem tamamen işlendi olarak işaretlenir. Bu genellikle söz konusu kalem için tüm lojistik ve finans belgeleri tamamlandıktan sonra gerçekleşir. | ||
| Neden önemli? Kalem düzeyinde izleme, en uzun gecikmelere hangi ürünlerin veya iade nedenlerinin yol açtığını belirlemeye yardımcı olur. Sürecin tamamlanma durumunu daha ayrıntılı görmenizi sağlar. Nereden alınır? Bu, durum tablolarından çıkarımla belirlenen bir olaydır. Satış belgesi kaleminin genel durumu (VBUP-GBSTK) 'C' (Tamamen işlendi) olarak güncellendiğinde yakalanır. Kaydedin Kalem durum alanı VBUP-GBSTK 'C' olarak değiştiğinde, değişiklik belgelerindeki (CDHDR/CDPOS) zaman damgasını belirleyin. Olay türü inferred | |||
| İade teslimatı oluşturuldu | İade edilen ürünlerin fiziksel olarak teslim alınmasını yönetmek için bir teslimat belgesi oluşturulur. Bu olay, iade lojistiği sürecinin başladığını gösterir. | ||
| Neden önemli? İdari işlemlerden fiziksel lojistiğe geçişi izler. Buradaki gecikmeler depo planlamasını ve toplam iade çevrim süresini etkileyebilir. Nereden alınır? Bu, LIKP tablosuna (Teslimat Başlığı) kaydedilen açık bir olaydır. Oluşturma zaman damgası LIKP-ERDAT alanında bulunur. Kaynak iade siparişine bağlantı LIPS tablosundadır (LIPS-VGBEL). Kaydedin İade siparişiyle ilişkili teslimat için LIKP tablosundaki oluşturma zaman damgasını (ERDAT) kullanın. Olay türü explicit | |||
Veri çıkarma rehberleri
Adımlar
- ABAP programı oluşturun: Yeni bir çalıştırılabilir ABAP programı oluşturmak için
SE38işlem kodunu kullanın. Örneğin,Z_PM_RETURN_EXTRACTIONadını verebilirsiniz. Açıklayıcı bir başlık girin ve programı yerel nesne olarak veya bir geliştirme paketi içinde kaydedin. - Seçim ekranını tanımlayın: Programda, kullanıcıların verileri filtreleyebilmesi için bir seçim ekranı tanımlayın. Temel filtreler arasında iade siparişlerinin oluşturulma tarih aralığı (
S_ERDAT), iadeler için satış belgesi türü (S_AUART, örneğin 'RE') ve şirket kodu (P_BUKRS) yer alır. - Veri yapılarını tanımlayın: Gerekli Event Log biçimiyle eşleşen yerel bir yapı türü oluşturun. Bu yapıda
ReturnCaseId,ActivityName,EventTime,SourceSystem,LastDataUpdate,ProcessingAgent,ReturnReasonve diğer gerekli öznitelikler bulunmalıdır. - Veri seçme mantığını uygulayın: Gerekli 12 etkinliğin her biri için veri seçen temel ABAP mantığını yazın. Bunun için VBAK, VBAP, LIKP, VBRK, BKPF, CDHDR ve CDPOS gibi çeşitli SAP tablolarını sorgulayın. Teslimat ve alacak dekontu gibi ilgili belgeleri orijinal iade siparişine bağlamak için belge akışı tablosu VBFA’yı kullanın.
- 'Return Order Created' etkinliğini çıkarın: Seçim ekranındaki ölçütlere göre
VBAKveVBAPtablolarındaki kayıtları seçin. Satış belgesi numarası (VBAK-VBELN),ReturnCaseIdolarak kullanılır. - Durum değişikliklerini ve önemli olayları çıkarın: 'Return Order Block Removed' veya 'Return Order Item Rejected' gibi etkinlikler için değişiklik belgesi tablolarını (
CDHDR,CDPOS) ya daVBAPtablosundakiABGRUgibi durum alanlarını sorgulayın. Lojistik ve finansla ilgili sonraki etkinlikler içinLIKP,MKPF,VBRKveBKPFgibi tablolardan veri seçin; bunları ilk iade siparişleri kümesine bağlamak içinVBFAtablosunu kullanın. - Event Log tablosunu doldurun: Bulunan her etkinlik için Event Log yapısıyla tanımladığınız dahili tabloya yeni bir kayıt ekleyin. Kaynak SAP tablolarındaki verileri ilgili alanlarla eşleştirin. Örneğin,
VBAK-ERNAMalanınıProcessingAgentile,VBAK-ERDATveVBAK-ERZETalanlarınıEventTimeile eşleştirin. - Etkinlik verilerini birleştirin: Her etkinliğe ait SELECT ifadesinin sonuçlarını aynı ana dahili tabloya eklediğinden emin olun. Böylece her satırın bir olayı temsil ettiği son düz dosya yapısı oluşur.
- Zaman damgalarını ve sistem bilgilerini işleyin: Her satırın
LastDataUpdatezaman damgasını doldurmak içinSY-DATUMveSY-UZEITsistem alanlarını kullanın.SourceSystemalanını doldurmak içinSY-SYSIDdeğerini kullanın. - Çıktı işlevini ekleyin: Sonuçları çevrimiçi analiz için ALV gridinde (SAP List Viewer) görüntüleme işlevi ekleyin. Bunun için
REUSE_ALV_GRID_DISPLAYgibi işlev modüllerini kullanabilirsiniz. Ayrıca son dahili tabloyu kullanıcının yerel bilgisayarına CSV veya düz metin dosyası olarak indirme seçeneği sunun. - Programı çalıştırın ve dışa aktarın: Programı
SE38üzerinden çalıştırın. İstediğiniz seçim ölçütlerini girip programı yürütün. Veriler görüntülendikten veya işlendiğinde, Event Log dosyasını kaydetmek için programın dışa aktarma özelliğini kullanın. Dosyayı ProcessMind ile uyumlu bir biçimde, genellikle başlık satırı içeren CSV olarak kaydedin.
Yapılandırma
- Tarih aralığı: Seçim ekranında iade siparişinin oluşturulma tarihi için bir aralık belirtin. Veri hacmi ile süreç içgörüsü arasında denge kurmak için ilk analizde 3 ila 6 aylık bir aralık önerilir.
- İade belgesi türü: Sisteminizde iadeler için kullanılan belirli satış belgesi türünü filtreleyin. Örneğin, iadeler için 'RE', alacak dekontu talebi için 'CR' kullanılır. Doğru süreci ayırmak için bu filtre önemlidir. Bu değerleri
S_AUARTseçim alanına girin. - Şirket kodu: Verileri belirli bir tüzel kişilikle sınırlamak için ilgili şirket kodunu (
P_BUKRS) belirtin. Birden fazla şirketin bulunduğu ortamlarda bu gereklidir. - Ön koşullar: Programı çalıştıran kullanıcının
SE38(program çalıştırma) yetkisi ve SD, MM ve FI tablolarına (ör. VBAK, LIKP, VBRK, BKPF, CDHDR) erişimi olmalıdır. Geliştirme için ABAP geliştirici rolü gerekir. - Performans: Birkaç yıla yayılan çok büyük Veri Setlerinde programın çalışması uzun sürebilir. Programı arka plan işi (
SM36) olarak çalıştırmayı ve çıktıyı çevrimiçi görüntülemek yerine uygulama sunucusunun dosya sistemine yazmayı değerlendirin.
Ö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 tablolar, Satış ve Dağıtım (SD), Malzeme Yönetimi (MM) ve Finansal Muhasebe (FI) modüllerinden gelir. 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.
- Sisteme özgü bilgileri belirleyin: Sorguyu çalıştırmadan önce kuruluşunuzda iadeler için kullanılan belge türlerini belirleyin. Sorgudaki
[YOUR_RETURN_ORDER_TYPES]yer tutucusunu, standart iadeler için 'RE' gibi gerçek değerlerle değiştirin. - Sorguyu hazırlayın: 'query' bölümünde verilen SQL sorgusunun tamamını SQL istemcinize kopyalayın.
- Parametreleri ayarlayın: Sorgunun başındaki
BaseReturnOrdersadlı Common Table Expression (CTE) bölümünü bulun. İstenen tarih aralığını belirtmek içinWHEREkoşulundaki[START_DATE]ve[END_DATE]yer tutucularını değiştirin. İade siparişi türleri listesini güncelleyin ve gerekirse belirli bir şirket koduna (BUKRS_VF) göre filtre uygulayın. - Sorguyu çalıştırın: Düzenlediğiniz sorguyu SAP ECC veritabanında çalıştırın. Çalışma süresi, seçilen tarih aralığına ve veritabanının boyutuna göre değişebilir.
- Ham verileri inceleyin: Sorgu tamamlandığında çıktıyı kısaca gözden geçirin.
ReturnCaseId,ActivityNameveEventTimesütunlarının dolu olduğunu ve birden fazla etkinliğe ait veri bulunduğunu kontrol edin. - CSV olarak dışa aktarın: Sonuç kümesinin tamamını SQL istemcinizden CSV dosyasına aktarın. Tüm karakterlerin doğru korunması için UTF-8 kodlamasını kullanın.
- Yüklemeye hazırlayın: CSV dosyasını açıp sütun başlıklarının gerekli özniteliklerle birebir eşleştiğini doğrulayın:
ReturnCaseId,ActivityName,EventTime,SourceSystemvb. 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.
Yapılandırma
- İade belgesi türleri: Sorgu, SAP sisteminizde iade siparişlerini temsil eden belirli satış belgesi türleriyle yapılandırılmalıdır. Bunun için
[YOUR_RETURN_ORDER_TYPES]yer tutucusunu değiştirin. Yaygın örnekler arasında 'RE' veya özel 'Z' türleri bulunur. - Tarih aralığı: Veri çıkarma için uygun bir tarih aralığı belirlemek önemlidir. İlk analiz için genellikle 3 ila 6 aylık veri önerilir. Aralığı,
[START_DATE]ve[END_DATE]yer tutucularını 'YYYYMMDD' biçiminde doldurarak ayarlayın. - Şirket kodu: Birden fazla şirket koduyla çalışan kuruluşlarda, analizi belirli bir kapsamda tutmak için verileri filtrelemek gerekir. Kapsamı sınırlamak üzere ilk CTE’ye
VBAK.BUKRS_VF = '[YOUR_COMPANY_CODE]'gibi bir filtre ekleyebilirsiniz. - Veritabanı lehçesi: Verilen sorguda yaygın SQL işlevleri kullanılır. Ancak
TO_TIMESTAMPgibi tarih ve saat dönüşümleri ile metin birleştirme (CONCAT), kullanılan veritabanı sistemine (ör. Oracle, HANA, DB2) göre küçük sözdizimi değişiklikleri gerektirebilir. - Gerekli yetkiler: Veritabanı kullanıcısının şu temel tablolara okuma erişimi olmalıdır: VBAK, VBAP, VBFA, LIKP, LIPS, VBRK, VBRP, MKPF, MSEG, BKPF, BSAD, QALS, QAVE, CDHDR ve CDPOS.
Ö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; Başlamaya hazır mısınız?
Veri toplama sürecinizi kolaylaştırmak ve iade süreciniz hakkında değerli içgörüler elde etmek için bu Templateten bugün yararlanmaya başlayın.
İade ve geri ödeme işlemlerinizi şimdi iyileştirin
SAP ECC’deki iade sürecinizi kolaylaştırın ve çevrim süresini %30 azaltın. Bugün başlayın.
Kredi kartı gerekmez, kurulum birkaç dakika sürer