Datatemplate voor Record to Report, periodeafsluiting en reconciliatie
Datatemplate voor Record to Report, periodeafsluiting en reconciliatie
- Aanbevolen attributen om te verzamelen
- Belangrijke activiteiten om te volgen
- Instructies voor data-extractie
Attributen voor Record to Report, periodeafsluiting en reconciliatie
| Naam | Beschrijving | ||
|---|---|---|---|
| Financiële periode FinancialPeriod | Een unieke identificatiecode voor de financiële verslagleggingscyclus, meestal samengesteld uit het boekjaar en de boekingsperiode. | ||
| Beschrijving De financiële periode is de primaire case-ID. Hiermee groepeer je alle activiteiten voor het afsluiten en afstemmen van rekeningen in een specifieke verslagleggingscyclus, bijvoorbeeld '2023-12' voor december 2023. Zo kun je het volledige periodeafsluitingsproces voor elke afzonderlijke periode van begin tot eind analyseren. In analyses kun je hiermee de end-to-end-doorlooptijd van elke afsluiting volgen, prestaties tussen perioden vergelijken en trends of afwijkingen herkennen. Door elke financiële periode als een unieke case te definiëren, kun je de efficiëntie, bottlenecks en variaties in het afsluitingsproces in de loop van de tijd zichtbaar maken en meten. Waarom dit belangrijk is Dit is de essentiële case-ID voor de analyse. Hiermee kun je doorlooptijden, werklasten en compliance van de afsluiting tussen perioden vergelijken. Waar vind je dit? Dit attribuut wordt meestal afgeleid door het boekjaar (GJAHR) en de boekingsperiode (MONAT) uit de kopteksten van financiële documenten samen te voegen, bijvoorbeeld uit tabel BKPF. Voorbeelden 2023-122024-032023-Q4 | |||
| Activiteit ActivityName | De naam van de specifieke bedrijfsgebeurtenis of taak die tijdens het periodeafsluitingsproces is uitgevoerd. | ||
| Beschrijving Dit attribuut legt de afzonderlijke stappen in de Record to Report-cyclus vast, zoals 'Correctieboeking geboekt' of 'Financiële overzichten gegenereerd'. Het vormt de basis van de proceskaart en toont de volgorde van events waaruit de periodeafsluiting bestaat. Activiteiten analyseren is een belangrijk onderdeel van process mining. Je maakt de processtroom zichtbaar, ziet de volgorde van taken, ontdekt procesvariaties en meet hoe vaak en hoe lang elke stap voorkomt. Zo kun je bottlenecks, afwijkende procesroutes en mogelijkheden voor standaardisatie of automatisering opsporen. Waarom dit belangrijk is Dit verplichte attribuut is nodig om de proceskaart op te bouwen en de volgorde van taken in de periodeafsluiting zichtbaar te maken en te analyseren. Waar vind je dit? Afgeleid uit een combinatie van SAP-transactiecodes (TCODE), documenttypen (BLART) of specifieke programma-uitvoeringen (bijvoorbeeld FAGL_FCV voor herwaardering van vreemde valuta). Voorbeelden Correctieboeking geboektRekeningafstemming gestartPeriode afgesloten voor boekingen | |||
| Bronsysteem SourceSystem | De identificatiecode van het bronsysteem waaruit de data is geëxtraheerd. | ||
| Beschrijving Dit attribuut geeft aan waar de eventdata vandaan komt, bijvoorbeeld de naam of ID van een specifieke SAP ECC-instantie. In organisaties met meerdere ERP- of financiële systemen is dit veld nodig om data uit verschillende bronnen van elkaar te onderscheiden. Ook in een omgeving met één systeem is dit belangrijke metadata voor datagovernance, audits en probleemoplossing. Het bevestigt de herkomst van de data. Dat is nodig om vertrouwen in de analyse op te bouwen en de datalijn duidelijk te houden. Waarom dit belangrijk is Maakt de herkomst van de data inzichtelijk voor governance en helpt processen in omgevingen met meerdere systemen van elkaar te onderscheiden. Waar vind je dit? Dit is meestal een vaste waarde die tijdens de data-extractie wordt toegevoegd en de specifieke SAP-client en systeem-ID aangeeft (bijvoorbeeld op basis van tabel T000). Voorbeelden ECC_PROD_100SAP_E74_200ECC_FINANCE | |||
| Eventtijd EventTime | De timestamp die aangeeft wanneer een activiteit of event plaatsvond. | ||
| Beschrijving De eventtijd geeft voor elke procesactiviteit de exacte datum en tijd. Daarmee vormt deze de chronologische basis voor de analyse. Meestal bestaat de eventtijd uit de aanmaakdatum en -tijd van het document. Deze timestamp is nodig om events in de juiste volgorde te zetten en de processtroom te reconstrueren. Je gebruikt hem om alle tijdsgebonden metrieken te berekenen, waaronder doorlooptijden tussen activiteiten, wachttijden en de totale duur van de periodeafsluiting. Door timestamps te analyseren, kun je vertragingen opsporen en zien hoe het werk in de tijd is verdeeld. Waarom dit belangrijk is Dit verplichte attribuut bepaalt de chronologische volgorde van events. Die volgorde is nodig om doorlooptijden te berekenen en bottlenecks in het proces op te sporen. Waar vind je dit? Meestal afkomstig uit de documentinvoerdatum (CPUDT) en -tijd (CPUTM) in tabel BKPF voor financiële documenten. Voorbeelden 2023-12-28T14:30:15Z2024-01-02T09:05:00Z2024-01-05T17:21:45Z | |||
| Laatste data-update LastDataUpdate | De timestamp waarop de data voor het laatst is vernieuwd of uit het bronsysteem is geëxtraheerd. | ||
| Beschrijving Dit attribuut geeft aan hoe actueel de geanalyseerde data is. Het toont de datum en tijd waarop de datapijplijn voor het laatst is uitgevoerd en geeft zo context bij de actualiteit van de procesinzichten. Voor dashboards, vooral die de voortgang realtime volgen, laat deze timestamp zien of je de meest actuele informatie bekijkt of data van een eerdere dag. Zo weten gebruikers hoe actueel de informatie is en kunnen ze de analyse goed interpreteren. Waarom dit belangrijk is Laat zien hoe actueel de data is, zodat analyses en dashboards op tijd beschikbaar zijn en relevant blijven. Waar vind je dit? Deze timestamp wordt aan het einde van elke gegevenslading gegenereerd en toegevoegd door de data-extractie- of ETL-tool. Voorbeelden 2024-05-21T04:00:00Z2024-05-20T04:00:00Z2024-05-19T04:00:00Z | |||
| Bedrag in lokale valuta DMBTR | De financiële waarde van een transactieregel, uitgedrukt in de lokale valuta van de company code. | ||
| Beschrijving Dit attribuut geeft de geldwaarde van een financiële boeking weer. Het is de belangrijkste kwantitatieve maat voor de impact van een transactie op het grootboek. Door bedragen te analyseren, kun je problemen prioriteren en financiële risico's beter inschatten. Zo wordt het dashboard 'Volumeanalyse van correctieboekingen' veel bruikbaarder als je onderscheid kunt maken tussen veel correcties met een lage waarde en weinig correcties met een hoge waarde. Zo richt je de aandacht op transacties met een grote financiële impact. Waarom dit belangrijk is Maakt de financiële impact van transacties meetbaar. Zo kun je bijvoorbeeld correctieboekingen met een hoge waarde identificeren. Waar vind je dit? Beschikbaar in de regelpostentabel van documenten, BSEG (DMBTR). Voorbeelden 1500.75-25000.00123456.00 | |||
| Company code BUKRS | De organisatie-eenheid die een juridische entiteit vertegenwoordigt waarvoor financiële overzichten worden opgesteld. | ||
| Beschrijving De company code is een belangrijke organisatie-eenheid in SAP Financials. Deze vertegenwoordigt een zelfstandig bedrijf met een eigen sluitende boekhouding. Alle financiële transacties worden op het niveau van de company code geboekt. Met process mining kun je de periodeafsluiting voor verschillende juridische entiteiten binnen een concern vergelijken door op company code te filteren. Zo vind je best practices bij goed presterende entiteiten en zie je welke entiteiten te maken hebben met vertragingen, veel correctieboekingen of procesafwijkingen. Dit is een belangrijke dimensie om de analyse op te splitsen. Waarom dit belangrijk is Hiermee kun je de prestaties en compliance van periodeafsluitingen bij verschillende juridische entiteiten vergelijken. Dat is belangrijk voor financiële analyses op groepsniveau. Waar vind je dit? Dit veld is beschikbaar in vrijwel alle financiële documenttabellen in SAP, vooral in BKPF (koptekst) en BSEG (regelpost). Voorbeelden 10002000US01DE01 | |||
| Documentnummer BELNR | De unieke identificatiecode van een boekhoudkundig document binnen een boekjaar en company code. | ||
| Beschrijving Het boekhoudkundige documentnummer is de primaire sleutel voor financiële boekingen in SAP. Elke journaalpost, factuur of betalingsdocument krijgt een uniek nummer. Het documentnummer wordt meestal niet gebruikt voor analyses op hoofdlijnen, maar is wel handig om details te bekijken. Vanuit een process mining-dashboard kunnen analisten met dit nummer rechtstreeks naar de transactie in SAP gaan om afwijkingen te onderzoeken, zoals een grote correctieboeking of een vertraagde afstemmingspost. Zo leidt een inzicht rechtstreeks naar de brondocumentatie. Waarom dit belangrijk is Verwijst rechtstreeks naar de brondocumentatie in SAP. Zo kun je vanuit de procesweergave specifieke boekingen in detail bekijken. Waar vind je dit? Te vinden als primaire sleutel in tabel BKPF (BELNR). Voorbeelden 100000456719000001233000008901 | |||
| Documenttype BLART | Een code waarmee verschillende soorten boekhoudkundige documenten worden geclassificeerd. | ||
| Beschrijving In SAP wordt het documenttype gebruikt om verschillende zakelijke transacties van elkaar te onderscheiden, zoals leveranciersfacturen (KR), klantbetalingen (DZ) en grootboekboekingen (SA). Het bepaalt ook eigenschappen zoals de nummerreeks van het document. Bij de analyse van de periodeafsluiting is het documenttype een handig filter. Je kunt er specifieke activiteiten mee afzonderen, zoals overlopende posten, voorzieningen of tegenboekingen. Zo analyseer je het volume en de financiële impact van verschillende afsluittransacties en kun je specifieke activiteiten in het procesmodel definiëren. Waarom dit belangrijk is Helpt transacties te classificeren en te filteren, zodat je specifieke activiteiten zoals overlopende posten, tegenboekingen of intercompany-boekingen afzonderlijk kunt analyseren. Waar vind je dit? Te vinden in de documentkopteksten van tabel BKPF (BLART). Voorbeelden SAABKR | |||
| Grootboekrekening HKONT | Het nummer van de grootboekrekening waarop een regelpost wordt geboekt. | ||
| Beschrijving De grootboekrekening is een belangrijk stamgegeven in de financiële administratie en classificeert transacties. Elke financiële boeking wordt aan een of meer grootboekrekeningen toegewezen. Bij de periodeafsluiting is het belangrijk om activiteiten per grootboekrekening te analyseren. Dit ondersteunt de dashboards 'Bottlenecks bij rekeningafstemming' en 'Volumeanalyse van correctieboekingen'. Je ziet welke rekeningen het lastigst af te stemmen zijn, welke de meeste correcties vereisen en waar het risico op een materiële fout het grootst is. Zo kunnen teams prioriteit geven aan probleemrekeningen. Waarom dit belangrijk is Maakt gerichte analyses van afstemmingen en correctieboekingen mogelijk. Zo vind je probleemrekeningen die vertraging veroorzaken of vaak moeten worden gecorrigeerd. Waar vind je dit? Beschikbaar in de regelpostentabel van financiële documenten, BSEG (HKONT). Voorbeelden 113100400500750000 | |||
| Type journaalpost JournalEntryType | Een classificatie van journaalposten, zoals 'Standaard', 'Correctie', 'Overlopende post' of 'Tegenboeking'. | ||
| Beschrijving Dit afgeleide attribuut deelt financiële documenten in op basis van hun functie in het afsluitingsproces. De classificatie wordt vaak bepaald aan de hand van een combinatie van documenttype (BLART), reden voor tegenboeking (STGRD) of gebruikte grootboekrekeningen. Deze classificatie is belangrijk voor het dashboard 'Volumeanalyse van correctieboekingen' en de bijbehorende KPI's. Door correctieboekingen en overlopende posten apart te herkennen, kunnen analisten het aantal en de waarde ervan meten, trends volgen en de oorzaken onderzoeken. Zo maken ze onderscheid tussen reguliere operationele boekingen en correcties aan het einde van de periode. Waarom dit belangrijk is Classificeert boekingen voor gerichte analyses. Zo kun je belangrijke typen boekingen, zoals correcties en overlopende posten, volgen en meten. Deze geven inzicht in de gezondheid van het proces. Waar vind je dit? Dit is een afgeleid veld. De logica moet worden bepaald op basis van bedrijfsregels, meestal met velden zoals documenttype (BLART) uit BKPF. Voorbeelden CorrectieOverlopende postTegenboekingStandaard | |||
| Verantwoordelijke gebruiker USNAM | De SAP-gebruikers-ID van de persoon die de transactie heeft aangemaakt of uitgevoerd. | ||
| Beschrijving Dit veld legt vast wie een document heeft geboekt, een rapport heeft uitgevoerd of een programma voor de afsluiting heeft gestart. Zo zie je wie verantwoordelijk was voor een activiteit. Door op gebruiker te analyseren, krijg je inzicht in de verdeling van het werk, opleidingsbehoeften en procesafwijkingen. Dashboards met activiteiten per gebruiker kunnen laten zien welke teamleden overbelast zijn of niet-standaardprocedures volgen. Dit helpt ook bij prestatiebeheer en de verdeling van middelen binnen het financiële team. Waarom dit belangrijk is Maakt analyses mogelijk van de werkverdeling en teamprestaties, en helpt procesafwijkingen van specifieke personen op te sporen. Waar vind je dit? Voor het aanmaken van documenten beschikbaar in tabel BKPF (USNAM). Voor batchjobs te vinden in TBTCO (SDLUNAME). Voorbeelden JSMITHRDOEFIN_ADMIN | |||
| Afdeling Department | De functionele afdeling of het kostenplaatscentrum dat verantwoordelijk is voor de activiteit of transactie. | ||
| Beschrijving Dit attribuut geeft aan bij welke afdeling een transactie hoort, zoals 'Financiën', 'Verkoop' of 'Logistiek'. Vaak wordt dit afgeleid uit de gekoppelde stamgegevens van de kostenplaats of uit de stamgegevens van de gebruiker. Een analyse per afdeling ondersteunt het dashboard 'Werkverdeling binnen het afsluitingsteam'. Je ziet hoe verschillende bedrijfsfuncties bijdragen aan de werklast aan het einde van de periode, bijvoorbeeld door transacties te initiëren die later correcties of afstemmingen vereisen. Zo worden ook afdelingen buiten het financiële kernteam zichtbaar die invloed hebben op de afsluiting. Waarom dit belangrijk is Helpt de werklast en naleving van processen bij verschillende bedrijfsfuncties te analyseren. Zo zie je hoe afdelingen de efficiëntie van de financiële afsluiting beïnvloeden. Waar vind je dit? Vaak afgeleid uit de kostenplaats (KOSTL) in BSEG of uit de HR-stamgegevens van de verantwoordelijke gebruiker. Hiervoor moeten mogelijk meerdere tabellen worden gekoppeld. Voorbeelden BedrijfsfinanciënCrediteurenadministratieFP&A | |||
| Afstemmingsstatus ReconciliationStatus | De huidige status van een rekeningafstemming, zoals 'Open', 'In beoordeling' of 'Goedgekeurd'. | ||
| Beschrijving Dit attribuut volgt de status van een rekeningafstemming terwijl deze de workflow doorloopt. Het geeft aan of een afstemming is gestart, ter beoordeling is ingediend, is goedgekeurd of is afgewezen. Dit attribuut is belangrijk om de voortgang van afstemmingsactiviteiten realtime te volgen. Je ziet welke afstemmingen vastlopen en hoelang dat al duurt. Dit ondersteunt KPI's zoals 'Doorlooptijd rekeningafstemming'. Ook geeft het inzicht in het goedkeuringsproces en ondersteunt het dashboards die bottlenecks bij afstemmingen en de werklast van teams volgen. Waarom dit belangrijk is Geeft inzicht in de workflow voor afstemmingen. Zo kun je de voortgang volgen, bottlenecks opsporen en de beoordelings- en goedkeuringstijden meten. Waar vind je dit? Deze informatie staat vaak in een aparte tool voor reconciliatie (bijvoorbeeld SAP Account Substantiation and Automation van BlackLine) of in een aangepast statusveld. Meestal is dit geen standaardveld in BKPF/BSEG. Voorbeelden Niet gestartBezigGoedgekeurdAfgewezen | |||
| Boekjaar GJAHR | Het boekjaar waarin de transactie is geboekt. | ||
| Beschrijving Het boekjaar is een belangrijk gegeven om financiële data te ordenen. Het vormt een onderdeel van de case-ID voor de financiële periode en geeft context aan alle transacties. Het boekjaar maakt vaak al deel uit van de case-ID, maar als apart attribuut is het handig voor trendanalyses over langere tijd. Zo kun je doorlooptijden van afsluitingen, aantallen correcties en andere KPI’s per jaar vergelijken. Dat helpt om veranderingen in prestaties over meerdere jaren te herkennen. Waarom dit belangrijk is Geeft essentiële tijdscontext en maakt het mogelijk om de prestaties van het afsluitproces per jaar te vergelijken. Waar vind je dit? Beschikbaar in de tabel met documentkoppen, BKPF (GJAHR). Voorbeelden 202320242022 | |||
| Geplande einddatum TargetCompletionDate | De geplande deadline of uiterste datum voor een activiteit of voor de volledige periodeafsluiting. | ||
| Beschrijving De geplande einddatum geeft aan volgens welke planning de periodeafsluiting wordt gemeten. Dit is de deadline waarop specifieke mijlpalen of de volledige afsluiting afgerond moeten zijn. Dit attribuut is essentieel voor analyses van prestaties en compliance. Het wordt gebruikt om de KPI ‘Percentage periodeafsluitingen op tijd’ te berekenen en het dashboard ‘Compliance bij afsluiting en achterstallige taken’ aan te sturen. Door de werkelijke eventtijd met de geplande datum te vergelijken, kan het systeem bepalen of taken op schema liggen, te laat zijn of dreigen te laat te komen. Zo kun je de afsluiting proactief beheren. Waarom dit belangrijk is Maakt monitoring van compliance en prestaties mogelijk door een basis te bieden om te meten of afsluitactiviteiten op tijd zijn afgerond. Dit ondersteunt KPI’s voor tijdige oplevering. Waar vind je dit? Dit zijn meestal stamgegevens die worden bijgehouden in een aparte kalender, een tool voor afsluitbeheer (zoals SAP Financial Closing cockpit) of een spreadsheet. Ze maken geen deel uit van de transactiedata. Voorbeelden 2023-12-29T23:59:59Z2024-01-03T17:00:00Z2024-01-02T12:00:00Z | |||
| Handelspartner VBUND | De identificatiecode van het gelieerde groepsbedrijf dat betrokken is bij een intercompany-transactie. | ||
| Beschrijving Met de ID van de handelspartner identificeer je de andere company code die deelneemt aan een intercompany-transactie. Dit is nodig om rekeningen tussen gelieerde juridische entiteiten af te stemmen. Dit attribuut ondersteunt rechtstreeks het dashboard 'Intercompany-afstemmingsstroom' en de KPI 'Doorlooptijd intercompany-afstemming'. Door te filteren op transacties met een handelspartner, richt je de analyse specifiek op de efficiëntie en tijdigheid van het intercompany-afstemmingsproces. Dat proces levert tijdens de periodeafsluiting vaak problemen op. Waarom dit belangrijk is Identificeert intercompany-transacties, zodat je het vaak complexe en tijdrovende intercompany-afstemmingsproces gericht kunt analyseren. Waar vind je dit? Te vinden in de regelpostentabel van documenten, BSEG (VBUND). Voorbeelden 1000US013000 | |||
| Is achterstallig IsOverdue | Een berekende aanduiding die aangeeft of een activiteit na de geplande einddatum is afgerond. | ||
| Beschrijving Dit booleaanse attribuut vergelijkt de werkelijke afrondingstijd van een activiteit (EventTime) met de geplande deadline (TargetCompletionDate). Ligt de eventtijd na de geplande datum, dan krijgt de aanduiding de waarde true. Dit attribuut ondersteunt het dashboard ‘Compliance bij afsluiting en achterstallige taken’ en de KPI ‘Percentage periodeafsluitingen op tijd’. Het maakt afwijkingen van de planning meteen zichtbaar. Managers kunnen zo snel achterstallige taken vinden, de gevolgen voor de totale planning begrijpen en teams aanspreken op het halen van deadlines. Waarom dit belangrijk is Maakt zichtbaar wanneer de planning niet wordt nageleefd. Zo kun je achterstallige taken snel vinden en prestaties op tijd meten. Waar vind je dit? Dit is een berekend attribuut dat in de process mining-tool wordt bepaald door EventTime te vergelijken met TargetCompletionDate. Voorbeelden truefalse | |||
| Is geautomatiseerd IsAutomated | Een aanduiding die aangeeft of een activiteit is uitgevoerd door een gebruiker of door een geautomatiseerd systeem. | ||
| Beschrijving Dit booleaanse attribuut maakt onderscheid tussen handmatige taken en taken die automatisch door het systeem worden uitgevoerd, zoals een geplande batchtaak voor de waardering van vreemde valuta of een bot die terugkerende boekingen verwerkt. Dit wordt vaak bepaald aan de hand van de gebruikersnaam bij de transactie (bijvoorbeeld ‘BATCHUSER’). Inzicht in de mate van automatisering helpt om mogelijkheden voor efficiëntieverbetering te vinden. Met dit attribuut zie je welke delen van het proces handmatig verlopen en mogelijk geautomatiseerd kunnen worden. Het helpt ook om de werkbelasting van medewerkers goed in te schatten door systeemactiviteiten buiten beschouwing te laten. Waarom dit belangrijk is Maakt onderscheid tussen handmatige en systeemgestuurde activiteiten. Dat is belangrijk om mogelijkheden voor automatisering te vinden en de handmatige werkbelasting goed te meten. Waar vind je dit? Dit is een afgeleid attribuut. De logica is meestal gebaseerd op de gebruikersnaam (USNAM). Een lijst met bekende systeem- of batchgebruikers-ID’s geeft aan dat een taak geautomatiseerd is. Voorbeelden truefalse | |||
| Is herstelwerk IsRework | Een berekende aanduiding die activiteiten markeert als herstelwerk, zoals een terugboeking of een afgewezen reconciliatie. | ||
| Beschrijving Dit booleaanse attribuut markeert gebeurtenissen of reeksen gebeurtenissen die wijzen op inefficiënte herhalingen of correcties in het proces. Zo kan de activiteit ‘Reconciliatie beoordeeld’, gevolgd door nog een ‘Correctieboeking verwerkt’ op dezelfde rekening, als herstelwerk worden gemarkeerd. Dit attribuut helpt verspilling in het proces te kwantificeren en ondersteunt het dashboard ‘Herstelwerk bij reconciliaties’ en de KPI ‘Percentage herstelwerk bij reconciliaties’. Door herstelwerk apart te bekijken, kunnen teams de oorzaken onderzoeken, de invloed op de doorlooptijd meten en volgen of verbeteringen helpen om het in één keer goed te doen. Waarom dit belangrijk is Brengt inefficiëntie in het proces in kaart door correcties en herhaalde activiteiten te markeren. Zo kun je verspilde inspanning meten en verminderen. Waar vind je dit? Dit is een berekend attribuut. De logica wordt in de process mining-tool bepaald op basis van specifieke activiteitenreeksen (bijvoorbeeld herhalingen) of attributen (bijvoorbeeld ReversalReason is niet null). Voorbeelden truefalse | |||
| Reden voor tegenboeking ReversalReason | Een code die aangeeft waarom een financieel document is teruggedraaid. | ||
| Beschrijving Wanneer je een document in SAP terugdraait, kun je een redencode toewijzen om de reden aan te geven, bijvoorbeeld 'Tegenboeking in huidige periode' of 'Onjuiste invoer'. Dit attribuut geeft belangrijke context bij de oorzaken van herstelwerk. Door redenen voor tegenboekingen te analyseren, herken je patronen in fouten, zoals onjuiste gegevensinvoer of verkeerde datums. Met die informatie kun je preventieve maatregelen nemen, trainingen verbeteren of systeemcontroles aanscherpen. Zo beperk je fouten en daaropvolgende tegenboekingen en verloopt de afsluiting efficiënter. Waarom dit belangrijk is Geeft inzicht in de oorzaken van fouten en herstelwerk. Zo vind je mogelijkheden om processen te verbeteren en fouten te voorkomen. Waar vind je dit? Te vinden in de documentkopteksten van tabel BKPF (STGRD). Voorbeelden 010205 | |||
Activiteiten voor Record to Report, periodeafsluiting en reconciliatie
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Correctieboeking geboekt | Een correctieboeking wordt geboekt om rekeningsaldi te corrigeren nadat de eerste transactieverwerking voor de periode is afgerond. SAP legt dit event vast als een standaardboeking van een financieel document. | ||
| Waarom dit belangrijk is Dit is essentieel voor de volumeanalyse van correctieboekingen. Veel correcties kunnen wijzen op problemen met de nauwkeurigheid van eerdere processtappen. Daarom zijn ze een belangrijk aandachtspunt bij procesverbetering. Waar vind je dit? Te vinden in de tabellen BKPF en BSEG. Deze boekingen herken je meestal aan een specifiek documenttype (BKPF-BLART) dat voor correcties is gereserveerd, of aan boekingen in speciale afsluitperioden, zoals 13 tot en met 16. Vastleggen Filter BKPF op documenten die in speciale perioden zijn geboekt of een documenttype voor correcties hebben. Gebeurtenistype explicit | |||
| Financiële overzichten gegenereerd | Dit markeert het moment waarop officiële financiële overzichten, zoals de winst-en-verliesrekening en de balans, worden gegenereerd. Meestal leg je deze activiteit vast door de uitvoering van een specifiek rapportageprogramma te volgen. | ||
| Waarom dit belangrijk is Dit is een belangrijk meetpunt: de gegevensverwerking is afgerond en de laatste beoordelings- en goedkeuringsfase begint. De tijd tussen dit event en de goedkeuring is een belangrijke KPI. Waar vind je dit? Af te leiden uit systeemlogboeken, zoals STAD, waarin de uitvoering wordt vastgelegd van het programma voor het genereren van financiële overzichten, meestal via transactie F.01. Vastleggen Uit systeemlogboeken (STAD) die de uitvoering van transactie F.01 voor financiële overzichten bijhouden. Gebeurtenistype inferred | |||
| Herwaardering vreemde valuta uitgevoerd | Dit staat voor het uitvoeren van een programma dat openstaande posten en saldi in vreemde valuta herwaardeert op basis van de wisselkoersen aan het einde van de periode. Dit gebeurt meestal als batchjob tijdens de stappen voor de periodeafsluiting. | ||
| Waarom dit belangrijk is Deze stap is belangrijk voor een correcte financiële verslaglegging in multinationale organisaties. Door het tijdstip en de duur te analyseren, kun je mogelijkheden vinden om de uitvoering te automatiseren en de prestaties te verbeteren. Waar vind je dit? Vastgelegd in de uitvoeringslogboeken van het programma voor herwaardering van vreemde valuta, zoals FAGL_FCV of F.05. Details van batchjobs in tabellen zoals TBTCO en TBTCP bevatten de uitvoeringstimestamps. Vastleggen Uit batchjoblogboeken (tabel TBTCO) voor programma FAGL_FC_VALUATION of SAPF100. Gebeurtenistype explicit | |||
| Periode afgesloten voor boekingen | Dit staat voor de formele afsluiting van een boekingsperiode, waardoor verdere operationele journaalposten niet meer mogelijk zijn. Zo blijft de financiële data van de afgesloten periode intact. Hiervoor wordt de configuratie expliciet gewijzigd. | ||
| Waarom dit belangrijk is Dit is het definitieve eindevent van het periodeafsluitingsproces. Het is essentieel voor een nauwkeurige berekening van de totale doorlooptijd van de periodeafsluiting en voor het meten van tijdige afronding. Waar vind je dit? De afsluiting van perioden via transactie OB52 wordt vastgelegd. Je kunt deze wijzigingen vinden door de wijzigingsdocumenten (tabellen CDHDR en CDPOS) voor configuratietabel T001B te analyseren. Vastleggen Gegevens uit wijzigingsdocumenten (CDHDR/CDPOS) voor tabel T001B. Gebeurtenistype explicit | |||
| Periode geopend voor boekingen | Dit markeert het officiële begin van een financiële periode. Vanaf dat moment kunnen transacties in het grootboek worden geboekt. Een bevoegde gebruiker wijzigt hiervoor expliciet de configuratie en opent een specifieke periode voor boekingen in een of meer company codes. | ||
| Waarom dit belangrijk is Deze activiteit is het definitieve startevent van de case voor het periodeafsluitingsproces. Door de tijd vanaf dit moment te analyseren, krijg je inzicht in de volledige levenscyclus van de financiële periode. Waar vind je dit? Wijzigingen in boekingsperioden via transactie OB52 worden vastgelegd. Je kunt deze wijzigingen achterhalen door de wijzigingsdocumenten voor de onderliggende configuratietabel T001B te analyseren, meestal met de tabellen CDHDR en CDPOS. Vastleggen Gegevens uit wijzigingsdocumenten (CDHDR/CDPOS) voor tabel T001B. Gebeurtenistype explicit | |||
| Rekeningafstemming gestart | Dit markeert het begin van de afstemming van een groep grootboekrekeningen voor de periode. In standaard SAP ECC is dit geen afzonderlijk event. Meestal leid je het af uit gerelateerde activiteiten, zoals de eerste uitvoering van een belangrijk rapport. | ||
| Waarom dit belangrijk is Deze activiteit vormt een belangrijk meetpunt voor de duur van de volledige afstemmingsfase. Weten wanneer de afstemming begint, is essentieel voor de KPI Doorlooptijd rekeningafstemming. Waar vind je dit? Dit event wordt niet expliciet vastgelegd. Je moet het afleiden uit andere bronnen, zoals het systeemlogboek (transactie STAD), waarin de eerste uitvoering van een rapport voor saldo-overzichten, zoals FAGLB03 of FS10N, wordt geregistreerd. Vastleggen Leid dit af uit de eerste uitvoering van relevante rapporttransacties (bijvoorbeeld FAGLB03) in de systeemlogboeken. Gebeurtenistype inferred | |||
| Afstemming beoordeeld | Dit geeft aan dat de afstemming van een specifieke rekening of groep rekeningen is beoordeeld en bevestigd. In standaard SAP ECC wordt dit event niet expliciet vastgelegd. Vaak wordt het beheerd met offline controles of maatwerkoplossingen. | ||
| Waarom dit belangrijk is Door het tijdstip van beoordelingen te volgen, zie je waar bottlenecks ontstaan bij controles en toezicht tijdens de afsluiting. Zo worden vertragingen zichtbaar die bijvoorbeeld ontstaan doordat managers niet beschikbaar zijn of doordat herstelwerk nodig is. Waar vind je dit? Deze informatie is niet beschikbaar in standaard ECC-tabellen. Hiervoor is een maatwerkoplossing nodig, zoals een statusveld in een aangepaste Z-tabel, een eenvoudige workflow of een koppeling met een gespecialiseerde afstemmingstool van een derde partij. Vastleggen Leg statuswijzigingen vast vanuit een aangepaste workflow of Z-tabel, als die is geïmplementeerd. Gebeurtenistype inferred | |||
| GR/IR-vereffening uitgevoerd | Het automatische vereffeningsprogramma voor de rekening Goods Receipt/Invoice Receipt wordt uitgevoerd. Dit programma koppelt bijbehorende goederenontvangsten en factuurontvangsten aan elkaar en vereffent de posten. | ||
| Waarom dit belangrijk is De GR/IR-rekening leidt vaak tot afstemmingsproblemen. Door deze activiteit te volgen, controleer je of de automatische stap goed wordt uitgevoerd en zie je hoeveel uitzonderingen handmatige opvolging vereisen. Waar vind je dit? De uitvoering wordt vastgelegd in batchjoblogboeken (transactie SM37). Meestal gaat het om programma SAPF124, uitgevoerd via transactie F.13. Joblogtabellen zoals TBTCO bevatten de benodigde timestamps. Vastleggen Uit batchjoblogboeken (tabel TBTCO) voor vereffeningsprogramma SAPF124. Gebeurtenistype explicit | |||
| Intercompany-document vereffend | Deze activiteit markeert de vereffening van een openstaande post tussen twee verschillende company codes. Dit betekent dat een intercompany-transactie is afgewikkeld of afgestemd. In SAP wordt dit vastgelegd als een expliciete financiële boeking, meestal een vereffeningsdocument. | ||
| Waarom dit belangrijk is Vertragingen bij het vereffenen van intercompany-posten vormen vaak een bottleneck in het afsluitingsproces. Door deze activiteit te volgen, kun je de doorlooptijd van de intercompany-afstemming meten en verbeteren. Waar vind je dit? Te herkennen aan financiële documenten in BKPF en BSEG. Een vereffeningsdocument verwijst naar openstaande posten en sluit deze af. De vereffeningsdatum (BSEG-AUGDT) is de timestamp van het event. Intercompany-transacties herken je aan de velden voor handelspartner. Vastleggen Identificeer vereffeningsdocumenten in BKPF/BSEG met posten waaraan een handelspartner is gekoppeld. Gebeurtenistype explicit | |||
| Overlopende post of voorziening geboekt | Dit staat voor het vastleggen van een journaalpost voor een overlopende post, een uitgestelde post of een voorziening. Deze posten worden meestal aan het einde van een periode geboekt. SAP heeft hiervoor geen afzonderlijk eventtype. Je leidt de activiteit af door journaalposten met specifieke kenmerken te identificeren. | ||
| Waarom dit belangrijk is Door deze boekingen apart te bekijken, kun je het deelproces voor het beheer van schattingen analyseren. Veel overlopende posten of frequente aanpassingen kunnen wijzen op mogelijkheden om het proces te verbeteren. Waar vind je dit? Afgeleid uit de financiële documenttabellen BKPF en BSEG. Je kunt boekingen herkennen aan een specifiek documenttype (BKPF-BLART), een uniek grootboekrekeningnummer (BSEG-HKONT) of trefwoorden in de koptekst (BKPF-BKTXT). Vastleggen Filter de tabellen BKPF/BSEG op documenttype, specifieke grootboekrekeningen of tekstvelden. Gebeurtenistype inferred | |||
| Proef- en saldibalansrapport gegenereerd | Markeert de uitvoering van een rapport voor het genereren van de proef- en saldibalans. Dit is een belangrijke stap om te controleren of de totale debet- en creditbedragen gelijk zijn voordat de officiële financiële overzichten worden opgesteld. | ||
| Waarom dit belangrijk is Dit is een belangrijke kwaliteitscontrole vóór de definitieve verslaglegging. Als het rapport herhaaldelijk wordt uitgevoerd, kan dat erop wijzen dat problemen in de onderliggende data worden gevonden en gecorrigeerd, wat vertraging kan veroorzaken. Waar vind je dit? Af te leiden uit systeemlogboeken, zoals transactie STAD. Daarin kan de uitvoering worden vastgelegd van transacties voor proef- en saldibalansrapporten, zoals S_ALR_87012277 of F.01. Vastleggen Uit systeemlogboeken (STAD) die de uitvoering van rapporttransacties bijhouden. Gebeurtenistype inferred | |||
| Tegenboeking geboekt | Deze activiteit legt vast dat een document is geboekt om een eerder geboekte journaalpost terug te draaien, vaak om een fout te corrigeren. SAP legt een expliciete koppeling tussen het tegenboekingsdocument en het oorspronkelijke document. | ||
| Waarom dit belangrijk is Veel tegenboekingen kunnen wijzen op problemen met de nauwkeurigheid van gegevensinvoer of procescontroles. Door deze events te volgen, kun je het percentage in één keer goed meten en zien waar verbetering nodig is. Waar vind je dit? Tegenboekingsdocumenten staan in de tabel BKPF. Ze worden vaak aangemaakt met transactie FB08 en bevatten in het veld BKPF-STBLG een verwijzing naar het nummer van het teruggedraaide document. Vastleggen Identificeer documenten waarvoor BKPF-STBLG is ingevuld of die zijn aangemaakt met transacties voor tegenboekingen. Gebeurtenistype explicit | |||
Extractiegidsen
Stappen
- Open SAP Query: Log in op je SAP ECC-systeem. Ga naar transactiecode
SQVI(QuickViewer). 2. Maak een query aan: Voer een naam in, bijvoorbeeldZ_R2R_PERIOD_CLOSE, en klik op ‘Aanmaken’. Geef de query in het pop-upvenster een duidelijke titel, zoals ‘Extractie periodeafsluiting Record to Report’. Kies bij ‘Databron’ voor ‘Tabelkoppeling’. 3. Stel tabelkoppelingen in: Voeg de hoofdtabelBKPF(boekingsdocumentkop) toe. Voeg daarna de tabelBSEG(boekingsdocumentsegment) toe. SAP stelt automatisch koppelvoorwaarden voor (MANDT, BUKRS, BELNR, GJAHR). Controleer deze en bevestig ze. Voor activiteiten rond het openen en afsluiten van perioden heb je een aparte query nodig dieCDHDRenCDPOSkoppelt. 4. Selecteer uitvoervelden (lijstvelden): Ga naar het tabblad ‘Lijstvelden selecteren’. Selecteer in de beschikbare tabellen de velden die nodig zijn voor het event log. Dit zijn onder andereBKPF-BUKRS,BKPF-BELNR,BKPF-GJAHR,BKPF-MONAT,BKPF-CPUDT,BKPF-CPUTM,BKPF-USNAM,BKPF-BLART,BSEG-HKONT,BSEG-DMBTRen andere velden die je nodig hebt. 5. Stel invoerparameters in (selectievelden): Ga naar het tabblad ‘Selectievelden’. Kies de velden waarmee je de data bij het uitvoeren wilt filteren. De belangrijkste zijnBKPF-BUKRS(bedrijfsnummer) enBKPF-GJAHR(boekjaar). Je kunt ookBKPF-MONAT(boekingsperiode) enBKPF-BLART(documentsoort) toevoegen. 6. Maak varianten voor elke activiteit: Omdat SQVI verschillende dataselecties niet kan combineren (zoals met een SQL UNION), moet je de query meerdere keren uitvoeren. Voer de query voor elke activiteit uit, bijvoorbeeld ‘Overlopende post of voorziening geboekt’, en vul op het selectiescherm de juiste filterwaarden in, zoals de documentsoorten voor overlopende posten. Sla deze selectiecriteria op als variant. Herhaal dit voor elke activiteit waarvoor je data kunt ophalen. 7. Voer de query uit en haal de data op: Voer de query uit voor elke variant die je hebt gemaakt. De query wordt dan uitgevoerd met de filters voor die activiteit. 8. Exporteer de resultaten: Exporteer de data vanuit het resultatenscherm naar een lokaal bestand. Meestal kies je hiervoor ‘Spreadsheet’. Herhaal dit voor elke variant. 9. Voeg de data samen en bewerk deze: Open de geëxporteerde bestanden in een spreadsheetprogramma of gebruik een script. Voeg de data uit alle bestanden handmatig samen in één hoofdbestand. 10. Voeg vaste en berekende kolommen toe: Voeg in het samengevoegde bestand de kolommen toe die je niet rechtstreeks uit SAP-tabellen haalt. Dit zijnActivityName(vul handmatig in op basis van de variant waaruit de data komt),FinancialPeriod(door boekjaar en periode samen te voegen),EventTime(door datum- en tijdvelden te combineren),SourceSystemenLastDataUpdate. 11. Maak het bestand klaar om te uploaden: Sla het bestand op als CSV of Excel met de juiste kolomkoppen voor je process mining-tool. Controleer de datatypen en opmaak voordat je het uploadt.
Configuratie
- Databron: Tabelkoppeling in SAP Query (SQVI). De belangrijkste tabellen zijn BKPF, BSEG, CDHDR en CDPOS. * Datumbereik: Haal bij voorkeur data op voor minstens 3 tot 6 volledige financiële perioden om patronen te herkennen. Stel het filter in op
BKPF-GJAHR(boekjaar) enBKPF-MONAT(periode). * Filter op bedrijfsnummer: Filter altijd opBKPF-BUKRS(bedrijfsnummer) om de hoeveelheid data te beperken en de analyse op specifieke juridische entiteiten te richten. Het is niet aan te raden om in één keer data voor alle bedrijfsnummers op te halen. * Filter op documentsoort: Gebruik filters opBKPF-BLART(documentsoort) om specifieke activiteiten, zoals overlopende posten, correcties of terugboekingen, apart te bekijken. Vraag na welke documentsoorten binnen je organisatie worden gebruikt. * Vereisten: De gebruiker die de data ophaalt, moet bevoegd zijn om transactieSQVIte gebruiken en de relevante financiële tabellen te bekijken (bijvoorbeeld via autorisatieobject S_TABU_DIS). * Aandachtspunten voor prestaties: Het koppelen van BKPF en BSEG kan veel systeembronnen vragen. Voer de extractie uit buiten piekuren. Gebruik geen erg ruime datumbereiken en laat het filter op bedrijfsnummer niet openstaan. Anders kunnen geheugenproblemen of time-outs ontstaan.
Voorbeeldquery sql
/*
LOGICAL REPRESENTATION FOR SAP QUERY (SQVI)
This is not a single executable script. Due to limitations in SQVI, you must create a base query joining BKPF and BSEG, then run it multiple times using different selection screen variants to extract each activity below. The results must be combined manually.
A separate query joining CDHDR and CDPOS is needed for period open/close activities.
*/
-- Activity 1: Period Opened For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW > CDPOS.VALUE_OLD;
UNION ALL
-- Activity 2: Accrual Or Provision Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Accrual' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('SA', '[Your Accrual Doc Type]'); -- Filter by document types used for accruals
UNION ALL
-- Activity 3: Intercompany Document Cleared
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.AUGBL AS BELNR, -- The clearing document number
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BSEG.AUGBL IS NOT NULL AND BSEG.VBUND IS NOT NULL; -- Identify cleared items with an intercompany trading partner
UNION ALL
-- Activity 4: Foreign Currency Valuation Run
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Valuation' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('FAGL_FCV', 'FBB1'); -- Filter by FCV transaction code
UNION ALL
-- Activity 5: GR/IR Clearing Run Executed
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('F.13', 'F13E'); -- Filter by automated clearing transaction codes
UNION ALL
-- Activity 6: Account Reconciliation Started (Proxy)
-- This is a proxy. It takes the earliest adjusting journal entry timestamp for the period.
SELECT
A.FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
MIN(A.EventTime) AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
A.BUKRS,
NULL AS BELNR,
NULL AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM (
SELECT CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
BKPF.BUKRS
FROM BKPF
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]')
) AS A
GROUP BY A.FinancialPeriod, A.BUKRS;
UNION ALL
-- Activity 7: Adjusting Journal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Adjusting' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]'); -- Filter by document types for adjustments
UNION ALL
-- Activity 8: Reversal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Reversal' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.STBLG IS NOT NULL; -- STBLG (Reversed Document Number) is populated for reversals
UNION ALL
-- Activity 9: Period Closed For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW < CDPOS.VALUE_OLD;
/*
-- Activities Not Extractable via this Method
-- The following activities are not data postings and cannot be reliably extracted by querying finance tables BKPF/BSEG.
-- Extraction would require analyzing application logs (SLG1), system logs (STAT), or custom-built logging solutions.
-- Activity: Trial Balance Report Generated
-- Activity: Financial Statements Generated
-- Activity: Reconciliation Reviewed
*/ Stappen
- Bepaal de scope en het ontwerp van het programma: Leg de logica vast waarmee je de 12 vereiste activiteiten herkent. Overleg met proceseigenaren en SAP-functioneel analisten over de documentsoorten, grootboekrekeningen en programmanamen voor activiteiten rond de periodeafsluiting in jouw SAP ECC-omgeving.
- Maak een ABAP-programma: Maak met transactie
SE38(ABAP Editor) een nieuw uitvoerbaar programma, bijvoorbeeldZ_PM_R2R_EXTRACTION. Geef het een duidelijke titel en kies als programmatype ‘Uitvoerbaar programma’. - Stel het selectiescherm in: Definieer in het programma een selectiescherm met
PARAMETERSenSELECT-OPTIONS. Gebruikers kunnen hiermee de scope van de extractie bepalen, waaronder bedrijfsnummer (BUKRS), boekjaar (GJAHR) en boekingsperiode (MONAT). Zo houd je de hoeveelheid data onder controle. - Definieer datastructuren: Definieer een interne tabelstructuur voor de uiteindelijke event log-data. Deze structuur moet alle vereiste en aanbevolen attributen bevatten:
FinancialPeriod,ActivityName,EventTime,SourceSystem,LastDataUpdate,BUKRS,BELNR,USNAM,HKONT,BLART,DMBTRenJournalEntryType. - Implementeer de data-extractie: Schrijf de ABAP-logica om data voor elk van de 12 activiteiten te selecteren. Raadpleeg voor elke activiteit de relevante SAP-tabellen (bijvoorbeeld BKPF, BSEG, TBTCO en CDHDR) en vul een tussentabel. Gebruik de logica in de bijbehorende ABAP-querysectie als template.
- Bepaal afgeleide activiteiten: Voeg voor activiteiten die niet expliciet in standaard-SAP worden vastgelegd, zoals ‘Reconciliatie gestart’ of ‘Reconciliatie beoordeeld’, de afgesproken afleidingslogica toe. Je kunt bijvoorbeeld controleren wanneer een specifiek rapport voor het eerst is uitgevoerd of aangepaste ‘Z-tabellen’ raadplegen als die bestaan.
- Voeg eventdata samen: Voeg na het ophalen van de data voor alle afzonderlijke activiteiten de records uit elke tussentabel toe aan de uiteindelijke interne tabel. Vul het veld
EventTimecorrect met de relevante brongegevens, zoals de boekingsdatum en -tijd van een document of de startdatum en -tijd van een job. - Standaardiseer en formatteer de data: Standaardiseer belangrijke velden voordat je de data uitvoert. Combineer boekjaar en periode tot de identificatiecode
FinancialPeriod. Vul vaste waarden in voorSourceSystemenLastDataUpdate. Zorg dat timestamps overal hetzelfde formaat hebben. - Voeg uitvoerfunctionaliteit toe: Voeg aan het programma de mogelijkheid toe om de uiteindelijke interne tabel te exporteren. Meestal schrijf je de data met
OPEN DATASETnaar een CSV- of tabgescheiden bestand op de SAP Application Server. Je kunt gebruikers ook het bestand rechtstreeks laten downloaden met functiemoduleGUI_DOWNLOAD. - Test en controleer: Test het programma grondig met een representatieve dataset voor meerdere bedrijfsnummers en perioden. Controleer met de validatiestappen of de data volledig en correct is. Pas de selectielogica aan op basis van feedback van functionele experts.
- Plan de uitvoering (optioneel): Na validatie kun je het programma via transactie
SM36als achtergrondjob inplannen. Zo wordt het event log periodiek automatisch opgehaald, zonder handmatige tussenkomst.
Configuratie
- Selectiecriteria: Het programma moet een selectiescherm hebben om de data te filteren. Belangrijke filters zijn:
Bedrijfsnummer (BUKRS): Verplicht om de selectie te beperken tot relevante juridische entiteiten.Boekjaar (GJAHR): Verplicht om het hoofdboekjaar voor de extractie te bepalen.Boekingsperiode (MONAT): Verplicht om de gewenste financiële perioden te selecteren.
- Instellingen per activiteit: Veel selecties zijn afhankelijk van de SAP-configuratie. Je moet deze als parameters of constanten in het programma kunnen instellen:
Documentsoorten voor overlopende posten en voorzieningen: Een lijst met documentsoorten (BLART) waarmee boekingen voor overlopende posten en voorzieningen worden herkend.Documentsoorten voor correctieboekingen: Een lijst met documentsoorten waarmee correctieboekingen worden herkend.Namen van achtergrondjobs en programma’s: De technische namen van programma’s voor de waardering van vreemde valuta (bijvoorbeeldFAGL_FCV), GR/IR Clearing (bijvoorbeeldSAPF124), proefbalansrapporten en het opstellen van financiële overzichten (bijvoorbeeldRFBILA00).
- Datumbereik: De primaire selectie is op boekjaar en periode, maar de onderliggende logica moet rekening houden met de volledige datum en tijd van gebeurtenissen. Voor een eerste analyse raden we aan data op te halen voor de laatste 3 tot 6 afgesloten financiële perioden.
- Prestaties: In grote SAP-omgevingen zijn de prestaties van het programma belangrijk. Gebruik bij databaseselecties indexvelden, vooral in tabellen zoals
BKPFenBSEG. Selecteer niet alle velden (SELECT *) en verwerk de data zo nodig in hanteerbare delen. - Autorisaties: De gebruiker of serviceaccount die het programma uitvoert, moet toegang hebben tot alle geraadpleegde tabellen (
BKPF,BSEG,TBTCO,TBTCP,CDHDR,CDPOS) en transacties zoalsSE38(voor ontwikkeling) enSM37/SM36(voor planning en monitoring) kunnen uitvoeren.
Voorbeeldquery abap
REPORT Z_PM_R2R_EXTRACTION.
" ====================================================================
" DATA DECLARATIONS
" ====================================================================
TYPES: BEGIN OF ty_event_log,
FinancialPeriod TYPE string,
ActivityName TYPE string,
EventTime TYPE timestamp,
SourceSystem TYPE string,
LastDataUpdate TYPE timestamp,
BUKRS TYPE bukrs,
BELNR TYPE belnr_d,
USNAM TYPE usnam,
HKONT TYPE hkont,
BLART TYPE blart,
DMBTR TYPE dmbtr,
JournalEntryType TYPE string,
END OF ty_event_log.
DATA: lt_final_log TYPE STANDARD TABLE OF ty_event_log,
ls_log_entry LIKE LINE OF lt_final_log.
DATA: lv_source_system TYPE string VALUE 'SAP ECC'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_bukrs FOR ls_log_entry-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_monat FOR bkpf-monat OBLIGATORY.
PARAMETERS: p_accrl TYPE blart DEFAULT 'SA', " Example Doc Type for Accruals
p_adjst TYPE blart DEFAULT 'AJ', " Example Doc Type for Adjustments
p_fcv TYPE btcjob DEFAULT 'FAGL_FCV*', " Program for FC Valuation
p_grir TYPE btcjob DEFAULT 'SAPF124*', " Program for GR/IR Clearing
p_fs TYPE btcjob DEFAULT 'RFBILA00'. " Program for Fin. Statements
" ====================================================================
" MAIN LOGIC
" ====================================================================
START-OF-SELECTION.
" --- 1. Period Opened For Posting ---
" Note: This is complex. This example queries change documents for posting period config (T001B).
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_open)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_open INTO DATA(ls_period_open).
" Further logic needed to parse OBJECTID and check CDPOS for opening a period.
" This is a simplified placeholder for a complex logic.
ls_log_entry-ActivityName = 'Period Opened For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" --- 2. Accrual Or Provision Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_accrual)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_accrl.
LOOP AT lt_accrual INTO DATA(ls_accrual).
CLEAR ls_log_entry.
CONVERT DATE ls_accrual-cpudt TIME ls_accrual-cputm INTO TIME STAMP ls_log_entry-EventTime TIME ZONE sy-zonlo.
CONCATENATE ls_accrual-gjahr ls_accrual-monat INTO ls_log_entry-FinancialPeriod.
ls_log_entry-ActivityName = 'Accrual Or Provision Posted'.
ls_log_entry-BUKRS = ls_accrual-bukrs.
ls_log_entry-BELNR = ls_accrual-belnr.
ls_log_entry-USNAM = ls_accrual-usnam.
ls_log_entry-HKONT = ls_accrual-hkont.
ls_log_entry-BLART = ls_accrual-blart.
ls_log_entry-DMBTR = ls_accrual-dmbtr.
ls_log_entry-JournalEntryType = 'Accrual'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
ls_log_entry-SourceSystem = lv_source_system.
APPEND ls_log_entry TO lt_final_log.
ENDLOOP.
" --- 3. Intercompany Document Cleared ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_ic_clear)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat
AND h~blart = 'AB' AND i~vbund <> space.
LOOP AT lt_ic_clear INTO DATA(ls_ic_clear).
" Populate ls_log_entry and append to lt_final_log, setting ActivityName = 'Intercompany Document Cleared'
ENDLOOP.
" --- 4. Foreign Currency Valuation Run ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fcv_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fcv AND j~status = 'F'. " F = Finished
LOOP AT lt_fcv_jobs INTO DATA(ls_fcv_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Foreign Currency Valuation Run'
ENDLOOP.
" --- 5. GR/IR Clearing Run Executed ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_grir_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_grir AND j~status = 'F'.
LOOP AT lt_grir_jobs INTO DATA(ls_grir_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'GR/IR Clearing Run Executed'
ENDLOOP.
" --- 6. Account Reconciliation Started (Inferred) ---
" Note: Inferring this by first run of a report, e.g., FAGLB03. Requires custom logging or complex logic.
" Placeholder: Query a custom log table if available.
" SELECT ... FROM zreco_log ...
" --- 7. Adjusting Journal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_adjust)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_adjst.
LOOP AT lt_adjust INTO DATA(ls_adjust).
" Populate ls_log_entry and append, setting ActivityName = 'Adjusting Journal Entry Posted', JournalEntryType = 'Adjusting'
ENDLOOP.
" --- 8. Reversal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_reversal)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~stblg <> space.
LOOP AT lt_reversal INTO DATA(ls_reversal).
" Populate ls_log_entry and append, setting ActivityName = 'Reversal Entry Posted', JournalEntryType = 'Reversal'
ENDLOOP.
" --- 9. Trial Balance Report Generated (Inferred from Job) ---
" Similar to other jobs, query TBTCO for Trial Balance report programs.
" SELECT ... FROM tbtco ... WHERE jobname LIKE '[Your Trial Balance Program]'.
" --- 10. Financial Statements Generated ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fs_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fs AND j~status = 'F'.
LOOP AT lt_fs_jobs INTO DATA(ls_fs_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Financial Statements Generated'
ENDLOOP.
" --- 11. Reconciliation Reviewed (Inferred) ---
" Note: This activity is almost always managed outside of SAP or in a custom solution.
" Placeholder: Query a custom approval/log table if available.
" SELECT ... FROM zreco_approval ...
" --- 12. Period Closed For Posting ---
" Note: Similar to 'Period Opened', this is very complex. Query change documents for T001B.
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_close)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_close INTO DATA(ls_period_close).
" Further logic needed to parse OBJECTID and check CDPOS for closing a period.
ls_log_entry-ActivityName = 'Period Closed For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" ... Code to display or download the lt_final_log internal table ...
ENDFORMS. Stappen
- Verzamel de vereiste gegevens: Vraag inloggegevens aan met alleen-lezen toegang tot de onderliggende SAP ECC-database. Zoek het juiste databaseschema op. Dit heet meestal
SAPSR3of heeft een vergelijkbare naam die je databasebeheerder kan geven. - Controleer de systeemconfiguratie: Vraag het SAP Finance-team welke
Company Codes(BUKRS) en financiële perioden je moet analyseren. Zoek ook uit welkeDocument Types(BLART) in jouw systeem worden gebruikt voor ‘Overlopende post of voorziening geboekt’, ‘Correctieboeking verwerkt’ en intercompanytransacties. - Controleer programmanamen en jobnamen: Zoek de programmanamen op voor belangrijke batchjobs, zoals de waardering van vreemde valuta (bijvoorbeeld
FAGL_FCV), GR/IR Clearing (bijvoorbeeldSAPF124), proefbalansrapporten (bijvoorbeeldRFBILA00) en het opstellen van financiële overzichten (bijvoorbeeldRFBILA00). Je vindt deze door geplande jobs te bekijken in transactieSM37. - Pas de SQL-query aan: Kopieer de meegeleverde SQL-query naar een teksteditor of SQL-client. Vervang de tijdelijke variabelen
{{start_date}},{{end_date}}en{{company_codes}}door de juiste waarden voor je analyse. Pas de lijsten met documentsoorten en programmanamen aan op basis van de informatie uit de vorige stappen. - Maak verbinding met de database: Gebruik een standaard SQL-client, zoals DBeaver, SQL Server Management Studio of Oracle SQL Developer, om met de opgegeven inloggegevens verbinding te maken met de SAP-database.
- Voer de query uit: Voer de aangepaste SQL-query uit op de database. Afhankelijk van het datumbereik en de omvang van de financiële tabellen kan dit veel tijd kosten.
- Controleer de eerste resultaten: Bekijk de uitvoer zodra de query klaar is. Controleer of het aantal rijen aannemelijk is, alle kolommen aanwezig zijn en verschillende waarden voor
ActivityNamein de resultaten voorkomen. - Exporteer de data: Exporteer de volledige resultatenset vanuit je SQL-client naar een CSV-bestand. Sla het bestand op met UTF-8-codering om problemen met tekens te voorkomen.
- Maak de data klaar om te uploaden: Controleer voordat je de data naar een process mining-tool uploadt of de kolomkoppen in het CSV-bestand exact overeenkomen met de vereiste attribuutnamen (
FinancialPeriod,ActivityName,EventTimeenzovoort). Controleer ook of de kolomEventTimeeen consistent timestamp-formaat gebruikt, zoalsYYYY-MM-DD HH:MI:SS.
Configuratie
- Database-inloggegevens: Je hebt een databasegebruiker met alleen-lezen toegang nodig tot de belangrijkste financiële en systeemtabellen van SAP. Het gaat onder andere om
BKPF,BSEG,TBTCO,CDHDRenCDPOS. - Datumbereik: We raden aan data op te halen voor minstens 3 tot 6 volledige financiële perioden, zodat je betekenisvolle verschillen in het proces kunt zien. Houd er rekening mee dat een groter datumbereik de uitvoering van de query flink vertraagt.
- Bedrijfsnummers (
BUKRS): Filter altijd op een specifieke lijst met bedrijfsnummers. Een query uitvoeren voor alle bedrijfsnummers in een groot systeem is niet haalbaar en leidt waarschijnlijk tot prestatieproblemen. - Documentsoorten (
BLART): De herkenning van boekingssoorten, zoals overlopende posten en correcties, hangt volledig af van de SAP-configuratie binnen je organisatie. Vul in deWHERE-clausules van de query de juiste documentsoortcodes in om activiteiten correct te classificeren. - Programma- en jobnamen: De query gebruikt gangbare programmanamen voor geautomatiseerde afsluitstappen. Mogelijk gebruikt jouw systeem aangepaste wrapperprogramma’s of andere jobnamen. Controleer dit in transactie
SM37en pas de query zo nodig aan. - Aandachtspunten voor prestaties: Deze query raadpleegt zeer grote tabellen, vooral
BSEGenCDPOS. Voer de extractie bij voorkeur buiten kantooruren uit om de systeemprestaties niet te beïnvloeden. Met een beperkt datumbereik en een filter op bedrijfsnummer houd je de uitvoeringstijd het best onder controle.
Voorbeeldquery sql
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'FRPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'TOPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Accrual' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('SA', '[Your Accrual Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
h.AUGDT AS EventTime, -- Clearing Date
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Clearing' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.AUGDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Intercompany Doc Type]')
AND h.AUGBL IS NOT NULL
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'FAGL_FCV' OR p.PROGNAME = 'SAPF100'
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F' -- Finished
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'SAPF124' -- Program for F.13
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName, -- Proxy event
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('FAGLL03', 'FBL3N') -- Common reconciliation reports
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Adjusting' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Adjusting Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Reversal' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.STBLG IS NOT NULL -- STBLG links to the reversed document
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Trial Balance Report Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('RFSSLD00', 'S_ALR_87012310')
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'RFBILA00' -- Program for F.01
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
-- UNION ALL
-- Note: 'Reconciliation Reviewed' is typically not a standard, logged event in SAP ECC.
-- This activity often happens offline or in a custom tool.
-- The following is a placeholder to be adapted if a custom (Z-table) log exists.
-- SELECT
-- CONCAT(CAST(YEAR(z.REVIEW_DATE) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(z.REVIEW_DATE)), 2)) AS FinancialPeriod,
-- 'Reconciliation Reviewed' AS ActivityName,
-- z.REVIEW_DATE AS EventTime,
-- 'SAP_ECC' AS SourceSystem,
-- CURRENT_TIMESTAMP AS LastDataUpdate,
-- z.BUKRS AS CompanyCode,
-- z.HKONT AS DocumentNumber, -- Using GL Account as a proxy identifier
-- z.REVIEWER_USER AS ResponsibleUser,
-- z.HKONT AS GLAccount,
-- NULL AS DocumentType,
-- NULL AS AmountInLocalCurrency,
-- NULL AS JournalEntryType
-- FROM ZRECON_LOG z -- Replace with your custom table for reconciliation status
-- WHERE z.REVIEW_DATE BETWEEN '{{start_date}}' AND '{{end_date}}'
-- AND z.STATUS = 'Reviewed'
; Klaar om te beginnen?
Gebruik deze datatemplate als startpunt voor process mining en krijg waardevolle inzichten in de financiële afsluiting. Begin vandaag met het verbeteren van het Record to Report-proces.
Verbeter de Record to Report-afsluiting en verkort nu de doorlooptijd
Haal bottlenecks weg en verkort de doorlooptijd van de Record to Report-afsluiting met 30%.
Je hebt geen creditcard nodig. Start je gratis proefperiode van 14 dagen.