İade ve Geri Ödeme İşleme Veri Templateiniz
İade ve Geri Ödeme İşleme Veri Templateiniz
- Toplanması önerilen öznitelikler
- İzlenecek temel aktiviteler
- Veri çıkarma yönlendirmesi
İade ve Geri Ödeme İşleme Öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Aktivite adı ActivityName | İade süreci içinde gerçekleşen belirli bir iş olayının veya adımının adı. | ||
| Açıklama Bu öznitelik, iade yaşam döngüsündeki tek ve belirli bir eylemi ya da durum değişikliğini tanımlar. Örneğin 'İade Siparişi Oluşturuldu', 'Mal Girişi Kaydedildi' veya 'Alacak Dekontu Oluşturuldu'. Bu aktiviteler, süreç haritasının temel yapı taşlarını oluşturur. Bu aktivitelerin sırasını ve gerçekleşme sıklığını analiz etmek, en yaygın süreç yollarını, sapmaları ve yeniden işleme döngülerini belirlemenize yardımcı olur. Bir vaka içinde ne olduğunu ve hangi sırayla gerçekleştiğini anlamak için gereklidir. Tüm Process Mining analizleri bu temele dayanır. Neden önemli? Aktiviteler, süreçteki adımları tanımlar. Sıralarını, sürelerini ve gerçekleşme sıklıklarını analiz etmek, Process Mining çalışmalarının temelini oluşturur ve işin gerçekte nasıl yapıldığını gösterir. Nereden alınır? VBUK/VBUP gibi tablolardaki durum değişikliklerinden, belge oluşturma olaylarından (örneğin VBAK, LIKP ve VBRK tablolarındaki olaylardan) veya CDHDR/CDPOS tablolarındaki değişiklik günlüklerinden elde edilir. Örnekler İade siparişi oluşturulduMal kabulü kaydedildiAlacak dekontu oluşturulduİade siparişi kalemi tamamlandı | |||
| İade vakası kimliği ReturnCaseId | Müşterinin iade talebine ait, ilgili tüm faaliyetleri ve belgeleri birbirine bağlayan benzersiz tanımlayıcı. | ||
| Açıklama İade sürecinin başlatılmasından kapanışına kadar tüm yaşam döngüsünü izlemek için İade Vakası Kimliği birincil anahtar olarak kullanılır. Her kimlik, sipariş oluşturma, teslimat, inceleme ve alacak dekontu işleme gibi ilgili tüm olayları içeren belirli bir müşteri iadesine karşılık gelir. Süreç analizinde bu öznitelik, süreç haritasını oluşturmanın temelini oluşturur. Sistem, tek tek olayları uçtan uca vaka yolculukları altında gruplayabilir. Böylece her bir iade vakası için süreç varyantları, çevrim süreleri ve darboğazlar analiz edilebilir. Neden önemli? Bu, iade yolculuğundaki tüm adımları birbirine bağlayan temel vaka tanımlayıcısıdır. Uçtan uca süreç akışını ve performansını analiz etmenizi sağlar. Nereden alınır? Bu değer genellikle Satış ve Dağıtım (SD) modülündeki İade Siparişi numarasıdır. VBAK tablosunda, Satış Belgesi Başlık Verileri içinde VBELN alanında bulunur. Belge kategorisi (VBAK-VBTYP), iadeler için 'H' değerini taşır. Örnekler 600001236000045660000789 | |||
| Olay zamanı EventTime | Aktivitenin 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 aktivite için kaydedilir ve bir vaka içindeki olayların kronolojik sırasını sağlar. Olay zamanı, aktiviteler arasındaki çevrim sürelerini hesaplamak, bekleme nedeniyle zaman kaybedilen darboğazları belirlemek ve toplam vaka süresini ölçmek dahil olmak üzere zamana dayalı tüm analizler için büyük önem taşır. Performans analizine ve hizmet seviyesi anlaşmalarına (SLA) göre uyumluluk kontrollerine imkan verir. 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 gereklidir. Nereden alınır? SAP tablolarındaki çeşitli tarih ve saat alanlarından alınır. Oluşturma olayları için genellikle ERDAT ve ERZET alanları, örneğin VBAK tablosundaki alanlar, kullanılır. Değişiklik olayları için 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 | Verilerin çıkarıldığı sistem. | ||
| Açıklama Bu öznitelik, birden fazla sistemin kullanıldığı ortamlarda büyük önem taşıyan veri kaynağını tanımlar. Veri soyunu ve bütünlüğünü anlamanıza yardımcı olur. Analizde, farklı kaynak sistemlerdeki süreçler birleştirildiğinde verileri bölümlere ayırmak veya filtrelemek için kullanılır. Olayların beklenen uygulamadan, bu durumda SAP ECC'den, geldiğini doğrular. Neden önemli? Verilerin kaynağını tanımlar. Veri yönetişimi ve birden fazla kurumsal sistemi kapsayan analizler için gereklidir. Nereden alınır? Veri çıkarma sırasında tanımlanan sabit bir değerdir ve belirli SAP ECC örneğini tanımlar. Örneğin '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 çıkarma veya güncelleme işleminin tarih ve saatini kaydeder. Analiz edilen verilerin güncelliği hakkında şeffaflık sağlar. Analiz sırasında içgörülerin ne kadar güncel olduğunu anlamak için önemlidir. Kullanıcılar verilerin ne kadar güncel olduğunu görebilir. Bu durum, özellikle devam eden operasyonları izlerken bulguların geçerliliğini etkiler. Neden önemli? Verilerin güncelliğini gösterir. Böylece kullanıcılar süreç analizinin ne kadar güncel olduğunu ve bir sonraki güncellemenin ne zaman beklenebileceğini anlayabilir. Nereden alınır? Veri çıkarma işinin çalıştırıldığı zaman damgasıyla doldurulan bir meta veri özniteliğidir. Örnekler 2023-05-20T02:00:00Z2023-05-21T02:00:00Z | |||
| Gerçekleşen İade Tutarı ActualRefundAmount | Finansal belgelere kaydedilen ve müşteriye alacak olarak yansıtılan nihai tutardır. | ||
| Açıklama Bu öznitelik, işlenen ve muhasebe sistemine kaydedilen nihai, onaylanmış geri ödeme tutarıdır. Yeniden stoklama ücretleri, ürünün durumuna göre yapılan düzeltmeler veya diğer politika uygulamaları nedeniyle bu tutar talep edilen tutardan farklı olabilir. Bu öznitelik, Geri Ödeme Tutarı Farkı Takibi Dashboardu için önemlidir. Tutarı talep edilen miktarla karşılaştırarak geri ödeme hesaplama ve onay sürecindeki sistematik sorunları belirleyebilir, finansal doğruluğu sağlayabilirsiniz. Neden önemli? İadenin nihai finansal sonucunu gösterir. Talep edilen tutarla karşılaştırılması, doğruluğu kontrol etmenize ve finansal kayıpları belirlemenize yardımcı olur. Nereden alınır? Alacak dekontuyla ilişkili finansal belgeden alınır. İlgili G/L hesabı kaydı için genellikle BSEG (Muhasebe Belgesi Segmenti) tablosunda, WRBTR (belge para birimindeki tutar) alanında bulunur. Örnekler 150.0045.001200.75 | |||
| İade kanalı ReturnChannel | İadenin başlatıldığı kanal, örneğin çevrim içi, mağaza veya çağrı merkezi. | ||
| Açıklama Bu öznitelik, iade talebinin kaynağını veya alınma yöntemini belirtir. Web portalı, fiziksel mağaza ya da müşteri hizmetleri temsilcisi aracılığıyla başlatılan iadeleri birbirinden ayırmanıza yardımcı olur. Süreci İade Kanalına göre bölümlere ayırmak, operasyonel farklılıkları ve kaynak dağılımını anlamak için önemlidir. Örneğin mağaza iadelerinde inceleme süresi daha kısa olabilir, ancak çevrim içi iadelerden farklı belge adımları bulunabilir. Bu, İade Süreci İşlem Hacmi Eğilimleri Dashboardu için önemli bir boyuttur. Neden önemli? İadelerin nasıl başlatıldığını ayırt eder. Bu bilgi, farklı kanallardaki süreç akışını, kaynak ihtiyaçlarını ve çevrim sürelerini çoğu zaman etkiler. Nereden alınır? Bu bilgi, SAP ECC'de çoğu zaman standart bir alan olarak bulunmaz. Özel bir alandan, örneğin VBAK içinden alınması veya Satış Organizasyonu (VKORG) ya da Dağıtım Kanalı (VTWEG) gibi diğer verilerden çıkarılması gerekebilir. Özel uygulamanız için SAP ECC belgelerine başvurun. Örnekler Çevrim içi PortalMağaza İçiÇağrı Merkezi | |||
| İade nedeni ReturnReason | Müşterinin ürünü iade etmek için bildirdiği neden kodu. | ||
| Açıklama Bu öznitelik, SAP'de önceden tanımlanmış neden kodlarını kullanarak bir ürünün neden iade edildiğini gösterir. Örnekler arasında 'Taşıma sırasında hasar gördü', 'Yanlış ürün gönderildi' veya 'Uymuyor' yer alır. Kök neden analizi için önemli bir boyuttur. Analistler süreç haritasını veya KPI'ları iade nedenine göre filtreleyerek belirli nedenlerin daha uzun işlem süreleri, daha yüksek inceleme başarısızlığı 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ştirmeler yapılmasını sağlayabilir. Neden önemli? İadelerin neden gerçekleştiğini açıklar. Ürün kalitesi, sevkiyat veya ürün açıklamalarındaki sorunları ele alarak iade oranlarını azaltmak için kök neden analizi yapmanızı sağlar. Nereden alınır? Satış Belgesi Kalemi tablosu VBAP'ta, ABGRU alanında bulunur. Bu alan, satış belgelerinin reddedilme nedenini gösterir. Örnekler 001 - Hasarlı ürün002 - Yanlış ürün005 - Çok geç ulaştı | |||
| İşleme aracısı ProcessingAgent | Aktiviteyi gerçekleştiren çalışanın kullanıcı kimliği. | ||
| Açıklama Bu öznitelik, iade siparişi oluşturma veya mal kabulü kaydetme gibi belirli bir süreç adımını gerçekleştirmekten sorumlu kişinin kullanıcı adını içerir. Bu kişi çoğu zaman Değiştiren veya Oluşturan kullanıcı olarak adlandırılır. İşleme Temsilcisine göre analiz, performans yönetimi ve kaynak analizi için önemlidir. En iyi performans gösteren kişileri, ek eğitime ihtiyaç duyabilecek temsilcileri ve ekip içindeki iş yükü dağılımını belirlemenize yardımcı olur. Çevrim sürelerini ve işlem hacmini karşılaştırmak için Temsilci İade İşleme Performansı gibi Dashboardlarda kullanılır. Neden önemli? Kullanıcı katılımını izler; ekip performansını ve iş yükü dağılımını analiz etmenizi, eğitim ihtiyaçlarını veya iyi uygulamaları belirlemenizi sağlar. 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ı için CDHDR tablosundaki USERNAME alanı kullanılır. Örnekler CBURNSDSCRANTONJHALPERT | |||
| Malzeme numarası MaterialNumber | İade edilen ürünün benzersiz tanımlayıcısı. | ||
| Açıklama Malzeme Numarası veya SKU, iadeye konu olan tam ürünü belirtir. Bu sayede ürün düzeyinde ayrıntılı analiz yapabilirsiniz. İadeleri Malzeme Numarasına göre analiz eden işletmeler, yüksek iade oranına sahip ürünleri belirleyebilir. Bu durum kalite sorunlarına, hatalı açıklamalara veya üretim kusurlarına işaret edebilir. Bu öznitelik, İadelerin Envanter Üzerindeki Etkisi Dashboardu gibi Dashboardlar için ve farklı ürünlerin iade sürecinde nasıl ilerlediğini anlamak için önemlidir. Neden önemli? Hangi ürünlerin iade edildiğini gösterir ve olası kalite kontrol sorunlarını veya hatalı ürün açıklamalarını ortaya çıkarır. Nereden alınır? Satış Belgesi Kalemi tablosu VBAP'ta, MATNR alanında bulunur. Örnekler RM-1025FG-2050-BACC-5591 | |||
| Talep Edilen İade Tutarı RequestedRefundAmount | Genellikle iade edilen ürünlerin net değerine göre hesaplanan beklenen iade tutarıdır. | ||
| Açıklama Bu öznitelik, iade siparişinde kaydedilen iadenin başlangıçtaki parasal değerini temsil eder. Finansal analiz ve mutabakat için temel değer olarak kullanılır. Bu tutar, farkları izlemek amacıyla Gerçek Geri Ödeme Tutarı ile karşılaştırılır ve Geri Ödeme Tutarı Farkı Takibi Dashboardu için önemli bir metriktir. Bu değeri analiz ederek iadelerin finansal etkisini izleyebilir, fiyatlandırma veya alacak hesaplamalarındaki olası sorunları belirleyebilirsiniz. Neden önemli? İadenin başlangıçtaki finansal değerini belirler. Bu değer, finansal farkları izlemek ve iade edilen ürünlerin toplam değerini anlamak için önemlidir. Nereden alınır? Genellikle iade siparişindeki kalem düzeyinin net değeridir. VBAP tablosunda, NETWR alanında bulunur. Örnekler 150.0049.991250.75 | |||
| Alacak Dekontu Numarası CreditMemoNumber | Geri ödeme için düzenlenen alacak dekontu belgesinin benzersiz tanımlayıcısıdır. | ||
| Açıklama Alacak Dekontu, SAP'te müşteriye yapılacak geri ödemeyi resmileştiren resmi faturalandırma 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 gereklidir. Süreçte önemli bir kilometre taşıdır ve Gerçekleşen İade Tutarı gibi öznitelikler için ilgili muhasebe belgelerini bulmakta kullanılır. Neden önemli? Müşteri geri ödemesini onaylayan finansal belgeye doğrudan bağlantı sağlar. Bu bağlantı, finansal denetim ve mutabakat için gereklidir. Nereden alınır? Alacak dekontu bir faturalandırma belgesidir. Numarası VBRK tablosunda, VBELN alanında bulunur. Bağlantı, iade siparişinin belge akışı üzerinden kurulur. Örnekler 900011229000334490005566 | |||
| İade Politikasına Uyum ReturnPolicyAdherence | İadenin tanımlanan tüm iş kurallarına ve politikalara uyup uymadığını gösteren işarettir. | ||
| Açıklama Bu hesaplanan boolean öznitelik, bir iade vakasının şirketin standart ve belirlenmiş 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 eden birden fazla koşul içerebilir. Bu öznitelik, İade Onay Politikası Uyumluluğu Dashboardunu destekler. Uyumluluk oranını doğrudan ölçmenize ve hangi politikaların en sık atlandığını belirlemenize yardımcı olur. Böylece hedefli süreç iyileştirmeleri veya eğitimler planlayabilirsiniz. Neden önemli? İş kurallarına uyumu ölçer, politikaların tutarlı biçimde uygulanmasına ve özel inceleme ya da onay gerektiren vakaların belirlenmesine yardımcı olur. Nereden alınır? Bir dizi iş kuralına göre türetilen bir özniteliktir. Örneğin: (İade Başlatma Tarihi - Orijinal 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 durumudur. | ||
| Açıklama Bu öznitelik, iade vakasının Açık, İşleniyor veya Tamamlandı gibi mevcut durumunu gösterir. Satış belgesinin başlık ya da kalem düzeyindeki durumlarının birleşiminden türetilir. Analizde bu öznitelik, açık veya tamamlanmış iadeleri incelemek üzere vakaları filtrelemek için kullanışlıdır. Açık vakaların genel iş yükünü ve ilerlemesini izlemenize yardımcı olur ve her iade yolculuğu için üst düzey bir sonuç sunar. Neden önemli? Bir vakanın yaşam döngüsünde hangi aşamada olduğunu üst düzeyde gösterir. Böylece açık, devam eden veya kapatılmış iadeleri filtreleyip analiz edebilirsiniz. Nereden alınır? VBUK (Başlık Durumu) ve VBUP (Kalem Durumu) tablolarındaki durum alanlarından türetilir. Ö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 geri ödemenin işlenmesinin beklendiği tarihtir. | ||
| Açıklama Bu öznitelik, belirli bir iade vakası için geri ödeme sürecinin tamamlanması gereken son tarihi belirtir. Genellikle mal kabulünden itibaren 5 iş günü gibi iş kurallarına göre hesaplanır. Bu hedef tarih, gerçek performansın ölçüldüğü referans noktasıdır. Geri Ödeme İşleme SLA Uyumluluğu Dashboardunun temel bileşenidir. İşletmenin müşteri taahhütlerine uyumunu izlemesine ve SLA ihlali riski taşıyan vakaları belirlemesine yardımcı olur. Neden önemli? Geri ödeme işlemleri için performans hedefi belirler. İşletmenin SLA uyumluluğunu ölçüp raporlamasını ve süresi geçen vakalara öncelik vermesini sağlar. Nereden alınır? Bu bilgi genellikle standart bir SAP alanı değildir ve iş kurallarına göre türetilmesi gerekir. Bir anahtar tarih alanına, örneğin MKPF'deki ürün teslim alma tarihine, 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ış farktır. | ||
| Açıklama Bu hesaplanan metrik, iade siparişinde başlangıçta talep edilen tutarla alacak dekontunda nihai olarak düzenlenen tutar arasındaki parasal farkı ölçer. Pozitif bir değer kısmi geri ödemeye işaret edebilir. Negatif bir değer alışılmadık olmakla birlikte fazla ödemeyi gösterebilir. Bu öznitelik, Geri Ödeme Tutarı Farkı Takibi Dashboardu için temel ölçüdür. Ürün durumu değerlendirmeleri, yeniden stoklama ücretleri veya hatalar nedeniyle oluşabilecek finansal sapmaları içeren vakaları hızlıca belirlemenize ve analiz etmenize yardımcı olur. Bu değeri izlemek, finansal kontrolü ve politikalara uyumu sağlamanıza yardımcı olur. Neden önemli? İade sürecindeki finansal sapmaları doğrudan ölçer. Politikalara uyumsuzlukları, işlem hatalarını veya finansal kayıpları belirlemenize yardımcı olur. Nereden alınır? Hesaplanmış alan: ActualRefundAmount - RequestedRefundAmount. Örnekler 0.00-4.99-50.00 | |||
| Müşteri kimliği CustomerId | İadeyi başlatan müşterinin benzersiz tanımlayıcısı. | ||
| Açıklama Bu öznitelik, ürünü iade eden belirli müşteriyi, SAP terminolojisindeki 'Sold-to Party'yi tanımlar. İade işlemini müşteri ana verilerine bağlar. Müşteri Kimliğine göre analiz yapmak, 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. 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 segmentasyonu verileriyle birlikte kullanılabilir. Neden önemli? İadeleri belirli müşterilere bağlar; müşteri davranışının analiz edilmesini, tekrar iade yapan müşterilerin belirlenmesini ve müşteri ilişkileri üzerindeki etkinin anlaşılmasını sağlar. Nereden alınır? Sales Document Header tablosu VBAK'ta KUNNR alanında bulunur (Sold-to party). Örnekler CUST-100432CUST-203991CUST-831102 | |||
| Orijinal Satış Belgesi OriginalSalesDocument | İadenin oluşturulduğu orijinal satış siparişinin numarasıdır. | ||
| Açıklama Bu öznitelik, müşterinin ilk satın alma işlemine doğrudan bağlantı sağlar. İadeyi, orijinal işlem ayrıntılarına bağlayan referans belgesidir. Bu bağlantı, ayrıntılı analiz için çok değerlidir. Analistlerin belirli siparişlerdeki satışların neden iade edildiğini incelemesine, orijinal fiyatları ve koşulları kontrol etmesine ve müşterinin siparişten iadeye uzanan tüm yaşam döngüsünü anlamasına imkan verir. Belirli kampanyalar veya kanallar üzerinden satılan ürünlerin daha yüksek iade oranına sahip olup olmadığını belirlemeye yardımcı olabilir. Neden önemli? İadeyi orijinal satışa bağlar. Böylece müşteri işlemini baştan sona görebilir ve kök neden analizi yapabilirsiniz. Nereden alınır? Bu referans, iade siparişinin kalem düzeyinde saklanır. VBAP tablosunda, VGBEL (referans belgesinin belge numarası) alanında bulunabilir. Örnekler 100034561000987110012345 | |||
| Şirket Kodu CompanyCode | İşlemden sorumlu tüzel kişilik veya şirkettir. | ||
| Açıklama Şirket Kodu, SAP içindeki bağımsız bir muhasebe birimini ifade eder. İadeler ve geri ödemeler dahil tüm finansal işlemler belirli bir şirket koduna kaydedilir. Bu öznitelik, finansal raporlama ve çok uluslu ya da birden fazla tüzel kişiliğe sahip kuruluşlarda süreci bölümlere ayırmak için gereklidir. Şirket Koduna göre yapılan analiz, kurum içindeki farklı tüzel kişiliklerin iade süreci performansını karşılaştırmanızı sağlar. Neden önemli? Bir kuruluş içindeki farklı tüzel kişiliklerin iade süreçlerini filtreleyip karşılaştırmanızı sağlar. Bu, finansal analiz için büyük önem taşır. Nereden alınır? Satış Belgesi Başlık tablosu VBAK'ta, BUKRS_VF (Faturalandırma şirket kodu) alanında bulunur. Örnekler 10002000US01 | |||
| SLA'ya Uygun mu IsSLACompliant | Geri ödemenin üzerinde anlaşmaya varılan hizmet düzeyi anlaşması (SLA) içinde işlenip işlenmediğini gösteren işarettir. | ||
| Açıklama Bu, Gerçekleştirilen İade aktivitesinin gerçek tarihini İade SLA Hedef Tarihi ile karşılaştıran hesaplanmış bir boolean özniteliktir. Geri ödeme zamanında tamamlandıysa true, aksi durumda false değerini alır. Bu öznitelik, her vakanın SLA performansı için net ve ikili bir sonuç sunarak analiz ve raporlamayı kolaylaştırır. Genel İade İşleme SLA Uyumluluğu oranını hesaplamak ve uyumsuz vakaları kolayca filtreleyip analiz etmek için kullanılır. Neden önemli? Her vaka için SLA performansını net biçimde gösterir ve uyumluluk izleme ile raporlamayı kolaylaştırır. Nereden alınır? Hesaplanmış bir özniteliktir. Mantık şöyledir: Gerçekleştirilen İade EventTime <= RefundSLATargetDate. Örnekler truefalse | |||
| Üretim Yeri Plant | İade edilen ürünün teslim alındığı ve işlendiği fiziksel konum veya tesistir. | ||
| Açıklama SAP içindeki Tesis, ürünlerin işlendiği depo veya dağıtım merkezi gibi fiziksel bir konumu temsil eder. İadelerde bu konum genellikle ürünün teslim alındığı ve incelendiği yerdir. Süreci Tesise göre analiz etmek, farklı tesisler arasındaki performans değişikliklerini belirlemenize yardımcı olur. Hangi depoların ürün incelemesinde daha verimli olduğunu veya daha yüksek işlem hacmine sahip bulunduğunu gösterebilir. Bu bilgiler Ürün İnceleme İşlem Hacmi ve Verimliliği Dashboardunu destekler. Neden önemli? İadeyi işleyen fiziksel konumu belirler ve farklı depoların veya dağıtım merkezlerinin performansını karşılaştırmanızı sağlar. Nereden alınır? İade siparişinde kalem düzeyinde bulunur. VBAP tablosunda, WERKS alanında yer alır. Örnekler PL01WH02DC05 | |||
İade ve Geri Ödeme İşleme Faaliyetleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Alacak dekontu FI'ye kaydedildi | Alacak dekontu finans muhasebesine aktarılır ve resmi bir alacak hesabı kaydı hâline gelir. Bu adım, müşteriye yapılacak gerçek geri ödeme sürecini tetikler. | ||
| Neden önemli? Bu faaliyet, geri ödemenin şirket tarafından finansal olarak tanındığı noktayı gösterir. Alacak dekontunun oluşturulması ile kaydedilmesi arasındaki gecikmeler, müşteriye yapılacak gerçek geri ödemeyi yavaşlatabilir. Nereden alınır? Bu, faturalama belgesi başlığındaki kayıt durumunun (VBRK-RFBSK) 'C' olarak güncellenmesiyle, yani kayıt belgesinin oluşturulmasıyla, belirlenen türetilmiş bir olaydır. Muhasebe belgesinin gerçek oluşturulma tarihi BKPF tablosundadır. Yakalayın VBRK-RFBSK alanının 'C' olarak ayarlandığı zaman damgasını belirleyin veya bağlantılı BKPF muhasebe belgesindeki oluşturma tarihini (CPUDT) kullanın. Olay türü inferred | |||
| Alacak dekontu oluşturuldu | Müşteriye finansal alacak tanımlanmasını onaylamak için bir faturalama belgesi, yani alacak dekontu, oluşturulur. Bu, geri ödeme tutarını resmileştiren resmi finansal belgedir. | ||
| Neden önemli? Bu, süreçte önemli bir finansal kilometre taşıdır. Alacak dekontunun oluşturulmasına kadar geçen süreyi analiz etmek, mal kabulü ve inceleme sonrasında finansal belge işlemlerindeki gecikmeleri belirlemeye yardımcı olur. Nereden alınır? Bu, VBRK tablosunda (Billing Document Header) kaydedilen açık bir olaydır. Oluşturma tarihi VBRK-ERDAT alanındadır. Alacak dekontu, belge akışında iade siparişine veya alacak dekontu talebine bağlanır. Yakalayın İlgili faturalama belgesi için VBRK tablosundaki oluşturma zaman damgasını (ERDAT) kullanın. Olay türü explicit | |||
| İade siparişi oluşturuldu | Bu faaliyet, müşteri bir ürünü iade etmek istediğinde iade sürecinin başlatıldığını gösterir. SAP ECC'de 'Return' türünde, örneğin RE, yeni bir satış belgesi oluşturulduğunda kaydedilir. | ||
| Neden önemli? Bu, iade sürecinin birincil başlangıç olayıdır. Bu faaliyet ile diğer faaliyetler arasındaki süreyi analiz etmek, toplam çevrim süresini ölçmeye ve ilk işlem gecikmelerini belirlemeye yardımcı olur. Nereden alınır? Bu, VBAK tablosunda (Sales Document Header) kaydedilen açık bir olaydır. Oluşturma zaman damgası, sipariş türü VBAK-AUART = 'RE' olan ilgili satış belgesi numarası (VBAK-VBELN) için VBAK-ERDAT ve VBAK-ERZET alanlarında saklanır. Yakalayın '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 faaliyet, 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 birincil bitiş olayıdır. 'Return Order Created' ile bu faaliyet arasındaki süreyi ölçmek, iade vakasının uçtan uca çevrim süresini verir. Nereden alınır? Bu, durum tablolarından türetilen bir olaydır. Satış belgesi başlığının genel durumu (VBUK-GBSTK) 'C' olarak, yani 'Completely processed', güncellendiğinde kaydedilir. Yakalayın 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 yeniden stoğa alınması, hurdaya ayrılması veya onarılması gibi sonraki süreci belirler. | ||
| Neden önemli? Bu faaliyet, inceleme verimliliğini ve sonuçlarını anlamak için önemlidir. Karar, geri ödeme tutarını ve stok yönetimini doğrudan etkiler. Nereden alınır? SAP QM kullanılıyorsa bu, QAVE tablosunda (Inspection processing usage decision) kaydedilen açık bir olaydır. Karar zamanı QAVE-VDATUM alanında saklanır. Teslimatla bağlantı QALS tablosundadır. Yakalayın İnceleme lotu (QALS-PRUEFLOS) üzerinden bağlanan QAVE tablosundaki kullanım kararı tarihini (VDATUM) kullanın. Olay türü explicit | |||
| Mal kabulü kaydedildi | Bu faaliyet, 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 tespit edilir. | ||
| Neden önemli? Şirketin iade edilen ürünü teslim aldığını gösteren önemli bir kilometre taşıdır. Fiziksel incelemenin başlangıç noktasıdır ve stok doğruluğunu etkiler. Nereden alınır? Bu olay, VBUP tablosundaki iade teslimatı kaleminin mal hareketi durumundan, örneğin WBSTA = 'C', türetilebilir. Kesin zaman damgası, ilgili mal kabulü için malzeme belgesi başlığında (MKPF-BUDAT) bulunur. Yakalayın İade teslimatıyla bağlantılı malzeme belgesi için MKPF tablosundaki kayıt tarihini (BUDAT) bulun. Olay türü inferred | |||
| Alacak dekontu kapatıldı | Alacaklar muhasebesindeki açık alacak kalemi, genellikle müşteriye yapılan bir ödeme ile kapatılır. Bu olay, geri ödemenin finansal olarak tamamen kapandığını gösterir. | ||
| Neden önemli? Bu faaliyet, nakit çıkışını doğrular ve sürecin finansal tarafını tamamlar. Müşteri açısından geri ödeme yolculuğunun gerçek sonudur. Nereden alınır? Bu, FI modülünden gelen açık bir olaydır. Muhasebe belgesinin kapatma tarihi, ilgili müşteri kalemi için BSEG tablosunda (BSEG-AUGDT) saklanır. Yakalayın Alacak dekontuyla bağlantı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 bir 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 işlemleri için tetikleyici görevi görür. Nereden alınır? Bu, 'Credit Memo Request' türündeki bir satış belgesi için VBAK'te açık bir olay olabilir, örneğin CR. Sipariş türü siparişe bağlı faturalama için yapılandırılmışsa 'Return Order Created' olayıyla aynı olay da olabilir. Yakalayın 'CR' belge türü için VBAK'teki 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 bloğu kaldırıldı | İade talebinin onaylandığını ve sonraki aşamaya geçebileceğini gösterir. Bu olay genellikle belge durumundaki değişiklik veya teslimat ya da faturalama bloğunun kaldırılmasıyla kaydedilir. | ||
| Neden önemli? Bu faaliyet, önemli bir onay kilometre taşı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ış belgesine ait değişiklik günlüklerinden türetilen bir olaydır. VBAK veya VBAP'teki blok alanlarında ya da VBUK/VBUP'teki durum alanlarında yapılan değişiklikler için CDHDR ve CDPOS tablolarını kontrol edin. Yakalayın İlgili blok 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 inceleme sonrasında reddedilir. Bu, bu kalem için geri ödeme gibi başka bir işlem yapılmayacağı anlamına gelir. | ||
| Neden önemli? Retleri analiz etmek, geçersiz iade taleplerini belirlemeye ve müşteri politikası iletişimini geliştirmeye yardımcı olur. Bu, geri ödemeye ulaşmayan önemli bir süreç yoludur. Nereden alınır? Bu, türetilmiş bir olaydır. Genellikle VBAP tablosunda kalem için benzersiz bir 'Reason for Rejection' kodu (VBAP-ABGRU) ayarlandığında kaydedilir. Zaman damgası değişiklik günlüklerinden alınmalıdır. Yakalayın Bir iade 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şlenmiş olarak işaretlenir. Bu genellikle ilgili kaleme ait tüm lojistik ve finansal takip 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 tamamlanmasına ilişkin daha ayrıntılı bir görünüm sunar. Nereden alınır? Bu, durum tablolarından türetilen bir olaydır. Satış belgesi kaleminin genel durumu (VBUP-GBSTK) 'C' olarak, yani 'Completely processed', güncellendiğinde kaydedilir. Yakalayın 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 için lojistik sürecin başlatıldığını gösterir. | ||
| Neden önemli? İdari işlemlerden fiziksel lojistiğe geçişi izler. Buradaki gecikmeler depo planlamasını ve genel iade çevrim süresini etkileyebilir. Nereden alınır? Bu, LIKP tablosunda (Delivery Header) kaydedilen açık bir olaydır. Oluşturma zaman damgası LIKP-ERDAT alanındadır. Kaynak iade siparişine bağlantı LIPS tablosunda (LIPS-VGBEL) bulunur. Yakalayın İ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ğinZ_PM_RETURN_EXTRACTION. 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: Kullanıcıların verileri filtreleyebilmesi için programda 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) bulunur. - Veri yapılarını tanımlayın: Gerekli olay günlüğü biçimiyle eşleşen yerel bir yapı türü oluşturun. Bu yapı
ReturnCaseId,ActivityName,EventTime,SourceSystem,LastDataUpdate,ProcessingAgent,ReturnReasonve diğer gerekli öznitelikleri içermelidir. - Veri seçme mantığını uygulayın: Gerekli 12 aktivitenin 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. Teslimatlar ve alacak dekontları gibi ilgili belgeleri ilk iade siparişine bağlamak için belge akışı tablosu VBFA'yı kullanın.
- 'İade Siparişi Oluşturuldu' verisini çıkarın: Seçim ekranı ölçütlerine göre
VBAKveVBAPtablolarından kayıtları seçin. Satış belgesi numarası (VBAK-VBELN),ReturnCaseIdolarak kullanılacaktır. - Durum değişikliklerini ve temel olayları çıkarın: 'İade Siparişi Blokesi Kaldırıldı' veya 'İade Siparişi Kalemi Reddedildi' gibi aktiviteler için değişiklik belgesi tablolarını (
CDHDR,CDPOS) ya daVBAP(ABGRU) gibi tablolardaki durum alanlarını sorgulayın. Lojistik ve finansal takip aktiviteleri için LIKP, MKPF, VBRK ve BKPF gibi tablolardan seçim yapın. Bu kayıtların ilk iade siparişi grubuyla bağlantısını doğrulamak için VBFA'yı kullanın. - Olay günlüğü tablosunu doldurun: Alınan her aktivite için olay günlüğü yapısıyla tanımlanmış dahili tabloda yeni bir kayıt oluşturun. Kaynak SAP tablolarındaki verileri ilgili alanlara eşleyin. Örneğin
VBAK-ERNAMalanınıProcessingAgentalanına,VBAK-ERDATveVBAK-ERZETalanlarınıEventTimealanına eşleyin. - Aktivite verilerini birleştirin: Her aktiviteye ait SELECT ifadesinin sonuçlarını tek ana dahili tabloya eklediğinden emin olun. Böylece her satırın bir olayı temsil ettiği nihai düz dosya yapısı oluşturulur.
- Zaman damgalarını ve sistem bilgilerini yönetin: Her satırdaki
LastDataUpdatezaman damgasını doldurmak içinSY-DATUMveSY-UZEITsistem alanlarını kullanın.SourceSystemalanını doldurmak içinSY-SYSIDdeğerini kullanın. - Çıktı işlevini uygulayın: Sonuçları çevrim içi analiz için ALV grid'de (SAP List Viewer) görüntüleme işlevi ekleyin. Bunun için
REUSE_ALV_GRID_DISPLAYgibi işlev modüllerini kullanın. Nihai dahili tabloyu CSV veya düz metin dosyası olarak kullanıcının yerel bilgisayarına indirme seçeneği sunun. - Çalıştırın ve dışa aktarın: Programı
SE38üzerinden çalıştırın. İstediğiniz seçim ölçütlerini girip yürütün. Veriler görüntülendikten veya işlendiğinde, olay günlüğü dosyasını kaydetmek için programın dışa aktarma özelliğini kullanın. Dosyanın ProcessMind ile uyumlu bir biçimde, genellikle başlık satırı içeren CSV olarak kaydedildiğinden emin olun.
Yapılandırma
- Tarih aralığı: Seçim ekranında iade siparişlerinin oluşturulma tarihi için bir tarih aralığı belirtin. İlk analiz için veri hacmi ile süreç içgörüsü arasında denge kurmak amacıyla 3 ila 6 aylık bir aralık önerilir.
- İade belge türü: Sisteminizde iadeler için kullanılan belirli satış belgesi türüne göre filtreleyin. Örneğin iadeler için 'RE', alacak dekontu talebi için 'CR'. Doğru süreci ayırmak için bu filtre büyük önem taşır. Bu değerleri
S_AUARTseçim seçeneğine 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
SE38için program çalıştırma ve temel SD, MM ve FI tablolarına, örneğin VBAK, LIKP, VBRK, BKPF ve CDHDR tablolarına, erişim yetkisi olmalıdır. Geliştirme için ABAP geliştirici rolü gerekir. - Performans: Birden fazla yıla yayılan çok büyük Veri Setlerinde programın çalışma süresi uzayabilir. Programı arka plan işi (
SM36) olarak çalıştırmayı ve çıktıyı çevrim içi görüntülemek yerine uygulama sunucusunun dosya sistemine yazmayı değerlendirin.
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. Buna Satış ve Dağıtım (SD), Malzeme Yönetimi (MM) ve Finansal Muhasebe (FI) modüllerindeki tablolar dahildir. 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. Sorguda
[YOUR_RETURN_ORDER_TYPES]yer tutucusu kullanılır. Bu alanı, 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 yapılandırın: Sorgunun başındaki
BaseReturnOrdersadlı Ortak Tablo İfadesini (CTE) bulun.[START_DATE]ve[END_DATE]değerlerini değiştirerek istediğiniz tarih aralığınıWHEREkoşulunda belirtin. İ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: Değiştirilmiş 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ı hızlıca gözden geçirin.
ReturnCaseId,ActivityNameveEventTimesütunlarının dolu olduğunu ve birden fazla aktivite için veri bulunduğunu kontrol edin. - CSV'ye 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ükleme için hazırlayın: CSV dosyasını açın ve sütun başlıklarının gerekli özniteliklerle tam olarak 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üklemeyi yapın: Temiz CSV dosyasını analiz için ProcessMind platformuna yükleyin.
Yapılandırma
- İade belge 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ığı: Çıkarma için uygun bir tarih aralığı tanımlamak büyük önem taşır. İlk analiz için genellikle 3 ila 6 aylık veri önerilir. Bu aralığı,
[START_DATE]ve[END_DATE]yer tutucularını 'YYYYMMDD' biçiminde doldurarak belirleyin. - Şirket kodu: Birden fazla şirket kodu kullanan kuruluşlarda odaklı bir analiz için verileri filtrelemek gerekir. Kapsamı sınırlamak amacıyla ilk CTE'ye
VBAK.BUKRS_VF = '[YOUR_COMPANY_CODE]'gibi bir filtre ekleyebilirsiniz. - Veritabanı lehçesi: Sağlanan sorgu yaygın SQL işlevlerini kullanır. Ancak
TO_TIMESTAMPve dize birleştirme (CONCAT) gibi tarih ve saat dönüştürmeleri, temel veritabanı sistemine göre küçük söz dizimi değişiklikleri gerektirebilir. Örneğin Oracle, HANA veya DB2. - 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.
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; Başlamaya hazır mısınız?
Veri toplama sürecinizi kolaylaştırmak ve iade süreciniz hakkında güçlü içgörüler elde etmek için bu Templatei bugün kullanmaya başlayın.
İade ve geri ödeme işlemlerinizi şimdi optimize edin
SAP ECC iade sürecinizi daha akıcı hale getirin ve çevrim süresini %30 azaltın, bugün başlayın.
Kredi kartı gerekmez, kurulumu dakikalar içinde tamamlayın