Siparişten Tahsilata - Faturalandırma ve Fatura Veri Şablonunuz
Siparişten Tahsilata - Faturalandırma ve Fatura Veri Şablonunuz
- Kapsamlı analiz için önerilen özellikler
- İzlenecek Temel Süreç Adımları ve Dönüm Noktaları
- SAP ECC için pratik veri çıkarma rehberliği
Siparişten Nakde - Faturalama ve Muhasebeleştirme Öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Aktivite ActivityName | Fatura yaşam döngüsü içinde meydana gelen iş olayının veya adımının adı. | ||
| Açıklama Bu öznitelik, faturalama sürecindeki 'Fatura Oluşturuldu', 'Fatura Kaydedildi' veya 'Müşteri Ödemesi Alındı' gibi belirli bir eylemi veya durum değişikliğini tanımlar. Bu aktiviteler, çeşitli sistem olaylarından, belgelerdeki durum değişikliklerinden veya kullanıcılar tarafından yürütülen belirli işlem kodlarından kavramsal olarak türetilir. Bu aktivitelerin sırası, process mining analizinin temelini oluşturan süreç akışını oluşturur. Kuruluşlar, aktiviteleri inceleyerek hangi adımların, hangi sırayla ve ne sıklıkta atıldığını anlayabilir, tasarlanan sürece kıyasla gerçek süreç yürütmesini ortaya çıkarabilir. Neden önemli Süreç haritasındaki adımları tanımlayarak, süreç akışlarının, sapmaların ve darboğazların görselleştirilmesini ve analizini sağlar. Nereden alınır İşlem kodları (CDHDR-TCODE), belge durumu değişiklikleri (VBUK-FKSTK) ve muhasebe belge kayıtları gibi birden çok kaynaktan türetilen kavramsal bir özniteliktir. Örnekler Fatura OluşturulduFatura MuhasebeleştirildiÖdeme Hatırlatması GönderildiFatura Mutabakatı Yapıldı | |||
| Başlangıç Zamanı EventTime | Belirli bir faaliyetin veya event'in ne zaman gerçekleştiğini gösteren zaman damgasıdır. | ||
| Açıklama Olay Zamanı, fatura yaşam döngüsündeki her aktivitenin kesin tarih ve saatini yakalar. Bu zaman damgası, süreç madenciliğindeki tüm zamana dayalı analizler için temeldir; döngü sürelerini hesaplama, darboğazları belirleme ve hizmet seviyesi anlaşmalarına karşı süreç performansını izleme dahil. Bu öznitelik, genellikle Deftere İşleme Tarihi (BUDAT) gibi bir tarih alanı ile çeşitli SAP tablolarından gelen ve değişiklikleri veya belge oluşturmayı kaydeden bir zaman alanı (UZEIT) birleştirilerek oluşturulur. Doğru zaman damgaları, güvenilir bir olay günlüğü oluşturmak ve herhangi bir performans analizinin geçerliliğini sağlamak için kritik öneme sahiptir. Neden önemli Bu öznitelik, döngü sürelerinin, sürelerin ve süreç adımları arasındaki bekleme sürelerinin hesaplanmasını sağlayarak tüm performans analizlerinin temelidir. Nereden alınır BKPF (BUDAT, CPUTM), VBRK (ERDAT, ERZET) gibi çeşitli tablolardaki ve CDHDR (UDATE, UTIME) gibi değişiklik günlüğü tablolarındaki çeşitli tarih ve zaman alanlarından oluşturulur. Örnekler 2023-04-15T10:30:00Z2023-04-16T11:00:00Z2023-05-20T09:00:00Z | |||
| Fatura Numarası InvoiceNumber | Faturalama belgesi için benzersiz tanımlayıcı, faturalama sürecinin birincil vaka kimliği olarak hizmet eder. | ||
| Açıklama SAP'de Faturalama Belge Numarası olarak bilinen Fatura Numarası, her faturayı benzersiz şekilde tanımlar. Process mining'de, oluşturma, kayıt, gönderme, ödeme ve mahsuplaşma gibi tüm ilgili aktiviteleri tek bir uçtan uca süreç örneğinde gruplayan CaseId olarak işlev görür. Süreçleri Fatura Numarasına göre analiz etmek, her faturalama işleminin başlangıcından nihai ödemesine kadar olan yaşam döngüsünün eksiksiz bir görünümünü sağlar. Bu, Ortalama Tahsilat Süresi (DSO) ve genel fatura döngü süresi gibi temel performans göstergelerini hesaplamak için kritik öneme sahiptir, performans ölçümü ve iyileştirme için net bir temel sunar. Neden önemli Bir faturanın tüm yolculuğunu izlemek, her bir faturalama işlemi için döngü sürelerinin, darboğazların ve varyasyonların analizini sağlamak için temel anahtardır. Nereden alınır SAP ECC Tablosu: VBRK, Alan: VBELN Örnekler 90001234900012359000123690001237 | |||
| Fatura Belge Türü BillingDocumentType | Fatura, kredi notu veya borç notu gibi faturalama belgesi türünü kategorize eden bir kod. | ||
| Açıklama Faturalama Belge Tipi, işlemleri iş amacına göre farklı kategorilere ayırır. Örneğin, 'F2' standart bir müşteri faturası iken, 'G2' bir alacak dekontunu temsil eder. Bu sınıflandırma, farklı faturalama belgelerinin nasıl işleneceğini kontrol etmek için SAP'de yapılandırılır. Process mining için bu öznitelik, farklı faturalama senaryolarını filtrelemek ve karşılaştırmak için esastır. Analistler, standart faturalar için süreci alacak dekontlarından ayrı olarak inceleyerek benzersiz akışlarını, döngü sürelerini ve zorluklarını anlayabilir, bu da daha hedefe yönelik süreç iyileştirmelerine yol açar. Neden önemli Standart faturalar ile kredi notları gibi farklı faturalama süreçlerinin segmentasyonuna ve analizine olanak tanır, ki bunlar genellikle çok farklı süreç akışlarına sahiptir. Nereden alınır SAP ECC Tablosu: VBRK, Alan: FKART Örnekler F2G2L2IV | |||
| Kullanıcı Adı UserName | Aktiviteyi gerçekleştiren veya belgeyi oluşturan kullanıcının kimliği. | ||
| Açıklama Bu öznitelik, bir fatura oluşturma veya ödeme kaydı gibi belirli bir olaydan sorumlu SAP kullanıcı kimliğini yakalar. Sürecin insan unsurunu analiz etmek için esastır. Bu verilerle, kullanıcılar veya ekipler arasındaki performans farklılıklarını araştırmak, eğitim ihtiyaçlarını belirlemek ve potansiyel uyumluluk sorunlarını tespit etmek mümkündür. Ayrıca, insan kullanıcılar tarafından gerçekleştirilen manuel aktiviteler ile sistem veya Batch kullanıcıları tarafından yürütülen otomatik adımlar arasında ayrım yapmak için de kullanılır, bu da otomasyon oranlarını hesaplamak için anahtardır. Neden önemli Kullanıcı performansı, iş yükü dağılımı analizine olanak tanır ve manuel ile otomatik aktiviteler arasında ayrım yapmaya yardımcı olarak otomasyon ve verimlilik girişimlerini destekler. Nereden alınır SAP ECC Tablosu: VBRK, Alan: ERNAM (Oluşturan) veya BKPF, Alan: USNAM (Kullanıcı adı) veya CDHDR, Alan: USERNAME (Kullanıcı). Örnekler JSMITHBW_BATCHLROSSIMKUMAR | |||
| Müşteri Numarası CustomerNumber | Faturanın düzenlendiği müşteriyi tanımlayan benzersiz bir numara. | ||
| Açıklama Müşteri Numarası, bir faturayı belirli bir müşteriye veya iş ortağına bağlar. Bu öznitelik, müşteri özelliklerine göre faturalama sürecini segmentlere ayırmak ve analiz etmek için kritik öneme sahiptir. Analistler bu alanı, farklı müşteriler arasındaki Ortalama Tahsilat Süresi'ni (DSO) karşılaştırmak, hangi müşterilerin sıkça geç ödeme yaptığını belirlemek veya ödeme koşullarına uyumu analiz etmek için kullanabilirler. Bu kalıpları anlamak, müşteri ilişkilerini yönetmek ve farklı müşteri segmentlerine özel nakit tahsilat stratejilerini iyileştirmek için anahtardır. Neden önemli Müşteri odaklı analizleri mümkün kılar, ödeme davranışlarını belirlemeye, müşteriye göre DSO'yu değerlendirmeye ve tahsilat stratejilerini uyarlamaya yardımcı olur. Nereden alınır SAP ECC Tablosu: VBRK, Alan: KUNRG (Ödeyen) veya KUNAG (Satış yapılan taraf). Örnekler 100023200541CUST-A487910345 | |||
| Şirket Kodu CompanyCode | Faturayı düzenleyen tüzel kişiliğin tanımlayıcısı. | ||
| Açıklama Şirket Kodu, SAP'de bağımsız bir yasal ve muhasebe birimini temsil eder. Faturalar dahil tüm finansal işlemler belirli bir şirket koduna kaydedilir. Bu, temel bir organizasyonel veri öğesidir. Process mining bağlamında Şirket Kodu, bir şirket içindeki farklı tüzel kişilikler arasındaki faturalama süreci performansını analiz etmek ve karşılaştırmak için kullanılır. Bu, bir şirketteki en iyi uygulamaların diğerlerine uygulanabileceklerini belirlemeye yardımcı olur ve analizin şirketin organizasyon yapısına saygı göstermesini sağlar. Neden önemli Farklı yasal varlıklar arasındaki süreçlerin filtrelenmesine ve karşılaştırılmasına olanak tanır, bu da finansal analiz ve organizasyonel kıyaslama için temeldir. Nereden alınır SAP ECC Tablosu: VBRK, Alan: BUKRS Örnekler 10002000US01DE01 | |||
| Toplam Fatura Tutarı TotalInvoiceAmount | Faturalama belgesinin toplam net değeri. | ||
| Açıklama Bu öznitelik, vergiler hariç faturanın toplam net tutarını temsil eder. Fatura tutarı, faturalama süreciyle ilişkili kritik bir finansal veri parçasıdır. Faturaları yüksek değerli ve düşük değerli kategorilere ayırarak süreç akışlarının farklılık gösterip göstermediğini görmek gibi çeşitli analizlerde kullanılır. Ayrıca tahsilat çabalarını önceliklendirmek veya yüksek değerli faturaların neden onaylanması veya ödenmesi daha uzun sürdüğünü araştırmak için de kullanılabilir. Bu finansal bağlam, süreç analizine önemli bir derinlik katmanı ekler. Neden önemli Fatura değerine dayalı analize izin veren temel finansal bağlam sağlar; örneğin, yüksek değerli faturaların farklı bir süreci takip edip etmediğini veya mahsuplaşmasının daha uzun sürüp sürmediğini belirleme gibi. Nereden alınır SAP ECC Tablosu: VBRK, Alan: NETWR Örnekler 1500.7525000.00500.0012345.67 | |||
| Belge Tarihi DocumentDate | Tedarikçi veya oluşturucu tarafından sağlanan orijinal belgedeki tarih. | ||
| Açıklama Belge Tarihi, orijinal belgenin düzenlendiği tarihtir. Faturalama için bu, genellikle faturanın oluşturulduğu tarih olup, çoğu zaman ödeme vadesini hesaplamak için temel olarak kullanılır. Bu tarih, finansal raporlama ve Ortalama Tahsilat Süresi (DSO) gibi temel metrikleri hesaplamak için kritik öneme sahiptir. Müşterinin bakış açısından tahsilat süresinin başlangıç noktasını temsil eder. Belge tarihi ile kayıt tarihi arasındaki tutarsızlıkları analiz etmek, gelen faturaların işlenmesindeki dahili gecikmeleri ortaya çıkarabilir. Neden önemli Fatura yaşı ve DSO hesaplamaları için temel teşkil eder, finansal ve ödeme koşulları analizi için kritik bir referans noktası sağlar. Nereden alınır SAP ECC Tablosu: VBRK, Alan: FKDAT (Faturalama Tarihi) Örnekler 2023-04-152023-04-162023-05-20 | |||
| Fatura Vade Tarihi InvoiceDueDate | Müşterinin ödeme yapması beklenen tarih. | ||
| Açıklama Fatura Vadesi, ödeme koşullarına göre belirlenen ödeme son tarihidir. Bu tarih, alacak hesaplarını yönetmek ve tahsilat faaliyetlerini başlatmak için temeldir. Bu öznitelik, Zamanında Ödeme Oranı KPI'ını gerçek ödeme tarihiyle karşılaştırarak hesaplamak için kullanılır. Faturaları vade tarihlerine göre analiz etmek, nakit akışını tahmin etmeye ve yaklaşan veya vadesi geçmiş ödemeler için tahsilat çabalarını önceliklendirmeye yardımcı olur. Genellikle başlangıç tarihinden ve ödeme koşullarından türetilir. Neden önemli Zamanında ödeme performansını ölçmek için bir ölçüt olup, alacak hesapları yönetimi ve nakit akışı tahmini için esastır. Nereden alınır Temel tarihe (BSEG-ZFBDT) ve ödeme koşullarına (BSEG-ZTERM) göre hesaplanır. Her zaman doğrudan bir alanda saklanmaz. Örnekler 2023-05-152023-05-302023-06-20 | |||
| Hesaba Geçiş Tarihi ClearingDate | Ödemenin alındığı ve faturanın alacak hesaplarından mahsuplaştırıldığı tarih. | ||
| Açıklama Mahsuplaşma Tarihi, bir fatura gibi açık bir kalemin finansal sistemde ödendi veya 'mahsuplaştırıldı' olarak işaretlendiği tarihtir. Bu tarih, nakitin tahsil edildiği ve mutabakata varıldığı zamanı etkili bir şekilde temsil eder. Bu, Siparişten Nakde döngüsündeki en önemli tarihlerden biridir. Ortalama Tahsilat Süresi (DSO) ve genel fatura-nakit döngü süresini hesaplamak için son nokta olarak hizmet eder. Mahsuplaşma tarihini analiz etmek, tahsilat sürecinin etkinliğini ölçmeye yardımcı olur. Neden önemli Fatura yaşam döngüsünün son adımını işaret eder, DSO ve genel döngü süresi hesaplamaları için bitiş tarihi olarak hizmet eder ve nakit tahsilat verimliliğini yansıtır. Nereden alınır SAP ECC Tablosu: BSAD, Alan: AUGDT Örnekler 2023-05-142023-06-012023-06-25 | |||
| İşlem Kodu TransactionCode | Bir aktiviteyi gerçekleştirmek için kullanılan SAP işlem kodu. | ||
| Açıklama İşlem Kodu veya T-Kodu, SAP'de belirli bir fonksiyon veya program için benzersiz bir tanımlayıcıdır; örneğin, faturalama belgesi oluşturmak için 'VF01' gibi. Her olay için T-Kodu'nun yakalanması, bir sürecin nasıl yürütüldüğüne dair teknik, sistem düzeyinde bir görünüm sağlar. Bu bilgi, temel neden analizi için son derece değerlidir. Örneğin, hatalar yaygınsa, analistler standart olmayan bir işlem kodunun kullanılıp kullanılmadığını kontrol edebilir. Ayrıca, aktivite adını türetmeye ve süreçte hangi sistem fonksiyonlarının kullanıldığını anlamaya yardımcı olur. Neden önemli Bir aktivitenin nasıl gerçekleştirildiğine dair teknik bağlam sağlayarak süreç sapmalarının temel neden analizini mümkün kılar ve standart olmayan kullanıcı eylemlerinin belirlenmesine yardımcı olur. Nereden alınır SAP ECC Tablosu: CDHDR, Alan: TCODE Örnekler VF01VF02FB01F-28 | |||
| Kayıt Tarihi PostingDate | Belgenin finansal muhasebe defterlerine kaydedildiği tarih. | ||
| Açıklama Kayıt Tarihi, işlemin Genel Muhasebe defterine kaydedildiği mali dönemi belirler. Muhasebe ve finansal raporlama için kritik bir tarihtir. Belge oluşturma tarihi ile kayıt tarihi arasındaki gecikmeler, faturalama belgelerinin dahili işlenmesindeki verimsizlikleri gösterebilir. Process mining açısından kayıt tarihi, fatura yaşam döngüsünde önemli bir dönüm noktasını işaret eder. Fatura oluşturma ile kaydı arasındaki süre gecikmesi, faturalama departmanının verimliliği için temel bir performans göstergesi olabilir. Neden önemli Önemli bir finansal dönüm noktasını işaret eder ve muhasebe için kritik öneme sahiptir. Fatura oluşturma ile kaydı arasındaki süre gecikmesi, dahili işlem verimliliğinin temel bir ölçüsüdür. Nereden alınır SAP ECC Tablosu: BKPF, Alan: BUDAT Örnekler 2023-04-152023-04-172023-05-21 | |||
| Kaynak Sistem SourceSystem | `veri`nin çıkarıldığı kaynak sistemi tanımlar. | ||
| Açıklama Bu öznitelik, verinin kaynaklandığı kayıt sistemini belirtir. Birden çok ERP örneği veya entegre sistemin olduğu kurumsal bir ortamda, bu alan farklı kaynaklardan gelen verileri ayırt etmeye yardımcı olur. Process mining için veri doğrulama ve farklı sistemler veya organizasyonel birimler arasındaki süreçleri karşılaştıran analizler için esastır. Genellikle veri çıkarma işlemi sırasında veri setini etiketlemek için statik bir değer olarak doldurulur. Neden önemli Veri bütünlüğünü sağlamak ve sisteme özel analizi etkinleştirmek için birden çok sisteme sahip ortamlarda kritik olan verinin kaynağı hakkında bağlam sağlar. Nereden alınır Bu genellikle veri çıkarma, dönüştürme ve yükleme (ETL) süreci sırasında eklenen statik bir değerdir ve belirli SAP ECC örneğini (örn: 'ECC_PROD_NA') tanımlar. Örnekler SAP_ECC_PRODECC_EU_100SAP_US_FIN | |||
| Ödeme Vadeleri PaymentTerms | Bir satıcının, ödeme planı dahil olmak üzere bir satışı tamamlayacağı koşullar. | ||
| Açıklama Ödeme Koşulları, "Net 30" veya "Net 60" gibi bir ödemenin ne zaman vadesinin geldiğine dair kuralları tanımlar. Bu koşullar müşteriyle kararlaştırılır ve nakit akışını belirlemede önemli bir faktördür. Süreci ödeme koşullarına göre analiz etmek, belirli koşulların daha uzun ödeme döngüleri veya daha yüksek gecikmeli ödeme oranlarıyla ilişkili olup olmadığını ortaya çıkarabilir. Bu içgörü, işletmenin müşterilerle daha iyi koşullar müzakere etmesine veya finansal planlamasını ayarlamasına yardımcı olabilir. Aynı zamanda fatura vadesini hesaplamak için önemli bir girdidir. Neden önemli Müzakere edilmiş şartlara göre müşteri ödeme davranışını ve nakit akışı üzerindeki etkiyi analiz etmeye yardımcı olarak ticari anlaşmaları optimize etmek için içgörüler sunar. Nereden alınır SAP ECC Tablosu: VBRK, Alan: ZTERM Örnekler Z030Z060Z001 | |||
| Otomatikleştirildi mi? IsAutomated | Bir aktivitenin bir sistem kullanıcısı tarafından mı yoksa otomasyon aracılığıyla mı gerçekleştirildiğini gösteren bir işaret. | ||
| Açıklama Bu hesaplanmış öznitelik, manuel ve otomatik aktiviteler arasında ayrım yapan bir boolean bayrağıdır. Genellikle Kullanıcı Adı özniteliğinin, 'BATCHUSER' veya 'SAPSYSTEM' gibi bilinen sistem veya batch kullanıcı kimlikleri listesine göre kontrol edilmesiyle türetilir. Bu bayrak, birçok kuruluşun verimliliği artırmak ve maliyetleri azaltmak amacıyla hedeflediği faturalama sürecindeki otomasyon seviyesini ölçmek için esastır. Otomatik Faturalama Oranı KPI'ı doğrudan bu öznitelikten hesaplanır, otomasyon girişimlerinin ilerlemesini izlemeye yardımcı olur. Neden önemli Otomatik faturalandırma oranının hesaplanmasını doğrudan destekler, süreç verimliliğini ölçmeye ve otomasyon projelerinin etkisini izlemeye yardımcı olur. Nereden alınır Kullanıcı Adı özniteliğinden türetilmiştir. Mantık şöyle olacaktır: IF UserName IN ('BATCH', 'SYSTEM', 'RFCUSER') İSE true DEĞİLSE false. Örnekler truefalse | |||
| Para Birimi Currency | Faturada belirtilen tutarlar için para birimi kodu. | ||
| Açıklama Bu öznitelik, USD, EUR veya JPY gibi işlemin para birimini belirtir. Toplam Fatura Tutarı gibi tüm parasal değerler için gerekli bağlamı sağlar. Çok uluslu bir kuruluştan gelen verileri analiz ederken, para birimi alanı finansal rakamları doğru bir şekilde yorumlamak ve dönüştürmek için esastır. Tutarlı raporlamaya olanak tanır ve tutarların uygun para birimi dönüştürmesi olmadan birleştirilmemesini sağlayarak yanlış finansal analize yol açmasını engeller. Neden önemli Özellikle çok para birimli bir ortamda, doğru finansal analiz sağlayarak tüm parasal değerler için gerekli bağlamı sunar. Nereden alınır SAP ECC Tablosu: VBRK, Alan: WAERK Örnekler USDEURGBPJPY | |||
| Satış Belge Numarası SalesDocumentNumber | Faturaya yol açan orijinal satış siparişinin tanımlayıcısı. | ||
| Açıklama Bu öznitelik, faturadan işlemi başlatan satış siparişine doğrudan bir bağlantı sağlar. Bu izlenebilirlik, eksiksiz bir uçtan uca Siparişten Nakde analizi için kritik öneme sahiptir. Faturalama sürecini önceki satış siparişi süreciyle bağlayarak, kuruluşlar müşteri siparişinden nakit tahsilatına kadar olan toplam döngü süresini analiz edebilir. Bu, faturalamadaki gecikmelerin satış, yerine getirme veya faturalama departmanının kendisindeki sorunlardan kaynaklanıp kaynaklanmadığını belirlemeye yardımcı olur ve sürecin daha bütünsel bir görünümünü sunar. Neden önemli Faturalama sürecini satış siparişine geri bağlayarak, gerçek bir uçtan uca Siparişten Nakde analizini sağlar ve departmanlar arası gecikmeleri belirlemeye yardımcı olur. Nereden alınır SAP ECC Tablosu: VBRP, Alan: VGBEL Örnekler 100000451000004610000047 | |||
| Satış Organizasyonu SalesOrganization | Ürün veya hizmetlerin satışından sorumlu organizasyonel birim. | ||
| Açıklama Satış Organizasyonu, SAP'de mal ve hizmet dağıtımından ve satış koşullarının müzakeresinden sorumlu bir organizasyonel birimdir. Satış ve dağıtım operasyonlarını yapılandırmak için önemli bir alandır. Process mining'de bu öznitelik, faturalama sürecinin satış yapısı açısından analiz edilmesine olanak tanır. Farklı satış organizasyonları arasındaki performans karşılaştırmasını sağlayarak, hangi bölgelerin veya iş kollarının faturalama süreçlerinde daha verimli olduğunu belirlemeye yardımcı olur ve en iyi uygulamaları standartlaştırma girişimlerini destekler. Neden önemli Farklı satış bölümleri veya bölgeler arasında performans kıyaslaması ve analizine olanak tanır, en iyi uygulamaları ve iyileştirme alanlarını belirlemeye yardımcı olur. Nereden alınır SAP ECC Tablosu: VBRK, Alan: VKORG Örnekler 1000NA01EU01AP01 | |||
| Son Veri Güncellemesi LastDataUpdate | Kaynak sistemden en son veri yenileme veya çekme işleminin zaman damgasıdır. | ||
| Açıklama Bu öznitelik, veri setinin kaynak sistemden en son güncellendiği zamanı gösterir. Kullanıcıların görüntüledikleri verilerin güncelliğini anlamalarını sağlayarak her türlü analiz için kritik bir bağlam sunar. Dashboard'larda ve raporlarda, bu zaman damgası paydaşları verinin güncelliği hakkında bilgilendirir ve çok yeni işlemlerin görünürlüğü hakkındaki beklentileri yönetmeye yardımcı olur. Genellikle veri çıkarma sürecinin sonunda oluşturulur. Neden önemli Kullanıcılara verilerin güncelliği hakkında bilgi verir, bu da analize dayalı operasyonel kararlar almak için kritik öneme sahiptir. Nereden alınır Veri çekme, dönüştürme ve yükleme (ETL) süreci sırasında oluşturulur ve saklanır. Örnekler 2023-10-27T02:00:00Z2023-10-28T02:00:00Z | |||
| Yeniden İşleme mi? IsRework | Bir aktivitenin yeniden işleme veya düzeltme adımı olup olmadığını gösteren bir işaret. | ||
| Açıklama Bu hesaplanmış öznitelik, 'Fatura Düzeltildi' veya belge iptalleri gibi yeniden işleme temsil eden aktiviteleri tanımlar. Genellikle aktivite adından veya bir faturalama belgesini iptal etmek için 'VF11' gibi düzeltmeler ve iptallerle ilişkili işlem kodlarından türetilmiş boolean bir bayraktır. Process mining'de bu bayrak, faturalama sürecindeki yeniden işleme miktarını nicelleştirmek için paha biçilmezdir. Fatura Düzeltme Oranı gibi KPI'ları doğrudan destekler ve süreç haritasındaki yeniden işleme döngülerini görselleştirmeye yardımcı olarak operasyonel maliyetleri artıran ve ödemeleri geciktiren verimsizlikleri ve kalite sorunlarını vurgular. Neden önemli Hataları düzeltmek için harcanan çabanın miktarını vurgulayarak süreç verimsizliklerini ve kalite sorunlarını nicelendirmeye yardımcı olur, doğrudan yeniden işleme KPI'larını destekler. Nereden alınır Aktivite Adı veya İşlem Kodu'ndan türetilmiştir. Örneğin, IF ActivityName = 'Fatura Düzeltildi' VEYA TransactionCode = 'VF11' İSE true DEĞİLSE false. Örnekler truefalse | |||
Siparişten Nakde - Faturalama ve Muhasebeleştirme Aktiviteleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Fatura Muhasebeleştirildi | Fatura, alacak hesapları alt defterine ve genel muhasebeye resmi olarak kaydedilir. Bu olay, faturayı yasal olarak bağlayıcı hale getirir ve müşterinin borcunu yansıtır. | ||
| Neden önemli Bu, tahsilat saatini resmi olarak başlatan kritik bir dönüm noktasıdır. Oluşturma ve kayıt arasındaki süre, nakit akışını etkileyen dahili işlem gecikmelerini vurgulayabilir. Nereden alınır BKPF tablosunda kaydedilir. Belge numarası (BELNR) için kayıt tarihi (BUDAT) bu olayı işaretler. Park edilmiş belgeler için, bu, kaydedilmiş bir belgeye dönüştürüldüğü zamandır. Yakala Fatura belgesi için BKPF tablosundaki deftere işleme tarihinden (BUDAT). Event tipi explicit | |||
| Fatura Mutabakatı Yapıldı | Başarıyla ödenmiş bir faturanın nihai durumu, açık kalemin ilgili bir ödeme veya alacak dekontu ile kapatıldığını gösterir. Fatura tamamen ödenmiş kabul edilir. | ||
| Neden önemli Bir fatura için Siparişten Nakde döngüsünün başarılı bir şekilde tamamlandığını işaret eder. Bu, genel Ortalama Fatura Döngüsü Süresi'ni ölçmek için birincil bitiş olayıdır. Nereden alınır BSEG tablosundaki fatura kaleminde mahsuplaşma belgesi (AUGBL) ve mahsuplaşma tarihi (AUGDT) alanları doldurulduğunda meydana gelir. Yakala Olay, fatura kalemleri için BSEG tablosunda kaydedilen temizleme tarihinde (AUGDT) meydana gelir. Event tipi explicit | |||
| Fatura Oluşturuldu | Sisteme faturalama belgesinin oluşturulmasını işaret eder. Bu olay, muhasebe belgesi üst tablosuna (BKPF) faturalar için belirli bir belge tipiyle yeni bir giriş oluşturulduğunda yakalanır. | ||
| Neden önemli Bu, tüm faturalama sürecinin başlangıç noktasıdır. Bu olaydan itibaren geçen sürenin analizi, Fatura Oluşturma Döngüsü Süresi'ni ölçmeye yardımcı olur ve Ortalama Tahsilat Süresi (DSO) hesaplamasının temelidir. Nereden alınır BKPF tablosunda kaydedilir. Belirli bir belge numarası (BELNR) için oluşturulma tarihi (CPUDT) ve saati (CPUTM) bu olayı işaretler. Belge tipi (BLART) onu bir fatura olarak tanımlar. Yakala Fatura belgesi için BKPF tablosundaki oluşturma zaman damgasından (CPUDT). Event tipi explicit | |||
| Müşteri Ödemesi Alındı | Müşteriden bir ödeme alınmış ve sisteme nakit makbuzu veya banka mevduatı olarak kaydedilmiştir. Bu, belirli faturaya henüz uygulanmamış ayrı bir ödeme belgesi oluşturur. | ||
| Neden önemli Bu, nakit dönüşüm döngüsünde önemli bir dönüm noktasıdır. Fatura gönderme ile ödeme alınması arasındaki süre, Ortalama Tahsilat Süresi'nin (DSO) birincil bileşenidir. Nereden alınır BKPF ve BSEG'de yeni bir belge olarak kaydedilir, genellikle 'DZ' gibi müşteri ödemesini gösteren bir belge tipiyle. Kayıt tarihi (BUDAT) olayı işaretler. Yakala BKPF'deki müşteri ödeme belgesinin deftere işleme tarihinden. Event tipi explicit | |||
| Müşteriye Fatura Gönderildi | Faturanın basılı, e-posta veya EDI gibi tanımlanmış bir çıktı kanalı aracılığıyla müşteriye gönderildiğini gösterir. Bu genellikle çıktı yönetim sistemi günlüklerinden yakalanır. | ||
| Neden önemli Bu olay, müşterinin ödeme vadesi saatini tetikleyen önemli bir dönüm noktasıdır. Buradaki gecikmeler, bir ödemenin ne zaman bekleneceğini doğrudan etkiler ve Ödeme Tahsilat Verimliliğini etkiler. Nereden alınır Faturaya karşılık gelen çıktı türü için mesaj durumu tablosundaki (NAST) işlem tarihi ve saatinden çıkarılabilir. Yakala NAST tablosundaki işlem durumu '1' (başarıyla işlendi) olan girişten çıkarılır. Event tipi inferred | |||
| Fatura Düzeltildi | İlk faturanın yanlış olduğu tespit edildikten sonra iptal edildiği bir yeniden işleme aktivitesini temsil eder. Bu, orijinal faturayla bağlantılı iptal belgeleri tespit edilerek yakalanır. | ||
| Neden önemli Süreç verimsizliklerini ve kalite sorunlarını vurgular. Yüksek düzeltme sıklığı, üst akış satış veya faturalama verilerindeki sorunlara işaret ederek Fatura Yeniden İşleme ve Hata Oranları Dashboard'unu destekler. Nereden alınır BKPF-STBLG'nin orijinal belgeyi işaret ettiği bir iptal belgesi bulunarak belirlenir. Bu iptal belgesinin oluşturulması olaydır. Yakala Bir iptal belgesi oluşturulduğunda (örn: FB08 aracılığıyla) kaydedilir. Event tipi explicit | |||
| Fatura Onaylandı | Faturanın resmi onayını temsil eder, kaydedilmesine veya müşteriye gönderilmesine izin verir. Bu genellikle park edilmiş bir belge kaydedilmiş bir belgeye dönüştürüldüğünde çıkarılır. | ||
| Neden önemli Darboğazların yaygın bir kaynağı olan dahili onay iş akışını takip eder. Bu aktivitenin analizi, yavaş onaylayıcıları belirleyerek Fatura Onay Akışı Analizi dashboard'unu desteklemeye yardımcı olur. Nereden alınır Bir belgenin park edilmiş durumdan (VBKPF'de) deftere işlenmiş duruma (BKPF'de) geçişiyle çıkarılabilir. Alternatif olarak, bir iş akışı sistemi kullanılıyorsa, bu, iş akışı günlüklerinde açık bir olay olabilir. Yakala Park edilmiş belgenin (VBKPF) oluşturma tarihini nihai belgenin (BKPF) deftere işleme tarihiyle karşılaştırın. Event tipi inferred | |||
| Fatura Park Edildi | Fatura belgesi, genel muhasebeye kaydedilmeden önce ön durumunda kaydedilmiştir. Bu genellikle bilgilerin eksik olduğu veya nihai kayıttan önce gözden geçirme gerektirdiği durumlarda kullanılır. | ||
| Neden önemli Kayıt öncesi adımları ve olası gecikmeleri takip eder. Park edilmiş durumda uzun süre kalması, veri kalitesi sorunlarını veya ön onay sürecindeki darboğazları gösterebilir. Nereden alınır Park edilmiş belgeler VBKPF tablosunda saklanır. Daha sonra kaydedilen bir belgenin burada oluşturulması bu aktiviteyi işaret eder. Yakala FV70 gibi bir işlem kullanılarak park edilmiş bir belge kaydedildiğinde kaydedilir. Event tipi explicit | |||
| Fatura Silindi | Faturanın tahsil edilemez kabul edildiği ve ödenmemiş tutarın bir şüpheli alacak hesabına mahsup edildiği alternatif bir nihai durumdur. Bu, faturayı müşteri ödemesi olmadan kapatır. | ||
| Neden önemli Negatif bir süreç sonucunu ve gelir kaybını temsil eder. Bu olayları takip etmek, şüpheli alacak nedenlerini analiz etmeye ve kredi yönetimi politikalarını iyileştirmeye yardımcı olur. Nereden alınır Faturanın mahsuplaşma işlemi analiz edilerek çıkarılır. Mahsuplaşma belgesi belirli bir şüpheli alacak gideri genel muhasebe hesabına kaydedilirse, fatura silinmiş kabul edilir. Yakala Mahsuplaşma işlemi, belirlenmiş bir şüpheli alacak genel muhasebe hesabına kayıt yapmayı içerdiğinde çıkarılır. Event tipi inferred | |||
| Fatura Vadesi Doldu | Fatura ödemesinin ödeme koşullarına göre resmi olarak vadesinin geldiği günü işaretleyen hesaplanmış bir olaydır. Bir kullanıcı veya sistem tarafından gerçekleştirilen bir aktivite değil, kritik bir zaman noktasıdır. | ||
| Neden önemli Ödeme davranışını ve uyumluluğu analiz etmek için esastır. Zamanında yapılan ödemelerle gecikmiş ödemeleri belirlemek ve Zamanında Ödeme Oranı KPI'ını hesaplamak için temel oluşturur. Nereden alınır Mevcut tarihin net vade tarihiyle karşılaştırılmasıyla elde edilir. Vade tarihi, BSEG-ZFBDT alanında bulunur veya temel tarih ve ödeme koşullarından hesaplanır. Yakala Sistem tarihini, fatura kalemindeki net vade tarihi alanı (BSEG) ile karşılaştırın. Event tipi calculated | |||
| İhtilaf Vakası Oluşturuldu | Faturaya karşı, genellikle müşteri şikayetleri nedeniyle resmi bir ihtilaf kaydedilmiştir. Bu, SAP Dispute Management sisteminde kayıt altına alınır. | ||
| Neden önemli Gecikmeli ödeme riski taşıyan faturaları belirler ve müşteri memnuniyetsizliğine neden olan temel sorunları vurgular. Önemli bir istisna yönetimi sürecinin başlangıcını işaret eder. Nereden alınır Faturanın muhasebe belgesine bağlı ihtilaf durumu tablosunda (UDM_CASE) bir durumun oluşturulmasından yakalanır. Yakala Bir kullanıcı UDM_DISPUTE işlemi aracılığıyla bir anlaşmazlık durumu oluşturduğunda kaydedilir. Event tipi explicit | |||
| Ödeme Faturaya Uygulandı | Alınan müşteri ödemesi belirli açık faturayla eşleştirilmiş ve uygulanmış, kalem mahsuplaşma için işaretlenmiştir. Bu, ödemeyi borca bağlayan mutabakat adımıdır. | ||
| Neden önemli Bu aktivite, Nakit Uygulama Döngüsü Süresi'ni ölçmek için kritik öneme sahiptir. Nakit uygulamasındaki gecikmeler, gerçek alacak hesapları durumunu yanlış gösterebilir ve mevcut nakiti gizleyebilir. Nereden alınır Fatura kalemindeki mahsuplaşma alanlarını dolduran F-32 gibi mahsuplaşma işleminden çıkarılır. Olay zaman damgası mahsuplaşma tarihidir. Yakala Fatura kalem tablosunda (BSEG) mahsuplaşma tarihinin (AUGDT) doldurulmasından çıkarılır. Event tipi inferred | |||
| Ödeme Hatırlatması Gönderildi | Sistem, vadesi geçmiş bir fatura için müşteriye bir ödeme ihtar bildirimi veya ödeme hatırlatıcısı oluşturmuş ve göndermiştir. Bu, ödeme ihtar geçmişi günlüklerinden yakalanır. | ||
| Neden önemli Tahsilat stratejisinin etkinliğini değerlendirmeye yardımcı olur. Hatırlatmadan ödeme alınmasına kadar geçen sürenin analizi, Ödeme Hatırlatma Etkinliği KPI'ı için kilit öneme sahiptir. Nereden alınır Ödeme ihtar çalıştırması (F150 İşlemi) tarafından oluşturulan ödeme ihtar veri tablolarında, özellikle MHNK (Ödeme ihtar veri başlığı) ve MHND'de (Ödeme ihtar veri kalemleri) kaydedilir. Yakala Vadesi geçmiş kalem için bir ödeme ihtar çalıştırması (F150) yürütüldüğünde kaydedilir. Event tipi explicit | |||
Veri Çekim Kılavuzları
Adımlar
- ABAP Düzenleyiciye Erişin: SAP ECC sisteminize giriş yapın.
SE38işlem kodunu kullanarak ABAP Düzenleyiciye gidin. - Program Oluşturun: Program alanına yeni programınız için bir ad girin, örneğin
Z_PM_O2C_INVOICE_EXTRACTve Oluştur düğmesine tıklayın. Açıklayıcı bir başlık sağlayın ve program Türünü 'Yürütülebilir Program' olarak ayarlayın. - Seçim Ekranını Tanımlayın: Program kaynak kodunda, seçim ekranı parametrelerini tanımlayın. Bu, kullanıcıların veri çekimi için verileri filtrelemesine olanak tanır. Anahtar parametreler arasında belge oluşturma tarih aralığı (
S_ERDAT), Şirket Kodu (S_BUKRS) ve Fatura Belge Türü (S_VBTYP) bulunur. - Veri Yapılarını Tanımlayın: Nihai olay günlüğü verilerini tutacak bir dahili tablo yapısı bildirin. Bu yapı,
InvoiceNumber,ActivityName,EventTimealanlarını veUserName,BillingDocumentType,CustomerNumber,CompanyCodeveTotalInvoiceAmountgibi önerilen öznitelikleri içermelidir. - Veri Seçim Mantığını Uygulayın: Veri seçmek için temel ABAP mantığını yazın. İlk olarak, kullanıcının seçim ekranı girişlerine göre birincil faturalama belgelerini
VBRKveBKPFtablolarından seçin. Bunları geçici bir dahili tabloda saklayın. - Aktiviteleri Çıkarın: İlk faturalama belgeleri listesinde döngü yapın. Her belge için, gerekli 13 aktiviteyi tanımlamak üzere çeşitli tablolardan sonraki seçimleri gerçekleştirin. Örneğin, 'Müşteriye Fatura Gönderildi' olayları için
NASTtablosunu, mutabakat bilgileri ('Fatura Kapatıldı', 'Ödeme Uygulandı') içinBSEG'yi ve hatırlatma verileri ('Ödeme Hatırlatıcısı Gönderildi') içinMHNK'yi sorgulayın. - Olay Günlüğü Tablosunu Oluşturun: Önceki adımda bulunan her aktivite için, nihai olay günlüğü dahili tablonuza yeni bir kayıt doldurun.
InvoiceNumber,ActivityName,EventTimeve diğer özniteliklerin kaynak tablolardan doğru şekilde eşleştirildiğinden emin olun. - Uygulama Sunucusuna Yazın: Döngü tamamlandığında ve nihai olay günlüğü tablosu tamamen doldurulduğunda, dahili tablonun içeriğini SAP uygulama sunucusundaki düz bir dosyaya yazmak için
OPEN DATASET,LOOP AT... TRANSFERveCLOSE DATASETifadelerini kullanın. Erişilebilir mantıksal bir dosya yolu belirtin. - Dosyayı Alın:
AL11işlem kodunu kullanarak uygulama sunucusu dizinlerinde gezinin ve oluşturulan dosyayı bulun. Dosyayı sunucudan yerel makinenize veya paylaşılan bir ağ konumuna indirmek için SAP Basis ekibinizle koordinasyon sağlayın. - Son Biçimlendirme: İndirilen dosyayı açın ve bir başlık satırı içeren virgülle ayrılmış değerler (CSV) dosyası olduğunu onaylayın. Dosyanın ProcessMind'e yüklenmek üzere uyumlu olması için UTF-8 kodlamasıyla kaydedildiğinden emin olun.
Konfigürasyon
- Önkoşullar: ABAP programları oluşturma ve yürütme erişimi (işlem kodu SE38). FI ve SD tablolarından (Dispute Management için
VBRK,VBRP,BKPF,BSEG,NAST,MHNKveUDM_CASE_ATTR00dahil) okuma yetkisi. - Tarih Aralığı Seçimi: Programın, genellikle belge oluşturma tarihine (VBRK/BKPF'deki
ERDAT) dayalı zorunlu bir tarih aralığı parametresi olmalıdır. İlk veri çekimi için, veri kümesini yönetilebilir tutmak amacıyla 3-6 aylık bir aralık önerilir. - Anahtar Filtreler: Veri çekimi kapsamını sınırlamak için her zaman
CompanyCode(BUKRS) tarafından filtreleyin. Ayrıca, yalnızca ilgili fatura türlerini (örneğin, standart muhasebe faturaları için 'RV') dahil etmek ve kredi notları veya diğer belgeleri hariç tutmak için Faturalama Belge Türüne (VBRK'denVBTYP) veya Muhasebe Belge Türüne (BKPF'denBLART) göre filtreleme yapmanız şiddetle tavsiye edilir. - Performans Dikkat Edilmesi Gerekenler: Birkaç aydan daha fazla veriyi kapsayan büyük veri kümeleri için, oturum zaman aşımlarını önlemek amacıyla program bir arka plan işi olarak yürütülmelidir. ABAP mantığı, dizine alınmış tablo okumalarını kullanmak ve içlerinde veritabanı seçimleri olan iç içe döngülerden kaçınmak için optimize edilmelidir. Verileri önce dahili tablolara seçmek ve ardından bunları işlemek tercih edilen yaklaşımdır.
- Çıktı Dosyası Yapılandırması: ABAP kodu, çıktı dosyasının uygulama sunucusundaki yolunu ve CSV dosyası için ayırıcıyı (genellikle virgül veya noktalı virgül) belirtmelidir. Yolun genel olarak yapılandırılmış ve erişilebilir bir dizin olduğundan emin olun.
a Örnek Sorgu abap
REPORT Z_PM_O2C_INVOICE_EXTRACT.
*&---------------------------------------------------------------------*
*& Tables
*&---------------------------------------------------------------------*
TABLES: VBRK, BKPF.
*&---------------------------------------------------------------------*
*& Type Definitions for Event Log Output
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_event_log,
invoicenumber TYPE vbrk-vbeln,
activityname TYPE string,
eventtime TYPE timestamp,
username TYPE xubname,
billingdocumenttype TYPE vbrk-vbtyp,
customernumber TYPE vbrk-kunnr,
companycode TYPE vbrk-bukrs,
totalinvoiceamount TYPE vbrk-netwr,
END OF ty_event_log.
*&---------------------------------------------------------------------*
*& Data Declarations
*&---------------------------------------------------------------------*
DATA: gt_event_log TYPE TABLE OF ty_event_log,
gs_event_log TYPE ty_event_log.
DATA: BEGIN OF gs_invoice,
vbeln TYPE vbrk-vbeln, " SD Doc (Invoice)
awkey TYPE bkpf-awkey, " Accounting Doc Reference Key
bukrs TYPE vbrk-bukrs, " Company Code
kunnr TYPE vbrk-kunnr, " Customer
vbtyp TYPE vbrk-vbtyp, " SD Doc Type
netwr TYPE vbrk-netwr, " Net Value
waerk TYPE vbrk-waerk, " Currency
fkdat TYPE vbrk-fkdat, " Billing Date
erdat TYPE vbrk-erdat, " Creation Date
erzet TYPE vbrk-erzet, " Creation Time
ernam TYPE vbrk-ernam, " Creator
belnr TYPE bkpf-belnr, " Acct Doc
gjahr TYPE bkpf-gjahr, " Fiscal Year
cpudt TYPE bkpf-cpudt, " Acct Doc Entry Date
cputm TYPE bkpf-cputm, " Acct Doc Entry Time
usnam TYPE bkpf-usnam, " Acct Doc User
stblg TYPE bkpf-stblg, " Reversal Doc
END OF gs_invoice.
DATA: gt_invoices LIKE TABLE OF gs_invoice.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: s_erdat FOR vbrk-erdat OBLIGATORY,
s_bukrs FOR vbrk-bukrs OBLIGATORY,
s_vbtyp FOR vbrk-vbtyp.
PARAMETERS: p_path TYPE string DEFAULT '/usr/sap/trans/tmp/invoice_extract.csv' OBLIGATORY.
*&---------------------------------------------------------------------*
*& Main Processing Block
*&---------------------------------------------------------------------*
START-OF-SELECTION.
" 1. Select base set of invoices
SELECT vbrk~vbeln, vbrk~bukrs, vbrk~kunnr, vbrk~vbtyp, vbrk~netwr, vbrk~waerk,
vbrk~fkdat, vbrk~erdat, vbrk~erzet, vbrk~ernam,
bkpf~belnr, bkpf~gjahr, bkpf~cpudt, bkpf~cputm, bkpf~usnam, bkpf~stblg, bkpf~awkey
INTO CORRESPONDING FIELDS OF TABLE gt_invoices
FROM vbrk
INNER JOIN bkpf ON bkpf~awkey = vbrk~vbeln AND bkpf~awtyp = 'VBRK'
WHERE vbrk~erdat IN s_erdat
AND vbrk~bukrs IN s_bukrs
AND vbrk~vbtyp IN s_vbtyp.
IF gt_invoices IS INITIAL.
MESSAGE 'No invoices found for the selected criteria.' TYPE 'I'.
RETURN.
ENDIF.
LOOP AT gt_invoices INTO gs_invoice.
CLEAR gs_event_log.
gs_event_log-invoicenumber = gs_invoice-vbeln.
gs_event_log-billingdocumenttype = gs_invoice-vbtyp.
gs_event_log-customernumber = gs_invoice-kunnr.
gs_event_log-companycode = gs_invoice-bukrs.
gs_event_log-totalinvoiceamount = gs_invoice-netwr.
" Activity: Invoice Generated (using accounting doc creation)
gs_event_log-activityname = 'Invoice Generated'.
gs_event_log-username = gs_invoice-usnam.
CONCATENATE gs_invoice-cpudt gs_invoice-cputm INTO DATA(lv_ts_gen).
CONVERT DATE gs_invoice-cpudt TIME gs_invoice-cputm INTO TIME STAMP gs_event_log-eventtime TIME ZONE sy-zonlo.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Posted (same as generated for non-parked docs)
gs_event_log-activityname = 'Invoice Posted'.
gs_event_log-username = gs_invoice-usnam.
CONVERT DATE gs_invoice-cpudt TIME gs_invoice-cputm INTO TIME STAMP gs_event_log-eventtime TIME ZONE sy-zonlo.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Approved (inferred by posting)
gs_event_log-activityname = 'Invoice Approved'.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Sent To Customer
SELECT SINGLE addat, aduhr FROM nast
INTO (DATA(lv_nast_date), DATA(lv_nast_time))
WHERE kappl = 'V3' AND objky = gs_invoice-vbeln AND vszst > '0'.
IF sy-subrc = 0.
gs_event_log-activityname = 'Invoice Sent To Customer'.
gs_event_log-username = sy-uname.
CONVERT DATE lv_nast_date TIME lv_nast_time INTO TIME STAMP gs_event_log-eventtime TIME ZONE sy-zonlo.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Corrected / Reversed
IF gs_invoice-stblg IS NOT INITIAL.
SELECT SINGLE cpudt, cputm, usnam FROM bkpf
INTO (DATA(lv_rev_date), DATA(lv_rev_time), DATA(lv_rev_user))
WHERE belnr = gs_invoice-stblg AND gjahr = gs_invoice-gjahr.
IF sy-subrc = 0.
gs_event_log-activityname = 'Invoice Corrected'.
gs_event_log-username = lv_rev_user.
CONVERT DATE lv_rev_date TIME lv_rev_time INTO TIME STAMP gs_event_log-eventtime TIME ZONE sy-zonlo.
APPEND gs_event_log TO gt_event_log.
ENDIF.
ENDIF.
" Activity: Payment Applied, Cleared, Due Date, Written Off (from BSEG)
SELECT SINGLE augdt, augbl, zfBDT, hkont FROM bseg
INTO (DATA(lv_augdt), DATA(lv_augbl), DATA(lv_zfbdt), DATA(lv_hkont))
WHERE bukrs = gs_invoice-bukrs
AND belnr = gs_invoice-belnr
AND gjahr = gs_invoice-gjahr
AND koart = 'D'. " Customer line
IF sy-subrc = 0.
" Due Date Reached (Calculated event)
IF lv_zfbdt IS NOT INITIAL.
gs_event_log-activityname = 'Invoice Due Date Reached'.
gs_event_log-username = 'System'.
CONVERT DATE lv_zfbdt INTO TIME STAMP gs_event_log-eventtime TIME ZONE sy-zonlo.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Cleared, Applied, Write-Off
IF lv_augdt IS NOT INITIAL.
SELECT SINGLE usnam, cpudt, cputm, blart FROM bkpf
INTO (DATA(lv_clear_user), DATA(lv_clear_date), DATA(lv_clear_time), DATA(lv_clear_type))
WHERE belnr = lv_augbl AND bukrs = gs_invoice-bukrs.
IF sy-subrc = 0.
gs_event_log-username = lv_clear_user.
CONVERT DATE lv_clear_date TIME lv_clear_time INTO TIME STAMP gs_event_log-eventtime TIME ZONE sy-zonlo.
IF lv_clear_type = 'DZ'. " Standard Customer Payment
gs_event_log-activityname = 'Customer Payment Received'. APPEND gs_event_log TO gt_event_log.
gs_event_log-activityname = 'Payment Applied To Invoice'. APPEND gs_event_log TO gt_event_log.
gs_event_log-activityname = 'Invoice Cleared'. APPEND gs_event_log TO gt_event_log.
ELSE. " Assuming other clearing doc types could be write-offs
gs_event_log-activityname = 'Invoice Written Off'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
" Activity: Payment Reminder Issued (Dunning)
SELECT COUNT(*) FROM mhnk WHERE kunnr = gs_invoice-kunnr AND bukrs = gs_invoice-bukrs AND lafdn > gs_invoice-cpudt.
IF sy-subrc = 0 AND sy-dbcnt > 0.
SELECT SINGLE lafdn FROM mhnk
INTO DATA(lv_dunning_date)
WHERE kunnr = gs_invoice-kunnr AND bukrs = gs_invoice-bukrs AND lafdn > gs_invoice-cpudt.
gs_event_log-activityname = 'Payment Reminder Issued'.
gs_event_log-username = 'System'.
CONVERT DATE lv_dunning_date INTO TIME STAMP gs_event_log-eventtime TIME ZONE sy-zonlo.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Parked (Example from VBKPF, may require system specific logic)
SELECT SINGLE cpudt, cputm, usnam FROM vbkpf
INTO (DATA(lv_park_date), DATA(lv_park_time), DATA(lv_park_user))
WHERE awkey = gs_invoice-vbeln AND awsys = 'LOG' AND bstat = 'V'.
IF sy-subrc = 0.
gs_event_log-activityname = 'Invoice Parked'.
gs_event_log-username = lv_park_user.
CONVERT DATE lv_park_date TIME lv_park_time INTO TIME STAMP gs_event_log-eventtime TIME ZONE sy-zonlo.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Dispute Case Created (Requires Dispute Management module)
SELECT SINGLE create_date, create_time, create_user FROM udm_case_attr00
INTO (DATA(lv_disp_date), DATA(lv_disp_time), DATA(lv_disp_user))
WHERE [Your logic to link invoice to dispute case, e.g., via a custom field or object link].
IF sy-subrc = 0.
gs_event_log-activityname = 'Dispute Case Created'.
gs_event_log-username = lv_disp_user.
CONVERT DATE lv_disp_date TIME lv_disp_time INTO TIME STAMP gs_event_log-eventtime TIME ZONE sy-zonlo.
APPEND gs_event_log TO gt_event_log.
ENDIF.
ENDLOOP.
*&---------------------------------------------------------------------*
*& Write data to file
*&---------------------------------------------------------------------*
OPEN DATASET p_path FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'Error opening file.' TYPE 'E'.
ENDIF.
" Header
DATA(lv_header) = 'InvoiceNumber,ActivityName,EventTime,UserName,BillingDocumentType,CustomerNumber,CompanyCode,TotalInvoiceAmount'.
TRANSFER lv_header TO p_path.
LOOP AT gt_event_log INTO gs_event_log.
DATA(lv_line) = |
{ gs_event_log-invoicenumber }|
,{ gs_event_log-activityname }|
,{ gs_event_log-eventtime }|
,{ gs_event_log-username }|
,{ gs_event_log-billingdocumenttype }|
,{ gs_event_log-customernumber }|
,{ gs_event_log-companycode }|
,{ gs_event_log-totalinvoiceamount }|.
TRANSFER lv_line TO p_path.
ENDLOOP.
CLOSE DATASET p_path.
WRITE: 'Extraction complete. File created at:', p_path. Adımlar
- Önkoşullar ve Erişim: Gerekli SAP ECC tablolarına (VBRK, BKPF, BSAD, NAST, CDHDR, CDPOS, SCASE ve sorguda belirtilen diğerleri dahil) salt okunur erişimi olan bir veritabanı kullanıcısına sahip olduğunuzdan emin olun. Bu erişim seviyesi genellikle yalnızca sistem yöneticilerine veya belirli veri analizi ekiplerine verilir.
- Veritabanına Bağlanın: SAP ECC veritabanına bir bağlantı kurmak için DBeaver, Oracle SQL Developer veya Microsoft SQL Server Management Studio gibi standart bir SQL istemci aracı kullanın.
- SQL Sorgusunu Hazırlayın: 'Sorgu' bölümünde verilen SQL sorgusunun tamamını SQL istemcinizin düzenleyicisine kopyalayın.
- Yer Tutucuları Özelleştirin: Sorgu, ortamınıza özel değerlerle değiştirmeniz gereken birkaç yer tutucu içerir. Bunlar:
'YYYYMMDD': Tüm örnekleri istediğiniz analiz dönemi için başlangıç ve bitiş tarihleriyle değiştirin. Verileri yönetilebilir bir zaman dilimine göre filtrelemek çok önemlidir.'XXXX': Analiz etmek istediğiniz belirli Şirket Kodu(kodlarını) ile değiştirin.[Fatura Çıktı Türünüz]: Müşterilere fatura göndermek için kullanılan çıktı türü kodunu belirtin, örneğin 'RD00'.[Kötü Borç G/L Hesabınız]: Tahsil edilemeyen faturaları silmek için kullanılan Genel Muhasebe hesap numarasını girin.[İhtilaf Durumu Fatura Özniteliğiniz]: Fatura numarasını Uyuşmazlık Yönetimi yapılandırmanızda saklamak için kullanılan öznitelik adını belirtin, örneğin 'INVOICE_ID'.
- Zaman Damgası Fonksiyonlarını Gözden Geçirin: Sorgu, genel bir
CAST(CONCAT(date_field, time_field) AS TIMESTAMP)sözdizimi kullanır. Bunu, örneğin Oracle içinTO_TIMESTAMPveya SQL Server içinDATETIMEFROMPARTSkullanarak belirli veritabanı sisteminizle eşleşecek şekilde ayarlamanız gerekebilir. - Sorguyu Çalıştırın: Değiştirilen sorguyu çalıştırın. Yürütme, SAP tablolarınızın boyutuna ve seçilen tarih aralığına bağlı olarak önemli miktarda zaman alabilir.
- Sonuçları İnceleyin: Sorgu tamamlandıktan sonra, beklenen sütunları (InvoiceNumber, ActivityName, EventTime ve önerilen öznitelikler) içerdiğinden emin olmak için çıktıyı gözden geçirin. Herhangi bir hata veya boş sonuç olup olmadığını kontrol edin.
- CSV'ye Aktarın: SQL istemcinizden tüm sonuç kümesini bir CSV dosyasına aktarın. Özel karakterlerle ilgili sorunları önlemek için dosyanın UTF-8 kodlaması kullandığından emin olun.
- Yüklemeye Hazırlanın: Bir process mining aracına yüklemeden önce, CSV sütun başlıklarının, örneğin
InvoiceNumber,ActivityName,EventTime,UserNamegibi gerekli öznitelik adlarıyla tam olarak eşleştiğini onaylayın.
Konfigürasyon
- Veritabanı Bağlantısı: Temel SAP ECC veritabanına doğrudan, salt okunur bir SQL bağlantısı gereklidir. Bu yöntem, SAP uygulama katmanını tamamen atlar.
- Yetkilendirme: Veritabanı kullanıcısının, FI, SD ve potansiyel olarak FSCM modüllerini kapsayan sorguda kullanılan tüm tablolarda
SELECTyetkisine sahip olması gerekir. - Tarih Aralığı: Makul performans ve veri hacmi sağlamak için sorguyu belirli bir tarih aralığına göre filtrelemek kritik öneme sahiptir. 3 ila 6 aylık bir dönemle başlamanızı öneririz. Tarih filtresi yer tutucuları
'YYYYMMDD'sorgunun birden fazla yerinde ayarlanmalıdır. - Şirket Kodu Filtresi: Sorgu, Şirket Kodu (
BUKRS) tarafından filtrelenmek üzere tasarlanmıştır. Her seferinde bir veya birkaç şirket kodunu analiz etmek standart bir uygulamadır. - Belge Tipi Yapılandırması: Fatura düzeltmeleri, silmeler veya gönderilen belgeler gibi olayları tanımlama mantığı, standart SAP yapılandırmalarına bağlıdır. Kuruluşunuz bu süreçler için özel belge türleri (
BLART), çıktı türleri (KSCHL) veya G/L hesapları kullanıyorsa sorguyu ayarlamanız gerekebilir. - Performans Dikkat Edilmesi Gerekenler: Bu sorguyu canlı bir üretim SAP sistemine karşı yürütmek önemli kaynaklar tüketebilir ve operasyonel performansı etkileyebilir. Büyük veri çekimlerini yoğun olmayan saatlerde veya veritabanının özel bir raporlama kopyasına karşı çalıştırmanız şiddetle tavsiye edilir.
a Örnek Sorgu sql
WITH InvoiceBase AS (
SELECT
VBRK.VBELN AS InvoiceNumber,
VBRK.FKART AS BillingDocumentType,
VBRK.KUNRG AS CustomerNumber,
VBRK.BUKRS AS CompanyCode,
VBRK.NETWR AS TotalInvoiceAmount,
VBRK.ERNAM AS CreatorName,
VBRK.ERDAT AS CreationDate,
VBRK.ERZET AS CreationTime
FROM VBRK
WHERE VBRK.ERDAT BETWEEN '20230101' AND '20231231' -- Filter by Invoice Creation Date
AND VBRK.BUKRS IN ('1000') -- Filter by Company Code
AND VBRK.FKART NOT IN ('S1', 'S2') -- Exclude cancelled invoices
)
-- 1. Invoice Generated
SELECT
ib.InvoiceNumber,
'Invoice Generated' AS ActivityName,
CAST(CONCAT(ib.CreationDate, ib.CreationTime) AS TIMESTAMP) AS EventTime,
ib.CreatorName AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
ib.CompanyCode,
ib.TotalInvoiceAmount
FROM InvoiceBase ib
UNION ALL
-- 2. Invoice Parked
SELECT
SUBSTRING(b.AWKEY, 1, 10) AS InvoiceNumber,
'Invoice Parked' AS ActivityName,
CAST(CONCAT(b.CPUDT, b.CPUTM) AS TIMESTAMP) AS EventTime,
b.USNAM AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
b.BUKRS AS CompanyCode,
ib.TotalInvoiceAmount
FROM BKPF b
JOIN InvoiceBase ib ON SUBSTRING(b.AWKEY, 1, 10) = ib.InvoiceNumber
WHERE b.AWTYP = 'VBRK' AND b.BSTAT = 'V' AND b.CPUDT BETWEEN '20230101' AND '20231231'
UNION ALL
-- 3. Invoice Posted
SELECT
SUBSTRING(b.AWKEY, 1, 10) AS InvoiceNumber,
'Invoice Posted' AS ActivityName,
CAST(CONCAT(b.CPUDT, b.CPUTM) AS TIMESTAMP) AS EventTime,
b.USNAM AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
b.BUKRS AS CompanyCode,
ib.TotalInvoiceAmount
FROM BKPF b
JOIN InvoiceBase ib ON SUBSTRING(b.AWKEY, 1, 10) = ib.InvoiceNumber
WHERE b.AWTYP = 'VBRK' AND b.BSTAT = '' AND b.CPUDT BETWEEN '20230101' AND '20231231'
UNION ALL
-- 4. Invoice Approved (from Parked to Posted)
SELECT
SUBSTRING(h.OBJECTID, 4, 10) AS InvoiceNumber,
'Invoice Approved' as ActivityName,
CAST(CONCAT(h.UDATE, h.UTIME) AS TIMESTAMP) AS EventTime,
h.USERNAME AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
ib.CompanyCode,
ib.TotalInvoiceAmount
FROM CDHDR h
JOIN CDPOS p ON h.MANDANT = p.MANDANT AND h.OBJECTCLAS = p.OBJECTCLAS AND h.OBJECTID = p.OBJECTID AND h.CHANGENR = p.CHANGENR
JOIN InvoiceBase ib ON SUBSTRING(h.OBJECTID, 4, 10) = ib.InvoiceNumber
WHERE h.OBJECTCLAS = 'BELEGV'
AND p.TABNAME = 'BKPF'
AND p.FNAME = 'BSTAT'
AND p.VALUE_OLD = 'V'
AND p.VALUE_NEW = ' '
AND h.UDATE BETWEEN '20230101' AND '20231231'
UNION ALL
-- 5. Invoice Sent To Customer
SELECT
n.OBJKY AS InvoiceNumber,
'Invoice Sent To Customer' AS ActivityName,
CAST(CONCAT(n.DATVR, n.UHRVR) AS TIMESTAMP) AS EventTime,
n.VSTAT AS UserName, -- User who processed is not directly available, using processing status as a proxy
ib.BillingDocumentType,
ib.CustomerNumber,
ib.CompanyCode,
ib.TotalInvoiceAmount
FROM NAST n
JOIN InvoiceBase ib ON n.OBJKY = ib.InvoiceNumber
WHERE n.KSCHL = '[Your Invoice Output Type]' -- E.g., 'RD00'
AND n.VSTAT = '1' -- Processed successfully
AND n.DATVR BETWEEN '20230101' AND '20231231'
UNION ALL
-- 6. Invoice Corrected (Reversed)
SELECT
SUBSTRING(orig_doc.AWKEY, 1, 10) AS InvoiceNumber,
'Invoice Corrected' AS ActivityName,
CAST(CONCAT(rev_doc.CPUDT, rev_doc.CPUTM) AS TIMESTAMP) AS EventTime,
rev_doc.USNAM AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
rev_doc.BUKRS AS CompanyCode,
ib.TotalInvoiceAmount
FROM BKPF orig_doc
JOIN BKPF rev_doc ON orig_doc.STBLG = rev_doc.BELNR AND orig_doc.BUKRS = rev_doc.BUKRS AND orig_doc.GJAHR = rev_doc.STJAH
JOIN InvoiceBase ib ON SUBSTRING(orig_doc.AWKEY, 1, 10) = ib.InvoiceNumber
WHERE orig_doc.AWTYP = 'VBRK' AND orig_doc.STBLG IS NOT NULL AND rev_doc.CPUDT BETWEEN '20230101' AND '20231231'
UNION ALL
-- 7. Invoice Due Date Reached
SELECT
SUBSTRING(b.AWKEY, 1, 10) AS InvoiceNumber,
'Invoice Due Date Reached' AS ActivityName,
CAST(CONCAT(bs.ZFBDT, '000000') AS TIMESTAMP) AS EventTime,
'System' AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
b.BUKRS AS CompanyCode,
ib.TotalInvoiceAmount
FROM BSEG bs
JOIN BKPF b ON bs.MANDT = b.MANDT AND bs.BUKRS = b.BUKRS AND bs.BELNR = b.BELNR AND bs.GJAHR = b.GJAHR
JOIN InvoiceBase ib ON SUBSTRING(b.AWKEY, 1, 10) = ib.InvoiceNumber
WHERE b.AWTYP = 'VBRK' AND bs.KOART = 'D' AND bs.ZFBDT BETWEEN '20230101' AND '20231231'
UNION ALL
-- 8. Payment Reminder Issued
SELECT
SUBSTRING(b.AWKEY, 1, 10) AS InvoiceNumber,
'Payment Reminder Issued' AS ActivityName,
CAST(CONCAT(h.LAUFD, '000000') AS TIMESTAMP) AS EventTime,
h.LAUFI AS UserName, -- Dunning Run ID
ib.BillingDocumentType,
ib.CustomerNumber,
d.BUKRS AS CompanyCode,
ib.TotalInvoiceAmount
FROM MHND d
JOIN MHNK h ON d.MANDT = h.MANDT AND d.LAUFD = h.LAUFD AND d.LAUFI = h.LAUFI
JOIN BKPF b ON d.MANDT = b.MANDT AND d.BUKRS = b.BUKRS AND d.BELNR = b.BELNR AND d.GJAHR = b.GJAHR
JOIN InvoiceBase ib ON SUBSTRING(b.AWKEY, 1, 10) = ib.InvoiceNumber
WHERE h.LAUFD BETWEEN '20230101' AND '20231231'
UNION ALL
-- 9. Dispute Case Created
SELECT
attr.ATTR_VALUE AS InvoiceNumber,
'Dispute Case Created' AS ActivityName,
sc.CREATE_TIME AS EventTime,
sc.CREATED_BY AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
ib.CompanyCode,
ib.TotalInvoiceAmount
FROM SCMG_T_CASE_ATTR attr
JOIN SCASE sc ON attr.CASE_GUID = sc.CASE_GUID
JOIN InvoiceBase ib ON attr.ATTR_VALUE = ib.InvoiceNumber
WHERE attr.ATTR_NAME = '[Your Dispute Case Invoice Attribute]' -- e.g., 'INVOICE_ID'
AND CAST(sc.CREATE_TIME AS DATE) BETWEEN '20230101' AND '20231231'
UNION ALL
-- 10, 11, 12. Clearing Events (Payment, Clearing, Write-Off)
SELECT
InvoiceNumber,
ActivityName,
EventTime,
UserName,
BillingDocumentType,
CustomerNumber,
CompanyCode,
TotalInvoiceAmount
FROM (
SELECT
bsad.XBLNR AS InvoiceNumber,
CASE
WHEN clearing_item.HKONT = '[Your Bad Debt G/L Account]' THEN 'Invoice Written Off'
ELSE 'Customer Payment Received'
END AS ActivityName,
CAST(CONCAT(clearing_doc.CPUDT, clearing_doc.CPUTM) AS TIMESTAMP) AS EventTime,
clearing_doc.USNAM AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
bsad.BUKRS AS CompanyCode,
ib.TotalInvoiceAmount
FROM BSAD bsad
JOIN InvoiceBase ib ON bsad.XBLNR = ib.InvoiceNumber
JOIN BKPF clearing_doc ON bsad.MANDT = clearing_doc.MANDT AND bsad.BUKRS = clearing_doc.BUKRS AND bsad.AUGBL = clearing_doc.BELNR AND bsad.AUGGJ = clearing_doc.GJAHR
LEFT JOIN BSEG clearing_item ON clearing_doc.MANDT = clearing_item.MANDT AND clearing_doc.BUKRS = clearing_item.BUKRS AND clearing_doc.BELNR = clearing_item.BELNR AND clearing_doc.GJAHR = clearing_item.GJAHR AND clearing_item.HKONT = '[Your Bad Debt G/L Account]' -- e.g. '148000'
WHERE bsad.AUGDT BETWEEN '20230101' AND '20231231' AND bsad.UMSKZ = ''
UNION ALL
SELECT
bsad.XBLNR AS InvoiceNumber,
'Payment Applied To Invoice' AS ActivityName,
CAST(CONCAT(bsad.AUGDT, '000000') AS TIMESTAMP) AS EventTime,
clearing_doc.USNAM AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
bsad.BUKRS AS CompanyCode,
ib.TotalInvoiceAmount
FROM BSAD bsad
JOIN InvoiceBase ib ON bsad.XBLNR = ib.InvoiceNumber
JOIN BKPF clearing_doc ON bsad.MANDT = clearing_doc.MANDT AND bsad.BUKRS = clearing_doc.BUKRS AND bsad.AUGBL = clearing_doc.BELNR AND bsad.AUGGJ = clearing_doc.GJAHR
WHERE bsad.AUGDT BETWEEN '20230101' AND '20231231' AND bsad.UMSKZ = ''
UNION ALL
SELECT
bsad.XBLNR AS InvoiceNumber,
'Invoice Cleared' AS ActivityName,
CAST(CONCAT(bsad.AUGDT, '235959') AS TIMESTAMP) AS EventTime, -- Add time to separate from 'Payment Applied'
clearing_doc.USNAM AS UserName,
ib.BillingDocumentType,
ib.CustomerNumber,
bsad.BUKRS AS CompanyCode,
ib.TotalInvoiceAmount
FROM BSAD bsad
JOIN InvoiceBase ib ON bsad.XBLNR = ib.InvoiceNumber
JOIN BKPF clearing_doc ON bsad.MANDT = clearing_doc.MANDT AND bsad.BUKRS = clearing_doc.BUKRS AND bsad.AUGBL = clearing_doc.BELNR AND bsad.AUGGJ = clearing_doc.GJAHR
WHERE bsad.AUGDT BETWEEN '20230101' AND '20231231' AND bsad.UMSKZ = ''
) AS ClearingEvents Adımlar
- Önkoşullar: Sertifikalı bir SAP bağlantı elemanı olan lisanslı bir ETL aracına (örn. SAP Bağlantı Elemanı ile Informatica PowerCenter, SAP Bağlantı Elemanı ile Talend vb.) sahip olduğunuzdan emin olun. Gerekli finansal, satış ve sistem tablolarından (BKPF, BSEG, VBRK, NAST, MHNK, UDM_CASE_ATTR00, CDHDR, CDPOS) okumak için gerekli yetkilere sahip SAP kullanıcı kimlik bilgileriniz olduğunu doğrulayın.
- SAP Bağlantısı Kurun: ETL aracınızda, SAP ECC sisteminize yeni bir bağlantı oluşturun. Uygulama sunucusu, sistem numarası, istemci, kullanıcı ve parola dahil olmak üzere bağlantı detaylarını yapılandırın. Bağlantının başarılı olduğundan emin olmak için test edin.
- Veri Kaynaklarını Tanımlayın: Çıkarılacak her aktivite için, ETL işinizde ilgili SAP tablosunu/tablolarını bir veri kaynağı olarak tanımlayın. Örneğin, fatura oluşturma için VBRK'yı, deftere işleme olayları için BKPF'yi ve müşteri iletişimi için NAST'ı ekleyin.
- Her Aktivite İçin Çıkarma Mantığı Oluşturun: Gerekli 13 aktivitenin her biri için ayrı bir veri akışı veya dönüşüm oluşturun. Her akışta, ilgili kayıtları seçmek için filtreler uygulayın. Örneğin, Şirket Kodu (BUKRS), belge türü (BLART) ve belirli bir tarih aralığına (örn. oluşturma tarihi ERDAT) göre filtreleme yapın.
- Alanları Eşleştirin ve Verileri Dönüştürün: Her veri akışında, kaynak SAP tablo alanlarını hedef olay günlüğü yapısına eşleştirin: InvoiceNumber, ActivityName, EventTime, UserName ve diğer önerilen öznitelikler. Her akış için 'ActivityName'i sabit kodlamak ve tarihleri ve zaman damgalarını doğru biçimlendirmek için dönüşüm mantığını kullanın.
- Karmaşık Aktiviteleri Yönetin: 'Fatura Vadesi Geldi' gibi hesaplanmış olaylar için, vade tarihini hesaplamak için Temel Ödeme Tarihi (ZFBDT) ve ödeme koşulları mantığını kullanın veya basitçe net vade tarihini (NETDT) BSEG'den çekin. 'Fatura Onaylandı' gibi değişiklik günlüklerinden türetilen olaylar için, belge numarası ve tarihine göre BKPF ve CDHDR/CDPOS gibi tabloları birleştirmeniz gerekebilir.
- Aktivite Verilerini Birleştirin: Tüm 13 bireysel veri akışının çıktılarını tek bir veri kümesinde birleştirmek için ETL aracınızdaki bir 'Union' veya 'Merge' dönüşümünü kullanın. Birleştirmeden önce tüm akışlarda sütun adlarının ve veri türlerinin tutarlı olduğundan emin olun.
- Hedef Konumu Yapılandırın: Olay günlüğünüz için nihai çıktı hedefini tanımlayın. Bu, düz bir dosya (CSV), bir veritabanı tablosu veya bir hazırlık alanına doğrudan bağlantı olabilir.
- Çekim Planını Ayarlayın: Çekim için tarih aralığı parametrelerini yapılandırın. İlk yükleme için 6-12 aylık veri çekebilirsiniz. Sonraki delta yüklemeleri için, işi son çalıştırma tarihinden itibaren veri çekecek şekilde yapılandırın.
- Yürütün ve Dışa Aktarın: ETL işini çalıştırın. Tamamlandıktan sonra, çıktı dosyasının gerekli formatı karşıladığından emin olmak için inceleyin. Nihai çıktı, her satırın benzersiz bir olayı temsil ettiği, ProcessMind'e yüklemeye hazır tek bir CSV dosyası olmalıdır.
Konfigürasyon
- SAP Bağlantısı: Hedef SAP ECC sistemine bir uygulama sunucusu bağlantısı gereklidir. SAP kullanıcısının, VBRK, BKPF, BSEG, NAST gibi tablolara ve sorguda belirtilen diğer tablolara RFC erişimi ve yetkilendirmesi olmalıdır.
- ETL Aracı Lisansı: Ticari ETL aracı ve belirli SAP bağlayıcısı için geçerli bir lisans zorunludur.
- Tarih Aralığı: Aşırı sistem yüküne neden olmadan analiz için temsili bir örnek sağlamak amacıyla 3 ila 6 aylık bir süre için veri çıkarılması önerilir. Başlangıç ve bitiş tarihleri için yapılandırılabilir bir parametre kullanın.
- Anahtar Filtreler: Veri çekimi kapsamını sınırlamak için her zaman Şirket Kodu (BUKRS) ile filtreleyin. Ayrıca, yalnızca standart faturaları dahil etmek ve kredi notları veya dahili belgeler gibi diğer belge türlerini hariç tutmak için ilgili Faturalama Belge Türleri (VBRK-FKART) ve Muhasebe Belge Türleri (BKPF-BLART) üzerinde filtreleme yapmak kritik öneme sahiptir.
- Performans: BSEG gibi büyük tablolardan veri çekmek yavaş olabilir. Seçici filtreler kullanın, gereksiz alanları çekmekten kaçının ve SAP kaynak sistemi üzerindeki performans etkisini en aza indirmek için veri çekimini yoğun olmayan saatlerde planlayın.
a Örnek Sorgu config
// ETL Data Extraction Logic for SAP Order-to-Cash Invoicing
// This represents the configuration logic within a graphical ETL tool.
// == Global Parameters ==
// $StartDate: '[Start Date]' (e.g., '2023-01-01')
// $EndDate: '[End Date]' (e.g., '2023-06-30')
// $CompanyCodes: '[Company Code(s)]' (e.g., '1000', '2000')
// $BillingDocTypes: '[Billing Document Type(s)]' (e.g., 'F1', 'F2')
// == Source 1: Invoice Generated ==
// Tables: VBRK
DATA_SOURCE generated_invoices FROM VBRK WHERE
ERDAT >= $StartDate AND ERDAT <= $EndDate
AND BUKRS IN ($CompanyCodes)
AND FKART IN ($BillingDocTypes)
MAP {
InvoiceNumber: VBELN,
ActivityName: 'Invoice Generated',
EventTime: ERDAT + ERZET, // Combine date and time
UserName: ERNAM,
BillingDocumentType: FKART,
CustomerNumber: KUNAG,
CompanyCode: BUKRS,
TotalInvoiceAmount: NETWR
}
// == Source 2: Invoice Posted ==
// Tables: BKPF joined with VBRK
DATA_SOURCE posted_invoices FROM BKPF as A
INNER JOIN VBRK as B ON (A.AWKEY = B.VBELN AND A.AWTYP = 'VBRK')
WHERE A.BUDAT >= $StartDate AND A.BUDAT <= $EndDate
AND A.BUKRS IN ($CompanyCodes)
AND A.BSTAT = ' '
MAP {
InvoiceNumber: B.VBELN,
ActivityName: 'Invoice Posted',
EventTime: A.BUDAT + A.CPUTM, // Posting date and entry time
UserName: A.USNAM,
BillingDocumentType: B.FKART,
CustomerNumber: B.KUNAG,
CompanyCode: A.BUKRS,
TotalInvoiceAmount: B.NETWR
}
// == Source 3: Invoice Parked ==
// Tables: BKPF joined with VBRK
DATA_SOURCE parked_invoices FROM BKPF as A
INNER JOIN VBRK as B ON (A.AWKEY = B.VBELN AND A.AWTYP = 'VBRK')
WHERE A.CPUDT >= $StartDate AND A.CPUDT <= $EndDate
AND A.BUKRS IN ($CompanyCodes)
AND A.BSTAT = 'V'
MAP {
InvoiceNumber: B.VBELN,
ActivityName: 'Invoice Parked',
EventTime: A.CPUDT + A.CPUTM,
UserName: A.USNAM,
BillingDocumentType: B.FKART,
CustomerNumber: B.KUNAG,
CompanyCode: A.BUKRS,
TotalInvoiceAmount: B.NETWR
}
// == Source 4: Invoice Approved (Transition from Parked to Posted) ==
// Tables: BKPF joined with VBRK
DATA_SOURCE approved_invoices FROM BKPF as A
INNER JOIN VBRK as B ON (A.AWKEY = B.VBELN AND A.AWTYP = 'VBRK')
WHERE A.BUDAT >= $StartDate AND A.BUDAT <= $EndDate
AND A.BUKRS IN ($CompanyCodes)
AND A.BSTAT = ' '
AND EXISTS (SELECT 1 FROM VBELEGV C WHERE C.BELNR = A.BELNR) // Check if it was ever parked
MAP {
InvoiceNumber: B.VBELN,
ActivityName: 'Invoice Approved',
EventTime: A.BUDAT + A.CPUTM, // Use posting date as approval date
UserName: A.USNAM,
BillingDocumentType: B.FKART,
CustomerNumber: B.KUNAG,
CompanyCode: A.BUKRS,
TotalInvoiceAmount: B.NETWR
}
// == Source 5: Invoice Sent To Customer ==
// Tables: NAST joined with VBRK
DATA_SOURCE sent_invoices FROM NAST as A
INNER JOIN VBRK as B ON (A.OBJKY = B.VBELN)
WHERE A.ERDAT >= $StartDate AND A.ERDAT <= $EndDate
AND B.BUKRS IN ($CompanyCodes)
AND A.VSTAT = '1' // Successfully processed
MAP {
InvoiceNumber: B.VBELN,
ActivityName: 'Invoice Sent To Customer',
EventTime: A.ERDAT + A.ERUHR,
UserName: A.USNAM,
BillingDocumentType: B.FKART,
CustomerNumber: B.KUNAG,
CompanyCode: B.BUKRS,
TotalInvoiceAmount: B.NETWR
}
// == Source 6: Invoice Corrected (Reversed) ==
// Tables: VBRK (for the reversal document)
DATA_SOURCE corrected_invoices FROM VBRK as A
WHERE A.ERDAT >= $StartDate AND A.ERDAT <= $EndDate
AND A.BUKRS IN ($CompanyCodes)
AND A.SFAKN <> '' // SFAKN is the original cancelled invoice
MAP {
InvoiceNumber: A.SFAKN, // Case ID is the original invoice
ActivityName: 'Invoice Corrected',
EventTime: A.ERDAT + A.ERZET,
UserName: A.ERNAM,
BillingDocumentType: A.FKART,
CustomerNumber: A.KUNAG,
CompanyCode: A.BUKRS,
TotalInvoiceAmount: NULL // Amount belongs to the reversal doc, not original
}
// == Source 7: Invoice Due Date Reached ==
// Tables: BSEG joined with VBRK
DATA_SOURCE due_invoices FROM BSEG as A
INNER JOIN BKPF as H ON (A.BUKRS = H.BUKRS AND A.BELNR = H.BELNR AND A.GJAHR = H.GJAHR)
INNER JOIN VBRK as B ON (H.AWKEY = B.VBELN AND H.AWTYP = 'VBRK')
WHERE A.NETDT >= $StartDate AND A.NETDT <= $EndDate
AND A.BUKRS IN ($CompanyCodes)
AND A.KOART = 'D' // Customer line item
MAP {
InvoiceNumber: B.VBELN,
ActivityName: 'Invoice Due Date Reached',
EventTime: A.NETDT, // Net due date
UserName: 'System',
BillingDocumentType: B.FKART,
CustomerNumber: B.KUNAG,
CompanyCode: A.BUKRS,
TotalInvoiceAmount: B.NETWR
}
// == Source 8: Payment Reminder Issued ==
// Tables: MHNK, MHND, VBRK
DATA_SOURCE reminders FROM MHNK as A
INNER JOIN MHND as D ON (A.LAUFD = D.LAUFD AND A.LAUFI = D.LAUFI)
INNER JOIN VBRK as B ON (SUBSTRING(D.XBLNR, 1, 10) = B.VBELN) // XBLNR may need parsing
WHERE A.LAUFD >= $StartDate AND A.LAUFD <= $EndDate
AND D.BUKRS IN ($CompanyCodes)
MAP {
InvoiceNumber: B.VBELN,
ActivityName: 'Payment Reminder Issued',
EventTime: A.LAUFD, // Dunning date
UserName: A.IDAPS,
BillingDocumentType: B.FKART,
CustomerNumber: B.KUNAG,
CompanyCode: D.BUKRS,
TotalInvoiceAmount: B.NETWR
}
// == Source 9: Dispute Case Created ==
// Tables: UDM_CASE_ATTR00
DATA_SOURCE disputes FROM UDM_CASE_ATTR00 as A
WHERE A.CREATE_TIMESTAMP >= $StartDate // Timestamp format may vary
AND A.FIN_COMP_CODE IN ($CompanyCodes)
AND A.PROCESS = 'FIN_FSCM_DIS'
MAP {
InvoiceNumber: A.BILL_DOC_ID,
ActivityName: 'Dispute Case Created',
EventTime: A.CREATE_TIMESTAMP,
UserName: A.CREATE_USER,
BillingDocumentType: NULL,
CustomerNumber: A.BP_NUMBER,
CompanyCode: A.FIN_COMP_CODE,
TotalInvoiceAmount: A.DISPUTED_AMOUNT
}
// == Source 10: Customer Payment Received ==
// Tables: BKPF
DATA_SOURCE payments FROM BKPF
WHERE BUDAT >= $StartDate AND BUDAT <= $EndDate
AND BUKRS IN ($CompanyCodes)
AND BLART = 'DZ' // Example for Customer Payment
MAP {
InvoiceNumber: NULL, // Invoice not yet known
ActivityName: 'Customer Payment Received',
EventTime: BUDAT + CPUTM,
UserName: USNAM,
BillingDocumentType: NULL,
CustomerNumber: NULL, // Requires join to BSEG to get customer
CompanyCode: BUKRS,
TotalInvoiceAmount: NULL
}
// == Source 11 & 12: Payment Applied To Invoice & Invoice Cleared ==
// Tables: BSEG joined with VBRK
DATA_SOURCE cleared_items FROM BSEG as A
INNER JOIN BKPF as H ON (A.BUKRS = H.BUKRS AND A.BELNR = H.BELNR AND A.GJAHR = H.GJAHR)
INNER JOIN VBRK as B ON (H.AWKEY = B.VBELN AND H.AWTYP = 'VBRK')
WHERE A.AUGDT >= $StartDate AND A.AUGDT <= $EndDate
AND A.BUKRS IN ($CompanyCodes)
AND A.AUGBL <> ''
// Generate two records from this source
MAP {
InvoiceNumber: B.VBELN,
ActivityName: 'Payment Applied To Invoice',
EventTime: A.AUGDT, // Clearing Date
UserName: H.USNAM, // User from header of original invoice doc
BillingDocumentType: B.FKART,
CustomerNumber: B.KUNAG,
CompanyCode: A.BUKRS,
TotalInvoiceAmount: B.NETWR
}
UNION WITH {
InvoiceNumber: B.VBELN,
ActivityName: 'Invoice Cleared',
EventTime: A.AUGDT, // Clearing Date
UserName: H.USNAM,
BillingDocumentType: B.FKART,
CustomerNumber: B.KUNAG,
CompanyCode: A.BUKRS,
TotalInvoiceAmount: B.NETWR
}
// == Source 13: Invoice Written Off ==
// Tables: BSEG (for the invoice line) and BKPF (for clearing doc type)
DATA_SOURCE written_off FROM BSEG as A
INNER JOIN BKPF as H ON (A.BUKRS = H.BUKRS AND A.BELNR = H.BELNR AND A.GJAHR = H.GJAHR)
INNER JOIN VBRK as B ON (H.AWKEY = B.VBELN AND H.AWTYP = 'VBRK')
INNER JOIN BKPF as C ON (A.AUGBL = C.BELNR AND A.BUKRS = C.BUKRS AND A.AUGGJ = C.GJAHR)
WHERE A.AUGDT >= $StartDate AND A.AUGDT <= $EndDate
AND A.BUKRS IN ($CompanyCodes)
AND C.BLART = '[Your Write-Off Document Type]' // e.g., 'AB'
MAP {
InvoiceNumber: B.VBELN,
ActivityName: 'Invoice Written Off',
EventTime: A.AUGDT,
UserName: C.USNAM, // User who posted the write-off
BillingDocumentType: B.FKART,
CustomerNumber: B.KUNAG,
CompanyCode: A.BUKRS,
TotalInvoiceAmount: B.NETWR
}
// == Final Union of all sources ==
OUTPUT generated_invoices
UNION ALL posted_invoices
UNION ALL parked_invoices
UNION ALL approved_invoices
UNION ALL sent_invoices
UNION ALL corrected_invoices
UNION ALL due_invoices
UNION ALL reminders
UNION ALL disputes
UNION ALL payments
UNION ALL cleared_items
UNION ALL written_off