Jouw datatemplate voor Purchase to Pay-factuurverwerking
Jouw datatemplate voor Purchase to Pay-factuurverwerking
- Aanbevolen attributen om te verzamelen
- Belangrijke activiteiten om te volgen
- Uitleg over data-extractie uit SAP ECC
Purchase to Pay - attributen voor factuurverwerking
| Naam | Beschrijving | ||
|---|---|---|---|
| Activiteit Activity | De naam van een specifieke bedrijfsstap of gebeurtenis die tijdens de factuurverwerking heeft plaatsgevonden. | ||
| Beschrijving Het attribuut Activiteit staat voor een afzonderlijke fase of handeling binnen de factuurverwerkingsworkflow. Deze activiteiten zijn afgeleid van verschillende systeemgebeurtenissen, zoals het aanmaken van documenten, statuswijzigingen, goedkeuringen of gebruikersacties die in SAP-wijzigingslogs zijn vastgelegd. Activiteiten analyseren is de kern van process mining. Je kunt er proceskaarten mee visualiseren, knelpunten identificeren, zoals lange wachttijden na 'Factuur ter goedkeuring verzonden', herstelwerkloops vinden, zoals herhaalde cycli van 'Betalingsblokkade ingesteld' en 'Betalingsblokkade opgeheven', en complianceafwijkingen opsporen. De volgorde en frequentie van activiteiten laten de werkelijke procesflow zien. Waarom dit belangrijk is Dit attribuut bepaalt de stappen in de proceskaart. Zo kun je procesflows visualiseren, knelpunten ontdekken en herstelwerk identificeren. Waar je het vindt Dit attribuut wordt meestal afgeleid uit meerdere bronnen, waaronder transactiec codes (SY-TCODE), statusvelden in tabellen zoals RBKP (bijvoorbeeld RBSTAT) en wijzigingsgebeurtenissen uit tabellen CDHDR en CDPOS. Voorbeelden Factuur geparkeerdFactuur ter goedkeuring verzondenFactuur goedgekeurdFactuur geboektFactuur vereffend | |||
| Factuurnummer InvoiceNumber | De unieke identificatie van een leveranciersfactuurdocument. | ||
| Beschrijving Het factuurnummer is de unieke case-identificatie voor de factuurverwerkingsreis. Elk nummer hoort bij één factuur die je van een leverancier hebt ontvangen. Daardoor kun je alle bijbehorende activiteiten, van het vastleggen van data tot de uiteindelijke betaling, volgen als één samenhangende procesinstantie. In process mining is dit attribuut essentieel voor het reconstrueren van de end-to-end-levenscyclus van elke factuur. Het verbindt afzonderlijke gebeurtenissen die in SAP zijn vastgelegd, zoals parkeren, boeken, blokkeren en vereffenen, tot een chronologische reeks. Zo zie je duidelijk hoe elke factuur wordt verwerkt, hoe lang dat duurt en waar het proces afwijkt van de standaard. Waarom dit belangrijk is Dit is de primaire sleutel die alle gebeurtenissen van één factuur met elkaar verbindt. Daarmee vormt het de basis voor procesanalyse en het onderzoeken van varianten. Waar je het vindt Dit is meestal het documentnummer uit SAP-tabel RBKP, veld BELNR, vaak gecombineerd met de bedrijfscode (BUKRS) en het boekjaar (GJAHR) voor absolute uniciteit. Voorbeelden 510004567851000456795100045680 | |||
| Tijdstip van gebeurtenis EventTime | De exacte timestamp, inclusief datum en tijd, waarop een activiteit heeft plaatsgevonden. | ||
| Beschrijving Event Time legt het exacte moment vast waarop een bedrijfsactiviteit in het bronsysteem is uitgevoerd en geregistreerd. Deze timestamp vormt de chronologische basis van het proces en zet alle activiteiten per factuur in een samenhangende volgorde. Event Time is nodig voor het berekenen van alle tijdsgebonden maatstaven, zoals doorlooptijden, wachttijden en verwerkingstijden tussen activiteiten. Het vormt de basis voor dashboards zoals 'Invoice End-to-End Cycle Time' en 'Payment Block Resolution Duration', omdat je hiermee de verstreken tijd tussen twee punten in het proces kunt meten. Nauwkeurige timestamps zijn belangrijk om vertragingen en prestatieknelpunten te identificeren. Waarom dit belangrijk is Deze timestamp is nodig om gebeurtenissen in de juiste volgorde te zetten en alle prestatiemaatstaven te berekenen, zoals doorlooptijden en de duur van knelpunten. Waar je het vindt Dit wordt meestal bepaald door de wijzigingsdatum (UDATE) en wijzigingstijd (UTIME) uit de tabel met kopteksten van wijzigingsdocumenten, CDHDR, te combineren. Voor specifieke aanmaakgebeurtenissen kunnen dit de aanmaakdatum en -tijd uit tabellen zoals RBKP (ERNAM, ERZET) zijn. Voorbeelden 2023-03-15T10:30:00Z2023-03-16T14:05:21Z2023-03-28T09:00:00Z | |||
| Boekingsdatum PostingDate | De datum waarop de factuur officieel in de financiële grootboeken is geboekt. | ||
| Beschrijving De Boekingsdatum is een belangrijke datum in het boekhoudproces. Deze bepaalt in welke fiscale periode de factuurkosten in het grootboek worden opgenomen. De medewerker crediteurenadministratie stelt de datum meestal vast tijdens de verwerking van de factuur. In procesanalyses is de activiteit 'Invoice Posted', gemarkeerd met deze datum, een belangrijk ijkpunt. De tijd tussen ontvangst van de factuur en de Boekingsdatum is een belangrijk onderdeel van de totale doorlooptijd. De datum is ook nodig voor financiële rapportages en throughputanalyses, zoals het volgen van het aantal geboekte facturen per week of maand. Waarom dit belangrijk is Het markeert een belangrijk ijkpunt in het proces, bepaalt de financiële periode van de transactie en vormt een belangrijk onderdeel van de berekening van de doorlooptijd. Waar je het vindt Dit is het veld 'Posting Date' (BUDAT) uit de tabel met kopteksten van factuurdocumenten, RBKP. Voorbeelden 2023-03-202023-04-052023-04-11 | |||
| Clearingdatum ClearingDate | De datum waarop de betaling is uitgevoerd en de factuur uit de crediteurenadministratie is afgeletterd. | ||
| Beschrijving De Clearingdatum markeert de laatste stap in de levenscyclus van een factuur: de betaling. Het is de datum waarop de openstaande factuurpost in het systeem wordt afgeletterd met een betalingsdocument. Deze datum staat voor het moment waarop de betaling daadwerkelijk is uitgevoerd. Dit attribuut is het eindpunt voor belangrijke KPI's, waaronder 'Average Invoice Cycle Time' en 'On-Time Payment Rate'. Je vergelijkt het met de Uiterste betaaldatum om de betaalprestaties te meten. Voor analyses van betalingskortingen vergelijk je het met de kortingsperiode om te bepalen of de betaling op tijd was om de korting te ontvangen. Waarom dit belangrijk is Het markeert de afronding van het proces en vormt de basis voor de berekening van de totale doorlooptijd, het percentage tijdige betalingen en gerealiseerde betalingskortingen. Waar je het vindt Voor afgeletterde posten is dit het veld 'Clearing Date' (AUGDT) uit de tabel met afgeletterde leveranciersposten, BSAK. Voorbeelden 2023-04-152023-05-022023-05-20 | |||
| Factuurbedrag InvoiceAmount | Het totale brutobedrag van de factuur in de oorspronkelijke documentvaluta. | ||
| Beschrijving Factuurbedrag staat voor de totale waarde van de door de leverancier ingediende factuur. Dit is een belangrijke financiële maatstaf voor elke factuurcase. In process mining is dit attribuut belangrijk voor analyses op basis van waarde. Je kunt het proces filteren en segmenteren op factuurwaarde. Die hangt vaak samen met de complexiteit van het proces en de benodigde goedkeuringen. Facturen met een hoge waarde kunnen bijvoorbeeld een ander en strenger goedkeuringspad volgen. Je gebruikt het ook voor compliance-analyses, bijvoorbeeld om te controleren of facturen met een hoge waarde verplichte goedkeuringsstappen overslaan. Waarom dit belangrijk is Je kunt analyses op basis van waarde uitvoeren, facturen met een hoge waarde prioriteren en zien hoe het factuurbedrag de procesflow en compliance beïnvloedt. Waar je het vindt Dit is het veld 'Gross invoice amount' (RMWWR) uit de tabel met kopteksten van factuurdocumenten, RBKP. Voorbeelden 1500.7512500.00850.20 | |||
| Gebruikersnaam UserName | De SAP-gebruikers-ID van de persoon die de activiteit heeft uitgevoerd. | ||
| Beschrijving Het attribuut Gebruikersnaam identificeert de persoon die verantwoordelijk is voor het uitvoeren van een bepaalde activiteit in het proces. Dit is meestal de SAP-gebruikersnaam die bij de transactie of wijzigingsgebeurtenis is vastgelegd. Dit attribuut is belangrijk voor prestatieanalyses op gebruikers- of teamniveau. Je kunt er vragen mee beantwoorden als: 'Wie keurt het snelst goed?' en 'Welke gebruikers veroorzaken de meeste herstelwerkzaamheden?'. In dashboards gebruik je het om de werkverdeling te analyseren, opleidingsbehoeften te signaleren en prestatieverschillen tussen medewerkers te begrijpen. Waarom dit belangrijk is Je kunt prestaties en werkbelasting per persoon of team analyseren. Zo vind je best presterende medewerkers, opleidingsmogelijkheden en onevenwichtige resourceverdeling. Waar je het vindt Dit is het veld 'Changed By' (USERNAME) uit de tabel met kopteksten van wijzigingsdocumenten, CDHDR. Voor aanmaakgebeurtenissen kan dit het veld 'Entered by' (ERNAM) uit tabellen zoals RBKP zijn. Voorbeelden JSMITHBWILSONCHEN | |||
| Inkoopordernummer PurchaseOrderNumber | De identificatie van de inkooporder (PO) waaraan de factuur wordt gekoppeld. | ||
| Beschrijving Het Inkoopordernummer koppelt een factuur aan het oorspronkelijke inkoopdocument. Dit is de basis voor three-way matching (PO, goederenontvangst, factuur) en voor analyses van de efficiëntie van het factuurproces met een PO. Dit attribuut is belangrijk voor dashboards zoals 'Invoice-PO Matching Discrepancy Rate'. Je kunt het proces opdelen in facturen met en zonder PO. Die volgen vaak verschillende procespaden en hebben een andere complexiteit. Door problemen rond specifieke PO's te analyseren, kun je oorzaken hoger in het inkoopproces opsporen. Waarom dit belangrijk is Het koppelt de factuur aan het inkoopproces. Zo kun je facturen met en zonder PO vergelijken en afwijkingen bij de matching opsporen. Waar je het vindt Dit staat meestal op regelniveau. Het 'Purchase Order Number' (EBELN) staat in de factuurpostentabel RSEG. Mogelijk moet je de waarde samenvoegen naar koptekstniveau. Voorbeelden 450001756345000175644500017565 | |||
| Leveranciersnummer VendorNumber | Een unieke identificatie voor de leverancier die de factuur heeft ingediend. | ||
| Beschrijving Het Leveranciersnummer is de sleutel uit de stamdata waarmee de leverancier wordt geïdentificeerd. Hiermee koppel je de factuurtransactie aan een specifieke zakenpartner en kun je analyseren op basis van kenmerken van de leverancier. Een analyse van het proces per Leveranciersnummer kan belangrijke inzichten geven in leveranciersrelaties en prestaties. Je ziet bijvoorbeeld welke leveranciers regelmatig problematische facturen indienen die leiden tot betalingsblokkades of afwijkingen. Ook zie je welke leveranciersfacturen het efficiëntst worden verwerkt. Deze informatie is nuttig voor leveranciersbeheer en strategische inkoop. Waarom dit belangrijk is Je kunt analyses per leverancier uitvoeren en patronen, problemen of efficiëntieverschillen bij specifieke leveranciers herkennen. Waar je het vindt Dit is het veld 'Invoicing Party' (LIFNR) uit de tabel met kopteksten van factuurdocumenten, RBKP. Voorbeelden 100345100876200112 | |||
| Reden betalingsblokkade PaymentBlockReason | Een code die aangeeft waarom een factuur niet kan worden betaald. | ||
| Beschrijving Bij een afwijking in een factuur of wanneer verder onderzoek nodig is, wordt een betalingsblokkade ingesteld. De code Reden betalingsblokkade geeft aan waarom de blokkade is ingesteld, bijvoorbeeld vanwege een afwijking in hoeveelheid of prijs, of door een handmatige blokkade. Dit attribuut is belangrijk voor het dashboard 'Payment Block Resolution Duration'. Door de frequentie en duur van blokkades per reden te analyseren, vind je de oorzaken van betalingsvertragingen. Als 'Price Discrepancy' bijvoorbeeld vaak leidt tot langdurige blokkades, kan dat wijzen op een probleem in de stamdata of het inkooporderproces dat moet worden aangepakt. Waarom dit belangrijk is Het verklaart waarom facturen vertraging oplopen. Zo kun je de oorzaken van betalingsblokkades analyseren en verbeteracties prioriteren. Waar je het vindt De reden voor de betalingsblokkade staat op regelniveau in tabel RSEG (veld SPGRS) of in de tabel met boekhoudkundige documenten BSEG (veld ZLSPR). Voorbeelden RIM | |||
| Uiterste betaaldatum PaymentDueDate | De datum waarop de factuur volgens de betalingsvoorwaarden aan de leverancier moet zijn betaald. | ||
| Beschrijving De Uiterste betaaldatum wordt berekend op basis van de basisdatum van de factuur en de afgesproken betalingsvoorwaarden. Het is de deadline voor de betaling. Na deze datum kan de betaling te laat zijn, met mogelijke boetes of schade aan de leveranciersrelatie als gevolg. Dit attribuut is belangrijk voor prestatie- en compliance-KPI's zoals 'On-Time Payment Rate' en 'Cash Discount Opportunity Loss'. Door de werkelijke betaaldatum (Clearing Date) te vergelijken met de Uiterste betaaldatum, kun je automatisch bepalen of een betaling op tijd, vroeg of te laat was. Het vormt een basis voor het dashboard Payment Terms Adherence. Waarom dit belangrijk is Het is de basis voor het meten van tijdige betalingen en het vinden van mogelijkheden om vroegbetalingskortingen te benutten. Waar je het vindt Deze datum wordt vaak berekend. De basisdatum voor betaling (ZFBDT) staat in tabel BSEG. De logica voor de vervaldatum hangt ook af van de betalingsvoorwaarden (BSEG-ZTERM). Voorbeelden 2023-04-192023-05-052023-05-11 | |||
| Bedrijfscode CompanyCode | De identificatie van de juridische entiteit of het bedrijf waarvoor de factuur wordt verwerkt. | ||
| Beschrijving De Bedrijfscode is een organisatorische basiseenheid in SAP Financials en staat voor een zelfstandige juridische entiteit. Alle financiële transacties, waaronder facturen, worden aan een specifieke bedrijfscode geboekt. Met dit attribuut kun je processen per juridische entiteit analyseren. Het is belangrijk om procesprestaties, compliance en efficiëntie tussen bedrijven binnen een groep te vergelijken. Je kunt dashboards filteren op Bedrijfscode voor een bedrijfsspecifiek beeld van KPI's voor factuurverwerking. Waarom dit belangrijk is Je kunt processen vergelijken en prestaties benchmarken tussen verschillende juridische entiteiten binnen een organisatie. Waar je het vindt Dit is het veld 'Company Code' (BUKRS) uit de tabel met kopteksten van factuurdocumenten, RBKP. Voorbeelden 10002000US01 | |||
| Betalingsvoorwaarden PaymentTerms | De code die de met de leverancier afgesproken betalingsvoorwaarden vastlegt, zoals kortingsperioden en vervaldatums. | ||
| Beschrijving Betalingsvoorwaarden bepalen wanneer een factuur moet worden betaald en welke betalingskortingen gelden bij vroeg betalen. Voorbeelden zijn 'Net 30 days' of '2% 10, Net 30'. Dat betekent 2% korting bij betaling binnen 10 dagen. Daarna is het volledige bedrag na 30 dagen verschuldigd. Dit attribuut vormt de basis voor het dashboard 'Cash Discount Opportunity Loss' en de KPI 'Cash Discount Capture Rate'. De analyse gebruikt de betalingsvoorwaarden samen met de boekings- en betaaldatums om te bepalen of korting beschikbaar was en of die is benut. Het is ook belangrijk voor het dashboard Payment Terms Adherence. Waarom dit belangrijk is Het is belangrijk voor het analyseren van het percentage geïnde betalingskortingen en de financiële impact van procesvertragingen. Waar je het vindt Dit is het veld 'Terms of Payment Key' (ZTERM) uit de tabel met kopteksten van factuurdocumenten, RBKP. Voorbeelden Z0010001NT30 | |||
| Bronsysteem SourceSystem | Identificeert het specifieke bronsysteem waaruit de data is geëxtraheerd. | ||
| Beschrijving Het attribuut Bronsysteem geeft aan waar de eventdata vandaan komt, bijvoorbeeld de naam van een specifieke SAP ECC-instantie. Dit is vooral belangrijk in omgevingen met meerdere ERP-systemen of wanneer data uit verschillende bronnen wordt gecombineerd. In analyses helpt dit attribuut om processen en prestaties tussen verschillende systemen, regio's of bedrijfsonderdelen te onderscheiden die op afzonderlijke instanties draaien. Zo blijft de herkomst van de data duidelijk en kun je filteren en analyseren per systeem. Waarom dit belangrijk is Het biedt belangrijke context in omgevingen met meerdere systemen. Zo kun je data goed scheiden en prestaties per systeem analyseren. Waar je het vindt Dit is meestal een statische waarde die tijdens het data-extractieproces wordt toegevoegd. De waarde staat voor de SAP System ID (TADIR-SRCSYSTEM) of een handmatig toegewezen identificatie voor de specifieke SAP-instantie. Voorbeelden SAPECC_PROD_EUECC_US_FINSAP_ERP_6_EHP8 | |||
| Documenttype DocumentType | Een code die het boekhoudkundige document classificeert, bijvoorbeeld als leveranciersfactuur of creditnota. | ||
| Beschrijving Het Documenttype wordt gebruikt om verschillende soorten zakelijke transacties in SAP te categoriseren. Bij factuurverwerking zijn 'RE' voor standaardfacturen en 'KG' voor creditnota's van leveranciers veelvoorkomende typen. Het documenttype bepaalt onderdelen van de boeking, zoals het gebruikte nummerbereik. In analyses kun je met dit attribuut het proces filteren op specifieke transactietypen. Het proces voor een creditnota kan bijvoorbeeld sterk verschillen van dat voor een standaardfactuur. Door deze flows met het Documenttype te scheiden, krijg je een nauwkeuriger en bruikbaarder beeld van het proces. Waarom dit belangrijk is Je kunt verschillende zakelijke transacties, zoals facturen en creditnota's, afzonderlijk analyseren. Deze volgen vaak verschillende processen. Waar je het vindt Dit is het veld 'Document Type' (BLART) uit de tabel met kopteksten van factuurdocumenten, RBKP. Voorbeelden REKRKG | |||
| Eindtijd EndTime | De timestamp die aangeeft wanneer een activiteit is afgerond. Bij momentane gebeurtenissen is dit hetzelfde als de starttijd. | ||
| Beschrijving Het attribuut End Time markeert het einde van een specifieke activiteit. Veel gebeurtenissen in SAP worden als één tijdstip geregistreerd. In die gevallen is End Time gelijk aan Start Time. Bij activiteiten met een meetbare duur, zoals een goedkeuringsstap waaraan actief wordt gewerkt, kan End Time het moment markeren waarop die activiteit is afgerond. In procesanalyse maakt een afzonderlijke End Time het mogelijk om de verwerkingstijd van een activiteit te meten, los van de wachttijd ervoor. Zo zie je het verschil tussen de tijd die nodig is om een activiteit uit te voeren en de tijd die een case wacht voordat de activiteit begint. Dat geeft een beter beeld van de efficiëntie van bronnen. Waarom dit belangrijk is Hiermee kun je de verwerkingstijd van activiteiten berekenen en onderscheiden van de wachttijd tussen activiteiten. Dat verbetert de bottleneckanalyse. Waar je het vindt Dit is vaak hetzelfde als de Starttijd en wordt bepaald op basis van CDHDR-UDATE en CDHDR-UTIME. Soms kan de waarde worden afgeleid uit workflowlogs waarin het begin en einde van een Task expliciet zijn vastgelegd. Voorbeelden 2023-03-15T10:35:10Z2023-03-16T14:10:00Z2023-03-28T09:02:45Z | |||
| Grootboekrekening GeneralLedgerAccount | Het nummer van de grootboekrekening waarop de factuurkosten of -uitgaven worden geboekt. | ||
| Beschrijving De grootboekrekening is de rekening in het rekeningschema waarop de financiële impact van de factuur wordt vastgelegd. Dit is belangrijke data voor financiële rapportages en kostenbeheer. In process mining voegt analyse van de grootboekrekening een financiële dimensie toe aan de procesflow. Het dashboard 'General Ledger Account Usage Analysis' kan patronen in uitgaven laten zien, mogelijke verkeerd gecodeerde facturen opsporen en controleren of kosten aan de juiste afdelingen of projecten worden toegewezen. Zo verbind je de uitvoering van het proces met de financiële impact. Waarom dit belangrijk is Het voegt een financiële dimensie toe aan het proces. Zo kun je kostenverdeling, uitgavenpatronen en mogelijk verkeerd gecodeerde facturen analyseren. Waar je het vindt Dit staat op regelniveau. Het 'G/L Account Number' (HKONT) staat voor PO-facturen in de factuurpostentabel RSEG en voor directe FI-facturen in BSEG. Voorbeelden 630000655100741000 | |||
| Is betalingskorting misgelopen IsCashDiscountLost | Een berekende vlag die aangeeft of een beschikbare betalingskorting niet is benut. | ||
| Beschrijving Dit is een booleanattribuut dat wordt berekend op basis van de betalingsvoorwaarden en de werkelijke betaaldatum. De waarde is waar als de 'Payment Terms' een korting voor vroeg betalen boden en de 'Clearing Date' na afloop van de kortingsperiode viel. Zo meet je rechtstreeks het financiële verlies door inefficiënte processen. Dit attribuut vormt de basis voor het dashboard 'Cash Discount Opportunity Loss'. Je kunt de financiële impact van verwerkingsvertragingen eenvoudig kwantificeren. Door te filteren op cases waarvoor deze vlag waar is, kunnen analisten de procesvarianten en bottlenecks onderzoeken die het vaakst tot gemiste kortingen leiden. Dat geeft een duidelijke onderbouwing voor procesverbetering. Waarom dit belangrijk is Het maakt het financiële verlies door procesvertragingen direct meetbaar en onderbouwt de optimalisatie van de workflow voor factuurverwerking. Waar je het vindt Dit attribuut staat niet in SAP. Het wordt tijdens de datatransformatie berekend door 'PaymentTerms' te interpreteren en 'ClearingDate' te vergelijken met de uiterste datum voor de korting. Voorbeelden truefalse | |||
| Is te laat betaald IsOverdue | Een berekende vlag die aangeeft of de factuur na de uiterste betaaldatum is betaald. | ||
| Beschrijving Dit is een booleanattribuut dat wordt berekend door de 'Clearing Date' (werkelijke betaaldatum) te vergelijken met de 'Payment Due Date'. Als de Clearing Date na de uiterste betaaldatum valt, is de vlag waar. Anders is de vlag onwaar. Zo krijg je per factuur een eenvoudige, directe maatstaf voor tijdige betaling. Dit attribuut maakt analyses en visualisaties in dashboards eenvoudiger. Je kunt makkelijk filteren en optellen om de KPI 'On-Time Payment Rate' te berekenen. Ook kun je de procesflows van te laat betaalde facturen vergelijken met die van facturen die op tijd zijn betaald. Zo ontdek je mogelijk welke procespatronen tot late betalingen leiden. Waarom dit belangrijk is Het vereenvoudigt de analyse van tijdige betalingen en maakt het makkelijk om processen voor tijdig en te laat betaalde facturen te vergelijken. Waar je het vindt Dit attribuut staat niet in SAP. Het wordt tijdens de datatransformatie berekend met de formule: ClearingDate > PaymentDueDate. Voorbeelden truefalse | |||
| Laatste data-update LastDataUpdate | Timestamp die aangeeft wanneer de data voor het proces voor het laatst vanuit het bronsysteem is vernieuwd. | ||
| Beschrijving Dit attribuut registreert de datum en tijd van de meest recente data-extractie of update. Het geldt voor de volledige dataset en niet voor afzonderlijke gebeurtenissen. Zo zie je duidelijk hoe actueel de data is. Dit metadata-attribuut is belangrijk voor dashboardgebruikers en analisten. Het laat zien op welke periode de analyse betrekking heeft en helpt je om beslissingen te nemen op basis van actuele informatie. Op dashboards staat het meestal duidelijk in beeld, zodat gebruikers kunnen zien hoe recent de data is. Waarom dit belangrijk is Het laat gebruikers zien hoe actueel de data is. Zo zijn analyses en beslissingen gebaseerd op recente informatie. Waar je het vindt Deze waarde wordt tijdens het vernieuwen van de data door de data-extractie- of ETL-tool gegenereerd en aan de dataset toegevoegd. Voorbeelden 2024-05-20T08:00:00Z2024-05-21T08:00:00Z2024-05-22T08:00:00Z | |||
| Reden van afwijzing RejectionReason | Een code of tekst die uitlegt waarom een factuur tijdens de goedkeuringsworkflow is afgewezen. | ||
| Beschrijving Wanneer een goedkeurder een factuur afwijst, geeft die idealiter een reden op. Dat kan een gestandaardiseerde code zijn of een vrije tekst met een probleem zoals 'Incorrect PO number', 'Duplicate Invoice' of 'Amount incorrect'. Deze data is belangrijk voor het dashboard 'Invoice Rejection Reasons & Trends'. Door de frequentie van verschillende afwijsredenen te analyseren, kan de organisatie veelvoorkomende problemen herkennen en corrigerende acties nemen. Als 'Incorrect PO number' bijvoorbeeld vaak voorkomt, kan dat wijzen op betere communicatie met leveranciers of extra training voor medewerkers die data invoeren. Deze analyse helpt om herstelwerk te verminderen. Waarom dit belangrijk is Het geeft de oorzaak van afwijzingen. Zo kun je gericht verbeteren, herstelwerk verminderen en het percentage first-time-right verhogen. Waar je het vindt Deze informatie staat vaak niet in één standaardveld. Je vindt de reden mogelijk in workflowcontainerlogs, lange tekstvelden bij het document of specifieke velden in een maatwerkoplossing voor workflows. Voorbeelden DUPLICATE_INVWRONG_AMTNO_PO_MATCH | |||
| Valuta Currency | De valutacode voor het factuurbedrag. | ||
| Beschrijving Het attribuut Valuta geeft aan in welke valuta het factuurbedrag is uitgedrukt, bijvoorbeeld USD, EUR of JPY. Dit attribuut geeft de nodige context bij het Factuurbedrag. Je kunt financiële data correct interpreteren en optellen, vooral in internationale organisaties met meerdere valuta. Je kunt analyses per valuta filteren om verwerkingsefficiëntie of problemen tussen verschillende valutagebieden te vergelijken. Voor een zinvolle financiële optelling moeten bedragen mogelijk worden omgerekend naar één rapportagevaluta. Waarom dit belangrijk is Het geeft de nodige context bij financiële bedragen. Zo kun je ze correct interpreteren en filteren en analyseren per valuta. Waar je het vindt Dit is het veld 'Currency Key' (WAERS) uit de tabel met kopteksten van factuurdocumenten, RBKP. Voorbeelden USDEURGBP | |||
Purchase to Pay - activiteiten voor factuurverwerking
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Betalingsblokkade ingesteld | Deze activiteit vindt plaats wanneer een blokkade op een factuurregel wordt gezet, waardoor betaling niet mogelijk is. Blokkades kunnen automatisch ontstaan door verschillen bij three-way matching of handmatig om verschillende redenen worden ingesteld. | ||
| Waarom dit belangrijk is Deze gebeurtenis is belangrijk voor het meten van de duur van het oplossen van betalingsblokkades en het vaststellen van de grondoorzaken van betalingsvertragingen. Je ziet er problemen mee rond prijzen, aantallen of vereiste goedkeuringen. Waar je het vindt Dit is een expliciete gebeurtenis die je kunt volgen via wijzigingsdocumentlogs, in tabellen CDHDR en CDPOS, voor tabel BSEG en veld ZLSPR (sleutel voor betalingsblokkade). Vastleggen Timestamp uit wijzigingsdocumenten (CDHDR) op het moment dat de waarde van BSEG-ZLSPR verandert van leeg naar niet-leeg. Eventtype explicit | |||
| Factuur geboekt | Dit is een belangrijke financiële gebeurtenis waarbij de factuur officieel in het grootboek wordt vastgelegd en een verplichting ontstaat. Het document gaat hiermee van een tijdelijke, geparkeerde status naar een definitieve boeking. | ||
| Waarom dit belangrijk is Boeking is een belangrijke mijlpaal die bevestigt dat de factuur geldig is. Het is een voorwaarde voor betaling en een belangrijke indicator voor de verwerkingscapaciteit. Waar je het vindt Dit is een expliciete gebeurtenis in de documentkop van tabel BKPF. De timestamp is de boekingsdatum, BKPF-BUDAT. Het document heeft daarna niet langer de status 'geparkeerd'. Vastleggen Gebruik de boekingsdatum (BKPF-BUDAT) voor documenten die niet geparkeerd zijn (BKPF-BSTAT is leeg of ' '). Eventtype explicit | |||
| Factuur teruggedraaid | Dit is het annuleren van een geboekt factuurdocument. Er wordt een terugboekingsdocument aangemaakt om het financiële effect van de oorspronkelijke factuur teniet te doen. | ||
| Waarom dit belangrijk is Deze activiteit wijst op een belangrijke uitzondering en herstelwerkroute. Door de frequentie en redenen van terugboekingen te analyseren, ontdek je structurele problemen in de validatie en boeking van facturen. Waar je het vindt Dit is een expliciete gebeurtenis in de documentkop van tabel BKPF. De kop van het teruggedraaide document bevat het nummer van het terugboekingsdocument (STBLG) en het boekjaar (STJAH). Vastleggen Identificeer documenten waarbij BKPF-STBLG is ingevuld. De timestamp van de gebeurtenis is de boekingsdatum van het terugboekingsdocument. Eventtype explicit | |||
| Factuur vereffend | Deze activiteit markeert de laatste stap in een succesvolle factuurlevenscyclus. De openstaande verplichting wordt vereffend met een betalingsdocument. Dit betekent dat de betaling is uitgevoerd. | ||
| Waarom dit belangrijk is Als belangrijkste eindgebeurtenis is dit nodig om de totale end-to-end-doorlooptijd te berekenen. Het bevestigt dat het proces succesvol is afgerond en wordt gebruikt om tijdige betalingen te meten. Waar je het vindt Dit is een expliciete gebeurtenis in de factuurregelentabel BSEG. De vereffeningsdatum staat in veld AUGDT en het nummer van het vereffeningsdocument in AUGBL. Vastleggen Gebruik de vereffeningsdatum (BSEG-AUGDT) uit de factuurregel van het factuurdocument. Eventtype explicit | |||
| Factuurdata vastgelegd | Dit markeert het moment waarop het factuurdocument in SAP wordt aangemaakt, als geparkeerd of volledig geboekt document. Dit is meestal de eerste vastgelegde gebeurtenis in de levenscyclus van een factuur en vormt de starttijd van het proces. | ||
| Waarom dit belangrijk is Deze activiteit is het belangrijkste startpunt voor het meten van de end-to-end-doorlooptijd van de factuurverwerking. Door de duur vanaf dit moment te analyseren, zie je vertragingen bij de eerste gegevensinvoer en het aanmaken van het document. Waar je het vindt De aanmaaktimestamp staat in SAP-tabel BKPF, in de velden CPUDT (datum waarop het boekhoudkundige document is ingevoerd) en CPUTM (tijdstip van invoer). Vastleggen Gebruik de aanmaaktimestamp uit de kop van tabel BKPF (CPUDT). Eventtype explicit | |||
| Betalingsblokkade opgeheven | Dit is het verwijderen van een betalingsblokkade op een factuurregel, zodat de factuur kan worden meegenomen in de betalingsrun. Dit betekent dat een eerder vastgesteld probleem is opgelost. | ||
| Waarom dit belangrijk is Met deze activiteit wordt de meting van de blokkeringsduur afgesloten. Door de tijd tussen het instellen en opheffen van een blokkade te analyseren, zie je hoe efficiënt problemen worden opgelost. Waar je het vindt Deze gebeurtenis wordt gevolgd via wijzigingsdocumentlogs, in tabellen CDHDR en CDPOS, voor tabel BSEG en veld ZLSPR (sleutel voor betalingsblokkade), wanneer de blokkade wordt verwijderd. Vastleggen Timestamp uit wijzigingsdocumenten (CDHDR) op het moment dat de waarde van BSEG-ZLSPR verandert van niet-leeg naar leeg. Eventtype explicit | |||
| Factuur afgewezen | Geeft aan dat een factuur tijdens het goedkeuringsproces is afgewezen. Meestal moet de factuur worden gecorrigeerd en opnieuw ingediend, waardoor een herstelwerkloop ontstaat. | ||
| Waarom dit belangrijk is Door afwijzingen te volgen, zie je veelvoorkomende oorzaken van fouten, zoals onjuiste data of overtredingen van beleid. Je kunt de hoeveelheid herstelwerk meten en bepalen waar procesverbetering of uitleg aan leveranciers nodig is. Waar je het vindt Deze gebeurtenis staat meestal als afwijzingsstap in SAP Business Workflow-logs. Je kunt de gebeurtenis ook afleiden uit specifieke statuswijzigingen of notities die aan het factuurdocument zijn toegevoegd. Vastleggen Timestamp van de afwijzingsstap in workflowlogs of van een documentstatuswijziging die op afwijzing wijst. Eventtype inferred | |||
| Factuur geparkeerd | Geeft aan dat een factuur in SAP is ingevoerd, maar nog niet in het grootboek is geboekt. Dit is een tijdelijke status waarin de factuur kan worden gecontroleerd, gecorrigeerd of goedgekeurd voordat deze financieel wordt geboekt. | ||
| Waarom dit belangrijk is Door bij te houden wanneer facturen worden geparkeerd en hoe lang ze daar blijven, zie je knelpunten in de validatie en goedkeuring vóór het boeken. Zo maak je onderscheid tussen de tijd voor gegevensinvoer en de financiële verwerkingstijd. Waar je het vindt Dit wordt afgeleid uit de documentstatus in tabel BKPF, veld BSTAT. De waarde 'V' (geparkeerd document) of 'W' (geparkeerd document met wijzigingsvrijgave) geeft aan dat het document geparkeerd is. Vastleggen Identificeer documenten waarbij het statusveld BKPF-BSTAT 'V' is. De timestamp van de gebeurtenis is de aanmaakdatum BKPF-CPUDT. Eventtype inferred | |||
| Factuur goedgekeurd | Geeft aan dat de factuur formeel is goedgekeurd door de aangewezen bevoegde persoon. De factuur kan nu worden geboekt en betaald. Dit is vaak de laatste stap in een workflow. | ||
| Waarom dit belangrijk is Deze mijlpaal sluit de meting van de goedkeuringsdoorlooptijd af. De blokkade in het proces wordt opgeheven, waardoor tijdige betaling mogelijk wordt. Ook kun je hiermee de verdeling van de werkbelasting onder goedkeurders analyseren. Waar je het vindt Dit wordt meestal vastgelegd in SAP Business Workflow-tabellen door de voltooiing van een goedkeuringstaak te identificeren. Je kunt de gebeurtenis ook afleiden uit het opheffen van een betalingsblokkade die aan de goedkeuring is gekoppeld. Vastleggen Timestamp van de voltooide goedkeuringsstap in workflowlogs of van het opheffen van een specifieke betalingsblokkade. Eventtype inferred | |||
| Factuur ter goedkeuring verzonden | Dit is het moment waarop een factuur in een formele goedkeuringsworkflow wordt ingediend. Hoe dit wordt vastgelegd, hangt sterk af van de specifieke SAP Workflow- of externe systeemimplementatie. | ||
| Waarom dit belangrijk is Deze activiteit start de klok voor de KPI voor de doorlooptijd van de factuurgoedkeuring. Dit is belangrijk om vertragingen in de goedkeuringsketen en de prestaties van goedkeurders te identificeren. Waar je het vindt Deze gebeurtenis wordt meestal vastgelegd in SAP Business Workflow-tabellen, zoals SWW_WI2OBJ en SWWLOG, door het begin van een specifieke goedkeuringstaak te identificeren. In eenvoudigere situaties kan de gebeurtenis worden afgeleid uit een statuswijziging in een aangepast veld. Vastleggen Hiervoor moeten SAP-workflowlogs of aangepaste statusvelden worden geanalyseerd die aan het factuurdocument zijn gekoppeld. Eventtype inferred | |||
| Factuur vervalt | Dit is een berekende gebeurtenis die plaatsvindt wanneer de huidige datum na de uiterste nettobetaaldatum van de factuur valt en de factuur nog niet is betaald. De vervaldatum wordt bepaald op basis van de betalingstermijnen en de basisdatum. | ||
| Waarom dit belangrijk is Deze activiteit is belangrijk voor het monitoren van de KPI voor tijdige betaling. Je ziet hiermee proactief welke facturen risico lopen op te late betaling. Dat kan leveranciersrelaties schaden en leiden tot boetes. Waar je het vindt Deze gebeurtenis wordt berekend door de huidige datum te vergelijken met de uiterste nettobetaaldatum. De vervaldatum wordt afgeleid van de basisdatum (BSEG-ZFBDT) en de betalingstermijnen (BSEG-ZTERM). Vastleggen De gebeurtenis wordt geactiveerd wanneer Eventtype calculated | |||
Extractiegidsen
Stappen
- Het ABAP-programma maken: Gebruik transactie
SE38ofSE80om een nieuw uitvoerbaar programma te maken, bijvoorbeeldZ_PM_INVOICE_EXTRACT. Geef het programma een passende titel en stel het type in op 'Executable Program'. - Het selectiescherm definiëren: Definieer in het programma een selectiescherm waarmee gebruikers de data kunnen filteren. Belangrijke parameters zijn Company Code (
BUKRS), Fiscal Year (GJAHR), Posting Date Range (BUDAT) en een parameter voor het pad naar het uitvoerbestand op de applicatieserver. - Datastructuren declareren: Definieer een interne tabelstructuur voor het uiteindelijke event log. Deze structuur moet alle vereiste en aanbevolen attributen bevatten:
InvoiceNumber,Activiteit,EventTime,UserName,VendorNumber,PurchaseOrderNumber,InvoiceAmount,PostingDate,PaymentDueDate,PaymentBlockReasonenClearingDate. - De dataselectielogica implementeren: Schrijf de kernlogica in ABAP om factuurdata te selecteren. Hierbij worden meerdere selecties gecombineerd in de uiteindelijke event log-tabel.
- Selecteer eerst kop- en regeldata uit de primaire factuurtabellen
BKPF,BSEG,RBKPenRSEGop basis van de criteria op het selectiescherm. - Genereer voor elke factuur de basisevents 'Invoice Data Captured' vanuit de aanmaaktimestamp en 'Invoice Posted' vanuit de boekingstimestamp.
- Raadpleeg de wijzigingsdocumenttabellen
CDHDRenCDPOSom wijzigingen in betalingsblokkeringen te vinden, via het veldZLSPRinBSEG. Maak voor elke relevante wijziging de events 'Payment Block Set' en 'Payment Block Released' aan. - Identificeer events 'Invoice Cleared' door in tabel
BSEGte controleren op een clearingdocument (AUGBL) en clearingdatum (AUGDT). - Identificeer events 'Invoice Reversed' door in de kop van
BKPFte controleren op een reversal document (STBLG). - Implementeer aangepaste logica om workflow-events vast te leggen, zoals 'Invoice Sent For Approval', 'Approved' en 'Rejected'. Dit deel is sterk afhankelijk van de klant en vereist aanpassing aan de tabellen of statusvelden van de workflow.
- Selecteer eerst kop- en regeldata uit de primaire factuurtabellen
- Berekende events genereren: Bereken binnen de programmalogica het event
Invoice Becomes Overdue. Vergelijk hiervoor de vervaldatum van de factuur (PaymentDueDate) met de huidige datum voor alle onbetaalde facturen. Ligt de vervaldatum in het verleden, maak dan een event aan metEventTimegelijk aan de vervaldatum. - De event log-tabel vullen: Formatteer de data voor elke factuur uit de verschillende bronnen en voeg nieuwe rijen toe aan de uiteindelijke interne event log-tabel, één rij per activiteit.
- De data naar een bestand exporteren: Gebruik de statements
OPEN DATASET,TRANSFERenCLOSE DATASETom de inhoud van de uiteindelijke interne tabel naar een flat file te schrijven op het pad van de SAP-applicatieserver dat op het selectiescherm is opgegeven. Gebruik een vaste scheidingsteken, zoals een puntkomma of tab, om een CSV-bestand te maken. - De extractie plannen: Maak voor regelmatige data-extractie een variant met de gewenste selectiecriteria en plan deze als achtergrondjob met transactie
SM36. - Het uitvoerbestand ophalen: Open met transactie
AL11de directory van de SAP-applicatieserver en zoek het gegenereerde bestand. Gebruik transactieCG3Yom het bestand van de applicatieserver naar je lokale computer te downloaden. - De upload voorbereiden: Open het CSV-bestand voordat je het naar een process mining-tool uploadt. Controleer of de kopteksten kloppen, de data een consistent formaat heeft, vooral de timestamps, en het scheidingsteken juist is. Sla het bestand op met UTF-8-codering.
Configuratie
- Selectiecriteria: Het ABAP-rapport moet een uitgebreid selectiescherm bevatten. De belangrijkste filters zijn:
Company Code (BUKRS): Om de extractie te beperken tot specifieke juridische entiteiten.Posting Date (BUDAT): Om de periode voor de extractie vast te leggen. Het is aan te raden om data in overzichtelijke delen te extraheren, bijvoorbeeld 3 tot 6 maanden per keer.Document Type (BLART): Om alleen relevante factuurdocumenttypen op te nemen, zoals 'RE' voor logistieke facturen en 'KR' voor leveranciersfacturen.
- Pad naar uitvoerbestand: Een verplichte parameter voor het volledige pad en de bestandsnaam op de SAP-applicatieserver waar het uitvoerbestand wordt aangemaakt. De gebruiker die het rapport uitvoert, moet schrijfrechten hebben voor deze map.
- Aandacht voor prestaties: Voer het rapport bij grote datasets uit als achtergrondtaak buiten piekuren, zodat de systeemprestaties niet achteruitgaan. Selecteer in de logica alleen de benodigde velden uit de tabellen en gebruik waar mogelijk de standaard SAP-database-indexen.
- Vereisten en autorisaties: De gebruiker of serviceaccount dat deze extractie uitvoert, heeft het volgende nodig:
- Rechten om ABAP-rapporten uit te voeren, onderdeel van
S_PROGRAM. - Leestoegang tot financiële en logistieke tabellen, waaronder
BKPF,BSEG,RBKP,RSEG,CDHDRenCDPOS. - Toestemming om bestanden te schrijven naar de opgegeven map op de applicatieserver (
S_DATASET). - Toegang tot de transacties
SE38,SM36,AL11enCG3Yvoor ontwikkeling, planning en het ophalen van bestanden.
- Rechten om ABAP-rapporten uit te voeren, onderdeel van
a Voorbeeldquery 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. Klaar om aan de slag te gaan?
Met deze template krijg je waardevolle inzichten in je Purchase to Pay-factuurverwerking en kun je gerichte verbeteringen doorvoeren. Begin vandaag nog met het extraheren van je data en maak je bedrijfsvoering efficiënter.
Verbeter je Purchase to Pay-factuurverwerking vandaag
Vind inefficiënties en verkort de factuurdoorlooptijd met 30%.
Je hebt geen creditcard nodig. Je bent binnen enkele minuten klaar.