Datatemplate voor Record to Report: periodeafsluiting en afstemming
Datatemplate voor Record to Report: periodeafsluiting en afstemming
- Aanbevolen attributen om te verzamelen
- Belangrijke activiteiten om te volgen voor procesanalyse
- Stapsgewijze uitleg voor data-extractie
Attributen voor Record to Report: periodeafsluiting en afstemming
| Naam | Beschrijving | ||
|---|---|---|---|
| Financiële periode FinancialPeriod | Een unieke identificatie voor de financiële rapportagecyclus, bijvoorbeeld ‘2023-12’ voor december 2023. Deze dient als case voor het afsluitproces aan het einde van de periode. | ||
| Beschrijving De financiële periode is de belangrijkste case-identificatie. Hiermee groepeer je alle activiteiten voor het afsluiten van de boeken over een bepaalde periode, meestal een kalendermaand of boekjaarperiode. Elke financiële periode staat voor één volledige uitvoering van het afsluitproces. Bij process mining gebruik je dit attribuut om de hele levenscyclus van een periodeafsluiting te volgen, van de start tot de definitieve rapportage. Je kunt doorlooptijden tussen perioden vergelijken, veelvoorkomende procespaden herkennen en verschillen tussen maand-, kwartaal- en jaarafsluitingen analyseren. Door elke periode als case te behandelen, kunnen analisten prestaties door de tijd heen meten en structurele bottlenecks opsporen. Waarom dit belangrijk is Dit is de belangrijkste case-identificatie voor de analyse. Hiermee kun je de prestaties van periodeafsluitingen door de tijd heen vergelijken en trends of terugkerende problemen herkennen. Waar vind je dit? Afgeleid door de velden Boekjaar (GJAHR) en Boekingsperiode (MONAT) uit de kopteksten van financiële documenten te combineren, meestal uit tabellen zoals BKPF. Voorbeelden 2023-122024-032024-Q1 | |||
| Activiteit ActivityName | De naam van een specifieke bedrijfsstap of taak in het periodeafsluitingsproces, zoals ‘Correctieboeking geboekt’ of ‘Boekingsperiode gesloten’. | ||
| Beschrijving Dit attribuut staat voor één gebeurtenis of taak in het volledige proces voor periodeafsluiting en reconciliatie. Activiteiten vormen de bouwstenen van de proceskaart en laten de volgorde van het werk zien. Ze worden vaak afgeleid uit een combinatie van transactiecodes, documentsoorten of statuswijzigingen in SAP S/4HANA. Activiteiten analyseren is een belangrijk onderdeel van process mining. Je brengt er de processtroom mee in beeld, vindt afwijkingen van de standaardprocedure en ontdekt bottlenecks waar activiteiten te lang duren. Ook zie je hoe vaak taken voorkomen en in welke volgorde ze worden uitgevoerd. Dit is belangrijk voor dashboards zoals Variantanalyse periodeafsluiting en Huidige status periodeafsluiting. Waarom dit belangrijk is Dit attribuut bepaalt de processtappen en vormt de basis van de proceskaart. Zo kun je de processtroom, afwijkingen en bottlenecks analyseren. Waar vind je dit? Afgeleid uit verschillende bronnen, zoals transactiecodes (TCODE), documentsoorten (BLART) of statusvelden in tabellen voor financiële afsluitingstaken (bijvoorbeeld uit SAP Financial Closing Cockpit). Voorbeelden Boekingsperiode geopendGrootboekreconciliatie gestartFinanciële overzichten gegenereerdIntercompany-reconciliatie gestart | |||
| Starttijd EventTime | De timestamp die aangeeft wanneer een activiteit is gestart of in het systeem is vastgelegd. | ||
| Beschrijving De gebeurtenistijd legt de exacte datum en tijd van een activiteit vast. Bij financiële boekingen is dit vaak de aanmaaktijd (CPUTM) of boekingsdatum (BUDAT) van een document. Bij statuswijzigingen of taken is het de timestamp waarop de wijziging is geregistreerd. Dit attribuut is nodig om activiteiten chronologisch te ordenen en vormt de basis voor alle tijdsanalyses. Je gebruikt het om doorlooptijden tussen activiteiten, de duur van specifieke taken en de totale doorlooptijd van het proces te berekenen. Het ondersteunt KPI’s zoals Gemiddelde doorlooptijd periodeafsluiting en Gemiddelde goedkeuringstijd reconciliatie. Waarom dit belangrijk is Deze verplichte timestamp maakt het mogelijk gebeurtenissen chronologisch te ordenen en vormt de basis voor alle berekeningen van duur en prestaties. Waar vind je dit? Afkomstig uit timestampvelden zoals Aanmaakdatum (CPUDT) en Aanmaaktijd (CPUTM) in tabellen zoals BKPF, of uit datumvelden voor wijzigingen in verschillende statustabellen (bijvoorbeeld CDHDR en CDPOS). Voorbeelden 2023-12-28T09:15:30Z2024-01-02T14:00:12Z2024-01-05T11:21:00Z | |||
| Aansluitingsstatus ReconciliationStatus | De status van een aansluitingsactiviteit, bijvoorbeeld 'Open', 'In behandeling' of 'Goedgekeurd'. | ||
| Beschrijving Dit attribuut houdt de status bij van het aansluitingsproces voor een rekening of taak. Het geeft aan of een aansluiting is gestart, ter beoordeling is ingediend, goedgekeurd of afgewezen. Statuswijzigingen zijn belangrijke gebeurtenissen in het proces. Dit attribuut vormt de basis voor het dashboard 'Analyse van herhaalwerk bij aansluitingen'. Door de statusvolgorde te analyseren, kun je zien wanneer na de status 'Goedgekeurd' nog correcties volgen. Dat wijst op herhaalwerk. Ook ondersteunt het de KPI 'Aansluitingen in één keer goedgekeurd': je ziet welke aansluitingen worden goedgekeurd zonder eerdere afwijzing of heropening. Waarom dit belangrijk is Houdt de voortgang en uitkomst van aansluitingen bij. Zo kun je herhaalwerk opsporen, goedkeuringspercentages meten en bottlenecks analyseren. Waar vind je dit? Deze informatie staat meestal in tabellen van de gebruikte aansluitingstool, zoals SAP Financial Closing cockpit of SAP Account Substantiation and Automation van BlackLine. Voorbeelden Niet gestartIn voorbereidingGoedgekeurdAfgewezen | |||
| Bedrijfsnummer CompanyCode | Een unieke identificatie voor een juridische entiteit of bedrijf binnen de SAP-organisatie. | ||
| Beschrijving De company code is een zelfstandige boekhoudeenheid binnen een onderneming waarvoor een volledige, afzonderlijke boekhouding kan worden ingericht. Alle activiteiten voor de periodeafsluiting worden uitgevoerd op het niveau van de company code. Dit is een belangrijke organisatorische dimensie voor financiële analyses. Met process mining kun je het afsluitproces van verschillende juridische entiteiten vergelijken. Het dashboard 'Analyse van periodeafsluitingsvarianten' gebruikt de company code om afwijkingen op te sporen en standaardisatie van afsluitprocedures te bevorderen. Waarom dit belangrijk is Biedt belangrijke organisatorische context. Zo kun je processen bij verschillende juridische entiteiten vergelijken en afwijkingen en best practices opsporen. Waar vind je dit? Komt voor in vrijwel alle financiële tabellen in SAP, vooral in de kopgegevenstabel BKPF (veld BUKRS). Voorbeelden 10001710US01DE01 | |||
| Documentnummer DocumentNumber | De unieke identificatiecode van een financieel document, zoals een journaalpost. | ||
| Beschrijving SAP kent aan elke financiële boeking een uniek documentnummer toe. Dit is de belangrijkste referentie voor het volgen en controleren van afzonderlijke transacties die deel uitmaken van het afsluitproces. Het documentnummer is zelf geen case-ID, maar verwijst wel rechtstreeks naar het bronsysteem. Analisten kunnen vanuit een process mining-weergave met dit nummer inzoomen op de details van de transactie in SAP S/4HANA en de oorzaak van een probleem onderzoeken. Dit is vooral handig bij onderzoek naar specifieke correctieboekingen of aansluitboekingen. Waarom dit belangrijk is Verwijst rechtstreeks naar de onderliggende transactie in SAP. Zo kun je vanuit het procesmodel eenvoudig inzoomen op de details en blijft het proces controleerbaar. Waar vind je dit? Te vinden in de kopgegevenstabel BKPF van financiële documenten (veld BELNR) en in tabellen met regelitems, zoals BSEG of ACDOCA. Voorbeelden 100000045190000001300000023 | |||
| Eindtijd EndTime | De timestamp die aangeeft wanneer een activiteit is voltooid. | ||
| Beschrijving De eindtijd markeert het moment waarop een taak is voltooid. Bij sommige gebeurtenissen die direct in het systeem worden vastgelegd, kan de eindtijd gelijk zijn aan de starttijd. Bij activiteiten met een meetbare duur is dit de timestamp waarop ze zijn afgerond. Samen met de starttijd is dit attribuut nodig om de Waarom dit belangrijk is Maakt het mogelijk de duur van activiteiten (verwerkingstijd) te berekenen. Dat is belangrijk om bottlenecks in de prestaties op te sporen en de efficiëntie te analyseren. Waar vind je dit? Net als de starttijd kan de eindtijd afkomstig zijn uit verschillende timestampvelden. Bij sommige activiteiten is deze gelijk aan de starttijd. Bij andere kan het een aparte datum zijn waarop iets is voltooid of gewijzigd, in applicatietabellen of wijzigingslogs (CDHDR, CDPOS). Voorbeelden 2023-12-28T09:16:10Z2024-01-02T17:30:00Z2024-01-05T11:21:00Z | |||
| Geplande einddatum TargetCompletionDate | De geplande datum of deadline voor het afronden van een belangrijke activiteit, zoals het opstellen van financiële overzichten. | ||
| Beschrijving De geplande einddatum is de interne of externe deadline voor een mijlpaal in het periodeafsluitingsproces. Op die datum moet een taak naar verwachting zijn afgerond. Met dit attribuut meet je of de planning wordt gehaald en hoe de prestaties zich verhouden tot deadlines. Het vormt de basis voor het dashboard 'Deadlines voor rapportages halen' en de KPI 'Financiële overzichten op tijd afgerond'. Die vergelijken de geplande datum met Waarom dit belangrijk is Maakt het mogelijk prestaties ten opzichte van deadlines te analyseren en helpt het percentage tijdig afgeronde, belangrijke afsluitactiviteiten te meten en te verbeteren. Waar vind je dit? Deze data staat vaak in een taakbeheer- of planningssysteem, zoals SAP Financial Closing cockpit. Daarin zijn afsluitende takenlijsten met geplande einddatums vastgelegd. Voorbeelden 2024-01-05T23:59:59Z2024-04-04T23:59:59Z2024-07-05T23:59:59Z | |||
| Grootboekrekeningnummer GlAccountNumber | De identificatiecode van een specifieke rekening in het grootboek. | ||
| Beschrijving Het grootboekrekeningnummer identificeert afzonderlijke rekeningen waarop financiële transacties worden geboekt, zoals kas, crediteuren of omzet. Veel activiteiten rond de periodeafsluiting, zoals aansluitingen en correctieboekingen, hebben rechtstreeks betrekking op specifieke grootboekrekeningen. Dit attribuut is essentieel voor gedetailleerde analyses van financiële processen. Het dashboard 'Analyse van correctieboekingen' gebruikt het om het aantal correcties per rekening te tonen en probleemgebieden op te sporen. Ook de KPI 'Gemiddelde tijd voor grootboekaansluiting' gebruikt dit attribuut om vertragingen bij specifieke rekeningen te vinden. Waarom dit belangrijk is Koppelt procesactiviteiten aan specifieke financiële rekeningen. Zo kun je aansluitingen en journaalposten gedetailleerd analyseren en de oorzaken van problemen opsporen. Waar vind je dit? Te vinden in tabellen met regelitems van financiële documenten, voornamelijk BSEG (veld HKONT) of de universele journaaltabel ACDOCA van S/4HANA. Voorbeelden 113100004000000073000000 | |||
| Verantwoordelijke gebruiker ResponsibleUser | De gebruikers-ID van de persoon die de activiteit heeft uitgevoerd of verantwoordelijk is voor de taak. | ||
| Beschrijving Dit attribuut identificeert de medewerker die een taak heeft uitgevoerd, zoals het boeken van een journaalpost of het goedkeuren van een reconciliatie. Meestal wordt de gebruikers-ID vastgelegd in systeemlogs en documentkopteksten. Door processen per gebruiker te analyseren, krijg je inzicht in de werkverdeling, individuele prestaties en opleidingsbehoeften. Het dashboard Efficiëntie van bronnentoewijzing gebruikt dit attribuut om de verwerkingstijden van activiteiten per gebruiker weer te geven. Je kunt er ook taken mee vinden die mogelijk te automatiseren zijn, bijvoorbeeld door te kijken naar terugkerende taken die door veel gebruikers worden uitgevoerd. Waarom dit belangrijk is Koppelt procesactiviteiten aan de mensen die ze hebben uitgevoerd. Zo kun je de werkverdeling analyseren, bronnen beter toewijzen en prestaties beheren. Waar vind je dit? Vaak te vinden in documentkopteksttabellen zoals BKPF (veld USNAM, gebruikersnaam) of in wijzigingsdocumenttabellen zoals CDHDR (veld USERNAME). Voorbeelden ABROWNCSMITHDJOHNSON | |||
| Bronsysteem SourceSystemId | Identificatie van de SAP S/4HANA-instantie of -client waaruit de data is geëxtraheerd. | ||
| Beschrijving Dit attribuut geeft aan uit welk systeem de data afkomstig is. In omgevingen met meerdere SAP-instanties, bijvoorbeeld voor verschillende regio’s of bedrijfseenheden, is dit veld belangrijk om databronnen van elkaar te onderscheiden. Je gebruikt het vooral voor datagovernance, audits en het bewaken van de data-integriteit. In analyses kun je het als filter gebruiken om processen uit verschillende bronsystemen te vergelijken, als die in één process mining-model zijn samengebracht. Waarom dit belangrijk is Geeft inzicht in de herkomst en context van de data, vooral in omgevingen met meerdere systemen. Waar vind je dit? Dit zijn meestal metagegevens die tijdens de data-extractie worden toegevoegd. Ze zijn vaak afkomstig van de systeem-ID (SY-SYSID) of client (SY-MANDT) in SAP. Voorbeelden S4H_PROD_100S4H_QAS_200ECC_LEGACY_001 | |||
| Documentbedrag DocumentAmount | De totale waarde van de financiële boeking in de documentvaluta. | ||
| Beschrijving Dit attribuut geeft de geldwaarde van een financieel document weer. Bij correcties aan het einde van een periode kan het bijvoorbeeld gaan om het bedrag van de overlopende post of correctieboeking. Analyse van het bedrag helpt bij het beoordelen van de materialiteit. Analisten kunnen correctieboekingen met een hoge waarde als eerste onderzoeken, omdat die een groter financieel risico kunnen vormen. Je kunt de proceskaart ook filteren op transacties boven een bepaalde drempel. Zo blijft vooral zichtbaar wat er financieel toe doet. Waarom dit belangrijk is Voegt een financiële dimensie toe aan de analyse. Zo kun je problemen prioriteren op basis van hun geldelijke impact en materialiteit. Waar vind je dit? Deze waarde moet meestal worden opgeteld uit tabellen met regelitems, zoals BSEG of ACDOCA (veld WRBTR, bedrag in documentvaluta). Voorbeelden 15000.00250.75-500.00 | |||
| Documentvaluta DocumentCurrency | De valutacode voor de bedragen in het financiële document. | ||
| Beschrijving Dit attribuut geeft aan in welke valuta de transactie is vastgelegd, zoals USD, EUR of JPY. Het biedt essentiële context bij het attribuut Voor internationale organisaties kan analyse per valuta belangrijk zijn. Zo worden geldbedragen correct geïnterpreteerd. Ook is de valuta nodig om bedragen voor een totaaloverzicht om te rekenen naar één rapportagevaluta. Zonder deze context kun je waarden van Waarom dit belangrijk is Biedt de nodige context om geldbedragen correct te interpreteren, vooral wanneer meerdere valuta worden gebruikt. Waar vind je dit? Te vinden in de kopgegevenstabel BKPF van financiële documenten (veld WAERS). Voorbeelden USDEURJPY | |||
| Doorlooptijd periodeafsluiting PeriodCloseCycleTime | De totale tijd tussen de eerste en de laatste activiteit van een financiële periode. | ||
| Beschrijving Deze metriek geeft de totale doorlooptijd van het periodeafsluitingsproces voor één case (financiële periode) weer. Je berekent de doorlooptijd door de timestamp van de eerste activiteit af te trekken van die van de laatste activiteit in de periode. Dit is een belangrijke KPI voor het dashboard 'Overzicht doorlooptijd periodeafsluiting' en de KPI 'Gemiddelde doorlooptijd periodeafsluiting'. De metriek geeft op hoofdlijnen weer hoe efficiënt en snel het afsluitproces verloopt. Zo kun je de resultaten in de tijd volgen en verschillende company codes met elkaar vergelijken. Waarom dit belangrijk is Dit is de belangrijkste KPI voor de totale doorlooptijd van het proces. Je kunt er verbeteringen in de efficiëntie op hoofdlijnen mee volgen. Waar vind je dit? Berekend op caseniveau: Voorbeelden P5D10H30MP7D2HP6D | |||
| Is geautomatiseerd IsAutomated | Een booleaanse vlag die aangeeft of de activiteit is uitgevoerd door een systeemgebruiker of een geautomatiseerd proces. | ||
| Beschrijving Deze vlag maakt onderscheid tussen taken die handmatig door een gebruiker zijn uitgevoerd en taken die het systeem automatisch uitvoert, zoals een geplande batchtaak voor valutawaardering of automatische vereffeningen. De waarde wordt meestal afgeleid van de ID in Dit attribuut is belangrijk om te begrijpen hoe ver de automatisering van het afsluitproces is gevorderd. Het helpt mogelijkheden voor verdere automatisering te vinden door handmatige taken met een hoog volume zichtbaar te maken. Ook kun je ermee onderzoeken of bottlenecks ontstaan bij handmatige of geautomatiseerde stappen. Waarom dit belangrijk is Maakt onderscheid tussen activiteiten van medewerkers en systeemactiviteiten. Dat helpt bij het vinden van mogelijkheden voor automatisering en bij het analyseren van de efficiëntie van beide. Waar vind je dit? Dit is een afgeleid attribuut, meestal gebaseerd op een regel voor het veld 'ResponsibleUser'. De regel controleert bijvoorbeeld op systeem- of batchgebruikers-ID's zoals 'BATCHUSER', of op de transactiecode. Voorbeelden truefalse | |||
| Is herhaalwerk bij aansluiting IsReconciliationRework | Een booleaanse vlag die waar is als na een aansluitingsactiviteit een afwijzing of verdere correcties volgen. | ||
| Beschrijving Dit berekende attribuut herkent herhaalwerk in het deelproces voor aansluitingen. De logica markeert activiteiten of cases waarbij een aansluiting wordt afgewezen, na indiening opnieuw wordt geopend of waarbij correctieboekingen worden geplaatst nadat de aansluiting voor een grootboekrekening als afgerond is beschouwd. Dit attribuut is bedoeld voor het dashboard 'Analyse van herhaalwerk bij aansluitingen' en de KPI 'Percentage herhaalwerk bij aansluitingen'. Het zet complexe procesreeksen om in een eenvoudige, meetbare waarde. Zo wordt duidelijk hoeveel herhaalwerk er is en kunnen teams de kwaliteit bij de eerste uitvoering verbeteren. Waarom dit belangrijk is Meet herhaalwerk, een belangrijke vorm van procesinefficiëntie, rechtstreeks. Zo kun je de kwaliteit van aansluitingen gericht analyseren en verbeteren. Waar vind je dit? Berekend op basis van de volgorde van activiteiten. De vlag wordt bijvoorbeeld waar als na 'Aansluiting goedgekeurd' voor dezelfde grootboekrekening en periode 'Correctieboeking geplaatst' volgt. Voorbeelden truefalse | |||
| Is op tijd IsOnTime | Een booleaanse vlag die waar is als een mijlpaal op of vóór de geplande datum is afgerond. | ||
| Beschrijving Dit attribuut geeft in één oogopslag aan of de planning is gehaald. Je berekent de waarde door voor een specifieke mijlpaal, zoals de goedkeuring van financiële overzichten, Deze berekening vormt de basis voor de KPI 'Financiële overzichten op tijd afgerond'. Door datums te vergelijken en de uitkomst weer te geven als 'op tijd' of 'te laat', kun je prestaties eenvoudig volgen in dashboards en rapporten. Zo meet je ook het effect van initiatieven om de periodeafsluiting te versnellen. Waarom dit belangrijk is Maakt analyse van deadlines eenvoudig: de uitkomst laat duidelijk zien of de deadline is gehaald. Zo kun je prestaties rond tijdige afronding makkelijk volgen en rapporteren. Waar vind je dit? Berekend veld: Voorbeelden truefalse | |||
| Journaalposttype JournalEntryType | Het type financieel document dat wordt geboekt, bijvoorbeeld een standaardboeking, overlopende post of correctie. | ||
| Beschrijving Het journaalposttype, in SAP-termen het documenttype, is een code waarmee boekhoudkundige documenten worden ingedeeld. De code bepaalt op welke rekeningtypen een document kan worden geboekt en maakt onderscheid tussen verschillende zakelijke transacties, zoals een leveranciersfactuur (KR), een grootboekboeking (SA) of een klantbetaling (DZ). Bij de periodeafsluiting helpt dit attribuut om specifieke soorten activiteiten apart te bekijken. Analisten kunnen bijvoorbeeld de correctieboekingen selecteren voor het dashboard 'Analyse van correctieboekingen' en de KPI 'Aantal correctieboekingen'. Ook helpt het bij het berekenen van het percentage handmatige boekingen. Waarom dit belangrijk is Deelt financiële transacties in categorieën in. Zo kun je specifieke boekingen analyseren, zoals handmatige correcties die van belang zijn voor een vlotte periodeafsluiting. Waar vind je dit? Dit is een standaardveld in de kopgegevenstabel BKPF van financiële documenten (veld BLART). Voorbeelden SAKRAB | |||
| Laatste data-update LastDataUpdate | De timestamp die aangeeft wanneer de data voor het laatst is vernieuwd of uit het bronsysteem is geëxtraheerd. | ||
| Beschrijving Dit attribuut registreert de datum en tijd van de meest recente data-extractie. Zo weet je hoe actueel de data in de process mining-tool is. Het is vooral bedoeld voor datagovernance en om gebruikers te informeren. Dashboardviewers zien hoe actueel de analyse is. Dat is vooral belangrijk bij dashboards die bijna realtime monitoren, zoals ‘Huidige status periodeafsluiting’. Zo weten gebruikers of ze naar data van vandaag, gisteren of vorige week kijken. Waarom dit belangrijk is Laat gebruikers zien hoe actueel de data is, zodat ze weten hoe recent de procesinzichten zijn. Waar vind je dit? Dit zijn metagegevens die de data-extractie- of ETL-tool tijdens de uitvoering aan de dataset toevoegt. Voorbeelden 2024-06-10T08:00:00Z2024-06-09T08:00:00Z | |||
| Transactiecode TransactionCode | De SAP-transactiecode (T-code) waarmee de activiteit wordt uitgevoerd. | ||
| Beschrijving Een transactiecode is een snelkoppeling naar een specifieke functie of een specifiek programma in SAP. FB01 wordt bijvoorbeeld gebruikt om een document te boeken en FAGLB03 om grootboeksaldi weer te geven. De T-code geeft vaak duidelijk aan welke activiteit is uitgevoerd. Met dit attribuut kun je activiteiten definiëren voor het procesmodel. Het is een betrouwbare manier om handmatige en geautomatiseerde activiteiten van elkaar te onderscheiden en te zien hoe een taak precies in het systeem is uitgevoerd. Analyse van T-codes kan ook afwijkende of inefficiënte werkwijzen aan het licht brengen. Waarom dit belangrijk is Geeft op technisch systeemniveau weer hoe een activiteit is uitgevoerd. Dat helpt bij het herkennen van handmatige en geautomatiseerde stappen en afwijkende procedures. Waar vind je dit? Te vinden in de kopgegevenstabel BKPF van financiële documenten (veld TCODE) of in wijzigingslogboeken. Voorbeelden FB01FAGL_FCVF.13 | |||
| Werkelijke einddatum ActualCompletionDate | De datum waarop een belangrijke activiteit of de volledige periodeafsluiting daadwerkelijk is afgerond. | ||
| Beschrijving Dit attribuut legt de werkelijke einddatum van een belangrijke mijlpaal vast. Dit is de timestamp van de definitieve goedkeuring van financiële overzichten of van het sluiten van de boekingsperiode. Het is de tegenhanger van Waarom dit belangrijk is Legt vast wanneer mijlpalen daadwerkelijk zijn afgerond. Die informatie is nodig om prestaties ten opzichte van geplande deadlines te meten en vertragingen te analyseren. Waar vind je dit? Afgeleid van de EventTime van de laatste activiteit in een reeks, zoals 'Financiële overzichten goedgekeurd' of 'Boekingsperiode gesloten'. Voorbeelden 2024-01-06T10:00:00Z2024-04-05T17:00:00Z2024-07-04T11:00:00Z | |||
Activiteiten voor Record to Report: periodeafsluiting en afstemming
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Boekingsperiode geopend | Dit markeert het begin van de financiële periode: de boekingsperioden worden geopend zodat transacties kunnen worden vastgelegd. Een financieel beheerder voert deze expliciete configuratiewijziging in SAP uit en legt die vast. Daarna kunnen journaalposten voor de nieuwe periode worden geboekt. | ||
| Waarom dit belangrijk is Deze activiteit is de belangrijkste startgebeurtenis van het afsluitproces aan het einde van de periode. Hiermee kun je de totale doorlooptijd nauwkeurig meten en begint de procesanalyse op een duidelijk moment. Waar vind je dit? Deze gebeurtenis wordt vastgelegd in wijzigingsdocumenten (tabellen CDHDR en CDPOS), waarin wijzigingen aan de tabel T001B voor de boekingsperiode worden geregistreerd. Dit gebeurt meestal via transactie OB52. Vastleggen Filter de wijzigingslogs voor tabel T001B op het betreffende boekjaar en de periode. Gebeurtenistype explicit | |||
| Boekingsperiode gesloten | Dit is de laatste activiteit in de cyclus. De boekingsperiode wordt formeel gesloten, zodat er geen transacties meer kunnen worden geboekt. Zo blijft de data in de definitieve financiële rapporten intact. | ||
| Waarom dit belangrijk is Deze activiteit is de definitieve eindgebeurtenis van het proces. Je hebt deze nodig om de totale doorlooptijd van de periodeafsluiting te berekenen en trends in de procesafronding te analyseren. Waar vind je dit? Net als bij het openen van een periode wordt deze gebeurtenis vastgelegd in wijzigingsdocumenten (tabellen CDHDR en CDPOS). Daarin staan wijzigingen aan de tabel T001B voor de boekingsperiode, aangebracht via transactie OB52. Vastleggen Filter de wijzigingslogs voor tabel T001B om te zien wanneer het betreffende boekjaar en de periode zijn gesloten. Gebeurtenistype explicit | |||
| Correctieboeking geboekt | Dit is een correctieboeking die wordt gemaakt nadat de eerste reconciliaties zijn uitgevoerd, meestal om afwijkingen te herstellen die tijdens de beoordeling zijn gevonden. Het gaat om een expliciete transactie in het grootboek. | ||
| Waarom dit belangrijk is Veel correctieboekingen wijzen op een lage kwaliteit in eerdere processen of reconciliaties. Door deze boekingen te analyseren, kun je de oorzaken van fouten opsporen en herstelwerk verminderen. Waar vind je dit? Vastgelegd als expliciete documenten in de tabellen ACDOCA en BKPF. Je kunt ze herkennen aan specifieke documentsoorten, boekingsdatums laat in de afsluitcyclus of bepaalde tekstomschrijvingen. Vastleggen Filter journaalposten in BKPF op een combinatie van documentsoort en boekingsdatum ten opzichte van reconciliatieactiviteiten. Gebeurtenistype explicit | |||
| Financiële overzichten gegenereerd | Deze activiteit markeert het opstellen van de officiële financiële overzichten, zoals de balans en de winst-en-verliesrekening. Hiermee zijn de boekhoudkundige afsluiting en consolidatie aan het einde van de periode afgerond. | ||
| Waarom dit belangrijk is Dit is een belangrijke mijlpaal in de Record to Report-cyclus. De timing is bepalend voor het halen van rapportagedeadlines en het tijdig informeren van belanghebbenden. Waar vind je dit? Je legt dit het best vast in een tool voor financieel afsluitbeheer, zoals SAP Financial Closing Cockpit, waar het een expliciete taak is. Anders moet je de gebeurtenis afleiden uit rapportgeneratielogs of timestamps van bestandsaanmaak. Vastleggen Volg de voltooiingsstatus van de taak ‘Financiële overzichten genereren’ in een afsluittool of analyseer de rapportuitvoeringslogs. Gebeurtenistype inferred | |||
| Grootboekreconciliatie gestart | Dit markeert het begin van het handmatige of deels geautomatiseerde proces om saldi van grootboekrekeningen te onderbouwen. De gebeurtenis wordt afgeleid wanneer de status van een reconciliatie verandert van ‘Nieuw’ naar ‘In uitvoering’, of wanneer de eerste actie van de opsteller wordt vastgelegd. | ||
| Waarom dit belangrijk is Dit is een belangrijke mijlpaal om de duur en inspanning van de onderbouwing van balansposten te begrijpen. Zo zie je welke rekeningen of afdelingen laat met hun reconciliaties beginnen. Waar vind je dit? Deze gebeurtenis wordt meestal vastgelegd in een speciale reconciliatietool, zoals SAP Account Substantiation and Automation van BlackLine, of in een ander systeem van een externe leverancier. De gebeurtenis wordt afgeleid uit timestamps van statuswijzigingen. Vastleggen Volg de timestamp van de eerste statuswijziging vanuit de status ‘Niet gestart’ voor een reconciliatie van een grootboekrekening. Gebeurtenistype inferred | |||
| Grootboekreconciliatie goedgekeurd | Deze activiteit markeert de definitieve goedkeuring van een reconciliatie van een grootboekrekening. Daarmee wordt bevestigd dat het saldo is onderbouwd en eventuele problemen zijn opgelost. De gebeurtenis wordt afgeleid uit een statuswijziging naar ‘Goedgekeurd’ in een reconciliatietool. | ||
| Waarom dit belangrijk is Deze mijlpaal markeert de afronding van een belangrijke controleactiviteit. Door goedkeuringstijden te volgen, zie je waar het beoordelingsproces bottlenecks heeft. Dat is belangrijk om herstelwerk en het percentage dat in één keer goed gaat te meten. Waar vind je dit? Vastgelegd in een reconciliatiebeheersysteem, zoals SAP Account Substantiation and Automation, door de timestamp van de definitieve goedkeuringsstatus te volgen. Vastleggen Zoek de timestamp op waarop het statusveld van een reconciliatie wordt bijgewerkt naar de eindstatus ‘Goedgekeurd’. Gebeurtenistype inferred | |||
| Intercompany-reconciliatie gestart | Deze activiteit markeert het begin van het afstemmen en reconciliëren van transacties tussen verschillende bedrijfsnummers binnen dezelfde groep. Dit begint vaak met het uitvoeren van een reconciliatietaak of het aanmaken van een nieuwe reconciliation case in SAP ICMR. | ||
| Waarom dit belangrijk is Intercompany-reconciliaties zijn vaak complex en tijdrovend. Door de duur en het verloop te analyseren, kun je de groepsafsluiting efficiënter maken en zorgen dat de geconsolideerde cijfers kloppen. Waar vind je dit? Afgeleid uit statuswijzigingen in de SAP-module Intercompany Matching and Reconciliation (ICMR), of uit het aanmaken van de eerste reconciliatiedocumenten voor de periode. Vastleggen Volg voor de betreffende periode de aanmaakdatum of timestamp van statuswijzigingen van reconciliation units in ICMR. Gebeurtenistype inferred | |||
| Automatische vereffeningsrun uitgevoerd | Dit markeert de uitvoering van automatische vereffeningsprogramma’s in SAP, zoals de GR/IR-run (ontvangst goederen/factuurontvangst). Deze taken matchen en vereffenen openstaande posten op specifieke grootboekrekeningen, waardoor minder handmatige reconciliatie nodig is. | ||
| Waarom dit belangrijk is Deze activiteit laat zien in hoeverre het reconciliatieproces is geautomatiseerd. Mislukte runs of uitzonderingen kunnen leiden tot veel handmatig werk en vertraging. Waar vind je dit? Vastgelegd in de uitvoeringslogs van specifieke batchtaken, zoals F.13 of F.13E voor automatische vereffening. De taaklogtabellen TBTCO en TBTCP bevatten de uitvoeringsgegevens. Vastleggen Monitor de start- en eindtimestamps van taken die horen bij transacties zoals F.13 in de SAP-taaklogs. Gebeurtenistype explicit | |||
| Consolidatietaken uitgevoerd | Dit markeert de uitvoering van consolidatieactiviteiten in SAP Group Reporting, zoals valutaomrekening, herclassificatie en eliminatie van intercompany-winsten. Deze taken worden meestal beheerd en geregistreerd in de consolidatiemonitor. | ||
| Waarom dit belangrijk is Voor organisaties met meerdere juridische entiteiten is consolidatie een belangrijk onderdeel van het kritieke pad. Door deze taken te monitoren, kun je de groepsafsluiting efficiënter maken en zorgen dat de geconsolideerde rapportage op tijd klaar is. Waar vind je dit? Vastgelegd in de statuslogs van de Data Monitor of Consolidation Monitor in SAP S/4HANA for Group Reporting. Elke taak bevat doorgaans een gebruiker, timestamp en status. Vastleggen Haal de uitvoeringslogs van taken op uit de onderliggende tabellen van de consolidatiemonitor van Group Reporting. Gebeurtenistype explicit | |||
| Financiële overzichten goedgekeurd | Dit markeert de definitieve goedkeuring van de financiële overzichten door bevoegd management voordat ze worden gepubliceerd. Dit gebeurt vaak offline, maar kan worden vastgelegd als er een formele digitale goedkeuringsstap is. | ||
| Waarom dit belangrijk is Dit is de laatste kwaliteits- en controlepoort. Door de timing te volgen, zie je of rapportagedeadlines worden gehaald en hoe efficiënt de beoordelingscyclus van het management verloopt. Waar vind je dit? Je kunt deze gebeurtenis vastleggen als er een workflow of statusveld voor de goedkeuring van overzichten bestaat, bijvoorbeeld in SAP Financial Closing Cockpit of een documentbeheersysteem. Vastleggen Zoek een dataveld en timestamp die de definitieve goedkeuring van het pakket met financiële overzichten aangeven. Gebeurtenistype inferred | |||
| Overdracht van subadministratiegegevens voltooid | Dit markeert het einde van batchtaken die samengevatte gegevens overzetten van subadministraties, zoals debiteuren, crediteuren en activabeheer, naar het grootboek. Zo staan alle onderliggende operationele transacties in het grootboek voordat de afsluitprocedures beginnen. | ||
| Waarom dit belangrijk is Vertragingen bij het afsluiten van subadministraties kunnen een grote bottleneck vormen voor het hele proces. Door deze activiteit te volgen, zie je waar het verzamelen en integreren van data uit bronsystemen efficiënter kan. Waar vind je dit? Afgeleid uit de status ‘voltooid’ van specifieke batchtaken voor de afwikkeling van grootboekrekeningen en de dataoverdracht. De taaklogs staan in de tabellen TBTCO en TBTCP. Vastleggen Zoek de voltooiingstimestamps van relevante batchtaken op en monitor ze in het taakoverzicht van SAP (transactie SM37). Gebeurtenistype explicit | |||
| Overlopende posten en voorzieningen geboekt | Deze gebeurtenis registreert handmatige journaalposten voor overlopende posten, uitgestelde posten en andere voorzieningen die nodig zijn voor een correcte financiële verslaglegging volgens het toerekeningsbeginsel. Dit zijn expliciete transacties die in het grootboek worden geboekt. | ||
| Waarom dit belangrijk is Door deze boekingen te volgen, kun je het aantal en de timing van handmatige correcties analyseren. Een hoog aantal kan wijzen op kansen om processen te automatiseren of eerder in de keten te verbeteren. Waar vind je dit? Vastgelegd als expliciete journaalposten in de universal journal-tabel ACDOCA en de kopteksttabel BKPF. Je herkent deze posten aan specifieke documentsoorten die voor overlopende posten zijn ingesteld. Vastleggen Filter documenten in tabel BKPF op documentsoort (bijvoorbeeld ‘SA’ of aangepaste soorten) en boekingsdatum binnen de periode. Gebeurtenistype explicit | |||
| Proef- en saldibalans opgesteld | Dit geeft aan dat een proef- en saldibalans is gegenereerd en opgeslagen voor beoordeling. Het is een belangrijk controlepunt voordat de definitieve financiële overzichten worden opgesteld. De gebeurtenis wordt vaak vastgelegd wanneer de rapportuitvoer wordt opgeslagen. | ||
| Waarom dit belangrijk is Het opstellen van de proef- en saldibalans is een belangrijke kwaliteitscontrole. Door het tijdstip te analyseren, zie je of de organisatie klaar is voor de definitieve rapportage en of eerdere activiteiten vertraging oplopen. Waar vind je dit? Dit is vaak geen expliciete gebeurtenis. Je kunt de gebeurtenis afleiden uit de uitvoering van een specifieke rapportagetransactie als varianten met gebruikers- en datumsstempels worden opgeslagen, of als het proces wordt beheerd in een tool zoals SAP Financial Closing Cockpit. Vastleggen Hiervoor moet je het systeem analyseren om te bepalen of er een betrouwbare manier is om dit vast te leggen, zoals rapportuitvoeringslogs of takenlijsten in de closing cockpit. Gebeurtenistype inferred | |||
| Waarderingsrun vreemde valuta | Dit is een standaardprocedure aan het einde van de maand. Openstaande posten en saldi in vreemde valuta worden opnieuw gewaardeerd op basis van de wisselkoersen aan het einde van de periode. Het programma boekt de resulterende waarderingsverschillen. | ||
| Waarom dit belangrijk is Zo voldoe je aan boekhoudnormen en krijg je een correct financieel beeld. Door deze activiteit te volgen, kun je controleren of alle valutawaarderingen op tijd zijn uitgevoerd. Waar vind je dit? Vastgelegd in de uitvoeringslogs van het programma voor de waardering van vreemde valuta (bijvoorbeeld FAGL_FCV). Taakgegevens staan in de tabellen TBTCO en TBTCP. Vastleggen Monitor de uitvoeringslogs van taken voor transactie FAGL_FCV of het onderliggende programma. Gebeurtenistype explicit | |||
Extractiegidsen
Stappen
- CDS Views zoeken en controleren: Meld je aan bij SAP S/4HANA via SAP HANA Studio of Eclipse met ADT. Zoek met de ABAP Development Tools naar de standaard-CDS-views uit de query en controleer of ze bestaan, zoals I_JournalEntryItem, I_BatchJob en I_ConsolidationTaskLog. Voor processen zoals accountafstemming moet je mogelijk eigen CDS-views maken, bijvoorbeeld Z_I_ACCOUNTRECONCILIATION, om statuswijzigingen vast te leggen.
- CDS Views beschikbaar maken via OData: Maak in de SAP-backend met transactie
SEGW(Gateway Service Builder) een nieuw project. Klik met de rechtermuisknop op de map Data Model en kies 'Reference -> Data Source'. Voeg de benodigde CDS-views toe. Genereer de runtime-objecten om een OData-service te maken die deze views beschikbaar maakt voor extern gebruik. - OData-service activeren: Ga naar transactie
/IWFND/MAINT_SERVICEop de SAP Gateway-hub. Klik op 'Add Service', zoek de service die je in de vorige stap hebt gegenereerd en voeg deze toe. De service is nu actief en beschikbaar voor queries. - Dataverbinding maken: Maak vanuit de gekozen data-extractietool, zoals Python, Power BI of een speciaal ETL-platform, verbinding met de nieuwe OData-service. Je hebt de service-URL nodig en inloggegevens met de juiste autorisaties voor toegang tot de CDS-views.
- De query aanpassen en uitvoeren: Kopieer de SQL-query. Vervang de tijdelijke waarden voor datumbereiken, bedrijfscodes en eventuele eigen CDS-views of batchjobnamen door waarden die bij jouw SAP-omgeving passen. Voer de query uit op het OData-service-eindpunt. OData gebruikt een andere syntaxis (
$filter,$select), dus mogelijk moet je de logica van de UNION ALL-query omzetten in meerdere API-aanroepen, één per activiteit. - Activiteitsdata samenvoegen: OData ondersteunt doorgaans geen complexe UNION ALL-query in één aanroep. Daarom voer je voor elk activiteitenblok in de query een aparte aanvraag uit. Voeg de resultaten van alle aanvragen in je clienttool samen tot één dataset of tabel.
- Data omzetten en opschonen: Controleer de samengevoegde data. Zorg dat de kolommen
EventTimeenEndTimehetzelfde timestamp-formaat gebruiken. Controleer ofFinancialPeriodde juiste notatie heeft: 'YYYY-MM'. Verwerk eventuele NULL-waarden in kolommen zoalsResponsibleUserofDocumentNumberwaar nodig. - Exporteren als event log: Exporteer de uiteindelijke, samengevoegde dataset naar een CSV-bestand. Gebruik de vereiste kolomnamen, zoals
FinancialPeriod,ActivityName,EventTime,EndTimeenResponsibleUser. Het bestand is nu klaar om naar ProcessMind te uploaden.
Configuratie
- CDS Views: De query combineert standaard- en eigen CDS-views. Standaardviews zoals
I_JournalEntryItem(voor journaalposten) enI_BatchJob(voor geautomatiseerde runs) zijn essentieel. Eigen views, zoalsZ_I_ACCOUNTRECONCILIATION, zijn vaak nodig om de status vast te leggen van interne processen die niet in standaardviews staan. - Datumbereik: Stel een specifiek datumbereik in om de hoeveelheid data te beperken. De query bevat de tijdelijke waarden
[Start Date]en[End Date]. Voor een zinvolle analyse bestrijken deze doorgaans 3 tot 6 volledige boekingsperioden. - Belangrijke filters: Filters zijn belangrijk voor de prestaties en relevantie. Filter altijd op
CompanyCode. Andere belangrijke filters zijnLedger(bijvoorbeeld '0L' voor het leidende grootboek),FiscalYearen specifieke waarden voorDocumentTypeom reguliere boekingen, overlopende posten en correcties van elkaar te onderscheiden. - Vereisten: De gebruiker die de extractie uitvoert, heeft in SAP autorisaties nodig voor toegang tot de opgegeven CDS-views en het uitvoeren van OData-services, bijvoorbeeld autorisatieobjecten
S_SERVICEenS_RFC. SAP Gateway-services moeten zijn geconfigureerd en geactiveerd. - Prestaties: Een query op
I_JournalEntryItemkan veel capaciteit vragen. Gebruik altijd gerichte filters, vooral voor datums, bedrijfscodes en grootboeken. Voer de extractie zo mogelijk buiten piekuren uit of gebruik incrementeel laden voor doorlopende monitoring.
Voorbeeldquery sql
SELECT
CONCAT(CAST(PostingDate AS DATE FORMAT 'YYYY'), '-', CAST(PostingDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- This is a proxy; this activity is a configuration change often found in change logs (CDHDR/CDPOS for table T001B)
WHERE PostingPeriodVariant = '[Your Variant]' AND FiscalYear = '[Your Fiscal Year]' AND FromPostingPeriod = 1 AND AuthorizationGroup IS NOT NULL -- Logic to detect the opening event
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod, -- Infer period from Job Name if patterned, otherwise use job start date
'Subledger Data Transfer Completed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Subledger Job Prefix]%' AND JobStatus = 'F' -- 'F' for Finished
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(CreationDate AS DATE FORMAT 'YYYY'), '-', CAST(CreationDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Intercompany Reconciliation Started' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
CreatedByUser AS ResponsibleUser,
LeadingCompanyCode AS CompanyCode,
NULL AS GlAccountNumber,
ReconciliationCase AS DocumentNumber,
ReconciliationCaseStatus AS ReconciliationStatus,
NULL AS TargetCompletionDate,
NULL AS ProcessingTime
FROM I_ICRcnCase -- Part of SAP S/4HANA for group reporting
WHERE CreationDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Accrual Doc Type 1]', '[Accrual Doc Type 2]') -- e.g., 'SA', 'AC'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Automated Clearing Run Executed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'SAPF124%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'FAGL_FCV%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on like SAP Account Substantiation and Automation.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
ChangedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'In Progress' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'IN_PROGRESS' AND OldStatus = 'NEW'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Adjustment Doc Type 1]', '[Adjustment Doc Type 2]') -- e.g., 'AJ'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on product.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Approved' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
CAST(ChangedAt AS TIMESTAMP) AS EndTime,
ApprovedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'Approved' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'APPROVED'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Consolidation Tasks Executed' AS ActivityName,
CAST(TaskExecutionUTCTimestamp AS TIMESTAMP) AS EventTime,
CAST(TaskCompletionUTCTimestamp AS TIMESTAMP) AS EndTime,
ExecutedByUser AS ResponsibleUser,
ConsolidationUnitCompanyCode AS CompanyCode, -- Assuming mapping exists
NULL AS GlAccountNumber,
DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(TaskExecutionUTCTimestamp AS TIMESTAMP), CAST(TaskCompletionUTCTimestamp AS TIMESTAMP)) AS ProcessingTime
FROM I_ConsolidationTaskLog
WHERE ConsolidationTaskStatus = 'S' -- Successful
AND TaskExecutionUTCDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Trial Balance Prepared' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Trial Balance Job Prefix]%' AND JobStatus = 'F' -- Example: FAGL_TRIAL_BALANCE_RUN
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Fin Statement Job Prefix]%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- Approval is often a manual step. This requires a custom solution to capture.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(ApprovalYear, '-', LPAD(ApprovalPeriod, 2, '0')) AS FinancialPeriod,
'Financial Statements Approved' AS ActivityName,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EventTime,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EndTime,
ApproverUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
FinancialStatementVersion AS DocumentNumber,
'Approved' AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM Z_I_FINSTATEMENTAPPROVAL -- Placeholder for custom approval tracking view
WHERE ApprovalDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(LastChangeDate AS DATE FORMAT 'YYYY'), '-', CAST(LastChangeDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
CAST(LastChangeDateTime AS TIMESTAMP) AS EventTime,
CAST(LastChangeDateTime AS TIMESTAMP) AS EndTime,
LastChangedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- Proxy, see note on 'Period Opened'
WHERE PostingPeriodStatus = 'C' -- 'C' for Closed
AND LastChangeDate BETWEEN '[Start Date]' AND '[End Date]'; Stappen
- Controleer of je directe leestoegang hebt tot het SAP HANA-schema met de benodigde applicatietabellen. Zoek uit wie eigenaar is van het schema voor ACDOCA, TBTCO, CDHDR en CDPOS. Vervang de tijdelijke schemanaam in de query door de goedgekeurde schemanaam.
- Controleer het boekjaar, de boekingsperiode, de bedrijfscodescope en het datumbereik voor de extractie. Gebruik een bereik dat de volledige afsluitcyclus omvat, doorgaans drie tot zes maanden. Vervang de datumparameters door waarden die bij jouw systeem passen.
- Controleer de lokale veldkoppelingen voor wijzigingen in de configuratie van boekingsperioden, voltooide batchjobs, wijzigingen in de afstemmingsstatus, consolidatie-uitvoering, rapportgeneratie en goedkeuringsregistraties. De query bevat tijdelijke waarden voor bronobjecten die niet in elke SAP S/4HANA-omgeving beschikbaar zijn. Vervang deze vóór uitvoering door goedgekeurde views of tabellen uit jouw systeem.
- Voer de query uit met databasegegevens die alleen leestoegang geven. De query maakt expliciet één eventregel per vereiste activiteit en leidt geen extra events af uit de volgorde van events.
- Controleer de geretourneerde kolommen.
FinancialPeriodis de case-ID,ActivityNamede eventactiviteit enEventTimede vereiste timestamp van het event.EndTime,ResponsibleUser,CompanyCode,GlAccountNumber,DocumentNumber,ReconciliationStatusenTargetCompletionDateworden opgenomen als de bronregistratie deze gegevens bevat. - Controleer of alle vereiste activiteiten in het resultaat staan, ook activiteiten waarvoor in een bepaalde periode mogelijk geen bronregistraties zijn. Voor ontbrekende activiteitstypen retourneert de query een controleregel met
ActivityNameingesteld opActivity Coverage Validation. Verwijder deze regel of verwerk deze apart voordat je de data naar ProcessMind uploadt, als de import alleen zakelijke events accepteert. - Vergelijk enkele representatieve events met SAP-applicatieregistraties en joblogs. Controleer of journaalpost-events overeenkomen met ACDOCA-registraties, job-events met TBTCO-registraties en wijzigingsevents met CDHDR- en CDPOS-registraties of de ingestelde bronnen voor afstemming en goedkeuring.
- Exporteer het resultaat als UTF-8-CSV of een ander door ProcessMind ondersteund tabelbestand. Behoud exact de kolomnamen
FinancialPeriod,ActivityNameenEventTime. Sorteer opFinancialPeriodenEventTimeen houd één regel per expliciet geëxtraheerd event aan. - Upload het event log naar ProcessMind en stel
FinancialPeriodin als case-ID,ActivityNameals activiteit enEventTimeals starttijd. KoppelEndTimewaar beschikbaar als eindtijd en wijs de overige kolommen toe als event- of case-attributen.
Belangrijke opmerking over bronkoppelingen: SAP S/4HANA heeft geen universele tabelstructuur voor elke afstemmingstool, consolidatiemonitor, rapportarchief, goedkeuringsworkflow of configuratie van boekingsperioden. Vervang elke tijdelijke waarde [Your table name] en [Your column name] in de query door een gecontroleerd object en veld uit jouw systeem. Gebruik een tijdelijke waarde niet als uitvoerbare SQL.
Configuratie
- Databasetoegang: Gebruik een SAP HANA-databasegebruiker met alleen-lezenrechten en SELECT-autorisatie voor ACDOCA, TBTCO, CDHDR, CDPOS en de ingestelde bronobjecten voor boekingsperiodebeheer, afstemming, consolidatie, rapportage en goedkeuringen.
- Schemaconfiguratie: Vervang
[Your SAP schema]door de werkelijke schemanaam met de applicatieobjecten. Controleer of de objecten tabellen, calculation views of goedgekeurde rapportageviews zijn. - Datumbereik: Extraheer de volledige afsluitcyclus, doorgaans drie tot zes maanden. Neem de openings- en afsluitactiviteiten, late boekingen, terugboekingen, goedkeuringen en correcties na de afsluiting mee.
- Boekingsperiode: Filter op het boekjaar en de boekingsperiode die voor de bedrijfscode gelden. Ga niet uit van kalenderjaarperioden als de variant voor het boekjaar daarvan afwijkt.
- Bedrijfscode: Filter op bedrijfscode als het proces voor bepaalde juridische entiteiten geldt. Gebruik
[Configure based on your system]als de scope in een aparte organisatorische koppeling wordt bijgehouden. - Documenttypen: Beperk de extractie van journaalposten tot documenttypen voor overlopende posten, voorzieningen, correcties, waarderingen, vereffeningen en andere afsluitboekingen. Controleer de lokale configuratie van documenttypen voordat je deze filters toepast.
- Jobstatus: Neem voor voltooiingsactiviteiten alleen afgeronde of succesvol beëindigde jobs mee. Controleer de lokale statuswaarden van TBTCO voordat je een statusfilter toepast.
- Wijzigingsdocumenten: Filter CDHDR en CDPOS op de relevante objectklasse en wijzigingsindicatoren nadat je de lokale configuratie hebt gecontroleerd. Wijzigingsdocumenten alleen geven mogelijk niet elke bedrijfsactiviteit weer.
- Bronnen voor afstemming en goedkeuring: Stel gecontroleerde bronobjecten in voor wijzigingen in de afstemmingsstatus, acties van opstellers, goedkeuringen, streefdatums en digitale ondertekening. Welke bronnen beschikbaar zijn, hangt af van de geïmplementeerde SAP-componenten en uitbreidingen.
- Prestaties: Beperk filters op boekjaar, boekingsperiode, bedrijfscode, boekingsdatum en eventtimestamp. Pas filters toe in elke UNION ALL-tak, voorkom onbeperkte scans van ACDOCA en voer de query uit binnen een goedgekeurd rapportagevenster.
- Datatypen: Zet timestamps om naar één tijdzone en datatype. Zet lege tekenreeksen om naar NULL en behoud voorloopnullen in bedrijfscodes, rekeningnummers en documentnummers.
- Vereisten: Controleer of de benodigde SAP-componenten, afstemmingstools, consolidatiefuncties, joblogging, activering van wijzigingsdocumenten en eventuele auditlogging voor rapporten of workflows beschikbaar zijn en gegevens bevatten.
- Beveiliging en compliance: Pas minimale toegangsrechten toe, bescherm financiële en gebruikersdata, leg het doel van de extractie vast en volg de auditvereisten van de organisatie voor SAP en databases.
Voorbeeldquery sql
WITH
params AS (
SELECT
TO_DATE('[Start date YYYY-MM-DD]') AS start_date,
TO_DATE('[End date YYYY-MM-DD]') AS end_date,
'[Fiscal year]' AS fiscal_year_filter,
'[Fiscal period]' AS fiscal_period_filter,
'[Company code filter]' AS company_code_filter
FROM DUMMY
),
base_events AS (
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0') AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(a.BUDAT AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(a.USNAM AS NVARCHAR(80)) AS ResponsibleUser,
CAST(a.RBUKRS AS NVARCHAR(20)) AS CompanyCode,
CAST(a.RACCT AS NVARCHAR(40)) AS GlAccountNumber,
CAST(a.BELNR AS NVARCHAR(40)) AS DocumentNumber,
CAST(NULL AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Accrual document type]', '[Provision document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Adjusting Journal Entry Posted',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Adjusting journal entry document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Foreign Currency Valuation Run',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Foreign currency valuation document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Automated Clearing Run Executed',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Automated clearing document type]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Subledger Data Transfer Completed',
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job end timestamp column] >= p.start_date
AND j.[Job end timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job status column] = '[Successful job status]'
AND j.[Job name column] IN ('[AR transfer job]', '[AP transfer job]', '[Asset Accounting transfer job]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(j.[Job start timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job start timestamp column] >= p.start_date
AND j.[Job start timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job name column] IN ('[Intercompany reconciliation job]')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for intercompany reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('Started', 'In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Approved',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Approver user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(c.[Financial period column] AS NVARCHAR(20)),
'Consolidation Tasks Executed',
CAST(c.[Execution start timestamp column] AS TIMESTAMP),
CAST(c.[Execution end timestamp column] AS TIMESTAMP),
CAST(c.[Responsible user column] AS NVARCHAR(80)),
CAST(c.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(c.[Task identifier column] AS NVARCHAR(40)),
CAST(c.[Status column] AS NVARCHAR(40)),
CAST(c.[Target completion date column] AS DATE)
FROM [Your table name for consolidation execution] c
CROSS JOIN params p
WHERE c.[Execution start timestamp column] >= p.start_date
AND c.[Execution start timestamp column] < ADD_DAYS(p.end_date, 1)
AND c.[Status column] IN ('Completed', 'Successful')
UNION ALL
SELECT
CAST(t.[Financial period column] AS NVARCHAR(20)),
'Trial Balance Prepared',
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Responsible user column] AS NVARCHAR(80)),
CAST(t.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(t.[Report identifier column] AS NVARCHAR(40)),
CAST(t.[Status column] AS NVARCHAR(40)),
CAST(t.[Target completion date column] AS DATE)
FROM [Your table name for trial balance output] t
CROSS JOIN params p
WHERE t.[Report saved timestamp column] >= p.start_date
AND t.[Report saved timestamp column] < ADD_DAYS(p.end_date, 1)
AND t.[Status column] IN ('Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Generated',
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Responsible user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement output] f
CROSS JOIN params p
WHERE f.[Generation timestamp column] >= p.start_date
AND f.[Generation timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] IN ('Generated', 'Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Approved',
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approver user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement approval] f
CROSS JOIN params p
WHERE f.[Approval timestamp column] >= p.start_date
AND f.[Approval timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Opened For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Open'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Closed For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Closed'
),
activity_list AS (
SELECT 'Period Opened For Posting' AS ActivityName FROM DUMMY
UNION ALL SELECT 'Subledger Data Transfer Completed' FROM DUMMY
UNION ALL SELECT 'Intercompany Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Accruals And Provisions Posted' FROM DUMMY
UNION ALL SELECT 'Automated Clearing Run Executed' FROM DUMMY
UNION ALL SELECT 'Foreign Currency Valuation Run' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Adjusting Journal Entry Posted' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Approved' FROM DUMMY
UNION ALL SELECT 'Consolidation Tasks Executed' FROM DUMMY
UNION ALL SELECT 'Trial Balance Prepared' FROM DUMMY
UNION ALL SELECT 'Financial Statements Generated' FROM DUMMY
UNION ALL SELECT 'Financial Statements Approved' FROM DUMMY
UNION ALL SELECT 'Period Closed For Posting' FROM DUMMY
),
missing_activities AS (
SELECT
CAST(NULL AS NVARCHAR(20)) AS FinancialPeriod,
'Activity Coverage Validation' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(NULL AS NVARCHAR(80)) AS ResponsibleUser,
CAST(NULL AS NVARCHAR(20)) AS CompanyCode,
CAST(NULL AS NVARCHAR(40)) AS GlAccountNumber,
CAST(NULL AS NVARCHAR(40)) AS DocumentNumber,
CAST('Missing activity: ' || al.ActivityName AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM activity_list al
LEFT JOIN base_events b ON b.ActivityName = al.ActivityName
WHERE b.ActivityName IS NULL
)
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM base_events
UNION ALL
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM missing_activities
ORDER BY FinancialPeriod, EventTime, ActivityName Klaar om aan de slag te gaan?
Met deze datatemplate kan je organisatie efficiënter werken en de compliance verbeteren. Begin vandaag met het verbeteren van het Record to Report-proces.
Verbeter vandaag de Record to Report-afsluiting en afstemming
Spoor inefficiënties op en verkort de doorlooptijd van de afsluiting met maximaal 30%.
Geen creditcard nodig. Je kunt binnen enkele minuten aan de slag.