Borçlar muhasebesi ödeme işlemleri için Veri Templateiniz
Borçlar muhasebesi ödeme işlemleri için Veri Templateiniz
- Tedarikçi ve ödeme analizleri için temel öznitelikler
- Ödeme döngüsündeki temel süreç aşamaları
- SAP S/4HANA sistemleri için özel veri çıkarma mantığı
Borçlar muhasebesi ödeme işlemleri öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Aktivite Activity | Fatura için kaydedilen belirli görev veya olay durumu değişikliğidir. | ||
| Açıklama Bu öznitelik, faturanın yaşam döngüsü boyunca gerçekleşen farklı süreç adımlarını gösterir. Fatura oluşturma, kaydetme, bloke etme, onaylama ve ödeme kapatma gibi olayları içerir. Aktivite adları, kaynak sistemdeki işlem kodlarından, değişiklik günlüğü kayıtlarından veya iş akışı durum güncellemelerinden alınır. Analizde bu alan, süreç akışının farklı biçimlerini haritalamak için önemlidir. Process Mining motorunun adım sırasını görselleştirmesini, yeniden çalışma döngülerini belirlemesini ve sürecin ideal yoldan nerede saptığını bulmasını sağlar. Olay günlüğünün temel bileşenidir. Neden önemli? Süreç haritasındaki düğümleri tanımlar; iş akışını ve darboğazları görselleştirmeyi sağlar. Nereden alınır? İşlem kodlarından (TCODE) veya Değişiklik Belgesi Başlığı (CDHDR) ve Kaleminden (CDPOS) türetilir Örnekler Fatura kaydedildiÖdeme bloku uygulandıÖdeme çalıştırması yürütüldüFatura kapatıldı | |||
| Fatura numarası InvoiceNumber | İşlem gören satıcı faturasının benzersiz tanımlayıcısıdır. | ||
| Açıklama Fatura numarası, SAP S/4HANA sisteminde borç kaleminin yaşam döngüsünü izlemek için kullanılan birincil anahtardır. Genel muhasebeye fatura kaydedildiğinde oluşturulan muhasebe belgesi numarasını ifade eder. Standart SAP terminolojisinde bu, belirli bir şirket kodu ve mali yıl için kullanılan Belge Numarasına (BELNR) karşılık gelir. Süreç analizinde bu öznitelik, Vaka kimliği olarak kullanılır. Faturanın ilk alınması ve beklemeye alınmasından çeşitli onay blokelerine ve değişikliklere, son ödeme kapatmasına kadar farklı etkinlikleri birbirine bağlar. Olayları bu tanımlayıcıya göre gruplandırmak, her ödeme yükümlülüğünün baştan sona geçmişini yeniden oluşturmayı sağlar. Neden önemli? Kesin Vaka kimliği olarak ödeme sürecinin baştan sona akışını yeniden oluşturmayı sağlar. Nereden alınır? SAP BKPF tablosundaki (Muhasebe Belgesi Başlığı) BELNR alanı veya ACDOCA tablosundaki BELNR alanı Örnekler 1900000523510000289119000006015100003002 | |||
| Olay zamanı EventTime | Etkinliğin gerçekleştiği kesin zaman damgasıdır. | ||
| Açıklama Olay zamanı, bir etkinliğin SAP veritabanına kaydedildiği tarih ve saati belirtir. Bir vaka içindeki olayları sıraya koymak için gereken zaman bilgisini sağlar. Bu zaman damgası genellikle sistem günlüklerindeki veya belge başlıklarındaki CPU Tarihi ve CPU Saati alanları birleştirilerek oluşturulur. Analizde bu öznitelik, çevrim sürelerini, süreleri ve işlem hacmini hesaplamak için gereklidir. Adımlar arasındaki zaman farklarını ölçmeye, örneğin faturanın alınmasıyla son onay arasındaki süreyi belirlemeye imkân verir. Bu, darboğazları bulmak ve Ortalama Fatura Onay Süresi gibi temel performans göstergelerini değerlendirmek açısından önemlidir. Neden önemli? Olayların kronolojik sırasını belirler ve zamana dayalı tüm performans hesaplamalarının temelini oluşturur. Nereden alınır? SAP BKPF tablosundaki CPUDT (Giriş Tarihi) ve CPUTM (Giriş Saati) alanları veya CDHDR tablosundaki UDATE ve UTIME alanları Örnekler 2023-10-12T08:30:00.000Z2023-10-12T14:15:22.000Z2023-10-15T09:00:00.000Z | |||
| Kaynak sistem SourceSystem | Verilerin alındığı SAP S/4HANA örneğinin tanımlayıcısıdır. | ||
| Açıklama Bu öznitelik, süreç verilerinin hangi ERP kurulumundan veya istemcisinden çıkarıldığını belirtir. Birden fazla SAP örneğinin ya da eski sistemlerin paralel çalıştığı ortamlarda veri kökeninin izlenmesini ve sistemler arasında karşılaştırma yapılmasını sağlar. Analizde bu alan, üst düzey bir filtre görevi görür. Farklı bölgesel sistem kurulumlarının performansını karşılaştırırken veya sistem geçişi projelerinde veri tutarlılığını doğrularken verileri ayırmaya yardımcı olur. Sistem yapılandırmasından kaynaklanan süreç farklılıklarının doğru bağlamda değerlendirilmesini sağlar. Neden önemli? Birden fazla sistemin kullanıldığı ortamlarda veri kaynaklarını ayırt ederek doğru segmentasyon sağlar. Nereden alınır? SAP kurulum bağlamındaki Sistem Kimliği (SY-SYSID) Örnekler SAP_PROD_01S4H_NA_100ERP_EU_200 | |||
| Son veri güncellemesi LastDataUpdate | Kaydın en son ne zaman çıkarıldığını veya yenilendiğini gösteren zaman damgası. | ||
| Açıklama Son veri güncellemesi, verilerin Process Mining platformuna başarıyla yüklendiği zamanı belirtir. İş olayının gerçekleştiği zamanı değil, veri setinin ne kadar güncel olduğunu gösterir. Analiz Dashboardlarına duyulan güveni korumak için bu bilgi önemlidir. Analizde bu öznitelik, kullanıcıların görüntüledikleri bilgilerin güncelliğini anlamasına yardımcı olur. Ödeme blokesi analizi gibi gerçek zamana yakın Dashboardları izlerken özellikle önem taşır; kararların SAP S/4HANA sisteminin en güncel durumuna göre alınmasını sağlar. Neden önemli? Verilerin güncelliğini gösterir; operasyonel Dashboardlar için önemlidir. Nereden alınır? ETL / veri çıkarma süreci tarafından oluşturulur Örnekler 2023-10-27T23:59:59.000Z2023-11-01T06:00:00.000Z | |||
| Belge türü DocumentType | Muhasebe belgesini sınıflandırır (ör. satıcı faturası, ödeme, alacak dekontu). | ||
| Açıklama Belge türü, SAP’de muhasebe işlemlerini sınıflandıran iki karakterli bir koddur. Yaygın türler arasında satıcı faturaları için 'KR', satıcı ödemeleri için 'KZ' ve brüt fatura alımı için 'RE' bulunur. Belgenin numara aralığını ve alan durumunu belirler. Analizde bu öznitelik, süreç kapsamını filtrelemek için kullanılır. Örneğin analist, yalnızca giden ödemelerin verimliliğine odaklanmak için alacak dekontlarını hariç tutabilir. İşlenen işlem türlerinin dağılımını belirlemeye de yardımcı olur ve süreç varyantı karmaşıklığı Dashboardunu destekler. Neden önemli? Vakayı fatura veya alacak dekontu olarak sınıflandırır ve filtrelenmiş analiz yapılmasını sağlar. Nereden alınır? SAP BKPF tablosundaki BLART alanı Örnekler KRREKZKG | |||
| Fatura tutarı InvoiceAmount | Belge para birimindeki toplam brüt fatura tutarıdır. | ||
| Açıklama Bu öznitelik, kaynak belgede kaydedilen fatura tutarını gösterir. Satıcıya ödenmesi gereken borç miktarını ifade eder. SAP S/4HANA’da genellikle Belge Para Birimindeki Tutar alanında saklanır. Analizde fatura tutarı, işlerin önceliklendirilmesine yardımcı olur. Manuel işlem noktalarının dağılımı gibi Dashboardlar, bu alanı kullanarak yoğun manuel çalışmanın düşük tutarlı faturalar için harcanıp harcanmadığını gösterir. Kuruluşun iyileştirme çalışmalarını, süreç hatalarının daha büyük mali risk taşıdığı yüksek tutarlı işlemlere yöneltmesini sağlar. Neden önemli? Vakanın mali ağırlığını gösterir ve yüksek tutarlı süreç verimsizliklerine öncelik vermek için gereklidir. Nereden alınır? SAP BKPF veya BSEG tablosundaki WRBTR alanı Örnekler 1500.00250.5010000.00 | |||
| Kapatma tarihi ClearingDate | Faturanın ödemeyle kapatıldığı tarih. | ||
| Açıklama Kapatma tarihi, borçlar muhasebesi defterindeki açık kalemin genellikle bir ödeme çalıştırması veya manuel ödeme kaydıyla kapatıldığı zamanı gösterir. Bu tarih, borcun sona erdiğini belirtir. Analizde bu öznitelik, sürecin toplam çevrim süresini hesaplamak için kullanılır. 'Ödeme kapatıldı' etkinliğinin zaman damgasıdır ve zamanında ödeme performansını belirlemek için net vade tarihiyle karşılaştırılır. Ödeme kapatma verimliliği Dashboarduna doğrudan veri sağlar. Neden önemli? Ödeme sürecinin tamamlandığını gösterir ve ödemenin zamanında yapılıp yapılmadığını belirlemek için kullanılır. Nereden alınır? SAP BSEG tablosundaki AUGDT alanı Örnekler 2023-11-012023-11-15 | |||
| Kullanıcı adı UserName | Belirli etkinliği gerçekleştiren kullanıcının kimliğidir. | ||
| Açıklama Kullanıcı adı, bir süreç adımını gerçekleştiren kişinin veya sistem aracısının oturum açma kimliğini gösterir. Bu, veri girişi yapan bir kullanıcı veya otomatik görevleri yürüten bir arka plan işi kimliği (ör. 'BATCH_USER') olabilir. Analizde bu öznitelik, etkinlik otomasyon oranının hesaplanmasını sağlar. Analistler, insan kullanıcıları sistem hesaplarından ayırarak süreçteki otomasyon düzeyini ölçebilir. Ekipler arasındaki iş yükünü değerlendirmek için manuel işlem noktalarının dağılımı Dashboardunda da kullanılır. Neden önemli? Manuel ve otomatik işleri ayırt ederek otomasyon oranının hesaplanmasını sağlar. Nereden alınır? SAP BKPF tablosundaki USNAM alanı veya CDHDR tablosundaki USERNAME alanı Örnekler BSMITHWF-BATCHRJONES | |||
| Net vade tarihi NetDueDate | Cezalardan kaçınmak için faturanın ödenmesi gereken hesaplanmış tarih. | ||
| Açıklama Net vade tarihi, ödeme için son tarihtir. Başlangıç tarihine azami ödeme süresi günleri eklenerek hesaplanır. Bazen açıkça saklansa da analiz görünümlerinde çoğunlukla hesaplanan bir alandır. Analizde bu tarih, geç ödeme ve ceza takibi için temel kıyaslama ölçütüdür. Gerçek kapatma tarihi net vade tarihiyle karşılaştırılarak 'Kaç gün geç ödendi' metriği hesaplanır. Bu metrik, borçlar muhasebesi ekibinin verimliliğini ve tedarikçi ilişkilerinde sorun yaşanma riskini değerlendirmeye yardımcı olur. Neden önemli? Süreç için hedeflenen son tarihtir; bu tarihin kaçırılması kredi notunu etkileyebilir ve ek maliyet doğurabilir. Nereden alınır? Hesaplama: Başlangıç tarihi + azami ödeme süresi günleri (ZBD1T/ZBD2T/ZBD3T) Örnekler 2023-11-302023-12-01 | |||
| Ödeme blokesi nedeni PaymentBlockReason | Faturanın neden ödeme blokesi altında olduğunu belirten kod. | ||
| Açıklama Bu öznitelik, otomatik ödeme çalıştırmasının faturayı seçmesini engelleyen belirli neden kodunu içerir. Örnekler arasında ödeme blokesi için 'A', fatura doğrulaması için 'R' ve kullanıcıların koyduğu manuel blokeler bulunur. Analizde bu alan, manuel ödeme blokesi analizi Dashboardunun temel unsurudur. Kuruluş, farklı bloke nedenlerinin sıklığını toplulaştırarak ödeme sürecini aksatan sık fiyat farkları veya eksik mal girişleri gibi sistemik sorunları teşhis edebilir. Neden önemli? Süreçteki duraklamaların belirli nedenini göstererek hedefli kök neden analizi yapılmasını sağlar. Nereden alınır? SAP BSEG tablosundaki ZLSPR alanı Örnekler ABR* | |||
| Ödeme gecikti mi IsLatePayment | Ödemenin net vade tarihinden sonra yapılıp yapılmadığını belirten mantıksal bir işaret. | ||
| Açıklama Bu hesaplanan öznitelik, Clearing Date değeri Net Due Date değerinden kesin olarak büyükse true sonucunu verir. Süreç performansını ikili olarak sınıflandırır. Analizlerde bu işaret, Geç Ödeme Cezası Sıklığı KPI’ı için uyumsuz vakaların sayısını hesaplamakta kullanılır. Görselleştirme katmanında karmaşık tarih hesaplamaları yapmak yerine True değerlerini saymanıza olanak tanıyarak Dashboard oluşturmayı kolaylaştırır. Neden önemli? Zamanında ödeme performansına ilişkin KPI’ların hesaplanmasını kolaylaştırır. Nereden alınır? Hesaplama: Clearing Date > Net Due Date Örnekler truefalse | |||
| Ödeme koşulları PaymentTerms | Üzerinde anlaşılan ödeme ve iskonto koşullarını belirten anahtar. | ||
| Açıklama Ödeme koşulları, faturanın ne zaman ödeneceğini ve erken ödeme için nakit iskontosu uygulanıp uygulanmayacağını belirler. Bu kod (ör. 'Z001'), 'Net 30' veya '2% 10, Net 30' gibi kurallara karşılık gelir. Satıcı ana verilerinden faturaya kopyalanır, ancak manuel olarak değiştirilebilir. Analizde bu öznitelik, erken ödeme iskontosu optimizasyonu ve satıcı ödeme koşullarına uyumluluk Dashboardları için temel niteliktedir. Sistemin temel vade tarihini hesaplamasını ve tasarruf fırsatından yararlanmak için ödemenin uygun zaman aralığında yapılıp yapılmadığını belirlemesini sağlar. Neden önemli? Beklenen ödeme zamanını ve mali teşvikleri belirler; iskonto analizi için önemlidir. Nereden alınır? SAP BSEG tablosundaki ZTERM alanı Örnekler Z001NT300001 | |||
| Satıcı numarası VendorNumber | Faturayla ilişkili tedarikçinin benzersiz tanımlayıcısıdır. | ||
| Açıklama Satıcı numarası, SAP alt defterindeki belirli alacaklı hesabını gösterir. Faturayı ödeme koşullarını, banka bilgilerini ve iletişim bilgilerini içeren ana verilere bağlar. S/4HANA’da genellikle İş Ortağı kavramıyla ilişkilendirilir; ancak birçok tabloda eski LIFNR alan adı kullanılmaya devam eder. Analizde bu öznitelik, Satıcı ödeme koşullarına uyumluluk Dashboardu için temel niteliktedir. Süreç performansını tedarikçiye göre toplulaştırarak sürekli blokelere, fiyat farklarına veya gecikmelere yol açan tedarikçileri belirlemeyi sağlar. Stratejik tedarik kararlarını ve tedarikçi ilişkileri yönetimini destekler. Neden önemli? Performansı tedarikçiye göre toplulaştırmayı sağlar; gecikmelerin temel nedenlerini bulmak için önemlidir. Nereden alınır? SAP BKPF tablosundaki LIFNR alanı veya ACDOCA tablosundaki LIFNR alanı Örnekler 100050VEND-US-99200400 | |||
| Şirket kodu CompanyCode | Bilançonun ve kâr-zarar tablosunun hazırlandığı organizasyon birimidir. | ||
| Açıklama Şirket kodu, kuruluş içindeki bağımsız muhasebe birimini temsil eder. Harici muhasebenin temel organizasyon birimidir ve finansal verileri yapılandırmak için kullanılır. Her fatura tam olarak bir şirket koduna atanır. Analizde bu öznitelik, temel performans göstergelerini tüzel kişiliğe veya bölgeye göre ayırmayı sağlar. Farklı iştiraklerdeki borçlar muhasebesi ekiplerinin verimliliğini karşılaştırmak için Dashboardlarda kullanılır. Örneğin, belirli bir şubede manuel ödeme blokelerinin şirket standardına kıyasla daha sık olup olmadığını belirlemeye yardımcı olur. Neden önemli? Süreci tüzel kişiliğe göre ayırarak kurum içi kıyaslamayı kolaylaştırır. Nereden alınır? SAP BKPF tablosundaki BUKRS alanı Örnekler US01DE1010002000 | |||
| Temassız işlem IsTouchless | Faturanın manuel müdahale olmadan işlenip işlenmediğini belirten mantıksal bir işaret. | ||
| Açıklama Bu öznitelik, bir vakanın olay akışı incelenerek hesaplanır. Vakada yalnızca otomatik etkinlikler (ör. 'system' kullanıcısı veya belirli arka plan TCODES) varsa ve manuel değişiklik ya da bloke bulunmuyorsa vaka temassız olarak işaretlenir. Analizlerde Temassız Fatura Oranı KPI’ının temel metriğidir. Kuruluşun otomasyon çalışmalarının sonuçlarını izlemesine ve hangi vaka türlerinin (ör. tedarikçi veya bölge bazında) insan müdahalesi olmadan sistemde ilerlediğini belirlemesine yardımcı olur. Neden önemli? Süreç otomasyonu ve verimliliğini ölçen başlıca göstergedir. Nereden alınır? Etkinlik sırasına ve kullanıcı türlerine göre hesaplanır Örnekler truefalse | |||
| Başlangıç tarihi BaselineDate | Ödeme koşullarının uygulandığı ve vade tarihlerinin hesaplandığı tarih. | ||
| Açıklama Başlangıç tarihi, net vade tarihini ve nakit iskonto dönemlerini hesaplamak için esas alınır. Yapılandırmaya ve satıcı ana verilerine bağlı olarak genellikle fatura tarihi veya kayıt tarihidir. Analizde bu tarih, 'Gecikmiş mi' durumunu hesaplamak için teknik bir ön koşuldur. Başlangıç tarihindeki hatalar, erken ödemelere (nakit akışı etkisi) veya geç ödemelere (ceza etkisi) yol açabilir. Bu tarihin doğruluğunu kontrol etmek, satıcı ödeme koşullarına uyumluluk analizinin bir parçasıdır. Neden önemli? Tüm vade tarihi hesaplamalarının dayanağıdır. Nereden alınır? SAP BSEG tablosundaki ZFBDT alanı Örnekler 2023-10-012023-10-15 | |||
| Kaçırılan indirim tutarı DiscountLostAmount | Kullanılabilecek nakit indirimlerinin alınmaması nedeniyle kaybedilen parasal tutar. | ||
| Açıklama Bu hesaplanan öznitelik, kaçırılan tasarruf tutarını gösterir. Ödeme indirim için son tarihten sonra yapıldıysa, fatura tutarına uygulanabilecek ancak kaçırılan indirim yüzdesi hesaplanır. Analizlerde Erken Ödeme İndirimi Optimizasyonu için önemli bir finansal metriktir. Verimsizliğin maliyetini doğrudan parasal tutarla göstererek süreç iyileştirmeleri için güçlü bir iş gerekçesi sunar. Neden önemli? Süreç gecikmelerinden kaynaklanan doğrudan finansal kaybı ölçer. Nereden alınır? Hesaplama: Clearing Date > Discount Date ise Invoice Amount * Discount % Örnekler 30.000.00150.00 | |||
| Mali yıl FiscalYear | Faturanın ait olduğu mali yıl. | ||
| Açıklama Mali yıl, finansal raporlamada kullanılan bir dönemdir. Şirket kodu ve belge numarasıyla birlikte SAP’deki bir finansal belgenin bileşik birincil anahtarını oluşturur. Analizde vakaları benzersiz biçimde tanımlamak için teknik olarak gereklidir; ayrıca yıllar arası raporlamayı destekler. Onlarca yıllık veri geçmişinde 'Fatura numarası' Vaka kimliğinin benzersiz kalmasını sağlar. Neden önemli? SAP FI’da vakaları benzersiz biçimde tanımlamak için teknik gereklilik. Nereden alınır? SAP BKPF tablosundaki GJAHR alanı Örnekler 20232024 | |||
| Nakit iskontosu gün sayısı 1 CashDiscountDays1 | İlk nakit iskontosunun geçerli olduğu, başlangıç tarihinden itibaren gün sayısı. | ||
| Açıklama Bu öznitelik, en avantajlı ödeme koşullarının geçerli olduğu süreyi tanımlar (ör. '2% 10, Net 30' ifadesindeki '10'). Fatura kaleminde saklanan ödeme koşullarından alınır. Analizde bu bilgi, erken ödeme iskontosu optimizasyonu için 'Hedef Tarih’in belirlenmesine yardımcı olur. Fatura bu süre içinde kapatılırsa iskonto uygulanır. Bu alan, yavaş süreç çevrimlerinin fırsat maliyetini ölçmeye yardımcı olur. Neden önemli? Mali tasarruf fırsatının geçerli olduğu süreyi tanımlar. Nereden alınır? SAP BSEG tablosundaki ZBD1T alanı Örnekler 10140 | |||
| Nakit iskontosu yüzdesi 1 CashDiscountPercentage1 | İlk iskonto dönemi içinde ödeme yapılırsa uygulanacak iskonto yüzdesi. | ||
| Açıklama Bu öznitelik, satıcının erken ödeme için sunduğu mali teşvik oranını gösterir (ör. '2% 10' ifadesindeki '2'). Analizde 'Olası nakit iskontosu' tutarını hesaplamak için kullanılır. Dashboardlar, bu yüzdeyi fatura tutarıyla çarparak süreç verimsizlikleri nedeniyle kaçırılan toplam tasarrufu gösterebilir ve otomasyon için iş gerekçesi oluşturulmasını destekler. Neden önemli? Olası tasarruf oranını ölçer ve yatırım getirisini hesaplamak için gereklidir. Nereden alınır? SAP BSEG tablosundaki ZBD1P alanı Örnekler 2.03.00.0 | |||
| Para birimi Currency | Fatura tutarının para birimi kodudur. | ||
| Açıklama Para birimi özniteliği, fatura tutarının USD, EUR veya GBP gibi hangi para biriminde olduğunu belirtir. Finansal değerlerin doğru yorumlanmasını sağlar ve uluslararası şirket kodlarından gelen veriler toplulaştırılırken gereklidir. Analizde bu alan, finansal temel performans göstergelerinin doğru hesaplanmasını sağlar. Küresel Dashboardlarda değerleri raporlama para birimine dönüştürmek için kullanılır. Bu öznitelik olmadan toplam harcama veya ortalama fatura değeri gibi toplu metrikler, birden fazla para biriminin kullanıldığı ortamlarda anlamını yitirir. Neden önemli? Finansal tutarların bağlamını açıklar ve küresel raporlamanın doğruluğu için gereklidir. Nereden alınır? SAP BKPF tablosundaki WAERS alanı Örnekler USDEURGBPJPY | |||
| Satın alma belgesi PurchasingDocument | Faturayla ilişkili satın alma siparişinin numarasıdır. | ||
| Açıklama Bu öznitelik, faturayı önceki tedarik sürecine bağlar. Faturanın eşleştirildiği satın alma siparişinin (PO) numarasını içerir. Her faturada (ör. çeşitli giderlerde) bir PO referansı bulunmayabilir. Analizde bu alan, üçlü eşleştirme oranı analizi için önemlidir. Analistlerin PO referanslı faturaları PO referansı olmayanlardan ayırmasını sağlar; bu faturaların onay iş akışları genellikle birbirinden farklıdır. Ayrıca borçlar muhasebesi verilerini tedarik verilerine bağlayarak sürecin baştan sona Process Mining ile incelenmesini kolaylaştırır. Neden önemli? Borçlar muhasebesini tedarik sürecine bağlayarak üçlü eşleştirme analizini ve süreç kapsamının genişletilmesini sağlar. Nereden alınır? SAP BSEG tablosundaki EBELN alanı Örnekler 45000012344500009876 | |||
Borçlar muhasebesi ödeme işlemleri etkinlikleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Fatura kaydedildi | Yükümlülüğün büyük deftere resmen kaydedildiğini gösterir. Bu etkinlik, BKPF tablosundaki oluşturma zaman damgasından veya ACDOCA tablosundaki giriş tarihinden elde edilir. | ||
| Neden önemli? Finansal zaman çizelgesinin temel başlangıç noktasıdır; vade tarihleri ve yaşlandırma analizi için başlangıç değerini belirler. Nereden alınır? CPUDT (Giriş Tarihi) ve CPUTM (Giriş Saati) alanları kullanılarak BKPF tablosundan alınır. Kaydedin BKPF kaydı oluşturulduğunda kaydedilir Olay türü explicit | |||
| Ödeme belgesi oluşturuldu | Bankayı alacaklandıran, satıcıyı borçlandıran muhasebe belgesinin oluşturulmasıdır. Ödeme belge türüyle (ör. ZP, KZ) BKPF tablosunda bulunur. | ||
| Neden önemli? Ödemenin mali açıdan gerçekleştiği aşamadır ve Ödenecek Borç Gün Sayısını (DPO) hesaplamak için kullanılır. Nereden alınır? Ödemelere özgü Belge Türüne (BLART) göre filtrelenmiş BKPF tablosu. Kaydedin BKPF ödeme belgesi oluşturulduğunda kaydedilir Olay türü explicit | |||
| Ödeme bloku kaldırıldı | Daha önce uygulanan ödeme blokunun kaldırıldığını ve faturanın ödeme için serbest bırakıldığını gösterir. BSEG tablosundaki ZLSPR alanının bir değerden boş veya null değere dönüşmesiyle saptanır. | ||
| Neden önemli? Açık iş akışı günlükleri bulunmayan sistemlerde genellikle Fatura onaylandı etkinliğinin göstergesi olarak kullanılır ve darboğaz döneminin sona erdiğini belirtir. Nereden alınır? BSEG-ZLSPR alanının boş hale geldiğini bulmak için CDPOS ve CDHDR tabloları incelenir. Kaydedin CDPOS kayıtlarında ZLSPR kaldırıldığında kaydedilir Olay türü explicit | |||
| Ödeme bloku uygulandı | Fatura kalemine ödeme bloku konduğunu ve bu nedenle kalemin ödeme çalıştırmasına alınamayacağını gösterir. Değişiklik belgeleri aracılığıyla BSEG tablosundaki ZLSPR alanındaki değişiklikler izlenerek saptanır. | ||
| Neden önemli? Bloklar, geç ödemelerin ve süreçteki aksaklıkların başlıca nedenidir. Manuel ödeme bloku analizi Dashboardunu doğrudan etkiler. Nereden alınır? BSEG-ZLSPR alanındaki güncellemeleri bulmak için CDPOS ve CDHDR tabloları (Değişiklik Belgeleri) incelenir. Kaydedin CDPOS kayıtlarında ZLSPR değiştiğinde kaydedilir Olay türü explicit | |||
| Ödeme çalıştırması yürütüldü | Para transferi talimatlarının oluşturulduğu ödeme çalıştırmasının yürütülmesini ifade eder. Bu işlem, REGUH veya REGUP tablolarındaki durum güncellemesi üzerinden izlenir. | ||
| Neden önemli? Ödeme yapma taahhüdünü gösterir ve ödeme gruplama sürecinin verimliliğini analiz etmek için önemlidir. Nereden alınır? REGUH tablosu; genellikle çalıştırma tarihi ve kimliğiyle ilişkilendirilir. Kaydedin Ödeme çalıştırmasının durumu güncellendiğinde kaydedilir Olay türü explicit | |||
| Ödeme kapatıldı | Satıcı hesabındaki açık kalemin ödemeyle kapatıldığı son mutabakatı belirtir. BSEG tablosundaki AUGDT (Kapatma Tarihi) alanından alınır. | ||
| Neden önemli? Sürecin son durumunu gösterir; yaşam döngüsünün tamamlandığını ve hesapların dengelendiğini belirtir. Manuel kapatma oranlarının yüksek olması, mutabakat verimsizliklerine işaret eder. Nereden alınır? BSEG tablosundaki AUGDT alanı (Kapatma Tarihi). Kaydedin AUGDT alanı doldurulduğunda kaydedilir Olay türü explicit | |||
| Fatura beklemeye alındı | Faturanın SAP’ye girildiğini ancak henüz büyük deftere kaydedilmediğini gösterir. Bu durum genellikle ön veri girişi için kullanılır. VBKPF tablosundan doğrudan alınır veya kaydedilmeden önce beklemede durum kodu bulunan BKPF belgeleri belirlenerek saptanır. | ||
| Neden önemli? Beklemeye alma, veri girişi aşamasının başlangıcını gösterir ve faturanın alınmasıyla mali yükümlülüğün oluşması arasındaki gecikmenin ölçülmesine yardımcı olur. Nereden alınır? Beklemedeki belgelerin başlık verileri için VBKPF tablosu veya belirli belge durumuna sahip BKPF kayıtları (BSTAT = V). Kaydedin VBKPF kaydı oluşturulduğunda kaydedilir Olay türü explicit | |||
| Fatura ters kaydedildi | Fatura belgesinin ters kaydedildiğini veya iptal edildiğini belirtir. BKPF tablosundaki STBLG (Ters Kayıt Belgesi) alanı kontrol edilerek belirlenir. | ||
| Neden önemli? Yeniden çalışmayı ve süreç hatasını gösterir; israfı ve olası mükerrer çalışmaları ortaya çıkarır. Nereden alınır? BKPF tablosundaki STBLG alanı boş değil. Kaydedin STBLG alanı doldurulduğunda kaydedilir Olay türü explicit | |||
| Fatura vadesi geldi | Faturanın net vade tarihine ulaştığı anı gösteren, hesaplanmış bir zaman damgasıdır. BSEG tablosundaki başlangıç tarihine ödeme koşullarındaki gün sayısı eklenerek hesaplanır. | ||
| Neden önemli? Zamanında ödeme performansı ve geç ödeme cezası takibi için referans noktasıdır. Nereden alınır? Hesaplama: BSEG-ZFBDT (Başlangıç Tarihi) + BSEG-ZBD1T/ZBD2T/ZBD3T (Gün). Kaydedin Geçerli tarih ile net vade tarihi karşılaştırılarak belirlenir Olay türü calculated | |||
| Fiyat farkı tespit edildi | Fatura fiyatıyla satın alma siparişi fiyatı arasındaki uyumsuzluğu gösteren, çıkarıma dayalı bir etkinliktir. Genellikle fatura doğrulaması için kullanılan 'R' ödeme bloku anahtarının kayıt sırasında otomatik uygulanmasıyla saptanır. | ||
| Neden önemli? Manuel yeniden çalışmanın temel nedenlerini belirler ve üçlü eşleştirme oranı analizini destekler. Nereden alınır? Kayıt sırasında BSEG-ZLSPR değerinin 'R' olmasıyla veya fiyat blokları için sisteme özel yapılandırmayla çıkarım yapılır. Kaydedin ZLSPR değerinin 'R' ile karşılaştırılması Olay türü inferred | |||
| Miktar farkı tespit edildi | Faturadaki miktarla mal girişi miktarı arasındaki tutarsızlığı gösteren, çıkarıma dayalı bir etkinliktir. Kaleme uygulanan, genellikle miktar farkı için kullanılan 'M' ödeme bloku anahtarı izlenerek saptanır. | ||
| Neden önemli? Eşleştirme verimliliğini ve tedarik zinciri veri kalitesini analiz etmek için önemlidir. Nereden alınır? BSEG-ZLSPR değerinin 'M' olmasıyla veya miktar blokları için sisteme özel yapılandırmayla çıkarım yapılır. Kaydedin ZLSPR değerinin 'M' ile karşılaştırılması Olay türü inferred | |||
| Nakit ödeme indirimi kaçırıldı | Nakit ödeme indiriminden yararlanma süresinin sona erdiği tarihi gösteren, hesaplanmış bir olaydır. İndirim vade tarihi geçerli tarihle veya ödeme tarihiyle karşılaştırılarak belirlenir. | ||
| Neden önemli? Kaybedilen finansal fırsatları görselleştiren erken ödeme indirimi optimizasyonu için gereklidir. Nereden alınır? Hesaplama: BSEG-ZFBDT + BSEG-ZBD1T (1. indirim süresi, gün). Kaydedin Tarih, indirim vade tarihiyle karşılaştırılarak belirlenir Olay türü calculated | |||
| Ödeme koşulları değiştirildi | Açık bir faturanın vade tarihini veya indirimden yararlanma durumunu etkileyen ödeme koşulları güncellemesini kaydeder. BSEG tablosundaki ZTERM alanının değişiklik günlükleri izlenerek takip edilir. | ||
| Neden önemli? Sık yapılan değişiklikler, nakit akışı tahminlerini ve tedarikçi ödeme koşullarına uyumu etkileyen ana veri hatalarına veya manuel geçersiz kılmalara işaret edebilir. Nereden alınır? BSEG-ZTERM alanındaki güncellemeleri bulmak için CDPOS ve CDHDR tabloları incelenir. Kaydedin CDPOS kayıtlarında ZTERM değiştiğinde kaydedilir Olay türü explicit | |||
| Ödeme önerisi oluşturuldu | Faturanın otomatik ödeme programının ilk adımı olan bir ödeme önerisi çalıştırmasına (F110) dahil edildiğini gösterir. Ödeme verilerini saklayan REGUH tablosundan alınır. | ||
| Neden önemli? Faturanın ödeme için seçildiğini ve ödeme programındaki doğrulama kontrollerinden geçtiğini gösterir. Nereden alınır? REGUH tablosunun oluşturulma zaman damgası (LAUFD ve LAUFI anahtarları). Kaydedin REGUH kaydı oluşturulduğunda kaydedilir Olay türü explicit | |||
Veri çıkarma rehberleri
Adımlar
Gerekli CDS görünümlerini belirleyin: Standart SAP S/4HANA CDS görünümlerinin kullanılabilir olduğunu doğrulayın. Gerekli başlıca görünümler I_JournalEntry (üst bilgi), I_OperationalAcctgDocItem (kalemler/BSEG karşılığı), I_SupplierInvoice (lojistik), I_PaymentProposalItem (F110) ve I_ChangeDocument’dır (günlükler için).
Kullanıcı izinlerini yapılandırın: Veritabanı kullanıcısının veya teknik hizmet kullanıcısının CDS varlıklarıyla ilişkili DDL SQL görünümlerinde SELECT ayrıcalıklarına sahip olduğundan emin olun. Bu izinler genellikle SAP HANA Studio veya ABAP Eclipse Development Tools (ADT) üzerinden yönetilir.
SQL ortamını hazırlayın: SQL arayüzünüzü açın (ör. SAP HANA Studio, HANA’ya bağlı DBeaver veya SQL kabul eden bir Process Mining bağlayıcısı). Bu yöntem, CDS görünümlerinin görünüm olarak sunulduğu HANA katmanına doğrudan SQL erişiminiz olduğunu varsayar.
Kapsamı belirleyin: Veri hacmini sınırlamak için Şirket Kodunu (CompanyCode) ve mali yıl aralığını belirleyin. Operational Accounting Document Item görünümünü sorgularken performans açısından bu adım önemlidir.
Aktivite mantığını uygulayın: Aşağıda verilen SQL sorgusunu kopyalayın. Sorgu, 14 ayrı mantık bloğunu UNION ALL kullanarak tek bir olay günlüğü yapısında birleştirir. Her blok belirli bir aktiviteyi (ör. Fatura kaydedildi, ödeme mahsup edildi) hedefler.
Değişiklik belgelerini işleyin: Sorguda Ödeme Koşulu Değişiklikleri ve Bloke işlemleri bölümleri bulunur. Bunlar I_ChangeDocument görünümünü kullanır. Bu görünüm kullandığınız S/4 sürümünde etkin değilse, temel CDHDR/CDPOS tablolarını özel bir CDS görünümünde bir araya getirmeniz gerekebilir.
Hesaplanan olayları ele alın: Invoice Due ve Cash Discount Lost mantığını gözden geçirin. Bunlar, operasyonel kalem görünümündeki temel tarihe gün eklenerek oluşturulan hesaplanmış olaylardır.
Veri çıkarımını çalıştırın: Sorguyu yürütün. Büyük veri kümelerinde bellek taşmalarını önlemek için veri çıkarımını mali yıla veya şirket koduna göre bölmeniz önemle tavsiye edilir.
Tarih biçimlerini doğrulayın: EventTime sütununun YYYY-MM-DD HH:MM:SS biçiminde olduğundan emin olun. SAP HANA SQL zaman damgaları döndürür; hedef uygulamanıza bağlı olarak bunları dönüştürmeniz gerekebilir.
Verileri dışa aktarın: Sonuç kümesini CSV veya Parquet dosyası olarak kaydedin. Sütun başlıklarının son SELECT ifadesinde tanımlanan sütunlarla eşleştiğinden emin olun.
Yükleme için dönüştürün: Process Mining aracınız belirli bir CSV biçimi (ör. belirli tarih maskeleri) gerektiriyorsa bu dönüşümleri son işleme betiğinde veya SQL içinde TO_VARCHAR işlevleriyle uygulayın.
Son doğrulamayı yapın: Bir örnek veri kümesini ProcessMind’e yükleyin ve Case ID (Fatura Numarası) alanının, kayıttan mahsup işlemine kadar tüm etkinlikleri doğru biçimde grupladığını doğrulayın.
Yapılandırma
- Şirket kodu filtresi: Bağlamı ve performansı korumak için sorguyu belirli kuruluş birimleriyle sınırlayın (CompanyCode = '1000').
- Tarih aralığı: Veri hacmini yönetmek için PostingDate veya CreationDate alanına filtre uygulayın (ör. son 12 ay).
- Hesap türü: GL ve müşteri kalemlerini dışarıda bırakmak için I_OperationalAcctgDocItem görünümünü FinancialAccountType = 'K' (Tedarikçi) koşuluyla filtreleyin.
- CDS görünümünü etkinleştirme: I_JournalEntry, I_OperationalAcctgDocItem ve I_PaymentProposalItem görünümlerinin etkin ve SQL erişimine açık olduğundan emin olun.
- Değişiklik günlüğü performansı: I_ChangeDocument sorguları yoğun kaynak kullanabilir. Bu alt sorguları ObjectClass 'BELEG' ve ZLSPR ile ZTERM gibi belirli alan adlarıyla sınırlayın.
a Örnek sorgu sql
/* SAP S/4HANA CDS View Extraction for Accounts Payable */
/* Combined Event Log Query */
/* 1. Invoice Parked */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Invoice Parked' AS Activity,
JE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
JE.CreatedByUser AS UserName,
NULL AS ClearingDate,
ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) AS NetDueDate,
CASE WHEN JE.CreationDateTime > ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) THEN 'True' ELSE 'False' END AS IsLatePayment,
'False' AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K' -- Vendor
AND JE.AccountingDocumentCategory = 'V' -- Parked Document
UNION ALL
/* 2. Invoice Posted */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Invoice Posted' AS Activity,
JE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
JEItem.PaymentBlockingReason AS PaymentBlockReason,
JE.CreatedByUser AS UserName,
NULL AS ClearingDate,
ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) AS NetDueDate,
'False' AS IsLatePayment,
CASE WHEN JE.CreatedByUser = 'BATCH_USER' THEN 'True' ELSE 'False' END AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JE.AccountingDocumentCategory <> 'V' -- Exclude Parked
UNION ALL
/* 3. Price Variance Detected (Inferred at Posting) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Price Variance Detected' AS Activity,
JE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
JEItem.PaymentBlockingReason AS PaymentBlockReason,
'System' AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.PaymentBlockingReason = 'R' -- Standard SAP Price Variance Block Key
UNION ALL
/* 4. Quantity Variance Detected (Inferred at Posting) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Quantity Variance Detected' AS Activity,
JE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
JEItem.PaymentBlockingReason AS PaymentBlockReason,
'System' AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.PaymentBlockingReason = 'M' -- Standard SAP Quantity Variance Block Key
UNION ALL
/* 5. Payment Block Applied (via Change Document) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Block Applied' AS Activity,
CD.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
CD.NewValue AS PaymentBlockReason,
CD.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_ChangeDocument AS CD
JOIN I_JournalEntry AS JE ON CD.ObjectValue = CONCAT(JE.CompanyCode, JE.AccountingDocument)
JOIN I_OperationalAcctgDocItem AS JEItem ON JE.AccountingDocument = JEItem.AccountingDocument AND JE.CompanyCode = JEItem.CompanyCode
WHERE CD.ObjectClass = 'BELEG'
AND CD.TableName = 'BSEG'
AND CD.FieldName = 'ZLSPR'
AND CD.OldValue IS NULL AND CD.NewValue IS NOT NULL
UNION ALL
/* 6. Payment Block Removed (via Change Document) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Block Removed' AS Activity,
CD.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
CD.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_ChangeDocument AS CD
JOIN I_JournalEntry AS JE ON CD.ObjectValue = CONCAT(JE.CompanyCode, JE.AccountingDocument)
JOIN I_OperationalAcctgDocItem AS JEItem ON JE.AccountingDocument = JEItem.AccountingDocument AND JE.CompanyCode = JEItem.CompanyCode
WHERE CD.ObjectClass = 'BELEG'
AND CD.TableName = 'BSEG'
AND CD.FieldName = 'ZLSPR'
AND CD.OldValue IS NOT NULL AND (CD.NewValue IS NULL OR CD.NewValue = '')
UNION ALL
/* 7. Payment Terms Changed (via Change Document) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Terms Changed' AS Activity,
CD.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
CD.NewValue AS PaymentTerms,
NULL AS PaymentBlockReason,
CD.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_ChangeDocument AS CD
JOIN I_JournalEntry AS JE ON CD.ObjectValue = CONCAT(JE.CompanyCode, JE.AccountingDocument)
JOIN I_OperationalAcctgDocItem AS JEItem ON JE.AccountingDocument = JEItem.AccountingDocument AND JE.CompanyCode = JEItem.CompanyCode
WHERE CD.ObjectClass = 'BELEG'
AND CD.TableName = 'BSEG'
AND CD.FieldName = 'ZTERM'
UNION ALL
/* 8. Invoice Due (Calculated) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Invoice Due' AS Activity,
TO_TIMESTAMP(ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays))) AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
'System' AS UserName,
NULL AS ClearingDate,
ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) < CURRENT_DATE
UNION ALL
/* 9. Cash Discount Lost (Calculated) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Cash Discount Lost' AS Activity,
TO_TIMESTAMP(ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.CashDiscount1Days))) AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
'System' AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.CashDiscount1Days > 0
AND (JEItem.ClearingDate IS NULL OR JEItem.ClearingDate > ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.CashDiscount1Days)))
UNION ALL
/* 10. Payment Proposal Created */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Proposal Created' AS Activity,
PPI.ProposalRunDate AS EventTime, -- Often just a date, cast to timestamp if needed
JE.CompanyCode,
PPI.Supplier AS VendorNumber,
PPI.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
PPI.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_PaymentProposalItem AS PPI
JOIN I_JournalEntry AS JE
ON PPI.CompanyCode = JE.CompanyCode
AND PPI.AccountingDocument = JE.AccountingDocument
AND PPI.FiscalYear = JE.FiscalYear
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JEItem.FinancialAccountType = 'K'
UNION ALL
/* 11. Payment Run Executed */
/* Derived from existence in payment tables with a run ID */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Run Executed' AS Activity,
PPI.PaymentRunDate AS EventTime,
JE.CompanyCode,
PPI.Supplier AS VendorNumber,
PPI.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
PPI.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_PaymentProposalItem AS PPI
JOIN I_JournalEntry AS JE
ON PPI.CompanyCode = JE.CompanyCode
AND PPI.AccountingDocument = JE.AccountingDocument
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
WHERE PPI.PaymentRunID IS NOT NULL
UNION ALL
/* 12. Payment Document Created */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Document Created' AS Activity,
PayJE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
PayJE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
PayJE.CreatedByUser AS UserName,
PayJE.PostingDate AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
JOIN I_JournalEntry AS PayJE
ON JEItem.ClearingJournalEntry = PayJE.AccountingDocument
AND JEItem.ClearingJournalEntryFiscalYear = PayJE.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.ClearingJournalEntry IS NOT NULL
UNION ALL
/* 13. Payment Cleared */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Cleared' AS Activity,
TO_TIMESTAMP(JEItem.ClearingDate) AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
'System' AS UserName,
JEItem.ClearingDate,
ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) AS NetDueDate,
CASE WHEN JEItem.ClearingDate > ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) THEN 'True' ELSE 'False' END AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.ClearingDate IS NOT NULL
UNION ALL
/* 14. Invoice Reversed */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Invoice Reversed' AS Activity,
RevJE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
RevJE.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
JOIN I_JournalEntry AS RevJE
ON JE.ReverseDocument = RevJE.AccountingDocument
AND JE.ReverseDocumentFiscalYear = RevJE.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JE.ReverseDocument IS NOT NULL Adımlar
- ACDOCA, BKPF, BSEG, VBKPF, REGUH, REGUP ve ilgili değişiklik belgesi tablolarını içeren SAP HANA şemasına doğrudan SQL erişiminiz olduğunu doğrulayın. [Your SAP HANA schema] ve bağlantı bilgilerini sisteminiz için onaylanmış değerlerle değiştirin.
- Fatura kapsamını ve raporlama dönemini doğrulayın. [Start date] ve [End date] değerlerini YYYYMMDD biçiminde girin; [Company code filter] alanını BUKRS IN ('1000','2000') gibi geçerli bir SQL koşuluyla yapılandırın.
- Park edilmiş belgeler, ödeme programı durum alanları, ödeme belgesi türleri ve değişiklik belgesi depolama alanları için SAP sürümünü ve yerel yapılandırmayı doğrulayın. Sorgu, belgelenmiş kaynak nesneleri ve ihtiyatlı alan eşlemelerini kullanır; ancak üretimde kullanmadan önce yerel genişletmeleri ve sürüm farklılıklarını kontrol etmeniz gerekir.
- Sorguyu onaylı bir SQL istemcisi veya veri çıkarma hizmeti kullanarak SAP HANA üzerinde çalıştırın. Sorgu, açıkça çıkarılan her aktivite için bir olay satırı oluşturur. Sonuçta bulunmayan etkinlikleri ProcessMind kendiliğinden çıkarmaz.
- Kaynak verileri inceleyin ve park edilmiş durum, ödeme belgesi türleri, ödeme önerisi ve ödeme çalıştırma durumu ile değişiklik belgesi nesne sınıfları için işaretlenmiş yapılandırma koşullarını düzenleyin. Yinelenen veya ilgisiz muhasebe belgelerini uzlaştırmadan bu koşulların kapsamını genişletmeyin.
- Uygun olduğu durumlarda InvoiceNumber, CompanyCode, mali yıl, muhasebe belge numarası, tedarikçi numarası ve kalem numarasını kullanarak birleştirmeleri doğrulayın. Hedef sistemde fatura belge numaralarının BKPF, BSEG, ACDOCA, REGUH ve REGUP tablolarında tutarlı biçimde gösterildiğini teyit edin.
- Hesaplanan olayları uzlaştırın. Invoice Due, hesaplanan net vade tarihinde oluşturulur. Ödeme bu tarihten önce yapılmamışsa Cash Discount Lost, uygulanabilecek en erken indirim son tarihinde oluşturulur. Bunlar türetilmiş satırlardır; kaynak kayıtlarından gelen olaylardan açıkça ayrılmalıdır.
- Sonucu düz UTF-8 CSV veya ProcessMind’in desteklediği başka bir tablo biçiminde dışa aktarın. InvoiceNumber, Activity, EventTime, SourceSystem ve LastDataUpdate sütun adlarını aynen koruyun. Her olay için bir satır bırakın ve etkinlikleri faturaya göre toplamayın.
- Olay günlüğünü ProcessMind’e yükleyin; InvoiceNumber alanını vaka tanımlayıcısı, Activity alanını aktivite adı, EventTime alanını olay zaman damgası olarak eşleyin. Kalan sütunları ProcessMind içe aktarma yapılandırmasına göre olay veya vaka öznitelikleri olarak eşleyin.
Yapılandırma
- Tarih aralığı: İlk veri çıkarımında geriye dönük 3 ila 6 aylık bir dönem kullanın. Kayıt tarihi, değişiklik tarihi ve ödeme programı tarihi koşullarını tutarlı biçimde uygulayın; uzun ödeme koşullarını doğrularken aralığı genişletin.
- Şema: [Your SAP HANA schema] yerine SAP nesnelerinin bulunduğu şemayı yazın. Ortamın istemciye bağlı nesneleri seçilen şema üzerinden sunup sunmadığını veya açık bir istemci koşulu gerektirip gerektirmediğini doğrulayın.
- Şirket filtresi: BUKRS alanını gerekli şirket kodlarıyla sınırlamak için [Company code filter] değerini yapılandırın. İlgili alanların bulunduğu BKPF, BSEG, ACDOCA, REGUH, REGUP ve değişiklik belgesi kaynaklarına aynı kapsamı uygulayın.
- Belge filtreleme: Fatura belgesi türü ve ödeme belgesi türü koşullarını gözden geçirin. Sorguda yaygın örnekler bulunur, ancak belge türleri yapılandırılabilir ve hedef sisteme göre ayarlanmalıdır.
- Park edilmiş faturalar: Park edilmiş belge durumunun VBKPF veya BKPF içinde nasıl gösterildiğini doğrulayın. Park edilmiş belge durum kodlaması sürüme ve uygulamaya göre değişebileceğinden sorguda yapılandırılabilir bir durum koşulu kullanılır.
- Ödeme değişiklikleri: BSEG-ZLSPR ve BSEG-ZTERM için değişiklik belgesi nesne sınıfını, tablo adını, alan adlarını ve değer gösterimini doğrulayın. Değişiklik belgelerinin depolanma biçimi ve alan adları hedef sistemde kontrol edilmelidir.
- Ödeme programı: Öneri ve yürütme durumu, çalıştırma tarihi, çalıştırma kimliği ve muhasebe belgesi bağlantısı için REGUH ve REGUP alanlarını doğrulayın. Yerel ödeme programı yapılandırması kullanılabilir durum değerlerini etkileyebilir.
- Performans: Tarih aralığını ve şirket kodlarını sınırlayın, yalnızca gerekli sütunları seçin ve birleştirmelerden önce kaynağa özgü filtreleri uygulayın. Büyük veri kümelerinde filtrelenmiş kaynak alt kümelerini somutlaştırın veya onaylı bir HANA hesaplama görünümü ya da veri çıkarma şeması kullanın.
- Yetkilendirmeler: Gerekli erişim, ilgili SAP HANA şema nesnelerine ve muhasebe, ödeme programı ve değişiklik belgesi verilerini sunan görünümlere okuma yetkisini kapsar. SAP güvenlik ve veri yönetişimi ekipleriyle koordinasyon sağlayın.
- İşlevsel ön koşullar: İlgili Finansal Muhasebe, Borçlar Muhasebesi, ödeme programı ve değişiklik belgesi işlevleri etkin ve kullanılıyor olmalıdır. Uygulamada bir kaynak tablo kullanılmıyorsa sistem tasarımına uygun, onaylı bir alternatif yapılandırın.
- Zaman damgası işleme: BKPF ve BSEG tablolarında tarih ve saat genellikle ayrı alanlarda tutulur. Sorgu bunları bir zaman damgasında birleştirir. Kaynak sistemin saat dilimini doğrulayın ve ProcessMind’e yüklemeden önce gerekli dönüşümü uygulayın.
- Veri koruma: Tedarikçi ve muhasebe verilerini onaylı kapsamla sınırlayın; kuruluşunuzun saklama, maskeleme ve erişim politikalarını uygulayın.
a Örnek sorgu sql
WITH
params AS (
SELECT
TO_DATE('[Start date]', 'YYYYMMDD') AS start_date,
TO_DATE('[End date]', 'YYYYMMDD') AS end_date,
'[Source system identifier]' AS source_system
FROM DUMMY
),
base_bkpf AS (
SELECT
b.MANDT,
b.BUKRS,
b.BELNR,
b.GJAHR,
b.BLART,
b.BLDAT,
b.BUDAT,
b.CPUDT,
b.CPUTM,
b.USNAM,
b.STBLG,
b.STJAH,
b.XBLNR,
b.WAERS,
b.BKTXT,
p.source_system,
p.start_date,
p.end_date
FROM [Your SAP HANA schema].BKPF b
CROSS JOIN params p
WHERE b.BUDAT BETWEEN TO_VARCHAR(p.start_date, 'YYYYMMDD') AND TO_VARCHAR(p.end_date, 'YYYYMMDD')
AND [Company code filter]
),
invoice_bseg AS (
SELECT
k.MANDT,
k.BUKRS,
k.BELNR,
k.GJAHR,
k.BLART,
k.BLDAT,
k.BUDAT,
k.CPUDT,
k.CPUTM,
k.USNAM,
k.STBLG,
k.STJAH,
k.XBLNR,
k.WAERS,
k.BKTXT,
k.source_system,
s.BUZEI,
s.LIFNR,
s.WRBTR,
s.DMBTR,
s.ZTERM,
s.ZLSPR,
s.ZFBDT,
s.ZBD1T,
s.ZBD2T,
s.ZBD3T,
s.AUGDT,
s.AUGBL,
s.SHKZG,
s.SGTXT,
s.XREF1,
s.XREF2,
s.XREF3
FROM base_bkpf k
INNER JOIN [Your SAP HANA schema].BSEG s
ON s.MANDT = k.MANDT
AND s.BUKRS = k.BUKRS
AND s.BELNR = k.BELNR
AND s.GJAHR = k.GJAHR
WHERE s.LIFNR IS NOT NULL
AND s.LIFNR <> ''
),
acdoca_invoice AS (
SELECT
a.RCLNT AS MANDT,
a.RBUKRS AS BUKRS,
a.BELNR,
a.GJAHR,
a.BUZEI,
a.RACCT,
a.HSL,
a.WSL,
a.RWCUR,
a.BUDAT,
a.BLDAT,
a.AUGDT,
a.AUGBL
FROM [Your SAP HANA schema].ACDOCA a
WHERE a.BUDAT BETWEEN TO_VARCHAR((SELECT start_date FROM params), 'YYYYMMDD')
AND TO_VARCHAR((SELECT end_date FROM params), 'YYYYMMDD')
AND [ACDOCA company code filter]
),
invoice_cases AS (
SELECT DISTINCT
i.MANDT,
i.BUKRS,
i.BELNR,
i.GJAHR,
i.BUZEI,
i.LIFNR,
i.WRBTR,
i.ZTERM,
i.ZLSPR,
i.ZFBDT,
i.ZBD1T,
i.ZBD2T,
i.ZBD3T,
i.AUGDT,
i.AUGBL,
i.BLART,
i.BLDAT,
i.BUDAT,
i.CPUDT,
i.CPUTM,
i.USNAM,
i.STBLG,
i.STJAH,
i.XBLNR,
i.WAERS,
i.source_system,
COALESCE(NULLIF(i.XBLNR, ''), i.BELNR) AS InvoiceNumber,
ADD_DAYS(TO_DATE(COALESCE(NULLIF(i.ZFBDT, ''), i.BLDAT), 'YYYYMMDD'), COALESCE(TO_INTEGER(NULLIF(i.ZBD3T, '')), 0)) AS NetDueDate,
ADD_DAYS(TO_DATE(COALESCE(NULLIF(i.ZFBDT, ''), i.BLDAT), 'YYYYMMDD'), COALESCE(TO_INTEGER(NULLIF(i.ZBD1T, '')), 0)) AS DiscountDueDate1,
ADD_DAYS(TO_DATE(COALESCE(NULLIF(i.ZFBDT, ''), i.BLDAT), 'YYYYMMDD'), COALESCE(TO_INTEGER(NULLIF(i.ZBD2T, '')), 0)) AS DiscountDueDate2
FROM invoice_bseg i
LEFT JOIN acdoca_invoice a
ON a.MANDT = i.MANDT
AND a.BUKRS = i.BUKRS
AND a.BELNR = i.BELNR
AND a.GJAHR = i.GJAHR
AND a.BUZEI = i.BUZEI
),
change_events AS (
SELECT
c.MANDT,
c.OBJECTID,
c.TABKEY,
c.FNAME,
c.VALUE_OLD,
c.VALUE_NEW,
c.UDATE,
c.UTIME,
c.USERNAME
FROM [Your SAP HANA schema].[Your change document item table name] c
WHERE c.TABNAME = 'BSEG'
AND c.FNAME IN ('ZLSPR', 'ZTERM')
AND c.UDATE BETWEEN TO_VARCHAR((SELECT start_date FROM params), 'YYYYMMDD')
AND TO_VARCHAR((SELECT end_date FROM params), 'YYYYMMDD')
AND [Change document object class filter]
),
reguh_events AS (
SELECT
r.MANDT,
r.LAUFD,
r.LAUFI,
r.XVORL,
r.ZBUKR,
r.LIFNR,
r.VBLNR,
r.AUSFD,
r.AUSDT,
r.LAUFD AS RunDate,
r.ZALDT,
r.RZAWE,
r.XEINZ,
r.XPGRO,
r.XAVIS,
r.XVORL AS ProposalIndicator
FROM [Your SAP HANA schema].REGUH r
WHERE r.LAUFD BETWEEN TO_VARCHAR((SELECT start_date FROM params), 'YYYYMMDD')
AND TO_VARCHAR((SELECT end_date FROM params), 'YYYYMMDD')
),
regup_events AS (
SELECT
u.MANDT,
u.LAUFD,
u.LAUFI,
u.ZBUKR,
u.LIFNR,
u.VBLNR,
u.BUKRS,
u.BELNR,
u.GJAHR,
u.BUZEI,
u.XVORL,
u.AUGBL,
u.AUGDT
FROM [Your SAP HANA schema].REGUP u
WHERE u.LAUFD BETWEEN TO_VARCHAR((SELECT start_date FROM params), 'YYYYMMDD')
AND TO_VARCHAR((SELECT end_date FROM params), 'YYYYMMDD')
),
events AS (
SELECT
i.InvoiceNumber,
'Invoice Parked' AS Activity,
TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS') AS EventTime,
i.source_system AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
i.LIFNR AS VendorNumber,
i.BUKRS AS CompanyCode,
i.WRBTR AS InvoiceAmount,
i.BLART AS DocumentType,
i.ZTERM AS PaymentTerms,
i.ZLSPR AS PaymentBlockReason,
i.USNAM AS UserName,
i.AUGDT AS ClearingDate,
i.NetDueDate,
CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END AS IsLatePayment,
FALSE AS IsTouchless
FROM invoice_cases i
INNER JOIN [Your SAP HANA schema].VBKPF v
ON v.MANDT = i.MANDT
AND v.BUKRS = i.BUKRS
AND v.BELNR = i.BELNR
AND v.GJAHR = i.GJAHR
WHERE [VBKPF parked status predicate]
UNION ALL
SELECT i.InvoiceNumber, 'Invoice Posted', TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i
UNION ALL
SELECT i.InvoiceNumber, 'Payment Block Applied', TO_TIMESTAMP(c.UDATE || LPAD(COALESCE(c.UTIME, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, c.VALUE_NEW, c.USERNAME, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN change_events c ON c.OBJECTID = i.BELNR AND c.FNAME = 'ZLSPR' AND COALESCE(c.VALUE_OLD, '') = '' AND COALESCE(c.VALUE_NEW, '') <> ''
UNION ALL
SELECT i.InvoiceNumber, 'Price Variance Detected', TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.ZLSPR = 'R'
UNION ALL
SELECT i.InvoiceNumber, 'Quantity Variance Detected', TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.ZLSPR = 'M'
UNION ALL
SELECT i.InvoiceNumber, 'Payment Terms Changed', TO_TIMESTAMP(c.UDATE || LPAD(COALESCE(c.UTIME, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, c.VALUE_NEW, i.ZLSPR, c.USERNAME, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN change_events c ON c.OBJECTID = i.BELNR AND c.FNAME = 'ZTERM'
UNION ALL
SELECT i.InvoiceNumber, 'Payment Block Removed', TO_TIMESTAMP(c.UDATE || LPAD(COALESCE(c.UTIME, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, c.VALUE_OLD, c.USERNAME, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN change_events c ON c.OBJECTID = i.BELNR AND c.FNAME = 'ZLSPR' AND COALESCE(c.VALUE_OLD, '') <> '' AND COALESCE(c.VALUE_NEW, '') = ''
UNION ALL
SELECT i.InvoiceNumber, 'Invoice Due', TO_TIMESTAMP(TO_VARCHAR(i.NetDueDate, 'YYYYMMDD') || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.NetDueDate IS NOT NULL
UNION ALL
SELECT i.InvoiceNumber, 'Cash Discount Lost', TO_TIMESTAMP(TO_VARCHAR(CASE WHEN i.DiscountDueDate1 <= i.DiscountDueDate2 THEN i.DiscountDueDate1 ELSE i.DiscountDueDate2 END, 'YYYYMMDD') || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.AUGDT IS NULL OR i.AUGDT > CASE WHEN i.DiscountDueDate1 <= i.DiscountDueDate2 THEN i.DiscountDueDate1 ELSE i.DiscountDueDate2 END
UNION ALL
SELECT i.InvoiceNumber, 'Payment Proposal Created', TO_TIMESTAMP(r.RunDate || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN regup_events u ON u.BUKRS = i.BUKRS AND u.BELNR = i.BELNR AND u.GJAHR = i.GJAHR AND u.BUZEI = i.BUZEI INNER JOIN reguh_events r ON r.MANDT = u.MANDT AND r.LAUFD = u.LAUFD AND r.LAUFI = u.LAUFI AND r.LIFNR = u.LIFNR WHERE [Payment proposal status predicate]
UNION ALL
SELECT i.InvoiceNumber, 'Payment Run Executed', TO_TIMESTAMP(r.RunDate || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN regup_events u ON u.BUKRS = i.BUKRS AND u.BELNR = i.BELNR AND u.GJAHR = i.GJAHR AND u.BUZEI = i.BUZEI INNER JOIN reguh_events r ON r.MANDT = u.MANDT AND r.LAUFD = u.LAUFD AND r.LAUFI = u.LAUFI AND r.LIFNR = u.LIFNR WHERE [Payment run executed status predicate]
UNION ALL
SELECT i.InvoiceNumber, 'Payment Document Created', TO_TIMESTAMP(p.CPUDT || LPAD(COALESCE(p.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, p.BLART, i.ZTERM, i.ZLSPR, p.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN [Your SAP HANA schema].BKPF p ON p.MANDT = i.MANDT AND p.BUKRS = i.BUKRS AND p.BELNR = i.AUGBL AND p.GJAHR = i.GJAHR WHERE p.BLART IN ('ZP', 'KZ')
UNION ALL
SELECT i.InvoiceNumber, 'Payment Cleared', TO_TIMESTAMP(i.AUGDT || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.AUGDT IS NOT NULL
UNION ALL
SELECT i.InvoiceNumber, 'Invoice Reversed', TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.STBLG IS NOT NULL AND i.STBLG <> ''
)
SELECT
InvoiceNumber,
Activity,
EventTime,
SourceSystem,
LastDataUpdate,
VendorNumber,
CompanyCode,
InvoiceAmount,
DocumentType,
PaymentTerms,
PaymentBlockReason,
UserName,
ClearingDate,
NetDueDate,
IsLatePayment,
IsTouchless
FROM events
WHERE EventTime IS NOT NULL
ORDER BY InvoiceNumber, EventTime, Activity; Başlamaya hazır mısınız?
Finansal verilerinizi uygulanabilir içgörülere dönüştürün ve ödeme döngülerinizi bugün optimize etmeye başlayın. Process Mining yolculuğunuzun her adımında ekibimiz size destek olmaya hazır.
SAP S/4HANA’da Borçlar Muhasebesi ödeme işlemlerini iyileştirin
Darboğazları ortadan kaldırın, çevrim süresini %30 azaltın.
Kredi kartı gerekmez. Kurulum 5 dakika sürer.