Jouw datatemplate voor Record to Report, periodeafsluiting en reconciliatie
Jouw datatemplate voor Record to Report, periodeafsluiting en reconciliatie
- Aanbevolen attributen om te verzamelen
- Belangrijke activiteiten om te volgen voor procesanalyse
- Stapsgewijze richtlijnen voor data-extractie
Record to Report - attributen van periodeafsluiting en afstemming
| Naam | Beschrijving | ||
|---|---|---|---|
| Financiële periode FinancialPeriod | Een unieke identificatie voor de financiële rapportagecyclus, zoals '2023-12' voor december 2023. Deze dient als case voor het proces rond de periodeafsluiting. | ||
| Beschrijving De financiële periode is de centrale case-identificatie waaronder alle activiteiten voor het afsluiten van de boeken binnen een bepaalde periode vallen, meestal een kalendermaand of boekjaarperiode. Elke financiële periode staat voor één volledige uitvoering van het proces rond de periodeafsluiting. In process mining gebruik je dit attribuut om de volledige levenscyclus van een periodeafsluiting te volgen, van de start tot de definitieve rapportage. Je gebruikt het om doorlooptijden tussen perioden te vergelijken, veelvoorkomende procespaden te vinden en verschillen tussen maand-, kwartaal- en jaarafsluitingen te analyseren. Door elke periode als case te behandelen, kunnen analisten prestaties over tijd meten en structurele knelpunten vinden. Waarom dit belangrijk is Dit is de essentiële case-identificatie voor de analyse. Hiermee kun je de prestaties van periodeafsluitingen over tijd vergelijken en trends of terugkerende problemen herkennen. Waar je het vindt Afgeleid door de velden Fiscal Year (GJAHR) en Posting Period (MONAT) uit financiële documentheaders te combineren, meestal uit tabellen zoals BKPF. Voorbeelden 2023-122024-032024-Q1 | |||
| Activiteit ActivityName | De naam van een specifieke bedrijfsstap of taak binnen het proces rond de periodeafsluiting, zoals 'Adjusting Journal Entry Posted' of 'Period Closed For Posting'. | ||
| Beschrijving Dit attribuut staat voor één event of taak in het end-to-endproces van periodeafsluiting en reconciliatie. Activiteiten vormen de bouwstenen van de procesmap en laten de volgorde van het uitgevoerde werk zien. Ze worden vaak afgeleid uit een combinatie van transact codes, documenttypen of statuswijzigingen in SAP S/4HANA. Het analyseren van activiteiten is een basis voor process mining. Je kunt de procesflow visualiseren, afwijkingen van de standaardprocedure vinden, knelpunten ontdekken waar activiteiten te lang duren en de frequentie en volgorde van taken begrijpen. Dit ondersteunt dashboards zoals Period Close Variant Analysis en Current Period Close Status. Waarom dit belangrijk is Definieert de stappen in het proces, vormt de basis van de procesmap en maakt analyse van procesflow, afwijkingen en knelpunten mogelijk. Waar je het vindt Afgeleid uit verschillende bronnen, zoals Transaction Codes (TCODE), Document Types (BLART) of statusvelden in tabellen voor financiële afsluitingstaken, bijvoorbeeld uit SAP Financial Closing cockpit. Voorbeelden Boekingsperiode geopendReconciliatie van rekening gestartFinanciële overzichten gegenereerdIntercompany-reconciliatie gestart | |||
| Starttijd EventTime | De timestamp die aangeeft wanneer een specifieke activiteit is gestart of in het systeem is geregistreerd. | ||
| Beschrijving Event Time legt de exacte datum en tijd vast waarop een activiteit plaatsvond. 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 gelogd. Dit attribuut is belangrijk voor de chronologische volgorde van activiteiten en vormt de basis voor alle tijdsanalyses. Je gebruikt het om doorlooptijden tussen activiteiten, de duur van specifieke taken en de totale end-to-enddoorlooptijd te berekenen. Het ondersteunt KPI's zoals Average Period Close Cycle Time en Avg Reconciliation Approval Time. Waarom dit belangrijk is Deze verplichte timestamp maakt het mogelijk om events chronologisch te ordenen en vormt de basis voor alle berekeningen van duur en prestaties. Waar je het vindt Afkomstig uit timestampvelden zoals Creation Date (CPUDT) en Creation Time (CPUTM) in tabellen zoals BKPF, of uit wijzigingsdatumvelden in verschillende statustabellen, zoals CDHDR en CDPOS. Voorbeelden 2023-12-28T09:15:30Z2024-01-02T14:00:12Z2024-01-05T11:21:00Z | |||
| Company code CompanyCode | Een unieke identificatie voor een juridische entiteit of onderneming binnen de SAP-organisatie. | ||
| Beschrijving De Company Code staat voor een zelfstandige accountingeenheid binnen een organisatie. Voor deze eenheid kan een volledige, zelfstandige set rekeningen worden aangemaakt. Alle activiteiten voor de periodeafsluiting worden uitgevoerd op Company Code-niveau. Dit is een belangrijke organisatiedimensie voor financiële analyse. Bij process mining kun je hiermee het proces van periodeafsluiting tussen verschillende juridische entiteiten vergelijken. Het dashboard 'Period Close Variant Analysis' gebruikt Company Code om inconsistenties te identificeren en standaardisatie van afsluitingsprocedures te ondersteunen. Waarom dit belangrijk is Biedt belangrijke organisatorische context. Zo kun je processen tussen verschillende juridische entiteiten vergelijken en variaties en best practices identificeren. Waar je het vindt Komt voor in vrijwel alle financiële tabellen in SAP, vooral in de header-tabel BKPF, veld BUKRS. Voorbeelden 10001710US01DE01 | |||
| Documentnummer DocumentNumber | De unieke identificatie van een financieel document, zoals een journaalpost. | ||
| Beschrijving Het documentnummer is een unieke sleutel die SAP aan elke financiële boeking toekent. Het dient als primaire referentie voor het volgen en controleren van afzonderlijke transacties die deel uitmaken van de activiteiten in het afsluitingsproces. Hoewel het documentnummer zelf geen case-ID is, vormt het wel een belangrijke koppeling met het bronsysteem. Analisten kunnen vanuit een process mining-weergave doorklikken naar de details van de specifieke transactie in SAP S/4HANA voor een oorzaakanalyse. Dit is vooral handig bij het onderzoeken van specifieke correctieboekingen of reconciliatieboekingen. Waarom dit belangrijk is Biedt een directe verwijzing naar de onderliggende transactie in SAP, zodat je vanuit het procesmodel eenvoudig kunt doorklikken en transacties kunt controleren. Waar je het vindt Staat in de tabel voor financiële documentkoppen BKPF (veld BELNR) en in regeltabellen zoals BSEG of ACDOCA. Voorbeelden 100000045190000001300000023 | |||
| Eindtijd EndTime | De timestamp die aangeeft wanneer een activiteit is voltooid. | ||
| Beschrijving De eindtijd markeert de voltooiing van een taak. Bij directe events die in het systeem worden gelogd, kan deze gelijk zijn aan de starttijd. Bij activiteiten met een meetbare duur is het de timestamp van afronding. In combinatie met de starttijd is dit attribuut nodig om de Waarom dit belangrijk is Maakt het mogelijk om de duur van activiteiten, de Processing Time, te berekenen. Dit is belangrijk om prestatieknelpunten te vinden en efficiëntie te analyseren. Waar je het vindt Net als de starttijd kan dit uit verschillende timestampvelden komen. Bij sommige activiteiten is de eindtijd gelijk aan de starttijd. Bij andere activiteiten kan het gaan om een afzonderlijke datum voor 'completed on' of 'changed on' in applicatietabellen of wijzigingslogboeken, zoals CDHDR en 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 specifieke mijlpaal in het periodeafsluitingsproces. Het is de datum waarop een taak naar verwachting klaar moet zijn. Met dit attribuut meet je in hoeverre de planning wordt gehaald en hoe de prestaties zich verhouden tot deadlines. Het vormt de basis voor het dashboard 'Naleving van rapportagedeadlines' en de KPI 'Financiële overzichten op tijd afgerond'. Deze vergelijken de geplande datum met Waarom dit belangrijk is Maakt het mogelijk om prestaties ten opzichte van deadlines te analyseren en helpt bij het meten en verbeteren van het percentage kritieke afsluitingsactiviteiten dat op tijd wordt afgerond. Waar je het vindt Deze data staat vaak in een taakbeheer- of planningssysteem, zoals de SAP Financial Closing cockpit, waarin afsluitingstaken met geplande einddatums zijn vastgelegd. Voorbeelden 2024-01-05T23:59:59Z2024-04-04T23:59:59Z2024-07-05T23:59:59Z | |||
| GL-accountnummer GlAccountNumber | De unieke identificatie van een specifieke rekening in het General Ledger. | ||
| Beschrijving Het General Ledger-accountnummer, GL Account Number, identificeert afzonderlijke rekeningen waarop financiële transacties worden vastgelegd, zoals kas, crediteuren of omzet. Veel activiteiten aan het einde van een periode, zoals reconciliaties en correctieboekingen, houden rechtstreeks verband met specifieke GL-accounts. Dit attribuut is belangrijk voor een gedetailleerde analyse van financiële processen. Het dashboard 'Adjusting Journal Entry Analysis' gebruikt het om het aantal correcties per rekening te tonen en probleemgebieden te identificeren. De KPI 'Avg GL Account Reconciliation Time' gebruikt dit attribuut ook om vertragingen bij specifieke rekeningen te vinden. Waarom dit belangrijk is Koppelt procesactiviteiten aan specifieke financiële rekeningen. Zo kun je reconciliaties en journaalposten gedetailleerd analyseren en de oorzaken van problemen vinden. Waar je het vindt Komt voor in tabellen met regelitems van financiële documenten, voornamelijk BSEG, veld HKONT, of in de universele journaaltabel ACDOCA van S/4HANA. Voorbeelden 113100004000000073000000 | |||
| Reconciliatiestatus ReconciliationStatus | De status van een reconciliatieactiviteit, zoals 'Open', 'In behandeling' of 'Goedgekeurd'. | ||
| Beschrijving Dit attribuut houdt de status bij van een reconciliatieproces voor een bepaald account of een bepaalde taak. Het laat zien of een reconciliatie is gestart, ter beoordeling is ingediend, goedgekeurd of afgewezen. Statuswijzigingen zijn belangrijke gebeurtenissen in het proces. Dit is essentieel voor het dashboard 'Analyse van reconciliatieherwerk'. Door de volgorde van statussen te analyseren, kun je zien wanneer een status 'Goedgekeurd' wordt gevolgd door verdere aanpassingen. Dat wijst op herwerk. Het ondersteunt ook de KPI 'Reconciliatiepercentage in één keer goedgekeurd', doordat je ziet welke reconciliaties zonder voorafgaande afwijzing of heropening worden goedgekeurd. Waarom dit belangrijk is Houdt de voortgang en uitkomst van reconciliatietaken bij. Zo kun je herwerk herkennen, goedkeuringspercentages meten en knelpunten analyseren. Waar je het vindt Deze informatie staat meestal in tabellen die horen bij de gebruikte reconciliatietool, zoals de SAP Financial Closing cockpit of SAP Account Substantiation and Automation by BlackLine. Voorbeelden Niet gestartIn voorbereidingGoedgekeurdAfgewezen | |||
| 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 bepaalde taak heeft uitgevoerd, zoals het boeken van een journaalpost of het goedkeuren van een reconciliatie. Meestal wordt dit vastgelegd als gebruikers-ID in systeemlogboeken en documentheaders. Door het proces per gebruiker te analyseren, krijg je zicht op de verdeling van werk, individuele prestaties en trainingsbehoeften. Het dashboard Resource Allocation Efficiency gebruikt dit attribuut rechtstreeks om verwerkingstijden per gebruiker te visualiseren. Je kunt er ook kandidaten voor automatisering mee vinden door repetitieve taken te herkennen die door veel gebruikers worden uitgevoerd. Waarom dit belangrijk is Koppelt procesactiviteiten aan de personen die ze hebben uitgevoerd. Zo kun je werkbelasting analyseren, capaciteit beter inzetten en prestaties beheren. Waar je het vindt Vaak te vinden in documentheadertabellen zoals BKPF, in veld USNAM (User Name), of in wijzigingsdocumenttabellen zoals CDHDR, in veld USERNAME. Voorbeelden ABROWNCSMITHDJOHNSON | |||
| Boekingssoort JournalEntryType | Het type financieel document dat wordt geboekt, waarmee standaardboekingen, overlopende posten en correcties van elkaar worden onderscheiden. | ||
| Beschrijving De boekingssoort, in SAP-termen het documenttype, is een sleutel waarmee boekhoudkundige documenten worden ingedeeld. De boekingssoort bepaalt op welke accounttypen een document kan worden geboekt en helpt verschillende zakelijke transacties te onderscheiden, zoals een leveranciersfactuur (KR), een boeking op het grootboek (SA) of een klantbetaling (DZ). Binnen de periodeafsluiting is dit attribuut belangrijk om specifieke soorten activiteiten te isoleren. Analisten kunnen zich bijvoorbeeld richten op correctieboekingen voor het dashboard 'Analyse van correctieboekingen' en de KPI 'Aantal correctieboekingen'. Het helpt ook bij het berekenen van de 'verhouding handmatige boekingen'. Waarom dit belangrijk is Deelt financiële transacties in categorieën in. Zo kun je de analyse richten op specifieke soorten boekingen, zoals handmatige correcties die belangrijk zijn voor een soepel periodeafsluitingsproces. Waar je het vindt Dit is een standaardveld in de tabel voor financiële documentkoppen BKPF (veld BLART). Voorbeelden SAKRAB | |||
| Bronsysteem SourceSystemId | Identificatie van de specifieke 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 per regio of bedrijfsonderdeel, is dit veld nodig om databronnen van elkaar te onderscheiden. Je gebruikt het vooral voor datagovernance, audits en het bewaken van de dataintegriteit. In analyses kun je het als filter gebruiken om processen uit verschillende bronsystemen te vergelijken wanneer deze zijn samengevoegd in één process mining-model. Waarom dit belangrijk is Levert belangrijke informatie over de herkomst van data en de context ervan. Zo blijft duidelijk waar de data vandaan komt, vooral in omgevingen met meerdere systemen. Waar je het vindt Dit is meestal metadata die tijdens het data-extractieproces wordt toegevoegd. De bron is vaak 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 vertegenwoordigt de geldwaarde van een financieel document. Bij correcties aan het einde van een periode kan dit het bedrag zijn van de overlopende post of correctie die wordt geboekt. Een analyse van het bedrag is nuttig voor materialiteitsbeoordelingen. Analisten kunnen onderzoeken van correctieboekingen met een hoge waarde prioriteit geven, omdat die een groter financieel risico kunnen vormen. Je kunt het procesmodel filteren op transacties boven een bepaalde drempel. Zo blijft alleen de belangrijkste activiteit zichtbaar. Waarom dit belangrijk is Voegt een financiële dimensie toe aan de analyse. Zo kun je problemen prioriteren op basis van financiële impact en materialiteit. Waar je het vindt Deze waarde moet meestal worden geaggregeerd uit regeltabellen 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 de nodige context voor het attribuut Bij internationale organisaties kan het belangrijk zijn om per valuta te analyseren. Zo worden geldbedragen correct geïnterpreteerd en kunnen ze worden omgerekend naar één rapportagevaluta voor een geaggregeerde analyse. Zonder deze context kun je waarden van Waarom dit belangrijk is Biedt de nodige context voor geldbedragen, zodat bedragen correct worden geïnterpreteerd, vooral in een omgeving met meerdere valuta. Waar je het vindt Staat in de tabel voor financiële documentkoppen BKPF (veld WAERS). Voorbeelden USDEURJPY | |||
| Doorlooptijd periodeafsluiting PeriodCloseCycleTime | De totale tijd die nodig is om een financiële periode af te sluiten, van de eerste tot de laatste activiteit. | ||
| Beschrijving Deze metriek geeft de end-to-end-doorlooptijd van het periodeafsluitingsproces voor één case weer (Financial Period). Je berekent de metriek als het verschil tussen de timestamp van de laatste activiteit en die van de eerste activiteit binnen die periode. Dit is een belangrijke KPI. De metriek ondersteunt rechtstreeks het dashboard 'Overzicht doorlooptijd periodeafsluiting' en de KPI 'Gemiddelde doorlooptijd periodeafsluiting'. Je krijgt hiermee een overzicht van de efficiëntie en snelheid van het afsluitingsproces. Ook kun je de resultaten in de tijd vergelijken en verschillende bedrijfs codes met elkaar benchmarken. Waarom dit belangrijk is Is de belangrijkste KPI voor de totale procesduur en maakt het mogelijk om verbeteringen in efficiëntie in de tijd op hoofdlijnen te volgen. Waar je het vindt Berekend op case-niveau: 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 automatisch door het systeem zijn uitgevoerd, zoals een geplande batchtaak voor valutawaardering of geautomatiseerde clearingruns. De vlag wordt meestal afgeleid van de ID van Dit attribuut is belangrijk om het automatiseringsniveau in het afsluitingsproces te begrijpen. Het helpt kansen voor verdere automatisering te vinden door handmatige taken met een hoog volume zichtbaar te maken. Ook bij oorzaakanalyses wordt het gebruikt om te bepalen of knelpunten ontstaan in handmatige of geautomatiseerde stappen. Waarom dit belangrijk is Maakt onderscheid tussen menselijke en systeemactiviteiten. Dat helpt bij het vinden van automatiseringskansen en het analyseren van de efficiëntie van beide. Waar je het vindt Dit is een afgeleid attribuut, meestal gebaseerd op een regel voor het veld 'ResponsibleUser', bijvoorbeeld een controle op systeem- of batchgebruikers-ID's zoals 'BATCHUSER', of op de transactiecode. Voorbeelden truefalse | |||
| Is herwerk in reconciliatie IsReconciliationRework | Een booleaanse vlag die waar is wanneer een reconciliatieactiviteit wordt gevolgd door een afwijzing of verdere aanpassingen. | ||
| Beschrijving Dit berekende attribuut herkent herwerk binnen het reconciliatiesubproces. De logica markeert activiteiten of cases waarbij een reconciliatie wordt afgewezen, opnieuw wordt geopend nadat deze is ingediend, of waarbij correctieboekingen worden geplaatst nadat een reconciliatie voor een grootboekrekening al als afgerond werd beschouwd. Deze vlag is speciaal bedoeld voor het dashboard 'Analyse van reconciliatieherwerk' en de KPI 'Percentage reconciliatieherwerk'. Complexe procesreeksen worden hiermee omgezet in een eenvoudig, meetbaar attribuut dat de omvang van het herwerk kwantificeert. Zo kunnen teams gericht werken aan kwaliteit in één keer. Waarom dit belangrijk is Kwantificeert herwerk rechtstreeks, een belangrijke vorm van procesinefficiëntie. Zo kun je de kwaliteit van reconciliaties gericht analyseren en verbeteren. Waar je het vindt Berekend op basis van de volgorde van activiteiten. De vlag wordt bijvoorbeeld op waar gezet wanneer de reeks 'Reconciliatie goedgekeurd' wordt gevolgd door 'Correctieboeking geplaatst' voor hetzelfde grootboekaccount binnen dezelfde periode. Voorbeelden truefalse | |||
| Is op tijd IsOnTime | Een booleaanse vlag die waar is wanneer een mijlpaal op of vóór de geplande datum is afgerond. | ||
| Beschrijving Dit attribuut geeft een eenvoudige binaire uitkomst voor het halen van de planning. Je berekent het door Dit is de basisberekening voor de KPI 'Financiële overzichten op tijd afgerond'. Datumvergelijkingen worden omgezet in een duidelijke status: 'op tijd' of 'te laat'. Die status kun je eenvoudig in dashboards en rapporten weergeven. Zo meet je hoe effectief initiatieven zijn die de periodeafsluiting moeten versnellen. Waarom dit belangrijk is Vereenvoudigt de analyse van het halen van deadlines tot een duidelijke uitkomst: geslaagd of niet geslaagd. Zo kun je prestaties op tijd eenvoudig volgen en rapporteren. Waar je het vindt Berekend veld: Voorbeelden truefalse | |||
| 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. Het geeft context bij de actualiteit van de data die in de process mining-tool wordt geanalyseerd. Het doel is vooral datagovernance en bewustwording bij gebruikers. Kijkers van dashboards kunnen zien hoe actueel de analyse is. Dat is vooral belangrijk voor dashboards voor monitoring die bijna realtime werken, zoals 'Current Period Close Status'. Zo begrijpen 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 je het vindt Dit is metadata die door de data-extractie- of ETL-tool wordt gegenereerd en bij de uitvoering aan de dataset wordt toegevoegd. 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 om een specifieke functie of een specifiek programma in SAP te starten. FB01 wordt bijvoorbeeld gebruikt om een document te boeken en FAGLB03 om saldi van grootboekrekeningen weer te geven. De T-code geeft vaak een duidelijke technische aanwijzing van de uitgevoerde activiteit. Dit attribuut helpt bij het definiëren van activiteiten in het procesmodel. Het is een betrouwbare manier om geautomatiseerde en handmatige activiteiten van elkaar te onderscheiden en precies te begrijpen hoe een taak in het systeem is uitgevoerd. Door T-codes te analyseren, kun je niet-standaard of inefficiënte werkwijzen van medewerkers opsporen. Waarom dit belangrijk is Geeft op systeemniveau een technisch beeld van de manier waarop een activiteit is uitgevoerd. Dat helpt bij het herkennen van handmatige en geautomatiseerde stappen en niet-standaardprocedures. Waar je het vindt Te vinden in de tabel voor financiële documentkoppen BKPF (veld TCODE) of in wijzigingsdocumentlogs. Voorbeelden FB01FAGL_FCVF.13 | |||
| Werkelijke einddatum ActualCompletionDate | De werkelijke datum waarop een belangrijke activiteit of de volledige periodeafsluiting is afgerond. | ||
| Beschrijving Dit attribuut legt de werkelijke einddatum van een belangrijke mijlpaal vast. Het is de timestamp van de definitieve goedkeuring van de financiële overzichten of van het sluiten van de boekingsperiode. Het is de tegenhanger van Waarom dit belangrijk is Geeft de werkelijke timing van mijlpalen weer. Dat is nodig om prestaties ten opzichte van geplande deadlines te meten en vertragingen te analyseren. Waar je het vindt Afkomstig 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 | |||
Record to Report - activiteiten voor periodeafsluiting en afstemming
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Boekingsperiode geopend | Dit markeert het begin van de financiële periode. Boekingsperioden worden geopend zodat transacties kunnen worden geregistreerd. Het gaat om een expliciete, gelogde configuratiewijziging die een financieel beheerder in SAP uitvoert. Hierdoor kunnen journaalposten voor de nieuwe periode worden geboekt. | ||
| Waarom dit belangrijk is Deze activiteit is het belangrijkste startevent voor het proces rond de periodeafsluiting. Hiermee kun je de totale doorlooptijd nauwkeurig meten en krijgt de procesanalyse een duidelijk beginpunt. Waar je het vindt Dit event wordt vastgelegd in wijzigingsdocumenten, in de tabellen CDHDR en CDPOS. Daarin worden wijzigingen aan de tabel T001B voor het beheer van boekingsperioden geregistreerd. Deze wijzigingen worden meestal uitgevoerd via transactie OB52. Vastleggen Filter de wijzigingslogboeken voor tabel T001B op het betreffende boekjaar en de betreffende periode. Eventtype explicit | |||
| Boekingsperiode gesloten | Dit is de laatste activiteit in de cyclus. De boekingsperiode wordt formeel gesloten om verdere transacties te voorkomen. Zo blijft de data voor de definitieve financiële rapporten betrouwbaar. | ||
| Waarom dit belangrijk is Deze activiteit is het definitieve eindevent van het proces. Je gebruikt dit om de totale doorlooptijd van de periodeafsluiting te berekenen en trends in de procesafronding te analyseren. Waar je het vindt Net als bij het openen van een periode wordt dit event vastgelegd in wijzigingsdocumenten, in de tabellen CDHDR en CDPOS. Daarin worden updates aan tabel T001B voor het beheer van boekingsperioden via transactie OB52 geregistreerd. Vastleggen Filter de wijzigingslogboeken voor tabel T001B om de sluiting van het betreffende boekjaar en de betreffende periode te identificeren. Eventtype explicit | |||
| Correctiejournaalpost geboekt | Dit staat voor een corrigerende journaalpost die wordt gemaakt nadat de eerste reconciliaties zijn uitgevoerd, meestal om afwijkingen uit de controle te herstellen. Het gaat om een expliciete transactie die in het General Ledger wordt geboekt. | ||
| Waarom dit belangrijk is Een hoge frequentie van correctieboekingen wijst op een lage first-time quality in eerdere processen of reconciliaties. Door deze boekingen te analyseren, kun je de oorzaken van fouten vinden en herstelwerk verminderen. Waar je het vindt Vastgelegd als expliciete documenten in de tabellen ACDOCA en BKPF. Je kunt ze herkennen aan specifieke documenttypen, boekingsdatums laat in de afsluitingscyclus of specifieke tekstomschrijvingen. Vastleggen Filter journaalposten in BKPF op een combinatie van documenttype en boekingsdatum ten opzichte van reconciliatieactiviteiten. Eventtype 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. Dit is het eindpunt van de boekhoudkundige en consolidatieprocessen rond de periodeafsluiting. | ||
| Waarom dit belangrijk is Dit is een belangrijk ijkpunt in de Record to Report-cyclus. De timing is bepalend voor het halen van rapportagedeadlines en het tijdig leveren van informatie aan belanghebbenden. Waar je het vindt Je legt dit het beste vast via een tool voor financieel afsluitingsbeheer, zoals SAP Financial Closing Cockpit, waarin het een expliciete taak is. Anders moet je het afleiden uit rapportgeneratielogboeken of timestamps van aangemaakte bestanden. Vastleggen Volg de voltooiingsstatus van de taak 'Generate Financial Statements' in een closingtool, of analyseer de rapportuitvoeringslogboeken. Eventtype inferred | |||
| Intercompany-reconciliatie gestart | Deze activiteit markeert het begin van het proces waarin transacties tussen verschillende company codes binnen dezelfde groep worden gematcht en gereconcilieerd. Dit gebeurt vaak door een reconciliatiejob uit te voeren of een nieuwe reconciliatiecase aan te maken in SAP's ICMR-tool. | ||
| Waarom dit belangrijk is Intercompany-reconciliatie is vaak complex en tijdrovend. Door de doorlooptijd en procesflow te analyseren, kun je de groepsafsluiting efficiënter maken en zorgen voor betrouwbare geconsolideerde financiële cijfers. Waar je het vindt 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 de aanmaakdatum of de timestamp van statuswijzigingen van reconciliatie-eenheden in de ICMR-tool voor de betreffende periode. Eventtype inferred | |||
| Reconciliatie van rekening gestart | Dit markeert het begin van het handmatige of deels geautomatiseerde proces om saldi van GL-rekeningen te onderbouwen. Je leidt dit af wanneer de status van een reconciliatie verandert van 'New' naar 'In Progress', of wanneer de eerste actie van de voorbereider wordt gelogd. | ||
| Waarom dit belangrijk is Dit is een belangrijk ijkpunt om de duur en inspanning van de onderbouwing van balansposten te begrijpen. Je ziet hiermee welke rekeningen of afdelingen laat aan hun reconciliatie beginnen. Waar je het vindt Dit event wordt meestal vastgelegd in een speciale reconciliatietool, zoals SAP Account Substantiation and Automation van BlackLine, of in andere systemen van derden. Je leidt het af uit timestamps van statuswijzigingen. Vastleggen Volg de timestamp van de eerste statuswijziging vanuit de status 'Not Started' voor de reconciliatie van een bepaalde GL-rekening. Eventtype inferred | |||
| Reconciliatie van rekening goedgekeurd | Deze activiteit markeert de definitieve goedkeuring van een reconciliatie van een GL-rekening. Daarmee wordt bevestigd dat het saldo is onderbouwd en problemen zijn opgelost. Je leidt dit af uit een statuswijziging naar 'Approved' in een reconciliatietool. | ||
| Waarom dit belangrijk is Dit ijkpunt markeert de afronding van een belangrijke controleactiviteit. Door goedkeuringstijden te volgen, zie je waar knelpunten in het controleproces zitten. Dit is ook belangrijk om herstelwerk en first-pass yield te meten. Waar je het vindt Vastgelegd in een systeem voor reconciliatiebeheer, zoals SAP Account Substantiation and Automation, door de timestamp van de definitieve goedkeuringsstatus te volgen. Vastleggen Identificeer de timestamp waarop het statusveld van een reconciliatie wordt bijgewerkt naar de eindstatus 'Approved'. Eventtype inferred | |||
| Consolidatietaken uitgevoerd | Dit staat voor het uitvoeren van consolidatieactiviteiten binnen SAP Group Reporting, zoals valutavertaling, herclassificatie en het elimineren van intercompanywinsten. Deze taken worden meestal beheerd en gelogd 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 voor tijdige geconsolideerde rapportage. Waar je het vindt Vastgelegd in de statuslogboeken van de Data Monitor of Consolidation Monitor in SAP S/4HANA for Group Reporting. Elke taak bevat meestal een gebruiker, timestamp en status. Vastleggen Exporteer de uitvoeringslogboeken van taken uit de onderliggende tabellen van de consolidatiemonitor van Group Reporting. Eventtype explicit | |||
| Financiële overzichten goedgekeurd | Dit staat voor de definitieve goedkeuring van de financiële overzichten door bevoegde managers voordat ze worden gepubliceerd. Dit gebeurt vaak offline, maar kan worden vastgelegd als er een formele digitale goedkeuringsstap bestaat. | ||
| Waarom dit belangrijk is Dit is de laatste kwaliteits- en controlepoort. Door de timing te volgen, zie je in hoeverre rapportagedeadlines worden gehaald en hoe efficiënt de managementreview verloopt. Waar je het vindt Dit event wordt vastgelegd als er een workflow of statusveld voor goedkeuring van overzichten bestaat, bijvoorbeeld in SAP Financial Closing Cockpit of een documentbeheersysteem. Vastleggen Identificeer een dataveld en timestamp die de definitieve goedkeuring van het financiële rapportagepakket aangeven. Eventtype inferred | |||
| Geautomatiseerde clearingrun uitgevoerd | Dit staat voor het uitvoeren van geautomatiseerde clearingprogramma's in SAP, zoals de GR/IR-clearingrun (Goods Receipt/Invoice Receipt). Deze jobs matchen en clearen openstaande posten op specifieke GL-rekeningen, 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 je het vindt Vastgelegd in de uitvoeringslogboeken van specifieke batchjobs, zoals F.13 of F.13E voor automatische clearing. De tabellen TBTCO en TBTCP bevatten de uitvoeringsdetails van jobs. Vastleggen Monitor de start- en eindtimestamps van jobs die horen bij transacties zoals F.13 in de SAP-joblogboeken. Eventtype explicit | |||
| Overdracht van subledgerdata voltooid | Dit staat voor het voltooien van batchjobs die samengevatte data overbrengen van subledgers, zoals Accounts Receivable, Accounts Payable en Asset Accounting, naar het General Ledger. Zo zijn alle onderliggende operationele transacties in het GL verwerkt voordat de afsluitingsprocedures beginnen. | ||
| Waarom dit belangrijk is Vertragingen bij het afsluiten van subledgers kunnen een groot knelpunt vormen voor het hele proces. Door deze activiteit te volgen, zie je waar inefficiënties ontstaan bij het verzamelen en integreren van data uit bronsystemen. Waar je het vindt Afgeleid uit de succesvolle voltooiingsstatus van specifieke batchjobs voor ledgerafwikkeling en dataoverdracht. Joblogboeken staan in de tabellen TBTCO en TBTCP. Vastleggen Identificeer en monitor de voltooiingstimestamps van relevante batchjobs in het SAP-joboverzicht, via transactie SM37. Eventtype explicit | |||
| Overlopende posten en voorzieningen geboekt | Dit event legt het aanmaken vast van handmatige journaalposten voor overlopende posten, transitoria en andere voorzieningen die nodig zijn voor een juiste financiële rapportage volgens het accrual-principe. Het gaat om expliciete transacties die in het General Ledger worden geboekt. | ||
| Waarom dit belangrijk is Door deze boekingen te volgen, kun je het volume en de timing van handmatige correcties analyseren. Een hoog volume kan wijzen op mogelijkheden voor automatisering of verbetering van eerdere processtappen. Waar je het vindt Vastgelegd als expliciete journaalposten in de universele journaaltabel ACDOCA en de headertabel BKPF. Je kunt deze posten herkennen aan specifieke documenttypen die voor overlopende posten zijn geconfigureerd. Vastleggen Filter documenten in tabel BKPF op documenttype, bijvoorbeeld 'SA' of aangepaste typen, en op boekingsdatum binnen de periode. Eventtype explicit | |||
| Proefbalans opgesteld | Dit geeft aan dat een proefbalans is gegenereerd en opgeslagen voor controle. Het is een belangrijk controlepunt voordat de definitieve financiële overzichten worden opgesteld. Het event wordt vaak vastgelegd wanneer de rapportuitvoer wordt opgeslagen. | ||
| Waarom dit belangrijk is Het opstellen van de proefbalans is een belangrijke kwaliteitscontrole. Door de timing te analyseren, zie je hoe klaar de organisatie is voor de definitieve rapportage en waar vertragingen in eerdere activiteiten zitten. Waar je het vindt Dit is vaak geen expliciet event. Je kunt het afleiden uit het uitvoeren van een specifieke rapportagetransactie wanneer varianten met gebruikers- en datumsstempels worden opgeslagen, of wanneer het proces wordt beheerd in een tool zoals SAP Financial Closing Cockpit. Vastleggen Hiervoor is systeemanalyse nodig om vast te stellen of er een betrouwbaar logmechanisme bestaat, zoals rapportuitvoeringslogboeken of takenlijsten in de closing cockpit. Eventtype inferred | |||
| Waarderingsrun voor vreemde valuta | Dit is een standaardprocedure aan het einde van de maand om openstaande posten en saldi in vreemde valuta opnieuw te waarderen op basis van de wisselkoersen aan het einde van de periode. Bij het uitvoeren van dit programma worden de resulterende waarderingsverschillen geboekt. | ||
| Waarom dit belangrijk is Dit zorgt voor compliance met boekhoudkundige standaarden en geeft een betrouwbaar beeld van de financiële situatie. Door deze activiteit te volgen, kun je controleren of alle valutawaarderingen op tijd worden uitgevoerd. Waar je het vindt Vastgelegd in de uitvoeringslogboeken van het programma voor valutawaardering, bijvoorbeeld FAGL_FCV. Jobdetails worden opgeslagen in de tabellen TBTCO en TBTCP. Vastleggen Monitor de uitvoeringslogboeken van jobs voor transactie FAGL_FCV of het onderliggende programma. Eventtype explicit | |||
Extractiegidsen
Stappen
- CDS Views identificeren en controleren: Log in op je SAP S/4HANA-systeem met SAP HANA Studio of Eclipse met ADT. Gebruik de ABAP Development Tools om te zoeken naar de standaard-CDS-views uit de query en te controleren of ze bestaan, zoals I_JournalEntryItem, I_BatchJob en I_ConsolidationTaskLog. Voor processen zoals Account Reconciliation moet je mogelijk aangepaste CDS-views maken, bijvoorbeeld Z_I_ACCOUNTRECONCILIATION, om statuswijzigingen vast te leggen.
- CDS Views via OData beschikbaar maken: Gebruik in de SAP-backend de transactie
SEGW(Gateway Service Builder) om een nieuw project te maken. 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 extern beschikbaar maakt. - OData-service activeren: Ga in de SAP Gateway-hub naar transactie
/IWFND/MAINT_SERVICE. Klik op 'Add Service', zoek de service die je in de vorige stap hebt gegenereerd en voeg deze toe. De service is dan actief en beschikbaar voor queries. - Dataverbinding instellen: Maak vanuit de data-extractietool van je keuze, zoals Python, Power BI of een speciaal ETL-platform, verbinding met de nieuwe OData-service. Je hebt de service-URL en de juiste inloggegevens nodig, met autorisatie voor toegang tot de CDS-views.
- De query aanpassen en uitvoeren: Kopieer de meegeleverde SQL-query. Pas de placeholderwaarden voor datumbereiken, bedrijfscodes en eventuele aangepaste CDS-views of batchjobnamen aan je SAP-omgeving aan. Voer de query uit op het OData-service-endpoint. OData gebruikt een andere syntaxis (
$filter,$select), dus mogelijk moet je de logica van de UNION ALL-query vertalen naar meerdere afzonderlijke API-aanroepen, één per activiteit. - Activiteitsdata samenvoegen: OData ondersteunt doorgaans geen complexe UNION ALL-queries in één aanroep. Voer daarom voor elk activiteitenblok in de query een afzonderlijk verzoek uit. Voeg de resultaten van alle verzoeken samen tot één dataset of tabel in je clienttool.
- Data transformeren en opschonen: Controleer de samengevoegde data. Zorg dat de kolommen
EventTimeenEndTimedezelfde timestampnotatie gebruiken. Controleer ofFinancialPeriodde juiste notatie heeft als 'YYYY-MM'. Verwerk NULL-waarden in kolommen zoalsResponsibleUserofDocumentNumberwaar nodig. - Als event log exporteren: Exporteer de definitieve, samengevoegde dataset naar een CSV-bestand. Zorg dat de kolomnamen overeenkomen met de vereiste attributen:
FinancialPeriod,ActivityName,EventTime,EndTime,ResponsibleUser, enzovoort. Dit bestand kun je nu uploaden naar ProcessMind.
Configuratie
- CDS Views: De query gebruikt een combinatie van standaard- en aangepaste CDS-views. Standaardviews zoals
I_JournalEntryItem(voor journaalposten) enI_BatchJob(voor geautomatiseerde runs) zijn essentieel. Aangepaste views, zoalsZ_I_ACCOUNTRECONCILIATION, zijn vaak nodig om de status van interne processen vast te leggen die niet door standaardviews worden gedekt. - Datumbereik: Stel een specifiek datumbereik in voor de extractie om de hoeveelheid data beheersbaar te houden. De query gebruikt de placeholders
[Start Date]en[End Date]. Deze moeten doorgaans drie tot zes volledige fiscale perioden omvatten voor een bruikbare analyse. - Belangrijke filters: Filteren is 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 voor het uitvoeren van OData-services, bijvoorbeeld autorisatieobjecten
S_SERVICEenS_RFC. SAP Gateway-services moeten zijn geconfigureerd en geactiveerd. - Prestaties: Queries op
I_JournalEntryItemkunnen veel capaciteit vragen. Gebruik altijd selectieve filters, vooral voor datums, bedrijfscodes en grootboeken. Overweeg de extractie buiten piekuren uit te voeren of een incrementele laadstrategie te gebruiken voor continue monitoring.
a 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 directe leestoegang beschikbaar is tot het SAP HANA-schema met de benodigde applicatietabellen. Bepaal wie de schema-eigenaar is van ACDOCA, TBTCO, CDHDR en CDPOS. Vervang de schema-placeholder in de query door de goedgekeurde schemanaam.
- Controleer het boekjaar, de fiscale periode, de bedrijfscode en het datumbereik voor de extractie. Gebruik een datumbereik dat de volledige afsluitingscyclus omvat, doorgaans drie tot zes maanden, en vervang de datumparameters door waarden die bij je systeem passen.
- Controleer de lokale veldkoppelingen voor wijzigingen in de configuratie van boekingsperioden, het voltooien van batchjobs, wijzigingen in de reconciliatiestatus, consolidatie-uitvoering, rapportgeneratie en goedkeuringsregistraties. De query gebruikt professionele placeholders voor bronobjecten die niet in elke SAP S/4HANA-implementatie beschikbaar zijn. Vervang deze placeholders vóór uitvoering door goedgekeurde views of tabellen uit je systeem.
- Voer de query uit met alleen-lezen databasegegevens. De query maakt expliciet één eventregel per vereiste activiteit en leidt geen extra events af uit de volgorde van events.
- Controleer de geretourneerde kolommen. FinancialPeriod is de case-identificatie, ActivityName is de activiteit van het event en EventTime is de vereiste event-timestamp. EndTime, ResponsibleUser, CompanyCode, GlAccountNumber, DocumentNumber, ReconciliationStatus en TargetCompletionDate worden opgenomen als de bronrecord deze gegevens bevat.
- Controleer of elke vereiste activiteit in het resultaat staat, ook activiteiten waarvoor in een bepaalde periode mogelijk geen bronrecords bestaan. Voor ontbrekende activiteitstypen retourneert de query een validatieregel met ActivityName ingesteld op Activity Coverage Validation. Verwijder deze regel of verwerk hem apart voordat je het bestand naar ProcessMind uploadt, als de import alleen bedrijfs-events accepteert.
- Vergelijk representatieve events met SAP-applicatierecords en joblogs. Controleer of journaalpost-events overeenkomen met ACDOCA-records, job-events met TBTCO-records en wijzigingsevents met CDHDR- en CDPOS-records of de geconfigureerde bronnen voor reconciliatie en goedkeuring.
- Exporteer het resultaat als UTF-8-CSV of een ander door ProcessMind ondersteund tabelindeling. Behoud exact de kolomnamen FinancialPeriod, ActivityName en EventTime. Sorteer op FinancialPeriod en EventTime en houd één regel per expliciet geëxtraheerd event aan.
- Upload het event log naar ProcessMind en stel FinancialPeriod in als case-identificatie, ActivityName als activiteit en EventTime als start-timestamp. Koppel EndTime als eind-timestamp wanneer die beschikbaar is en koppel de overige kolommen als event- of case-attributen.
Belangrijke opmerking over bronkoppelingen: SAP S/4HANA heeft geen universele tabelstructuur voor elke reconciliatietool, consolidatiemonitor, rapportarchief, goedkeuringsworkflow of configuratie van boekingsperioden. Vervang elke placeholder [Your table name] en [Your column name] in de query door een geverifieerd object en een geverifieerde kolom uit je systeem. Behandel een placeholder niet als uitvoerbare SQL.
Configuratie
- Databasetoegang: Gebruik een alleen-lezen SAP HANA-databasegebruiker met SELECT-autorisatie op ACDOCA, TBTCO, CDHDR, CDPOS en de geconfigureerde bronobjecten voor boekingsperiodebeheer, reconciliatie, consolidatie, rapportage en goedkeuringen.
- Schemaconfiguratie: Vervang [Your SAP schema] door het werkelijke schema met de applicatieobjecten. Controleer of de objecten tabellen, calculation views of goedgekeurde rapportageviews zijn.
- Datumbereik: Extraheer de volledige afsluitingscyclus, doorgaans drie tot zes maanden. Neem openings- en afsluitingsactiviteiten, late boekingen, terugboekingen, goedkeuringen en correcties na de afsluiting mee.
- Fiscale periode: Filter op het boekjaar en de fiscale periode die door de bedrijfscode worden gebruikt. Ga niet uit van kalenderjaarperioden als de variant van het boekjaar daarvan afwijkt.
- Company Code: Gebruik een bedrijfscodefilter wanneer het proces betrekking heeft op geselecteerde juridische entiteiten. Gebruik [Configure based on your system] wanneer het bereik in een aparte organisatorische mapping wordt beheerd.
- Documenttypen: Beperk de extractie van journaalposten tot documenttypen voor overlopende posten, voorzieningen, correcties, waarderingen, vereffeningen en andere afsluitingsboekingen. Controleer de lokale configuratie van documenttypen voordat je deze filters activeert.
- Jobstatus: Neem voor voltooiingsactiviteiten alleen afgeronde of succesvol beëindigde jobs op. Controleer de lokale statuswaarden van TBTCO voordat je een statusvoorwaarde toepast.
- Wijzigingsdocumenten: Filter CDHDR en CDPOS op de relevante objectklasse en wijzigingsindicatoren nadat je de lokale configuratie hebt gecontroleerd. Wijzigingsdocumenten alleen identificeren mogelijk niet elke bedrijfsactiviteit.
- Bronnen voor reconciliatie en goedkeuring: Configureer geverifieerde bronobjecten voor statusovergangen van reconciliaties, acties van voorbereiders, goedkeuringen, streefdata en digitale ondertekening. Deze bronnen verschillen per geïmplementeerde SAP-component en uitbreiding.
- Prestaties: Beperk voorwaarden op boekjaar, fiscale periode, bedrijfscode, boekingsdatum en event-timestamp. Pas filters toe in elke UNION ALL-tak, vermijd onbeperkte scans van ACDOCA en voer de extractie uit binnen een goedgekeurd rapportagevenster.
- Datatypen: Normaliseer timestamps naar één tijdzone en één datatype. Zet lege tekenreeksen om naar NULL en behoud voorloopnullen in bedrijfscodes, rekeningnummers en documentnummers.
- Vereisten: Controleer of de benodigde SAP-componenten, reconciliatietooling, consolidatiefuncties, joblogging, activering van wijzigingsdocumenten en eventuele auditlogging voor rapporten of workflows beschikbaar zijn en data bevatten.
- Beveiliging en compliance: Pas least-privilege-toegang toe, bescherm financiële en gebruikersdata, leg het doel van de extractie vast en volg de auditvereisten van je organisatie voor SAP en databases.
a 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?
Geef je organisatie de mogelijkheid om efficiënter te werken en compliance te verbeteren met deze datatemplate. Begin vandaag nog met het verbeteren van je Record to Report-proces.
Optimaliseer vandaag nog je Record to Report-afsluiting en reconciliatie
Spoor inefficiënties op en verkort je afsluitingscyclus met maximaal 30%.
Je hebt geen creditcard nodig. Je kunt binnen enkele minuten aan de slag.