Satın Almadan Ödemeye (Purchase to Pay) - Fatura İşleme Veri Template'iniz
Satın Almadan Ödemeye (Purchase to Pay) - Fatura İşleme Veri Template'iniz
- Toplanması Önerilen Nitelikler
- Takip Edilmesi Gereken Temel Aktiviteler
- SAP ECC için Veri Çıkarım Rehberliği
Satın Alma ve Ödeme - Fatura İşleme Nitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Aktivite Activity | Fatura işleme yaşam döngüsü sırasında meydana gelen belirli bir iş adımının veya olayın adı. | ||
| Açıklama Aktivite özniteliği, fatura işleme iş akışı içindeki ayrı bir aşamayı veya eylemi temsil eder. Bu aktiviteler, belge oluşturma, durum değişiklikleri, onaylar veya SAP değişiklik günlüklerinde kaydedilen kullanıcı eylemleri gibi çeşitli sistem olaylarından türetilir. Analiz, Process Mining'in temelini oluşturur. Süreç haritalarının görselleştirilmesini, darboğazların (örneğin, 'Fatura Onay İçin Gönderildi' sonrası uzun beklemeler), tekrar işleme döngülerinin (örneğin, tekrarlanan 'Ödeme Bloğu Konuldu' ve 'Ödeme Bloğu Kaldırıldı' döngüleri) ve uyumluluk sapmalarının belirlenmesini sağlar. Aktivitelerin sırası ve sıklığı, gerçek, mevcut süreç akışını ortaya koyar. Neden önemli Süreç haritasındaki adımları tanımlar, süreç akışlarının görselleştirilmesini, darboğazların keşfedilmesini ve yeniden işleme tespitini sağlar. Nereden alınır Bu öznitelik tipik olarak, işlem kodları (SY-TCODE), RBKP gibi tablolardaki durum alanları (örn. RBSTAT) ve CDHDR ve CDPOS tablolarındaki değişiklik olayları dahil olmak üzere birden çok kaynaktan türetilir. Örnekler Fatura Park EdildiFatura Onay İçin GönderildiFatura OnaylandıFatura MuhasebeleştirildiFatura Mutabakatı Yapıldı | |||
| Fatura Numarası InvoiceNumber | Bir tedarikçi fatura belgesi için benzersiz tanımlayıcı. | ||
| Açıklama Fatura Numarası, fatura işleme yolculuğu için benzersiz vaka tanımlayıcısı olarak hizmet eder. Her numara, bir tedarikçiden alınan tek bir faturaya karşılık gelir ve veri yakalamadan nihai ödemeye kadar tüm ilgili aktivitelerin tek bir tutarlı süreç örneğinin parçası olarak izlenmesini sağlar. Process Mining analizinde, bu öznitelik her faturanın uçtan uca yaşam döngüsünü yeniden yapılandırmak için temeldir. SAP'de kaydedilen park etme, muhasebeleşme, engelleme ve mahsup etme gibi farklı olayların kronolojik bir sıraya bağlanmasını sağlar. Bu, her faturanın nasıl işlendiği, ne kadar sürdüğü ve standart süreçten sapmaların nerede meydana geldiği hakkında net bir görünüm sunar. Neden önemli Bu, tek bir fatura ile ilgili tüm olayları birbirine bağlayan birincil anahtardır ve süreç analizi ile varyant keşfi için temel bir dayanak oluşturur. Nereden alınır Bu, tipik olarak SAP RBKP tablosundaki BELNR alanındaki Belge Numarasıdır ve mutlak benzersizlik için genellikle Şirket Kodu (BUKRS) ve Mali Yıl (GJAHR) ile birleştirilir. Örnekler 510004567851000456795100045680 | |||
| Olay Zamanı EventTime | Bir aktivitenin ne zaman gerçekleştiğini gösteren tarih ve saati içeren kesin zaman damgası. | ||
| Açıklama Olay Zamanı, bir iş etkinliğinin kaynak sistemde yürütüldüğü ve kaydedildiği kesin anı kaydeder. Bu zaman damgası, sürecin kronolojik omurgasıdır ve her fatura için tüm etkinlikleri tutarlı bir sıraya göre düzenler. Analizde, Olay Zamanı, döngü süreleri, bekleme süreleri ve etkinlikler arasındaki işleme süreleri gibi süreye dayalı tüm metrikleri hesaplamak için gereklidir. Süreçteki herhangi iki nokta arasındaki geçen süreyi ölçmek için gerekli verileri sağlayarak 'Fatura Uçtan Uca Döngü Süresi' ve 'Ödeme Engeli Çözüm Süresi' gibi Dashboard'lara güç verir. Doğru zaman damgaları, gecikmeleri ve performans darboğazlarını belirlemek için kritik öneme sahiptir. Neden önemli Bu zaman damgası, olayları doğru sıralamak ve döngü süreleri ile darboğaz süreleri gibi tüm performans metriklerini hesaplamak için esastır. Nereden alınır Bu, tipik olarak değişiklik belgesi başlık tablosu CDHDR'deki değişiklik tarihi (UDATE) ve değişiklik saati (UTIME) birleştirilerek türetilir. Belirli oluşturma olayları için, RBKP gibi tablolardaki (ERNAM, ERZET) oluşturma tarihi ve saati olabilir. Örnekler 2023-03-15T10:30:00Z2023-03-16T14:05:21Z2023-03-28T09:00:00Z | |||
| Fatura Tutarı InvoiceAmount | Faturanın orijinal belge para birimindeki toplam brüt tutarı. | ||
| Açıklama Fatura Tutarı, tedarikçi tarafından gönderilen faturanın toplam değerini temsil eder. Bu, her fatura vakası için önemli bir finansal metriktir. Süreç madenciliğinde, bu öznitelik değere dayalı analiz için gereklidir. Süreci fatura değerine göre filtrelemeye ve bölümlere ayırmaya olanak tanır, bu da genellikle süreç karmaşıklığı ve onay gereklilikleriyle ilişkilidir. Örneğin, yüksek değerli faturalar farklı, daha sıkı bir onay yolunu takip edebilir. Ayrıca, uyumluluk analizinde de kullanılır; örneğin, yüksek değerli faturaların gerekli onay adımlarını atlayıp atlamadığını kontrol etmek için. Neden önemli Değere dayalı analizi mümkün kılar, yüksek değerli faturaları önceliklendirmeye ve fatura tutarının süreç akışını ve uyumluluğu nasıl etkilediğini anlamayı sağlar. Nereden alınır Bu, fatura belgesi başlık tablosu RBKP'deki 'Brüt fatura tutarı' (RMWWR) alanıdır. Örnekler 1500.7512500.00850.20 | |||
| Hesaba Geçiş Tarihi ClearingDate | Ödemenin yapıldığı ve faturanın ödenecek hesaplardan mahsup edildiği tarih. | ||
| Açıklama Mahsup Tarihi, fatura yaşam döngüsündeki son adımı, yani ödemeyi işaretler. Açık fatura kaleminin sistemde bir ödeme belgesiyle mahsup edildiği tarihtir. Bu tarih, gerçek ödeme gerçekleştirme zamanını temsil eder. Bu öznitelik, 'Ortalama Fatura Döngü Süresi' ve 'Zamanında Ödeme Oranı' dahil olmak üzere birçok kritik KPI için bitiş noktasıdır. Ödeme performansını ölçmek için Ödeme Vadesi ile karşılaştırılır. Nakit iskontosu analizi için ise, ödemenin iskontoyu yakalamak için zamanında yapılıp yapılmadığını görmek amacıyla iskonto süresi ile karşılaştırılır. Neden önemli Sürecin tamamlandığını işaret eder ve toplam döngü süresi, zamanında ödeme oranları ve nakit iskonto gerçekleşmesini hesaplamak için temel oluşturur. Nereden alınır Temizlenmiş kalemler için bu, temizlenmiş tedarikçi kalemleri tablosu BSAK'dan alınan 'Temizleme Tarihi' alanı (AUGDT)dır. Örnekler 2023-04-152023-05-022023-05-20 | |||
| Kayıt Tarihi PostingDate | Faturanın finansal defterlere resmi olarak muhasebeleştirildiği tarih. | ||
| Açıklama Muhasebeleşme Tarihi, muhasebe sürecindeki önemli bir tarihtir. Fatura giderinin Defter-i Kebir'de hangi mali dönemde muhasebeleştirileceğini belirler. Genellikle fatura işleme sırasında muhasebe görevlisi tarafından ayarlanır. Süreç analizinde, bu tarihle işaretlenen 'Fatura Muhasebeleştirildi' aktivitesi önemli bir dönüm noktasıdır. Fatura alımından Muhasebeleşme Tarihine kadar geçen süre, genel döngü süresinin kritik bir bileşenidir. Bu tarih ayrıca finansal raporlama ve haftalık veya aylık muhasebeleştirilen fatura hacmini izlemek gibi verim analizi için de temeldir. Neden önemli Süreçte kritik bir kilometre taşı işaret eder, işlem için finansal dönemi belirler ve döngü süresi hesaplamasının önemli bir bileşenidir. Nereden alınır Bu, fatura belgesi başlık tablosu RBKP'deki 'Muhasebeleşme Tarihi' (BUDAT) alanıdır. Örnekler 2023-03-202023-04-052023-04-11 | |||
| Kullanıcı Adı UserName | Aktiviteyi gerçekleştiren kişinin SAP kullanıcı kimliği. | ||
| Açıklama Kullanıcı Adı özniteliği, süreçteki belirli bir aktiviteyi gerçekleştirmekten sorumlu kişiyi tanımlar. Bu genellikle işlem veya değişiklik olayıyla kaydedilen SAP kullanıcı adıdır. Bu öznitelik, kullanıcı veya ekip düzeyinde performans analizi için çok önemlidir. 'En hızlı onaylayıcılar kimler?' veya 'En çok tekrar işleme hangi kullanıcılar tarafından üretiliyor?' gibi soruları yanıtlamaya yardımcı olur. Dashboard'larda iş yükü dağılımını analiz etmek, eğitim ihtiyaçlarını belirlemek ve farklı çalışanlar arasındaki performans varyasyonlarını anlamak için kullanılır. Neden önemli Bireysel veya ekip bazında performans ve iş yükü analizine olanak tanıyarak, üstün performans gösterenleri, eğitim fırsatlarını ve kaynak dengesizliklerini belirlemeye yardımcı olur. Nereden alınır Bu, değişiklik belgesi başlık tablosu CDHDR'deki 'Değiştiren' (USERNAME) alanıdır. Oluşturma olayları için, RBKP gibi tablolardaki 'Giren' (ERNAM) alanı olabilir. Örnekler JSMITHBWILSONCHEN | |||
| Ödeme Engeli Nedeni PaymentBlockReason | Bir faturanın ödemeden neden engellendiğini gösteren bir koddur. | ||
| Açıklama Bir faturada tutarsızlık varsa veya daha fazla araştırma gerektiriyorsa, bir ödeme bloğu uygulanır. Ödeme Bloğu Nedeni kodu, bloğun neden konulduğunu belirtir; örneğin, miktar farkı, fiyat farkı veya manuel bir blok nedeniyle. Bu öznitelik, 'Ödeme Bloğu Çözüm Süresi' dashboard'u için esastır. Blokların nedenine göre sıklığını ve süresini analiz etmek, ödeme gecikmelerinin kök nedenlerini belirlemeye yardımcı olur. Örneğin, uzun blokeler için en yaygın neden 'Fiyat Tutarsızlığı' ise, bu durum ana verilerde veya satın alma siparişi sürecinde ele alınması gereken potansiyel bir soruna işaret eder. Neden önemli Faturaların neden geciktiğini açıklar, ödeme engellerinin temel neden analizine olanak tanır ve süreç iyileştirme çabalarını önceliklendirmeye yardımcı olur. Nereden alınır Ödeme bloğu nedeni, RSEG tablosunda (SPGRS alanı) veya muhasebe belgesi tablosu BSEG'de (ZLSPR alanı) kalem düzeyinde bulunabilir. Örnekler RIM | |||
| Purchase Order Number PurchaseOrderNumber | Faturanın eşleştirildiği Satın Alma Siparişi (SS) tanımlayıcısı. | ||
| Açıklama Satın Alma Sipariş Numarası, bir faturayı orijinal satın alma belgesine bağlar. Bu, üç yönlü eşleştirme (SS, Mal Girişi, Fatura) ve Satın Alma Siparişi destekli fatura sürecinin verimliliğini analiz etmek için temeldir. Bu öznitelik, 'Fatura-SS Eşleştirme Tutarsızlığı Oranı' gibi dashboard'lar için kritiktir. Süreci, genellikle çok farklı işleme yolları ve karmaşıklıkları olan SS'li faturalar ile SS'siz faturalar olarak bölümlendirmeye olanak tanır. Belirli SS'lerle ilgili sorunları analiz etmek, tedarik sürecindeki yukarı akış sorunlarını teşhis etmeye yardımcı olabilir. Neden önemli Faturayı tedarik sürecine bağlar, PO'lu ve PO'suz faturaların analizine olanak tanır ve eşleştirme tutarsızlıklarını belirler. Nereden alınır Bu, tipik olarak kalem düzeyinde bulunur. 'Satın Alma Sipariş Numarası' (EBELN), RSEG fatura kalem tablosundadır. Başlık düzeyine toplanması gerekebilir. Örnekler 450001756345000175644500017565 | |||
| Son Ödeme Tarihi PaymentDueDate | Ödeme koşullarına göre fatura ödemesinin tedarikçiye vadesinin geldiği tarih. | ||
| Açıklama Ödeme Vadesi, faturanın başlangıç tarihi ve üzerinde anlaşılan ödeme koşullarına göre hesaplanır. Geç kalmaktan ve potansiyel olarak cezalara maruz kalmaktan veya tedarikçi ilişkilerine zarar vermekten kaçınmak için ödeme yapma son tarihini temsil eder. Bu öznitelik, 'Zamanında Ödeme Oranı' ve 'Nakit İskontosu Fırsat Kaybı' gibi performans ve uyumluluk KPI'ları için çok önemlidir. Gerçek ödeme tarihi (Mahsup Tarihi) ile Ödeme Vadesi karşılaştırılarak, analiz otomatik olarak bir ödemenin zamanında, erken veya geç yapılıp yapılmadığını belirleyebilir. Bu, Ödeme Koşullarına Uygunluk dashboard'u için temel bir unsurdur. Neden önemli Zamanında ödeme performansını ölçmek ve erken ödeme indirimlerini yakalama fırsatlarını belirlemek için bir temel görevi görür. Nereden alınır Bu tarih genellikle hesaplanır. Ödeme için başlangıç tarihi (ZFBDT) BSEG tablosundadır. Vade tarihi mantığı ayrıca ödeme koşullarına (BSEG-ZTERM) bağlıdır. Örnekler 2023-04-192023-05-052023-05-11 | |||
| Tedarikçi Numarası VendorNumber | Faturayı ibraz eden tedarikçi veya satıcı için benzersiz bir tanımlayıcıdır. | ||
| Açıklama Tedarikçi Numarası, tedarikçiyi tanımlayan ana veri anahtarıdır. Bu, fatura işlemini belirli bir iş ortağına bağlayarak tedarikçi özelliklerine dayalı analizi mümkün kılar. Analiz, Tedarikçi Numarasına göre süreci analiz etmek, tedarikçi ilişkileri ve performansına dair önemli içgörüler ortaya çıkarabilir. Örneğin, hangi tedarikçilerin sürekli olarak ödeme blokelerine veya tutarsızlıklara yol açan sorunlu faturalar gönderdiğini veya hangi tedarikçilerin faturalarının en verimli şekilde işlendiğini belirlemeye yardımcı olabilir. Bu bilgiler, tedarikçi yönetimi ve stratejik tedarik girişimleri için değerlidir. Neden önemli Tedarikçiye özel analizlere olanak tanır, belirli tedarikçilerle ilişkili kalıpları, sorunları veya verimlilikleri belirlemeye yardımcı olur. Nereden alınır Bu, fatura belgesi başlık tablosu RBKP'deki 'Faturalayan Taraf' (LIFNR) alanıdır. Örnekler 100345100876200112 | |||
| Belge Türü DocumentType | Muhasebe belgesini, örneğin bir tedarikçi faturası veya kredi notu olarak sınıflandıran bir koddur. | ||
| Açıklama Belge Türü, SAP'deki farklı türdeki iş işlemlerini kategorize etmek için kullanılır. Fatura işleme için yaygın türler arasında standart faturalar için 'RE' veya tedarikçi alacak dekontları için 'KG' bulunur. Belge türü, kullanılan numara aralığı gibi muhasebeleşmenin çeşitli yönlerini kontrol eder. Analizde, bu öznitelik süreci belirli işlem türlerine göre filtrelemeyi sağlar. Örneğin, bir alacak dekontunu işleme süreci, standart bir faturanınkinden önemli ölçüde farklı olabilir. Bu akışları Belge Türü kullanarak ayırmak, daha doğru ve anlamlı bir süreç görünümü sunar. Neden önemli Faturalar ve kredi notları gibi farklı süreçleri takip eden farklı iş işlemlerinin ayrılmasına ve analizine olanak tanır. Nereden alınır Bu, fatura belgesi başlık tablosu RBKP'deki 'Belge Türü' (BLART) alanıdır. Örnekler REKRKG | |||
| Bitiş Saati EndTime | Bir aktivitenin ne zaman tamamlandığını gösteren zaman damgası. Anlık olaylar için bu, Başlangıç Zamanı ile aynıdır. | ||
| Açıklama Bitiş Zamanı özniteliği, belirli bir aktivitenin tamamlanmasını işaretler. SAP'deki tek zaman noktaları olarak kaydedilen birçok olay için Bitiş Zamanı, Başlangıç Zamanı ile aynı olacaktır. Ancak, üzerinde aktif olarak çalışılan bir onay adımı gibi ölçülebilir bir süreye sahip aktiviteler için, bu işin tamamlanmasını temsil edebilir. Süreç analizinde, ayrı bir Bitiş Zamanına sahip olmak, aktivite işleme süresinin, kendisinden önceki bekleme süresinden ayrı olarak ölçülmesini sağlar. Bu, bir aktivitenin ne kadar sürdüğünü ile bir durumun o aktivitenin başlaması için ne kadar beklediğini ayırt etmeye yardımcı olarak kaynak verimliliği hakkında daha derin içgörüler sunar. Neden önemli Etkinlik işleme süresinin hesaplanmasını sağlayarak, bunu etkinlikler arasındaki bekleme süresinden ayırır ve darboğaz analizini iyileştirir. Nereden alınır Bu, genellikle CDHDR-UDATE ve CDHDR-UTIME'dan türetilen Başlangıç Zamanı ile aynıdır. Bazı durumlarda, bir görevin başlangıcını ve bitişini açıkça kaydeden iş akışı günlüklerinden türetilebilir. Örnekler 2023-03-15T10:35:10Z2023-03-16T14:10:00Z2023-03-28T09:02:45Z | |||
| Genel Muhasebe Hesabı GeneralLedgerAccount | Fatura giderinin veya maliyetinin muhasebeleştirildiği Defter-i Kebir hesap numarası. | ||
| Açıklama Defter-i Kebir (G/L) Hesabı, faturanın finansal etkisinin kaydedildiği hesap planındaki hedef hesaptır. Bu, finansal raporlama ve maliyet yönetimi için kritik bir veri parçasıdır. Process Mining için, G/L hesabını analiz etmek süreç akışına finansal bir boyut kazandırır. 'Defter-i Kebir Hesap Kullanımı Analizi' dashboard'u, harcamalardaki kalıpları ortaya çıkarabilir, faturaların potansiyel yanlış kodlamasını belirleyebilir ve maliyetlerin doğru departmanlara veya projelere ayrılmasını sağlayabilir. Süreç yürütme ile finansal etki arasındaki boşluğu kapatmaya yardımcı olur. Neden önemli Sürece finansal bir boyut ekleyerek, maliyet tahsisi, harcama kalıpları ve potansiyel fatura yanlış kodlamasının analizine olanak tanır. Nereden alınır Bu, kalem düzeyinde bulunur. 'Defter-i Kebir Hesap Numarası' (HKONT), SS'li faturalar için RSEG fatura kalem tablosunda veya doğrudan FI faturaları için BSEG'dedir. Örnekler 630000655100741000 | |||
| İşlem Süresi ProcessingTime | Belirli bir aktiviteye harcanan zamanın süresi. | ||
| Açıklama İşleme Süresi, bir aktivitenin başlangıcından bitişine kadar geçen süreyi ölçer. Bir aktivitenin Bitiş Zamanı ile Başlangıç Zamanı arasındaki fark olarak hesaplanır. Bu, aktiviteler arasındaki bekleme süresini içeren döngü süresinden farklıdır. İşleme süresini analiz etmek, farklı adımlar için gerçek çabayı veya temas süresini anlamaya yardımcı olur. Kaynak yoğun veya verimsiz aktiviteleri kesin olarak belirleyebilir. Örneğin, uzun bir 'Fatura Verisi Yakalandı' işleme süresi, karmaşık bir faturayı veya verimsiz bir veri girişi sürecini gösterebilir. Bu metrik, kaynak planlaması ve otomasyon girişimleri için değerlidir. Neden önemli Bir etkinlik için gerçek çalışma süresini ölçer, kaynak yoğun adımları belirlemeye yardımcı olur ve aktif çalışma süresi ile boş bekleme süresi arasındaki ayrımı yapar. Nereden alınır Bu öznitelik SAP'de yoktur. Veri dönüşümü sırasında şu formül kullanılarak hesaplanır: BitişZamanı - BaşlangıçZamanı. Örnekler PT5M10SPT2H15MPT30S | |||
| Kaynak Sistem SourceSystem | Verinin çıkarıldığı belirli kaynak sistemi tanımlar. | ||
| Açıklama Kaynak Sistem özniteliği, olay verilerinin kökenini, örneğin belirli bir SAP ECC örnek adını belirtir. Bu, birden çok ERP sistemi olan veya verilerin farklı kaynaklardan birleştirildiği ortamlarda özellikle önemlidir. Analizde, bu öznitelik, ayrı örnekler üzerinde çalışıyor olabilecek çeşitli sistemler, bölgeler veya iş birimleri arasındaki süreçleri ve performansı ayırt etmeye yardımcı olur. Veri soy ağacının net olmasını sağlar ve sisteme özel filtreleme ve analize olanak tanır. Neden önemli Çoklu sistem ortamlarında kritik bağlam sağlar, doğru veri ayrımına ve sisteme özel performans analizine olanak tanır. Nereden alınır Bu, tipik olarak veri çekim süreci sırasında eklenen, SAP Sistem Kimliğini (TADIR-SRCSYSTEM) veya belirli SAP örneği için manuel olarak atanmış bir tanımlayıcıyı temsil eden statik bir değerdir. Örnekler SAPECC_PROD_EUECC_US_FINSAP_ERP_6_EHP8 | |||
| Nakit İndirimi Kaybedildi mi IsCashDiscountLost | Mevcut bir nakit indiriminin kaçırılıp kaçırılmadığını gösteren hesaplanmış bir bayraktır. | ||
| Açıklama Bu, ödeme koşullarına ve gerçek ödeme tarihine göre hesaplanan bir boolean özniteliktir. 'Ödeme Koşulları' erken ödeme için iskonto sunduysa ve 'Mahsup Tarihi' iskonto süresi dolduktan sonra ise doğru olarak ayarlanır. Bu, süreç verimsizliklerinden kaynaklanan finansal kaybı doğrudan ölçer. Bu öznitelik, 'Nakit İskontosu Fırsat Kaybı' dashboard'unun temelini oluşturur. İşlem gecikmelerinin finansal etkisinin kolayca nicelleştirilmesini sağlar. Bu işaretin doğru olduğu durumlar filtrelenerek analistler, en sık kaçırılan iskontolara yol açan belirli süreç varyantlarını ve darboğazları araştırabilir, böylece süreç iyileştirme için güçlü bir iş gerekçesi sunar. Neden önemli Süreç gecikmelerinden kaynaklanan finansal kaybı doğrudan nicelleştirir, fatura işleme iş akışını optimize etmek için ikna edici bir gerekçe oluşturur. Nereden alınır Bu öznitelik SAP'de yoktur. Veri dönüşümü sırasında 'ÖdemeKoşulları' yorumlanarak ve 'MahsupTarihi' iskonto vade tarihi ile karşılaştırılarak hesaplanır. Örnekler truefalse | |||
| Ödeme Vadeleri PaymentTerms | Tedarikçiyle anlaşılan, iskonto dönemleri ve vade tarihleri gibi ödeme koşullarını tanımlayan kod. | ||
| Açıklama Ödeme Koşulları, bir faturanın ne zaman ödenmesi gerektiğini ve erken ödeme için varsa hangi nakit iskontolarının mevcut olduğunu tanımlar. Örnekler arasında '30 gün net' veya '10 günde %2, net 30' bulunur, bu da 10 gün içinde ödenirse %2 iskonto, aksi takdirde tam tutarın 30 gün içinde ödeneceği anlamına gelir. Bu öznitelik, 'Nakit İskontosu Fırsat Kaybı' dashboard'u ve 'Nakit İskontosu Yakalama Oranı' KPI'ı için temeldir. Analiz, bir iskontonun mevcut olup olmadığını ve başarılı bir şekilde alınıp alınmadığını belirlemek için ödeme koşullarını muhasebeleşme ve ödeme tarihleriyle birlikte kullanır. Ayrıca 'Ödeme Koşullarına Uygunluk' dashboard'u için de anahtardır. Neden önemli Nakit iskonto yakalama oranlarını analiz etmek ve süreç gecikmelerinin finansal etkisini anlamak için gereklidir. Nereden alınır Bu, fatura belgesi başlık tablosu RBKP'deki 'Ödeme Koşulları Anahtarı' (ZTERM) alanıdır. Örnekler Z0010001NT30 | |||
| Para Birimi Currency | Fatura tutarı için para birimi kodu. | ||
| Açıklama Para Birimi özniteliği, fatura tutarının cinsini, örneğin USD, EUR veya JPY olarak belirtir. Bu öznitelik, Fatura Tutarı için temel bağlamı sağlar. Özellikle birden fazla para birimiyle çalışan küresel kuruluşlarda finansal verilerin doğru yorumlanmasını ve toplulaştırılmasını mümkün kılar. Analiz, farklı para birimi bölgelerindeki işlem verimliliğini veya sorunları karşılaştırmak için para birimine göre filtrelenebilir. Anlamlı finansal toplulaştırma için tutarların tek bir raporlama para birimine dönüştürülmesi gerekebilir. Neden önemli Herhangi bir finansal tutar için gerekli bağlamı sağlar, doğru yorumlamayı garanti eder ve para birimine dayalı filtreleme ve analizi mümkün kılar. Nereden alınır Bu, fatura belgesi başlık tablosu RBKP'deki 'Para Birimi Anahtarı' (WAERS) alanıdır. Örnekler USDEURGBP | |||
| Ret Nedeni RejectionReason | Bir faturanın onay iş akışı sırasında neden reddedildiğini açıklayan bir kod veya metindir. | ||
| Açıklama Bir onaylayıcı bir faturayı reddettiğinde, ideal olarak reddetme nedenini belirtir. Bu, 'Yanlış Satın Alma Sipariş numarası', 'Tekrar Fatura' veya 'Tutar yanlış' gibi sorunları belirten standartlaştırılmış bir kod veya serbest metin yorumu olabilir. Bu veri, 'Fatura Reddetme Nedenleri ve Trendleri' dashboard'u için hayati öneme sahiptir. Farklı reddetme nedenlerinin sıklığını analiz ederek işletme, yaygın sorunları belirleyebilir ve düzeltici eylemler uygulayabilir. Örneğin, 'Yanlış Satın Alma Sipariş numarası' sık bir nedense, tedarikçilerle daha iyi iletişim veya veri giriş personeli için eğitim ihtiyacını gösterebilir. Bu analiz, süreçteki yeniden işlemeyi azaltmak için anahtardır. Neden önemli Reddedilmelerin temel nedenini sağlar, yeniden işlemeyi azaltmak ve ilk seferde doğru oranlarını iyileştirmek için hedeflenmiş süreç iyileştirmelerine olanak tanır. Nereden alınır Bu bilgi genellikle tek bir standart alanda saklanmaz. İş akışı konteyner günlüklerinde, belgeyle ilişkili uzun metin alanlarında veya özel bir iş akışı çözümündeki belirli alanlarda bulunabilir. Örnekler DUPLICATE_INVWRONG_AMTNO_PO_MATCH | |||
| Şirket Kodu CompanyCode | Faturanın işlendiği tüzel kişiliğin veya şirketin tanımlayıcısı. | ||
| Açıklama Şirket Kodu, SAP Finans'ta bağımsız bir tüzel kişiliği temsil eden temel bir organizasyonel birimdir. Faturalar dahil tüm finansal işlemler belirli bir şirket koduna muhasebeleştirilir. Bu öznitelik, süreç analizinin tüzel kişiliğe göre bölümlendirilmesini sağlar. Kurumsal bir grup içindeki farklı şirketler arasında süreç performansı, uyumluluk ve verimliliği karşılaştırmak için çok önemlidir. Dashboard'lar, fatura işleme KPI'larının şirkete özel bir görünümünü sunmak için Şirket Koduna göre filtrelenebilir. Neden önemli Bir kuruluş içindeki farklı tüzel kişilikler arasında süreç karşılaştırmasına ve performans kıyaslamasına olanak tanır. Nereden alınır Bu, fatura belgesi başlık tablosu RBKP'deki 'Şirket Kodu' (BUKRS) alanıdır. Örnekler 10002000US01 | |||
| Son Veri Güncellemesi LastDataUpdate | Süreç için verilerin kaynak sistemden en son ne zaman yenilendiğini gösteren zaman damgası. | ||
| Açıklama Bu öznitelik, en son veri çekimi veya güncellemesinin tarihini ve saatini kaydeder. Bireysel olaylar yerine tüm veri setine uygulanır ve verinin güncelliğine dair net bir gösterge sağlar. Bu, dashboard kullanıcıları ve analistler için kritik bir meta veri özniteliğidir. Analizin kapsadığı zaman dilimini anlamalarına ve güncel bilgilere dayanarak karar vermelerini sağlamalarına yardımcı olur. Verinin güncelliği hakkında kullanıcıları bilgilendirmek için genellikle dashboard'larda belirgin bir şekilde görüntülenir. Neden önemli Kullanıcılara verinin güncelliği hakkında bilgi verir, analiz ve kararların güncel bilgilere dayanmasını sağlar. Nereden alınır Bu değer, veri yenileme sırasında veri çekimi veya ETL aracı tarafından veri setine üretilir ve enjekte edilir. Örnekler 2024-05-20T08:00:00Z2024-05-21T08:00:00Z2024-05-22T08:00:00Z | |||
| Vadesi Geçti mi? IsOverdue | Faturanın ödeme vadesinden sonra ödenip ödenmediğini gösteren hesaplanmış bir bayraktır. | ||
| Açıklama Bu, 'Mahsup Tarihi' (gerçek ödeme tarihi) ile 'Ödeme Vadesi' karşılaştırılarak hesaplanan bir boolean özniteliktir. Mahsup tarihi vade tarihinden sonra ise, işaret doğru; aksi takdirde yanlıştır. Bu, her fatura için zamanında ödeme performansının basit ve doğrudan bir ölçüsünü sağlar. Bu öznitelik, dashboard'lardaki analizi ve görselleştirmeyi basitleştirir. 'Zamanında Ödeme Oranı' KPI'ını hesaplamak için kolay filtreleme ve toplulaştırma sağlar. Kullanıcılar, süreci hızlı bir şekilde bölümlendirerek vadesi geçmiş faturaların süreç akışlarını zamanında ödenenlerle karşılaştırabilir ve potansiyel olarak geç ödemelere yol açan süreç kalıplarını ortaya çıkarabilir. Neden önemli Zamanında ödeme performansının analizini basitleştirir ve zamanında yapılan ile geç yapılan fatura süreçleri arasında kolay karşılaştırma sağlar. Nereden alınır Bu öznitelik SAP'de yoktur. Veri dönüşümü sırasında şu formül kullanılarak hesaplanır: MahsupTarihi > ÖdemeVadesi. Örnekler truefalse | |||
Satın Alma ve Ödeme - Fatura İşleme Aktiviteleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Fatura Data Yakalandı | Fatura belgesinin SAP'de ilk oluşturulmasını, ister park edilmiş ister tamamen muhasebeleştirilmiş bir belge olarak gösterir. Bu genellikle bir faturanın yaşam döngüsü için sistemdeki ilk kaydedilen olaydır ve süreç başlangıç zamanı olarak hizmet eder. | ||
| Neden önemli Bu aktivite, uçtan uca fatura işleme döngü süresini ölçmek için birincil başlangıç noktasıdır. Bu noktadan itibaren süreyi analiz etmek, ilk veri girişi ve belge oluşturma aşamasındaki gecikmeleri belirlemeye yardımcı olur. Nereden alınır Oluşturma zaman damgası, SAP BKPF tablosundaki CPUDT (Muhasebe Belgesinin Girildiği Tarih) ve CPUTM (Giriş Saati) alanlarında yakalanır. Yakala BKPF tablo başlığından belge oluşturma zaman damgasını (CPUDT) kullanın. Event tipi explicit | |||
| Fatura Muhasebeleştirildi | Bu, faturanın resmi olarak defter-i kebire kaydedildiği ve bir yükümlülük oluşturduğu önemli bir finansal olaydır. Bu, belgeyi geçici (park edilmiş) bir durumdan kalıcı bir muhasebe kaydına taşır. | ||
| Neden önemli Muhasebeleşme, faturanın geçerliliğini teyit eden önemli bir dönüm noktasıdır. Ödeme için bir ön koşul ve işlem verimliliğinin anahtar bir göstergesidir. Nereden alınır Bu, belge başlık tablosu BKPF'de kaydedilen açık bir olaydır. Zaman damgası muhasebeleşme tarihi, BKPF-BUDAT'tır. Belge artık 'park edilmiş' durumunda olmayacaktır. Yakala Park edilmemiş belgeler için (BKPF-BSTAT boş veya ' ') muhasebeleşme tarihini (BKPF-BUDAT) kullanın. Event tipi explicit | |||
| Fatura Mutabakatı Yapıldı | Bu aktivite, açık yükümlülüğün bir ödeme belgesiyle mahsup edildiği başarılı bir fatura yaşam döngüsündeki son adımı işaretler. Bu, ödemenin gerçekleştirildiği anlamına gelir. | ||
| Neden önemli Birincil bitiş olayı olarak bu, toplam uçtan uca döngü süresini hesaplamak için kritik öneme sahiptir. Sürecin başarılı bir şekilde tamamlandığını doğrular ve zamanında ödeme performansını ölçmek için kullanılır. Nereden alınır Bu, fatura kalem tablosu BSEG'de kaydedilen açık bir olaydır. Mahsup tarihi AUGDT alanında ve mahsup belge numarası AUGBL alanında saklanır. Yakala Fatura belgesinin kaleminden mahsup tarihini (BSEG-AUGDT) kullanın. Event tipi explicit | |||
| Fatura Ters Kaydedildi | Muhasebeleştirilmiş bir fatura belgesinin iptalini temsil eder. Orijinal faturanın finansal etkisini ortadan kaldırmak için bir ters kayıt belgesi oluşturulur. | ||
| Neden önemli Bu aktivite, önemli bir istisnayı ve yeniden işleme yolunu vurgular. Ters kayıtların sıklığını ve nedenlerini analiz etmek, fatura doğrulama ve muhasebeleşme sürecindeki sistemsel sorunları ortaya çıkarabilir. Nereden alınır Bu, belge başlık tablosu BKPF'de kaydedilen açık bir olaydır. Ters kayıt belgesinin başlığı, ters kayıt belgesi numarasını (STBLG) ve mali yılı (STJAH) içerir. Yakala BKPF-STBLG'nin dolu olduğu belgeleri belirleyin. Olay zaman damgası, iptal belgesinin deftere kayıt tarihidir. Event tipi explicit | |||
| Ödeme Engeli Konuldu | Bu aktivite, bir fatura kalemine bir blok konulduğunda ve ödenmesi engellendiğinde meydana gelir. Bloklar, üç yönlü eşleştirmedeki tutarsızlıklar nedeniyle otomatik olarak veya çeşitli nedenlerle manuel olarak ayarlanabilir. | ||
| Neden önemli Bu olay, Ödeme Bloğu Çözüm Süresini ölçmek ve ödeme gecikmelerinin kök nedenlerini belirlemek için kritiktir. Fiyatlandırma, miktar veya gerekli onaylarla ilgili sorunları vurgular. Nereden alınır Bu, BSEG tablosu için ZLSPR alanı (Ödeme Bloğu Anahtarı) için değişiklik belgesi günlükleri (CDHDR ve CDPOS tabloları) aracılığıyla izlenebilen açık bir olaydır. Yakala Değişiklik belgelerinden (CDHDR) BSEG-ZLSPR değeri boşdan boş olmayana değiştiğinde alınan zaman damgası. Event tipi explicit | |||
| Fatura Onay İçin Gönderildi | Bir faturanın resmi bir onay iş akışına sunulduğu noktayı temsil eder. Yakalama mekanizması, belirli SAP Workflow veya üçüncü taraf sistem uygulamasından büyük ölçüde etkilenir. | ||
| Neden önemli Bu aktivite, Fatura Onay Döngü Süresi KPI'ı için sayacı başlatır. Onay zincirindeki gecikmeleri belirlemek ve onaylayıcı performansını analiz etmek için esastır. Nereden alınır Bu olay, tipik olarak SAP Business Workflow tablolarından (örn. SWW_WI2OBJ, SWWLOG) belirli bir onay görevinin başlangıcını belirleyerek yakalanır. Daha basit senaryolarda, özel bir alandaki durum değişikliğinden çıkarılabilir. Yakala SAP iş akışı günlüklerinin veya fatura belgesine bağlı özel durum alanlarının analizini gerektirir. Event tipi inferred | |||
| Fatura Onaylandı | Faturanın belirlenmiş yetkili tarafından resmi olarak onaylandığını, muhasebeleşme ve ödeme işlemlerine devam etmesine izin verildiğini gösterir. Bu genellikle bir iş akışının son adımıdır. | ||
| Neden önemli Bu dönüm noktası, onay döngü süresi ölçümünü sonlandırır. Sürecin engelini kaldırır, zamanında ödemeye olanak tanır ve onaylayıcılar arasındaki iş yükü dağılımını analiz etmeye yardımcı olur. Nereden alınır Bu, tipik olarak SAP Business Workflow tablolarından bir onay görevinin tamamlanmasını belirleyerek yakalanır. Alternatif olarak, onayla ilgili bir ödeme bloğunun kaldırılmasından çıkarılabilir. Yakala İş akışı günlüklerindeki tamamlanmış onay adımının veya belirli bir ödeme bloğunun kaldırılmasının zaman damgası. Event tipi inferred | |||
| Fatura Park Edildi | Bir faturanın SAP'ye girildiğini ancak henüz genel muhasebeye kaydedilmediğini gösterir. Bu, finansal deftere kayıt öncesinde inceleme, düzeltme veya onaya izin veren geçici bir durumdur. | ||
| Neden önemli Faturaların ne zaman ve ne kadar süreyle park edildiğini izlemek, muhasebe öncesi doğrulama ve onay sürecindeki darboğazları vurgular. Veri giriş süresini finansal işlem süresinden ayırır. Nereden alınır Bu, BKPF tablosundaki BSTAT alanındaki belge durumundan çıkarılır. 'V' (Park Edilmiş Belge) veya 'W' (Değişiklik Onaylı Park Edilmiş Belge) değeri, park edilmiş bir durumu gösterir. Yakala Durum alanı BKPF-BSTAT'ın 'V' olduğu belgeleri belirleyin. Olay zaman damgası, oluşturma tarihi BKPF-CPUDT'dir. Event tipi inferred | |||
| Fatura Reddedildi | Bir faturanın onay süreci sırasında reddedildiğini gösterir. Bu eylem genellikle düzeltme ve yeniden gönderme gerektirir ve yeniden işleme döngüsü oluşturur. | ||
| Neden önemli Reddetmeleri izlemek, yanlış veri veya politika ihlalleri gibi başarısızlığın yaygın nedenlerini belirlemek için çok önemlidir. Yeniden işlemeyi nicelleştirmeye ve süreç iyileştirme veya tedarikçi eğitimi için alanları kesin olarak belirlemeye yardımcı olur. Nereden alınır Bu olay genellikle SAP Business Workflow günlüklerinde bir reddetme adımı olarak bulunur. Ayrıca fatura belgesine eklenen belirli durum değişikliklerinden veya notlardan da çıkarılabilir. Yakala İş akışı günlüklerindeki reddetme adımının veya reddetmeyi gösteren bir belge durum değişikliğinin zaman damgası. Event tipi inferred | |||
| Fatura Vadesi Geçti | Mevcut tarihin faturanın net vade tarihini geçtiğinde ve faturanın henüz ödenmediğinde meydana gelen hesaplanmış bir olaydır. Vade tarihi ödeme koşulları ve başlangıç tarihinden belirlenir. | ||
| Neden önemli Bu aktivite, Zamanında Ödeme Oranı KPI'ını izlemek için esastır. Geç ödeme riski taşıyan faturaları proaktif olarak işaretler, bu da tedarikçi ilişkilerine zarar verebilir ve cezalar doğurabilir. Nereden alınır Bu olay, mevcut tarihin net vade tarihi ile karşılaştırılmasıyla hesaplanır. Vade tarihi, başlangıç tarihinden (BSEG-ZFBDT) ve ödeme koşullarından (BSEG-ZTERM) türetilir. Yakala
Event tipi calculated | |||
| Ödeme Engellemesi Serbest Bırakıldı | Bir fatura kaleminden ödeme bloğunun kaldırılmasını temsil eder ve ödeme çalışmasına devam etmesine izin verir. Bu, daha önce belirlenen bir sorunun çözüldüğü anlamına gelir. | ||
| Neden önemli Bu aktivite, blok süresinin ölçümünü sonlandırır. Bir bloğun konulması ile kaldırılması arasındaki süreyi analiz etmek, sorun çözme sürecinin verimliliğini ortaya koyar. Nereden alınır Bu olay, BSEG tablosundaki ZLSPR alanı (Ödeme Bloğu Anahtarı) için değişiklik belgesi günlükleri (CDHDR ve CDPOS tabloları) aracılığıyla, blok kaldırıldığında izlenir. Yakala Değişiklik belgelerinden (CDHDR) BSEG-ZLSPR değeri boş olmayandan boşa değiştiğinde alınan zaman damgası. Event tipi explicit | |||
Veri Çekim Kılavuzları
Adımlar
- ABAP Programını Oluşturun:
SE38veyaSE80işlem kodunu kullanarak yeni bir çalıştırılabilir program oluşturun, örneğinZ_PM_INVOICE_EXTRACT. Uygun bir başlık sağlayın ve türünü 'Çalıştırılabilir Program' olarak ayarlayın. - Seçim Ekranını Tanımlayın: Programda, kullanıcıların verileri filtrelemesine olanak tanıyan bir seçim ekranı tanımlayın. Anahtar parametreler arasında Şirket Kodu (
BUKRS), Mali Yıl (GJAHR), Deftere Kayıt Tarihi Aralığı (BUDAT) ve uygulama sunucusundaki çıktı dosyası yolu için bir parametre bulunmalıdır. - Veri Yapılarını Tanımlayın: Nihai olay günlüğünü tutacak dahili bir tablo yapısı tanımlayın. Bu yapı, gerekli ve önerilen tüm öznitelikleri içermelidir:
InvoiceNumber,Activity,EventTime,UserName,VendorNumber,PurchaseOrderNumber,InvoiceAmount,PostingDate,PaymentDueDate,PaymentBlockReasonveClearingDate. - Veri Seçim Mantığını Uygulayın: Fatura verilerini seçmek için çekirdek ABAP mantığını yazın. Yaklaşım, nihai olay günlüğü tablosunda birleştirilen birden çok seçim içerir.
- İlk olarak, seçim ekranı kriterlerine göre birincil fatura tabloları
BKPF,BSEG,RBKPveRSEG'den başlık ve kalem verilerini seçin. - Her fatura için, 'Fatura Verileri Yakalandı' (oluşturma zaman damgasından) ve 'Fatura Deftere Kaydedildi' (deftere kayıt zaman damgasından) gibi temel olayları oluşturun.
- Ödeme engelleriyle (
BSEG'dekiZLSPRalanı) ilgili değişiklikleri bulmak için değişiklik belgesi tablolarıCDHDRveCDPOS'u sorgulayın. İlgili her değişiklik için 'Ödeme Engeli Konuldu' ve 'Ödeme Engeli Kaldırıldı' olaylarını oluşturun. BSEGtablosunda bir temizleme belgesi (AUGBL) ve temizleme tarihi (AUGDT) kontrol ederek 'Fatura Temizlendi' olaylarını belirleyin.BKPFbaşlığında bir iptal belgesi (STBLG) kontrol ederek 'Fatura İptal Edildi' olaylarını belirleyin.- İş akışı olaylarını ('Fatura Onay İçin Gönderildi', 'Onaylandı', 'Reddedildi') yakalamak için özel mantık uygulayın. Bu kısım müşteriye özeldir ve kodu iş akışınızın tablolarına veya durum alanlarına uyarlamayı gerektirir.
- İlk olarak, seçim ekranı kriterlerine göre birincil fatura tabloları
- Hesaplanan Olayları Oluşturun: Program mantığı dahilinde,
Fatura Vadesi Geçtiolayını hesaplayın. Bu, faturanın ödeme vadesi (PaymentDueDate) ile ödenmemiş tüm faturalar için geçerli tarih karşılaştırılarak türetilir. Vade tarihi geçmişse,EventTimevadesi geçmiş tarihe ayarlanarak bir olay oluşturun. - Olay Günlüğü Tablosunu Doldurun: Her fatura için farklı kaynaklardan veri toplarken, veriyi biçimlendirin ve nihai dahili olay günlüğü tablosuna, etkinlik başına bir satır olmak üzere yeni satırlar ekleyin.
- Verileri Bir Dosyaya Aktarın: Nihai dahili tablonun içeriğini, seçim ekranında belirtilen SAP uygulama sunucusu yolundaki düz bir dosyaya yazmak için
OPEN DATASET,TRANSFERveCLOSE DATASETdeyimlerini kullanın. Bir CSV dosyası oluşturmak için noktalı virgül veya sekme gibi tutarlı bir ayırıcı kullanın. - Veri Çekimini Zamanlayın: Düzenli veri çekimi için, program için istenen seçim kriterleriyle bir varyant oluşturun ve
SM36işlem kodunu kullanarak arka plan görevi olarak çalışacak şekilde zamanlayın. - Çıktı Dosyasını Alın: Oluşturulan dosyayı bulmak için
AL11işlem kodunu kullanarak SAP uygulama sunucusu dizinine erişin. Dosyayı uygulama sunucusundan yerel makinenize indirmek içinCG3Yişlem kodunu kullanın. - Yüklemeye Hazırlık: Bir süreç madenciliği aracına yüklemeden önce, CSV dosyasını açarak başlıkların doğru olduğunu, veri formatının tutarlı olduğunu (özellikle zaman damgaları için) ve ayırıcının beklendiği gibi olduğunu doğrulayın. Dosyanın UTF-8 kodlamasıyla kaydedildiğinden emin olun.
Konfigürasyon
- Seçim Kriterleri: ABAP raporu kapsamlı bir seçim ekranı içermelidir. En önemli filtreler şunlardır:
Şirket Kodu (BUKRS): Veri çekimini belirli yasal kuruluşlarla sınırlamak için.Deftere Kayıt Tarihi (BUDAT): Veri çekimi için zaman aralığını tanımlamak amacıyla. Verilerin yönetilebilir parçalar halinde, örneğin bir seferde 3 ila 6 aylık olarak çekilmesi önerilir.Belge Türü (BLART): Yalnızca ilgili fatura belge türlerini dahil etmek için, örneğin lojistik faturaları için 'RE' ve tedarikçi faturaları için 'KR'.
- Çıktı Dosyası Yolu: Çıktı dosyasının oluşturulacağı SAP uygulama sunucusundaki tam yolu ve dosya adını belirtmek için zorunlu bir parametredir. Raporu çalıştıran kullanıcının bu dizine yazma yetkisi olmalıdır.
- Performans Hususları: Büyük veri kümeleri için, raporun sistemin performans düşüşünü önlemek amacıyla yoğun olmayan saatlerde bir arka plan görevi olarak çalıştırılması gerekir. Mantık, tablolardan yalnızca gerekli alanları seçmeli ve mümkün olduğunca standart SAP veritabanı indekslerini kullanmalıdır.
- Ön Koşullar ve Yetkilendirmeler: Bu veri çekimini çalıştıran kullanıcı veya hizmet hesabı için şunlar gereklidir:
- ABAP raporu yürütme yetkileri (
S_PROGRAM'ın bir parçası). BKPF,BSEG,RBKP,RSEG,CDHDRveCDPOSdahil olmak üzere finans ve lojistik tablolarına okuma erişimi.- Belirtilen uygulama sunucusu dizinine dosya yazma yetkisi (
S_DATASET). - Geliştirme, zamanlama ve dosya alma için
SE38,SM36,AL11veCG3Yişlemlerine erişim.
- ABAP raporu yürütme yetkileri (
a Örnek Sorgu abap
REPORT Z_PM_INVOICE_EXTRACT.
*&---------------------------------------------------------------------*
*& Tables for Selection Screen
*&---------------------------------------------------------------------*
TABLES: BKPF, RBKP.
*&---------------------------------------------------------------------*
*& Data Declarations
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_event_log,
InvoiceNumber TYPE belnr_v,
Activity TYPE string,
EventTime TYPE timestamp,
UserName TYPE uname,
VendorNumber TYPE lifnr,
PurchaseOrderNumber TYPE ebeln,
InvoiceAmount TYPE wrbtr,
PostingDate TYPE budat,
PaymentDueDate TYPE faedt,
PaymentBlockReason TYPE rstgr,
ClearingDate TYPE augdt,
END OF ty_event_log.
DATA: gt_event_log TYPE TABLE OF ty_event_log,
gs_event_log TYPE ty_event_log.
DATA: lt_bkpf TYPE TABLE OF bkpf,
ls_bkpf TYPE bkpf,
lt_bseg TYPE TABLE OF bseg,
ls_bseg TYPE bseg.
DATA: lt_rbkp TYPE TABLE OF rbkp,
ls_rbkp TYPE rbkp.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_budat FOR bkpf-budat.
PARAMETERS: p_fpath TYPE string OBLIGATORY DEFAULT '/usr/sap/tmp/invoice_events.csv'.
*&---------------------------------------------------------------------*
*& Start of Program Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
" Select FI Invoices (e.g., Doc Type KR)
SELECT * FROM bkpf INTO TABLE lt_bkpf
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat
AND blart = 'KR'.
" Select MM Invoices
SELECT * FROM rbkp INTO TABLE lt_rbkp
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat.
* --- Process FI Invoices ---
LOOP AT lt_bkpf INTO ls_bkpf.
CLEAR gs_event_log.
gs_event_log-InvoiceNumber = ls_bkpf-belnr.
gs_event_log-PostingDate = ls_bkpf-budat.
SELECT SINGLE * FROM bseg INTO ls_bseg
WHERE bukrs = ls_bkpf-bukrs
AND belnr = ls_bkpf-belnr
AND gjahr = ls_bkpf-gjahr
AND koart = 'K'. " Vendor Line Item
IF sy-subrc = 0.
gs_event_log-VendorNumber = ls_bseg-lifnr.
gs_event_log-InvoiceAmount = ls_bseg-wrbtr.
gs_event_log-ClearingDate = ls_bseg-augdt.
" Calculate Due Date
CALL FUNCTION 'DETERMINE_DUE_DATE'
EXPORTING
i_bseg = ls_bseg
IMPORTING
e_faedt = gs_event_log-PaymentDueDate.
ENDIF.
" Activity: Invoice Data Captured
gs_event_log-Activity = 'Invoice Data Captured'.
CONVERT DATE ls_bkpf-cpudt TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Parked (if BSTAT = 'V')
IF ls_bkpf-bstat = 'V'.
gs_event_log-Activity = 'Invoice Parked'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Posted
gs_event_log-Activity = 'Invoice Posted'.
CONVERT DATE ls_bkpf-budat TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Cleared
IF ls_bseg-augbl IS NOT INITIAL.
gs_event_log-Activity = 'Invoice Cleared'.
CONVERT DATE ls_bseg-augdt INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bseg-usnam_cl.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Becomes Overdue
IF gs_event_log-PaymentDueDate IS NOT INITIAL AND gs_event_log-PaymentDueDate < sy-datum AND ls_bseg-augbl IS INITIAL.
gs_event_log-Activity = 'Invoice Becomes Overdue'.
CONVERT DATE gs_event_log-PaymentDueDate INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = 'SYSTEM'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Reversed
IF ls_bkpf-stblg IS NOT INITIAL.
DATA: ls_rev_bkpf TYPE bkpf.
SELECT SINGLE budat, usnam FROM bkpf INTO ls_rev_bkpf
WHERE belnr = ls_bkpf-stblg AND bukrs = ls_bkpf-bukrs AND gjahr = ls_bkpf-gjahr.
IF sy-subrc = 0.
gs_event_log-Activity = 'Invoice Reversed'.
CONVERT DATE ls_rev_bkpf-budat INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_rev_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
ENDIF.
ENDIF.
ENDLOOP.
* --- NOTE: The logic for MM invoices (from lt_rbkp) would be similar, joining RBKP with RSEG.
* --- NOTE: The logic for Payment Blocks and Workflow events requires reading change documents (CDHDR/CDPOS)
* --- or custom workflow tables. Below is a conceptual example for payment blocks.
* --- Conceptual Example for 'Payment Block Set' / 'Released' using Change Docs
* DATA: lt_cdhdr TYPE TABLE OF cdhdr, ls_cdhdr TYPE cdhdr,
* lt_cdpos TYPE TABLE OF cdpos, ls_cdpos TYPE cdpos.
* SELECT * FROM cdhdr INTO TABLE lt_cdhdr
* WHERE objectclas = 'BELEG' AND objectid IN (SELECT belnr FROM bkpf WHERE ...).
* LOOP AT lt_cdhdr.
* SELECT * FROM cdpos INTO TABLE lt_cdpos
* WHERE changenr = ls_cdhdr-changenr AND tabname = 'BSEG' AND fname = 'ZLSPR'.
* LOOP AT lt_cdpos.
* "... logic to create 'Payment Block Set' (if VALUE_NEW is not blank)
* "... or 'Payment Block Released' (if VALUE_NEW is blank) events.
* ENDLOOP.
* ENDLOOP.
* --- Conceptual Example for Workflow events ('Sent For Approval', 'Approved', 'Rejected')
* --- This part MUST be customized based on your specific workflow implementation (e.g., OpenText VIM, SAP WF).
* --- You would query the relevant workflow tables or status change tables here.
*&---------------------------------------------------------------------*
*& Write to File
*&---------------------------------------------------------------------*
END-OF-SELECTION.
DATA: lv_string TYPE string,
lv_header TYPE string.
" Create Header
lv_header = 'InvoiceNumber;Activity;EventTime;UserName;VendorNumber;PurchaseOrderNumber;InvoiceAmount;PostingDate;PaymentDueDate;PaymentBlockReason;ClearingDate'.
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
TRANSFER lv_header TO p_fpath.
LOOP AT gt_event_log INTO gs_event_log.
CONCATENATE gs_event_log-InvoiceNumber
gs_event_log-Activity
gs_event_log-EventTime
gs_event_log-UserName
gs_event_log-VendorNumber
gs_event_log-PurchaseOrderNumber
gs_event_log-InvoiceAmount
gs_event_log-PostingDate
gs_event_log-PaymentDueDate
gs_event_log-PaymentBlockReason
gs_event_log-ClearingDate
INTO lv_string SEPARATED BY ';'.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
ELSE.
MESSAGE 'Error opening file.' TYPE 'E'.
ENDIF.