Jouw datatemplate voor Record to Report, period close en afstemming
Jouw datatemplate voor Record to Report, period close en afstemming
- Aanbevolen attributen om te verzamelen
- Belangrijke activiteiten om te volgen
- 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, meestal een combinatie van het boekjaar en de boekingsperiode. | ||
| Beschrijving De financiële periode is de primaire case-identificatie. Hiermee groepeer je alle activiteiten voor het afsluiten en afstemmen van rekeningen binnen die specifieke rapportagecyclus, bijvoorbeeld '2023-12' voor december 2023. Zo kun je het volledige periodeafsluitingsproces van begin tot eind analyseren voor elke afzonderlijke periode. In analyses kun je hiermee de end-to-end-doorlooptijd van elke afsluiting volgen, prestaties tussen perioden vergelijken en trends of afwijkingen vinden. Door elke financiële periode als een unieke case te definiëren, kun je de efficiëntie, knelpunten en variaties in het afsluitingsproces door de tijd heen visualiseren en meten. Waarom dit belangrijk is Dit is de essentiële case-identificatie voor de analyse. Je kunt hiermee doorlooptijden, werklasten en compliance van afsluitingen tussen perioden vergelijken. Waar je het vindt Dit attribuut wordt meestal afgeleid door het boekjaar (GJAHR) en de boekingsperiode (MONAT) uit de kopteksten van financiële documenten samen te voegen, bijvoorbeeld uit de tabel BKPF. Voorbeelden 2023-122024-032023-Q4 | |||
| Activiteit ActivityName | De naam van het specifieke bedrijfsevent of de specifieke taak die tijdens het periodeafsluitingsproces wordt uitgevoerd. | ||
| Beschrijving Dit attribuut legt de afzonderlijke stappen binnen de Record to Report-cyclus vast, zoals 'Correctiejournaalpost geboekt' of 'Financiële overzichten gegenereerd'. Het vormt de basis van de procesmap en laat de volgorde zien van de events waaruit de periodeafsluiting bestaat. Het analyseren van activiteiten is de basis van process mining. Je kunt hiermee de procesflow visualiseren, de volgorde van taken bepalen, procesvarianten ontdekken en de frequentie en duur van elke stap meten. Dit helpt bij het vinden van knelpunten, afwijkende procespaden en mogelijkheden voor standaardisatie of automatisering. Waarom dit belangrijk is Dit attribuut is verplicht voor het opbouwen van de procesmap. Hiermee kun je de volgorde van taken in de periodeafsluiting visualiseren en analyseren. Waar je het vindt Dit wordt afgeleid uit een combinatie van SAP-transactiecodes (TCODE), documenttypen (BLART) of specifieke programma-uitvoeringen, zoals FAGL_FCV voor de waardering van vreemde valuta. Voorbeelden Correctiejournaalpost geboektAfstemming van rekening gestartPeriode gesloten voor boekingen | |||
| Bronsysteem SourceSystem | De identificatie van het bronsysteem waaruit de data is geëxtraheerd. | ||
| Beschrijving Dit attribuut geeft de herkomst van de eventdata aan, zoals de naam of ID van een specifieke SAP ECC-instantie. In organisaties met meerdere ERP- of financiële systemen is dit veld nodig om data uit verschillende bronnen uit elkaar te houden. Ook in een omgeving met één systeem is het waardevolle metadata voor datagovernance, audits en probleemoplossing. Het bevestigt waar de data vandaan komt. Dat is belangrijk om vertrouwen in de analyse op te bouwen en de dataherkomst duidelijk te houden. Waarom dit belangrijk is Levert de benodigde dataherkomst voor governance en bevestigt waar de data vandaan komt. In omgevingen met meerdere systemen is dit nodig om processen van elkaar te onderscheiden. Waar je het vindt Dit is meestal een statische waarde die tijdens de data-extractie wordt toegevoegd en de specifieke SAP-client en systeem-ID identificeert, bijvoorbeeld uit tabel T000. Voorbeelden ECC_PROD_100SAP_E74_200ECC_FINANCE | |||
| Eventtijd EventTime | De timestamp die aangeeft wanneer een activiteit of event plaatsvond. | ||
| Beschrijving De eventtijd geeft de exacte datum en tijd van elke activiteit in het proces en vormt de chronologische basis voor de analyse. Meestal is dit een combinatie van de aanmaakdatum en -tijd van het document. Deze timestamp is nodig om events in de juiste volgorde te zetten en de procesflow te reconstrueren. Je gebruikt hem voor alle metriek op basis van duur, waaronder doorlooptijden tussen activiteiten, wachttijden en de totale duur van de periodeafsluiting. Door timestamps te analyseren, zie je waar vertragingen ontstaan en hoe het werk over de tijd is verdeeld. Waarom dit belangrijk is Als verplicht attribuut bepaalt dit de chronologische volgorde van events. Die volgorde is nodig om doorlooptijden te berekenen en procesknelpunten te vinden. Waar je het vindt Dit komt meestal uit de documentinvoerdatum (CPUDT) en invoertijd (CPUTM) in de tabel BKPF voor financiële documenten. Voorbeelden 2023-12-28T14:30:15Z2024-01-02T09:05:00Z2024-01-05T17:21:45Z | |||
| Laatste data-update LastDataUpdate | De timestamp waarop de data voor het laatst uit het bronsysteem is vernieuwd of geëxtraheerd. | ||
| Beschrijving Dit attribuut geeft aan hoe actueel de geanalyseerde data is. Het laat zien op welke datum en tijd de datapijplijn voor het laatst is uitgevoerd en geeft context bij de actualiteit van de procesinzichten. Voor dashboards, vooral dashboards die de voortgang bijna real-time volgen, is deze timestamp belangrijk. Je ziet hiermee of je naar de meest recente informatie kijkt of naar data van een eerdere dag. Zo weet je beter wat je van de analyse kunt verwachten en hoe je de uitkomsten moet interpreteren. Waarom dit belangrijk is Laat zien hoe actueel de data is. Dat is belangrijk om analyses en dashboards tijdig en relevant te houden. Waar je het vindt Deze timestamp wordt aan het einde van elke datalaadbewerking gegenereerd en toegevoegd door de data-extractie- of ETL-tool. Voorbeelden 2024-05-21T04:00:00Z2024-05-20T04:00:00Z2024-05-19T04:00:00Z | |||
| Bedrag in lokale valuta DMBTR | De financiële waarde van een regelpost, uitgedrukt in de lokale valuta van de company code. | ||
| Beschrijving Dit attribuut vertegenwoordigt de geldwaarde van een financiële boeking. Het is de belangrijkste kwantitatieve maatstaf voor de impact van een transactie op het grootboek. Door het bedrag te analyseren, kun je problemen prioriteren en financiële risico's beter begrijpen. Zo wordt het dashboard 'Analyse van het aantal correctieboekingen' veel waardevoller wanneer het onderscheid maakt tussen veel correcties met een lage waarde en weinig correcties met een hoge waarde. Je kunt de aandacht dan richten op transacties met een materiële financiële impact. Waarom dit belangrijk is Kwantificeert de financiële impact van transacties en maakt analyse op basis van materialiteit mogelijk, bijvoorbeeld door correctieboekingen met een hoge waarde te identificeren. Waar je het vindt Beschikbaar in de regelposttabel van documenten, BSEG (DMBTR). Voorbeelden 1500.75-25000.00123456.00 | |||
| Company code BUKRS | De organisatie-eenheid die een juridische entiteit vertegenwoordigt waarvoor financiële overzichten worden opgesteld. | ||
| Beschrijving De company code is een fundamentele organisatie-eenheid in SAP Financials. Ze vertegenwoordigt een zelfstandige onderneming met een eigen sluitende boekhouding. Alle financiële transacties worden op companycodeniveau geboekt. In process mining is filteren op company code nodig om het periodeafsluitingsproces tussen verschillende juridische entiteiten binnen een concern te vergelijken. Zo vind je best practices bij entiteiten die goed presteren en zie je welke entiteiten te maken hebben met vertragingen, veel correcties of afwijkingen in het proces. Het is een belangrijke dimensie voor het segmenteren van de analyse. Waarom dit belangrijk is Maakt het mogelijk om prestaties en compliance van periodeafsluitingen tussen juridische entiteiten te vergelijken. Dat is belangrijk voor financiële analyses op groepsniveau. Waar je het vindt Dit veld is beschikbaar in vrijwel alle tabellen met financiële documenten in SAP, vooral in BKPF (koptekst) en BSEG (regelpost). Voorbeelden 10002000US01DE01 | |||
| Documentnummer BELNR | De unieke identificatie van een boekhoudkundig document binnen een boekjaar en company code. | ||
| Beschrijving Het nummer van het boekhoudkundige document is de primaire sleutel voor financiële boekingen in SAP. Elke journaalpost, factuur of betalingsdocument krijgt een uniek nummer. Voor analyses op hoofdlijnen wordt het documentnummer meestal niet gebruikt, maar het is wel waardevol voor drill-down. Vanuit een process mining-dashboard kunnen analisten met het documentnummer rechtstreeks naar de specifieke transactie in SAP gaan om afwijkingen te onderzoeken, zoals een grote correctieboeking of een vertraagde afstemmingspost. Zo ontstaat een directe koppeling tussen het inzicht en de brontransactie. Waarom dit belangrijk is Legt een directe koppeling naar de brontransactie in SAP en maakt gedetailleerde drill-downanalyse mogelijk van de procesweergave naar specifieke boekingen. Waar je het vindt Te vinden in tabel BKPF (BELNR) als primaire sleutel. Voorbeelden 100000456719000001233000008901 | |||
| Documenttype BLART | Een code waarmee verschillende typen boekhoudkundige documenten worden geclassificeerd. | ||
| Beschrijving SAP gebruikt het documenttype om verschillende bedrijfstransacties van elkaar te onderscheiden, zoals leveranciersfacturen (KR), klantbetalingen (DZ) en grootboekboekingen (SA). Het documenttype bepaalt ook eigenschappen zoals het nummerbereik van documenten. Voor analyses van de periodeafsluiting is het documenttype een krachtig filter. Je kunt er specifieke activiteiten mee isoleren, zoals overlopende posten, voorzieningen of tegenboekingen. Zo analyseer je het aantal en de financiële impact van verschillende afsluitingsgerelateerde transacties en definieer je specifieke activiteiten in het procesmodel. Waarom dit belangrijk is Helpt transacties te classificeren en te filteren, zodat je specifieke activiteiten zoals overlopende posten, tegenboekingen of intercompany-boekingen kunt isoleren en analyseren. Waar je het vindt Te vinden in de documentkopteksttabel BKPF (BLART). Voorbeelden SAABKR | |||
| Grootboekrekening HKONT | Het nummer van de grootboekrekening waarop een regelpost wordt geboekt. | ||
| Beschrijving De grootboekrekening is een belangrijk stamgegeven in finance waarmee transacties worden geclassificeerd. Elke financiële boeking wordt aan een of meer grootboekrekeningen toegewezen. Bij de periodeafsluiting is het belangrijk om activiteiten per grootboekrekening te analyseren voor de dashboards 'Knelpunten bij rekeningafstemming' en 'Analyse van het aantal correctieboekingen'. Je ziet hiermee welke rekeningen het lastigst af te stemmen zijn, welke de meeste correcties nodig hebben en waar het risico op een materiële fout het grootst is. Zo kunnen teams hun aandacht richten op rekeningen die problemen veroorzaken. Waarom dit belangrijk is Maakt gerichte analyse van afstemmingen en correctieboekingen mogelijk en helpt rekeningen te vinden die vertraging veroorzaken of vaak moeten worden gecorrigeerd. Waar je het vindt Beschikbaar in de regelposttabel van financiële documenten, BSEG (HKONT). Voorbeelden 113100400500750000 | |||
| Type journaalpost JournalEntryType | Een classificatie van journaalposten, zoals 'Standaard', 'Correctie', 'Overlopende post' of 'Tegenboeking'. | ||
| Beschrijving Dit is een afgeleid attribuut dat financiële documenten classificeert op basis van hun bedrijfsdoel binnen het afsluitingsproces. Het wordt vaak bepaald door een combinatie van documenttype (BLART), reden voor tegenboeking (STGRD) of gebruikte grootboekrekeningen. Deze classificatie vormt de basis voor het dashboard 'Analyse van het aantal correctieboekingen' en bijbehorende KPI's. Door correctie- en boekingen voor overlopende posten expliciet te identificeren, kunnen analisten het aantal en de waarde meten, trends volgen en de oorzaken van deze boekingen onderzoeken. Zo maak je onderscheid tussen reguliere operationele boekingen en correcties aan het einde van de periode. Waarom dit belangrijk is Classificeert boekingen voor gerichte analyse en maakt het mogelijk om belangrijke typen journaalposten, zoals correcties en overlopende posten, te volgen en te meten. Deze geven inzicht in de gezondheid van het proces. Waar je het vindt Dit is een afgeleid veld. Je moet de logica definiëren op basis van bedrijfsregels, meestal met velden zoals documenttype (BLART) uit BKPF. Voorbeelden CorrectieOverlopende postTerugboekingStandaard | |||
| Verantwoordelijke gebruiker USNAM | De SAP-gebruikers-ID van de persoon die de transactie heeft aangemaakt of uitgevoerd. | ||
| Beschrijving Dit veld legt vast welke gebruiker een document heeft geboekt, een rapport heeft uitgevoerd of een programma voor de periodeafsluiting heeft gestart. Het identificeert de persoon die verantwoordelijk is voor een activiteit. Door per gebruiker te analyseren, krijg je inzicht in de verdeling van de werklast, opleidingsbehoeften en procesafwijkingen. Dashboards met activiteiten per gebruiker kunnen laten zien welke teamleden te veel werk hebben of niet-standaardprocedures volgen. Dit helpt ook bij prestatiemanagement en de verdeling van capaciteit binnen het financiële team. Waarom dit belangrijk is Maakt analyse van werklastverdeling en teamprestaties mogelijk en helpt procesafwijkingen te vinden die aan specifieke personen zijn gekoppeld. Waar je het vindt Beschikbaar in tabel BKPF (USNAM) voor het aanmaken van documenten. Voor batchjobs is dit te vinden in TBTCO (SDLUNAME). Voorbeelden JSMITHRDOEFIN_ADMIN | |||
| Afdeling Department | De functionele afdeling of kostenplaats die verantwoordelijk is voor de activiteit of transactie. | ||
| Beschrijving Dit attribuut identificeert de bedrijfsafdeling, zoals 'Finance', 'Sales' of 'Logistics', die aan een transactie is gekoppeld. Vaak wordt het afgeleid uit stamgegevens van de kostenplaats die aan een boeking is gekoppeld, of uit de stamgegevens van de gebruiker. Analyse per afdeling ondersteunt het dashboard 'Verdeling van werklast binnen het afsluitingsteam'. Je ziet hiermee hoe verschillende bedrijfsfuncties bijdragen aan de werklast aan het einde van de periode, vooral door transacties te starten die later correcties of afstemmingen nodig kunnen hebben. Zo worden ook onderdelen buiten het financiële team zichtbaar die invloed hebben op de periodeafsluiting. Waarom dit belangrijk is Helpt werklast en naleving van het proces binnen verschillende bedrijfsfuncties te analyseren. Zo zie je hoe afdelingen de efficiëntie van de financiële afsluiting beïnvloeden. Waar je het vindt Vaak afgeleid uit de kostenplaats (KOSTL) in BSEG of uit HR-stamgegevens van de verantwoordelijke gebruiker. Hiervoor moeten mogelijk meerdere tabellen worden gekoppeld. Voorbeelden Corporate FinanceCrediteurenadministratieFP&A | |||
| Boekjaar GJAHR | Het boekjaar waarin de transactie is geboekt. | ||
| Beschrijving Het boekjaar is een belangrijk onderdeel van de financiële data. Het vormt een vast onderdeel van de case-ID voor de financiële periode en geeft context aan alle transacties. Hoewel het boekjaar vaak onderdeel is van de case-ID, is het handig om het ook als afzonderlijk attribuut op te nemen voor trendanalyses over langere tijd. Zo kun je doorlooptijden van de close-cyclus, het aantal correcties en andere KPI's per jaar vergelijken. Daarmee zie je welke prestaties over meerdere jaren verbeteren of verslechteren. Waarom dit belangrijk is Geeft de benodigde tijdscontext en maakt het mogelijk om de prestaties van het close-proces per jaar te vergelijken. Waar je het vindt Beschikbaar in de tabel met documentkoppen, BKPF (GJAHR). Voorbeelden 202320242022 | |||
| Geplande einddatum TargetCompletionDate | De geplande deadline of vervaldatum voor een activiteit of voor de volledige periodeafsluiting. | ||
| Beschrijving De Target Completion Date geeft de planning weer waartegen het period close-proces wordt gemeten. Het is de deadline waarop specifieke mijlpalen of de volledige afsluiting afgerond moeten zijn. Dit attribuut is essentieel voor analyses van prestaties en compliance. Het wordt gebruikt om de KPI 'On-Time Period Close Rate' te berekenen en het dashboard 'Close Compliance & Overdue Tasks' aan te sturen. Door de werkelijke eventtijd te vergelijken met deze streefdatum, kan het systeem bepalen of taken op schema liggen, te laat zijn of dreigen uit te lopen. Zo kun je het close-proces proactief bijsturen. Waarom dit belangrijk is Maakt compliance- en prestatiemonitoring mogelijk door een referentiepunt te bieden om te meten of close-activiteiten op tijd zijn afgerond. Dit ondersteunt KPI's voor tijdige oplevering. Waar je het vindt Dit is meestal masterdata die wordt bijgehouden in een aparte kalender, een closing cockpit-tool zoals SAP Financial Closing cockpit of een spreadsheet. De data maakt geen deel uit van transactionele data. Voorbeelden 2023-12-29T23:59:59Z2024-01-03T17:00:00Z2024-01-02T12:00:00Z | |||
| Is geautomatiseerd IsAutomated | Een vlag die aangeeft of een activiteit door een menselijke gebruiker of een geautomatiseerd systeem is uitgevoerd. | ||
| Beschrijving Dit boolean-attribuut maakt onderscheid tussen handmatige taken en taken die automatisch door het systeem worden uitgevoerd, zoals een geplande batchjob voor de waardering van vreemde valuta of een bot die terugkerende boekingen uitvoert. Dit wordt vaak bepaald door de gebruikersnaam bij de transactie te analyseren, bijvoorbeeld 'BATCHUSER'. Inzicht in de mate van automatisering helpt om kansen voor efficiëntieverbetering te vinden. Met dit attribuut kun je zichtbaar maken welke delen van het proces handmatig zijn en mogelijk geautomatiseerd kunnen worden. Ook kun je de menselijke werklast beter inschatten door activiteiten die door het systeem zijn gegenereerd buiten beschouwing te laten. Waarom dit belangrijk is Maakt onderscheid tussen handmatige en systeemgestuurde activiteiten. Dat is belangrijk om automatiseringskansen te vinden en de handmatige werklast goed te meten. Waar je het vindt Dit is een afgeleid attribuut. De logica is meestal gebaseerd op User Name (USNAM), waarbij een lijst met bekende systeem- of batchgebruikers-ID's aangeeft dat het om een geautomatiseerde taak gaat. Voorbeelden truefalse | |||
| Is herstelwerk IsRework | Een berekende vlag die activiteiten markeert die herstelwerk vormen, zoals een terugboeking of een afgewezen afstemming. | ||
| Beschrijving Dit boolean-attribuut markeert events of reeksen events die wijzen op inefficiënte lussen of correcties in het proces. Zo kan een activiteit 'Reconciliation Reviewed' die wordt gevolgd door nog een 'Adjusting Journal Entry Posted' op dezelfde rekening als herstelwerk worden gemarkeerd. Dit attribuut is essentieel om procesverspilling te kwantificeren. Het ondersteunt het dashboard 'Reconciliation Rework Instances' en de KPI 'Reconciliation Rework Rate'. Door herstelwerk apart te analyseren, kunnen teams de oorzaken onderzoeken, de impact op de doorlooptijd meten en volgen of verbeterinitiatieven effect hebben. Het doel is om het in één keer goed te doen. Waarom dit belangrijk is Maakt procesinefficiëntie meetbaar door activiteiten te markeren die correcties of herhalingen zijn. Zo kun je verspilde inspanning meten en verminderen. Waar je het vindt Dit is een berekend attribuut. De logica wordt in de process mining-tool gedefinieerd op basis van specifieke activiteitenreeksen, zoals lussen, of attributen, zoals ReversalReason is not null. Voorbeelden truefalse | |||
| Is te laat IsOverdue | Een berekende vlag die aangeeft of een activiteit na de geplande streefdatum is afgerond. | ||
| Beschrijving Dit boolean-attribuut vergelijkt de werkelijke afrondingstijd van een activiteit (EventTime) met de geplande deadline (TargetCompletionDate). Als de eventtijd later is dan de streefdatum, krijgt de vlag de waarde true. Dit attribuut ondersteunt rechtstreeks het dashboard 'Close Compliance & Overdue Tasks' en de KPI 'On-Time Period Close Rate'. Het geeft meteen aan wanneer de planning afwijkt. Managers kunnen zo snel late taken vinden, de impact op de totale planning begrijpen en teams aanspreken op het halen van deadlines. Waarom dit belangrijk is Geeft duidelijk aan wanneer de planning niet wordt nageleefd. Zo kun je late taken snel vinden en de prestaties op tijd meten. Waar je het vindt Dit is een berekend attribuut dat in de process mining-tool wordt bepaald door EventTime te vergelijken met TargetCompletionDate. Voorbeelden truefalse | |||
| Reden voor tegenboeking ReversalReason | Een code die aangeeft waarom een financieel document is teruggedraaid. | ||
| Beschrijving Wanneer een document in SAP wordt teruggedraaid, kan een redencode worden toegewezen om het doel van de tegenboeking toe te lichten, bijvoorbeeld 'Tegenboeking in huidige periode' of 'Onjuiste boeking'. Dit attribuut geeft context bij de oorzaak van herstelwerk. Door redenen voor tegenboekingen te analyseren, zie je patronen in fouten, zoals onjuiste gegevensinvoer of verkeerde datums. Je kunt deze inzichten gebruiken voor preventieve maatregelen, betere training of sterkere systeemcontroles. Zo verminder je het aantal fouten en daaropvolgende tegenboekingen en maak je de afsluiting efficiënter. Waarom dit belangrijk is Geeft direct inzicht in de oorzaken van fouten en herstelwerk en helpt mogelijkheden voor procesverbetering en foutpreventie te vinden. Waar je het vindt Te vinden in de documentkopteksttabel BKPF (STGRD). Voorbeelden 010205 | |||
| Status van afstemming ReconciliationStatus | De huidige status van een rekeningafstemming, zoals 'Open', 'In controle' of 'Goedgekeurd'. | ||
| Beschrijving Dit attribuut volgt de status van een rekeningafstemming terwijl die door de workflow gaat. Het geeft aan of een afstemming is gestart, ter controle is ingediend, goedgekeurd of afgewezen. Dit is een belangrijk attribuut om de voortgang van afstemmingsactiviteiten real-time te volgen. Je ziet welke afstemmingen vastlopen en hoelang dat duurt. Dat ondersteunt KPI's zoals 'Account Reconciliation Cycle Time'. Ook geeft het inzicht in het goedkeuringsproces en ondersteunt het dashboards die knelpunten en werklast binnen het team volgen. Waarom dit belangrijk is Geeft inzicht in de afstemmingsworkflow en maakt het mogelijk om voortgang, knelpunten en controle- en goedkeuringstijden te volgen. Waar je het vindt Deze informatie staat vaak in een aparte tool voor rekeningafstemming, bijvoorbeeld SAP Account Substantiation and Automation by BlackLine, of in een aangepast statusveld. Het is meestal geen standaardveld in BKPF/BSEG. Voorbeelden Niet gestartIn behandelingGoedgekeurdAfgewezen | |||
| Trading partner VBUND | De identificatie van de gelieerde groepsmaatschappij die betrokken is bij een intercompany-transactie. | ||
| Beschrijving De trading-partner-ID identificeert de andere company code die aan een intercompany-transactie deelneemt. Dit is nodig voor het afstemmen van rekeningen tussen gelieerde juridische entiteiten. Dit attribuut ondersteunt rechtstreeks het dashboard 'Intercompany-afstemmingsflow' en de KPI 'Doorlooptijd intercompany-afstemming'. Door te filteren op transacties met een trading partner, richt je de analyse op de efficiëntie en tijdigheid van het intercompany-afstemmingsproces. Dat is tijdens de periodeafsluiting vaak een groot knelpunt. Waarom dit belangrijk is Identificeert intercompany-transacties specifiek en maakt gerichte analyse mogelijk van het vaak complexe en tijdrovende intercompany-afstemmingsproces. Waar je het vindt Te vinden in de regelposttabel van documenten, BSEG (VBUND). Voorbeelden 1000US013000 | |||
Record to Report - activiteiten voor periodeafsluiting en afstemming
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Afstemming van rekening gestart | Dit staat voor het begin van het afstemmingsproces voor een set grootboekrekeningen in de periode. In standaard SAP ECC is dit geen afzonderlijk event. Meestal wordt het afgeleid uit gerelateerde activiteiten, zoals het voor het eerst uitvoeren van een belangrijk rapport. | ||
| Waarom dit belangrijk is Deze activiteit vormt een belangrijk meetpunt voor de duur van de volledige afstemmingsfase. Weten wanneer de afstemming begint, is essentieel voor de KPI Account Reconciliation Cycle Time. Waar je het vindt Dit event wordt niet expliciet vastgelegd. Je moet het afleiden uit andere databronnen, zoals het systeemauditlog (transactie STAD), aan de hand van de eerste uitvoering van een rapport voor saldo-overzichten, zoals FAGLB03 of FS10N. Vastleggen Leid dit af uit de eerste uitvoering van relevante rapporttransacties, bijvoorbeeld FAGLB03, in de systeemlogs. Eventtype inferred | |||
| Correctiejournaalpost geboekt | Een correctiejournaalpost wordt geboekt om rekeningsaldi te corrigeren nadat de eerste transactieverwerking voor de periode is afgerond. Dit event wordt in SAP vastgelegd als een standaardboeking in een financieel document. | ||
| Waarom dit belangrijk is Dit is essentieel voor de analyse van het aantal correctieboekingen. Een groot aantal correcties wijst op problemen met de nauwkeurigheid van eerdere processtappen en is een belangrijk aandachtspunt voor procesverbetering. Waar je het vindt Te vinden in de tabellen BKPF en BSEG. Deze posten worden meestal geïdentificeerd aan de hand van een specifiek documenttype (BKPF-BLART) dat voor correcties is gereserveerd, of doordat ze in speciale afsluitingsperioden, zoals 13 tot en met 16, zijn geboekt. Vastleggen Filter BKPF op documenten die in speciale perioden zijn geboekt of een correctiedocumenttype hebben. Eventtype explicit | |||
| Financiële overzichten gegenereerd | Dit is het moment waarop officiële financiële overzichten, zoals de winst-en-verliesrekening en balans, worden gegenereerd. Deze activiteit wordt meestal vastgelegd door de uitvoering van een specifiek rapportageprogramma te volgen. | ||
| Waarom dit belangrijk is Dit is een belangrijk meetpunt dat het einde van de gegevensverwerking en het begin van de laatste controle- en goedkeuringsfase markeert. De tijd tussen dit event en de goedkeuring is een belangrijke KPI. Waar je het vindt Afgeleid uit systeemauditlogs, zoals STAD, waarin de uitvoering van het programma voor het genereren van financiële overzichten wordt vastgelegd, meestal transactie F.01. Vastleggen Uit systeemlogs (STAD) die de uitvoering van financiële transactie F.01 volgen. Eventtype inferred | |||
| Periode geopend voor boekingen | Dit markeert de officiële start van een financiële periode. Vanaf dat moment kunnen transacties in het grootboek worden geboekt. Het gaat om een expliciete configuratiewijziging door een bevoegde gebruiker om een specifieke periode open te stellen voor boekingen in een of meer company codes. | ||
| Waarom dit belangrijk is Deze activiteit is het definitieve startevent voor de case van het periodeafsluitingsproces. Door de tijd vanaf dit punt te analyseren, krijg je inzicht in de volledige levenscyclus van de financiële periode. Waar je het vindt Wijzigingen in boekingsperioden via transactie OB52 worden vastgelegd. Je kunt deze wijzigingen extraheren door de wijzigingsdocumenten voor de onderliggende configuratietabel T001B te analyseren, meestal met de tabellen CDHDR en CDPOS. Vastleggen Extractie uit wijzigingsdocumenten (CDHDR/CDPOS) voor tabel T001B. Eventtype explicit | |||
| Periode gesloten voor boekingen | Dit staat voor het formeel sluiten van een boekingsperiode, waardoor verdere operationele journaalposten worden voorkomen. Zo blijft de financiële data voor de gesloten periode intact. Het gaat om een expliciete configuratiewijziging. | ||
| Waarom dit belangrijk is Dit is het definitieve eindevent van het periodeafsluitingsproces. Het is essentieel voor een nauwkeurige berekening van de totale doorlooptijd van de periodeafsluiting en voor het meten van prestaties op tijd. Waar je het vindt Het sluiten van perioden via transactie OB52 wordt vastgelegd. Je kunt deze wijzigingen vinden door de wijzigingsdocumenten, de tabellen CDHDR en CDPOS, voor configuratietabel T001B te analyseren. Vastleggen Extractie uit wijzigingsdocumenten (CDHDR/CDPOS) voor tabel T001B. Eventtype explicit | |||
| Waarderingsrun vreemde valuta uitgevoerd | Dit staat voor het uitvoeren van een programma dat open posten en saldi in vreemde valuta herwaardeert op basis van wisselkoersen aan het einde van de periode. Dit gebeurt meestal als batchjob als onderdeel van de stappen voor de periodeafsluiting. | ||
| Waarom dit belangrijk is Dit is een belangrijke stap voor betrouwbare financiële rapportage in multinationale organisaties. Door het tijdstip en de duur te analyseren, kun je mogelijkheden voor automatisering en prestatieverbetering vinden. Waar je het vindt Vastgelegd in de uitvoeringslogs van het programma voor de waardering van vreemde valuta, zoals FAGL_FCV of F.05. Details van batchjobs uit tabellen zoals TBTCO en TBTCP leveren de uitvoeringstimestamps. Vastleggen Uit batchjoblogs (tabel TBTCO) voor programma FAGL_FC_VALUATION of SAPF100. Eventtype explicit | |||
| Afstemming gecontroleerd | Geeft aan dat een afstemming voor een specifieke rekening of groep rekeningen is gecontroleerd en bevestigd. In standaard SAP ECC wordt dit event niet expliciet vastgelegd. Vaak gebeurt dit via controles buiten het systeem of via maatwerkoplossingen. | ||
| Waarom dit belangrijk is Door het tijdstip van controles te volgen, krijg je inzicht in knelpunten tijdens de controle- en toezichtsfase van het afsluitingsproces. Je ziet bijvoorbeeld vertragingen door beperkte beschikbaarheid van managers of door herstelwerk. Waar je het vindt Deze informatie is niet beschikbaar in standaard ECC-tabellen. Hiervoor is een maatwerkoplossing nodig, zoals een statusveld in een aangepaste Z-tabel, een eenvoudige workflow of een koppeling met een gespecialiseerde externe tool voor rekeningafstemming. Vastleggen Leg de statuswijziging vast vanuit een aangepaste workflow of Z-tabel, als die is geïmplementeerd. Eventtype inferred | |||
| GR/IR-vereffeningsrun uitgevoerd | Het uitvoeren van het geautomatiseerde vereffeningsprogramma voor de Goods Receipt/Invoice Receipt-rekening. Dit programma koppelt bijbehorende goederenontvangsten en factuurontvangsten aan elkaar en vereffent de posten. | ||
| Waarom dit belangrijk is De GR/IR-rekening is vaak een bron van afstemmingsproblemen. Door deze activiteit te monitoren, zie je of de geautomatiseerde stap goed verloopt en hoeveel uitzonderingen handmatige opvolging nodig hebben. Waar je het vindt De uitvoering wordt vastgelegd in batchjoblogs (transactie SM37). Het programma is meestal SAPF124 en wordt uitgevoerd via transactie F.13. Joblogtabellen zoals TBTCO leveren de benodigde timestamps. Vastleggen Uit batchjoblogs (tabel TBTCO) voor vereffeningsprogramma SAPF124. Eventtype explicit | |||
| Intercompany-document vereffend | Deze activiteit markeert de vereffening van een open post tussen twee verschillende company codes. Daarmee is een intercompany-transactie afgewikkeld of afgestemd. In SAP wordt dit vastgelegd als een expliciete financiële boeking, meestal in de vorm van een vereffeningsdocument. | ||
| Waarom dit belangrijk is Vertraging bij het vereffenen van intercompany-posten is een veelvoorkomend knelpunt in het afsluitingsproces. Door deze activiteit te volgen, kun je de doorlooptijd van de intercompany-afstemming meten en verbeteren. Waar je het vindt Geïdentificeerd in financiële documenten in BKPF en BSEG. Een vereffeningsdocument verwijst naar open posten en sluit deze af. De vereffeningsdatum (BSEG-AUGDT) dient als event-timestamp. Intercompany-transacties worden geïdentificeerd aan de hand van trading-partnervelden. Vastleggen Identificeer vereffeningsdocumenten in BKPF/BSEG die betrekking hebben op posten met trading partners. Eventtype explicit | |||
| Overlopende post of voorziening geboekt | Dit staat voor het vastleggen van een journaalpost voor een overlopende post, uitgestelde post of voorziening. Deze worden meestal aan het einde van een periode geboekt. Dit is geen afzonderlijk eventtype in SAP, maar wordt afgeleid door specifieke journaalposten op basis van hun kenmerken te identificeren. | ||
| Waarom dit belangrijk is Door deze posten apart te analyseren, krijg je inzicht in het subproces voor het beheren van schattingen. Een groot aantal overlopende posten of frequente correcties kan wijzen op mogelijkheden voor procesverbetering. Waar je het vindt Afgeleid uit de financiële documenttabellen BKPF en BSEG. Je kunt posten identificeren door te filteren op een specifiek documenttype (BKPF-BLART), een unieke grootboekrekening (BSEG-HKONT) of trefwoorden in de koptekst (BKPF-BKTXT). Vastleggen Filter de tabellen BKPF/BSEG op documenttype, specifieke grootboekrekeningen of tekstvelden. Eventtype inferred | |||
| Proefbalansrapport gegenereerd | Markeert de uitvoering van een rapport om de proefbalans te genereren. Dit is een belangrijke stap om te controleren of de totale debet- en creditbedragen gelijk zijn voordat de officiële financiële overzichten worden opgesteld. | ||
| Waarom dit belangrijk is Dit is een belangrijke kwaliteitscontrole vóór de definitieve rapportage. Herhaalde uitvoeringen van dit rapport kunnen erop wijzen dat onderliggende dataproblemen worden gevonden en gecorrigeerd, wat mogelijk tot vertraging leidt. Waar je het vindt Afgeleid uit systeemauditlogs, zoals transactie STAD. Deze kunnen de uitvoering vastleggen van transacties voor proefbalansrapportages, zoals S_ALR_87012277 of F.01. Vastleggen Uit systeemlogs (STAD) die de uitvoering van rapportagetransactiecodes volgen. Eventtype inferred | |||
| Tegenboeking geboekt | Deze activiteit legt het boeken vast van een document dat een eerder geboekte journaalpost terugdraait, vaak om een fout te corrigeren. SAP maakt een expliciete koppeling tussen het tegenboekingsdocument en het oorspronkelijke document. | ||
| Waarom dit belangrijk is Een groot aantal tegenboekingen wijst op mogelijke problemen met de nauwkeurigheid van gegevensinvoer of procescontroles. Door deze events te volgen, kun je het first-time-right-percentage meten en verbeterpunten vinden. Waar je het vindt Tegenboekingsdocumenten staan in de tabel BKPF. Ze worden vaak aangemaakt met transactie FB08 en bevatten in het veld BKPF-STBLG een verwijzing naar het nummer van het teruggedraaide document. Vastleggen Identificeer documenten waarvoor BKPF-STBLG is gevuld of die via reversal-T-codes zijn aangemaakt. Eventtype explicit | |||
Extractiegidsen
Stappen
- Open de SAP Query-tool: Log in op je SAP ECC-systeem. Ga naar transactiecode
SQVI(QuickViewer). 2. Maak een nieuwe query: Voer een naam in, bijvoorbeeldZ_R2R_PERIOD_CLOSE, en klik op 'Create'. Geef in het pop-upvenster een duidelijke titel op, zoals 'Record to Report Period Close Extraction'. Kies bij 'Data source' voor 'Table join'. 3. Definieer tabelkoppelingen: Voeg de primaire tabelBKPF(Accounting Document Header) toe. Voeg daarna de tabelBSEG(Accounting Document Segment) toe. SAP stelt de koppelvoorwaarden automatisch voor (MANDT, BUKRS, BELNR, GJAHR). Controleer deze en accepteer ze. Voor activiteiten rond het openen en sluiten van perioden heb je een aparte query nodig dieCDHDRenCDPOSkoppelt. 4. Selecteer uitvoervelden (List Fields): Ga naar het tabblad 'List fld. select.'. Selecteer in de beschikbare tabellen de velden die je voor het event log nodig hebt. Dit zijn onder andereBKPF-BUKRS,BKPF-BELNR,BKPF-GJAHR,BKPF-MONAT,BKPF-CPUDT,BKPF-CPUTM,BKPF-USNAM,BKPF-BLART,BSEG-HKONT,BSEG-DMBTRen andere velden die je nodig hebt. 5. Definieer invoerparameters (Selection Fields): Ga naar het tabblad 'Selection fields'. Kies de velden waarmee je de data tijdens de uitvoering filtert. De belangrijkste velden zijnBKPF-BUKRS(Company Code) enBKPF-GJAHR(Fiscal Year). Je kunt ookBKPF-MONAT(Posting Period) enBKPF-BLART(Document Type) toevoegen. 6. Maak varianten voor elke activiteit: Omdat SQVI verschillende dataselecties niet kan combineren, zoals een SQL UNION, moet je de query meerdere keren uitvoeren. Voer de query voor elke activiteit uit, bijvoorbeeld 'Accrual Or Provision Posted', en vul op het selectiescherm specifieke filterwaarden in, zoals een lijst met documenttypen voor overlopende posten. Sla deze selectiecriteria op als variant. Herhaal dit voor elke activiteit die je kunt extraheren. 7. Voer de query uit en extraheer de data: Voer de query uit voor elke variant die je hebt gemaakt. De query gebruikt dan de specifieke filters voor die activiteit. 8. Exporteer de resultaten: Exporteer de data in het resultatenscherm naar een lokaal bestand. 'Spreadsheet' is het meest gebruikte formaat. Herhaal dit voor elke variant. 9. Combineer en transformeer de data: Open de geëxporteerde bestanden in een spreadsheetprogramma of gebruik een script. Voeg de data uit alle bestanden handmatig samen in één masterbestand. 10. Voeg vaste en berekende kolommen toe: Voeg in het samengevoegde bestand de kolommen toe die niet rechtstreeks uit SAP-tabellen komen. Dit zijnActivityName, dat je instelt op basis van de variant waaruit de data komt,FinancialPeriod, door boekjaar en periode samen te voegen,EventTime, door datum- en tijdvelden te combineren,SourceSystemenLastDataUpdate. 11. Maak de data klaar voor upload: Sla het definitieve bestand op als CSV of Excel, met de juiste kolomkoppen voor je process mining-tool. Controleer de datatypen en opmaak voordat je de data uploadt.
Configuratie
- Databron: Table Join in SAP Query (SQVI). De belangrijkste tabellen zijn BKPF, BSEG, CDHDR en CDPOS. * Datumbereik: Het is aan te raden om data over minimaal 3 tot 6 volledige financiële perioden te extraheren om patronen te herkennen. Stel het filter in op
BKPF-GJAHR(Fiscal Year) enBKPF-MONAT(Period). * Filter op company code: Filter altijd opBKPF-BUKRS(Company Code) om het datavolume te beperken en de analyse op specifieke juridische entiteiten te richten. Het is niet aan te raden om alle company codes tegelijk te extraheren. * Filter op documenttype: Gebruik filters opBKPF-BLART(Document Type) om specifieke activiteiten, zoals overlopende posten, correcties of terugboekingen, apart te analyseren. Je moet de relevante documenttypen voor jouw organisatie bepalen. * Vereisten: De gebruiker die de extractie uitvoert, heeft autorisatie nodig voor transactieSQVIen leestoegang tot de relevante financiële tabellen, bijvoorbeeld via autorisatieobject S_TABU_DIS. * Prestaties: Het koppelen van BKPF en BSEG kan veel systeemcapaciteit vragen. Voer de extractie uit buiten piekuren. Gebruik geen zeer ruime datumbereiken en laat het filter op Company Code niet leeg, want dat kan leiden tot geheugenproblemen of time-outs.
a Voorbeeldquery sql
/*
LOGICAL REPRESENTATION FOR SAP QUERY (SQVI)
This is not a single executable script. Due to limitations in SQVI, you must create a base query joining BKPF and BSEG, then run it multiple times using different selection screen variants to extract each activity below. The results must be combined manually.
A separate query joining CDHDR and CDPOS is needed for period open/close activities.
*/
-- Activity 1: Period Opened For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW > CDPOS.VALUE_OLD;
UNION ALL
-- Activity 2: Accrual Or Provision Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Accrual' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('SA', '[Your Accrual Doc Type]'); -- Filter by document types used for accruals
UNION ALL
-- Activity 3: Intercompany Document Cleared
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.AUGBL AS BELNR, -- The clearing document number
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BSEG.AUGBL IS NOT NULL AND BSEG.VBUND IS NOT NULL; -- Identify cleared items with an intercompany trading partner
UNION ALL
-- Activity 4: Foreign Currency Valuation Run
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Valuation' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('FAGL_FCV', 'FBB1'); -- Filter by FCV transaction code
UNION ALL
-- Activity 5: GR/IR Clearing Run Executed
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('F.13', 'F13E'); -- Filter by automated clearing transaction codes
UNION ALL
-- Activity 6: Account Reconciliation Started (Proxy)
-- This is a proxy. It takes the earliest adjusting journal entry timestamp for the period.
SELECT
A.FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
MIN(A.EventTime) AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
A.BUKRS,
NULL AS BELNR,
NULL AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM (
SELECT CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
BKPF.BUKRS
FROM BKPF
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]')
) AS A
GROUP BY A.FinancialPeriod, A.BUKRS;
UNION ALL
-- Activity 7: Adjusting Journal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Adjusting' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]'); -- Filter by document types for adjustments
UNION ALL
-- Activity 8: Reversal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Reversal' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.STBLG IS NOT NULL; -- STBLG (Reversed Document Number) is populated for reversals
UNION ALL
-- Activity 9: Period Closed For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW < CDPOS.VALUE_OLD;
/*
-- Activities Not Extractable via this Method
-- The following activities are not data postings and cannot be reliably extracted by querying finance tables BKPF/BSEG.
-- Extraction would require analyzing application logs (SLG1), system logs (STAT), or custom-built logging solutions.
-- Activity: Trial Balance Report Generated
-- Activity: Financial Statements Generated
-- Activity: Reconciliation Reviewed
*/ Stappen
- Bepaal de scope en het ontwerp: Definieer de logica voor het identificeren van elk van de 12 vereiste activiteiten. Stem met proceseigenaren en SAP-functioneel analisten af welke documenttypen, grootboekrekeningen en programmanamen in jouw SAP ECC-omgeving bij activiteiten rond de period-end close horen.
- Maak het ABAP-programma: Maak met transactie
SE38(ABAP Editor) een nieuw uitvoerbaar programma, bijvoorbeeldZ_PM_R2R_EXTRACTION. Geef het programma een duidelijke titel en stel het programmatype in op 'Executable Program'. - Definieer het selectiescherm: Definieer in het programma een selectiescherm met
PARAMETERSenSELECT-OPTIONS. Gebruikers kunnen hiermee de extractiescope instellen, waaronder Company Code (BUKRS), Fiscal Year (GJAHR) en Posting Period (MONAT). Dit is belangrijk om het datavolume te beheersen. - Declareer datastructuren: Definieer een interne tabelstructuur voor de uiteindelijke event log-data. Deze structuur moet alle vereiste en aanbevolen attributen bevatten:
FinancialPeriod,ActivityName,EventTime,SourceSystem,LastDataUpdate,BUKRS,BELNR,USNAM,HKONT,BLART,DMBTRenJournalEntryType. - Implementeer de data-extractielogica: Schrijf de kernlogica in ABAP om data voor elk van de 12 activiteiten te selecteren. Vraag voor elke activiteit de relevante SAP-tabellen op, zoals BKPF, BSEG, TBTCO en CDHDR, en vul een tijdelijke interne tabel. Gebruik de ABAP-query in het bijbehorende gedeelte als template.
- Identificeer afgeleide activiteiten: Implementeer voor activiteiten die niet expliciet in standaard-SAP worden gelogd, zoals 'Account Reconciliation Started' of 'Reconciliation Reviewed', de afgesproken afleidingslogica. Dit kan betekenen dat je de eerste uitvoering van een specifiek rapport controleert of aangepaste 'Z-tabellen' opvraagt als die bestaan.
- Voeg eventdata samen: Voeg de records uit elke tijdelijke tabel na de extractie van alle afzonderlijke activiteiten toe aan de uiteindelijke samengevoegde interne tabel. Zorg dat het veld
EventTimecorrect wordt gevuld vanuit het relevante bronveld, zoals de boekingsdatum en -tijd van een document of de startdatum en -tijd van een job. - Standaardiseer en formatteer de data: Standaardiseer belangrijke velden voordat je de data uitvoert. Combineer boekjaar en periode tot de identifier
FinancialPeriod. Stel vaste waarden in voorSourceSystemenLastDataUpdate. Zorg dat timestamps een consistente indeling hebben. - Bouw de uitvoerfunctie: Voeg functionaliteit toe om de uiteindelijke interne tabel te exporteren. De meest gebruikte methode is om de data naar een CSV- of tabgescheiden bestand op de SAP Application Server te schrijven met
OPEN DATASET, of gebruikers het bestand rechtstreeks naar hun lokale computer te laten downloaden met functiemoduleGUI_DOWNLOAD. - Test en valideer: Test het programma grondig met een representatieve dataset voor meerdere company codes en perioden. Gebruik de validatiestappen om de nauwkeurigheid en volledigheid van de data te controleren. Verfijn de selectielogica op basis van feedback van functionele experts.
- Plan de uitvoering (optioneel): Na validatie kun je het programma via transactie
SM36als background job plannen. Zo wordt het event log automatisch en periodiek geëxtraheerd, zonder handmatige tussenkomst.
Configuratie
- Selectiecriteria: Het programma moet een selectiescherm hebben om de data te filteren. Belangrijke filters zijn:
Company Code (BUKRS): Verplicht om de scope te beperken tot relevante juridische entiteiten.Fiscal Year (GJAHR): Verplicht om het primaire jaar voor de extractie vast te leggen.Posting Period (MONAT): Verplicht om de specifieke financiële perioden te selecteren.
- Configuratie per activiteit: Veel selecties hangen af van jouw SAP-configuratie. Je moet deze als parameters of constanten in het programma kunnen instellen:
Accrual/Provision Document Types: Een lijst met documenttypen (BLART) voor het identificeren van boekingen voor overlopende posten en voorzieningen.Adjusting Entry Document Types: Een lijst met documenttypen voor het identificeren van correctieboekingen.Background Job/Program Names: De technische namen van de programma's voor belangrijke activiteiten rond de period-end close, zoals Foreign Currency Valuation, GR/IR Clearing, Trial Balance-rapporten en het opstellen van financiële overzichten, bijvoorbeeldFAGL_FCV,SAPF124enRFBILA00.
- Datumbereik: Hoewel de primaire selectie op boekjaar en periode gebeurt, moet de onderliggende logica rekening houden met de volledige datum en tijd van events. Voor een eerste analyse wordt aangeraden data over de laatste 3 tot 6 afgeronde financiële perioden te extraheren.
- Prestaties: In grote SAP-omgevingen zijn de prestaties van het programma belangrijk. Zorg dat databaseselecties indexvelden gebruiken, vooral in tabellen zoals
BKPFenBSEG. Vermijd het selecteren van alle velden (SELECT *) en verwerk de data zo nodig in beheersbare pakketten. - Autorisaties: De gebruiker of serviceaccount die dit programma uitvoert, heeft autorisatie nodig voor alle opgevraagde tabellen (
BKPF,BSEG,TBTCO,TBTCP,CDHDR,CDPOS) en voor transacties zoalsSE38voor ontwikkeling enSM37/SM36voor planning en monitoring.
a Voorbeeldquery abap
REPORT Z_PM_R2R_EXTRACTION.
" ====================================================================
" DATA DECLARATIONS
" ====================================================================
TYPES: BEGIN OF ty_event_log,
FinancialPeriod TYPE string,
ActivityName TYPE string,
EventTime TYPE timestamp,
SourceSystem TYPE string,
LastDataUpdate TYPE timestamp,
BUKRS TYPE bukrs,
BELNR TYPE belnr_d,
USNAM TYPE usnam,
HKONT TYPE hkont,
BLART TYPE blart,
DMBTR TYPE dmbtr,
JournalEntryType TYPE string,
END OF ty_event_log.
DATA: lt_final_log TYPE STANDARD TABLE OF ty_event_log,
ls_log_entry LIKE LINE OF lt_final_log.
DATA: lv_source_system TYPE string VALUE 'SAP ECC'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_bukrs FOR ls_log_entry-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_monat FOR bkpf-monat OBLIGATORY.
PARAMETERS: p_accrl TYPE blart DEFAULT 'SA', " Example Doc Type for Accruals
p_adjst TYPE blart DEFAULT 'AJ', " Example Doc Type for Adjustments
p_fcv TYPE btcjob DEFAULT 'FAGL_FCV*', " Program for FC Valuation
p_grir TYPE btcjob DEFAULT 'SAPF124*', " Program for GR/IR Clearing
p_fs TYPE btcjob DEFAULT 'RFBILA00'. " Program for Fin. Statements
" ====================================================================
" MAIN LOGIC
" ====================================================================
START-OF-SELECTION.
" --- 1. Period Opened For Posting ---
" Note: This is complex. This example queries change documents for posting period config (T001B).
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_open)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_open INTO DATA(ls_period_open).
" Further logic needed to parse OBJECTID and check CDPOS for opening a period.
" This is a simplified placeholder for a complex logic.
ls_log_entry-ActivityName = 'Period Opened For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" --- 2. Accrual Or Provision Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_accrual)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_accrl.
LOOP AT lt_accrual INTO DATA(ls_accrual).
CLEAR ls_log_entry.
CONVERT DATE ls_accrual-cpudt TIME ls_accrual-cputm INTO TIME STAMP ls_log_entry-EventTime TIME ZONE sy-zonlo.
CONCATENATE ls_accrual-gjahr ls_accrual-monat INTO ls_log_entry-FinancialPeriod.
ls_log_entry-ActivityName = 'Accrual Or Provision Posted'.
ls_log_entry-BUKRS = ls_accrual-bukrs.
ls_log_entry-BELNR = ls_accrual-belnr.
ls_log_entry-USNAM = ls_accrual-usnam.
ls_log_entry-HKONT = ls_accrual-hkont.
ls_log_entry-BLART = ls_accrual-blart.
ls_log_entry-DMBTR = ls_accrual-dmbtr.
ls_log_entry-JournalEntryType = 'Accrual'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
ls_log_entry-SourceSystem = lv_source_system.
APPEND ls_log_entry TO lt_final_log.
ENDLOOP.
" --- 3. Intercompany Document Cleared ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_ic_clear)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat
AND h~blart = 'AB' AND i~vbund <> space.
LOOP AT lt_ic_clear INTO DATA(ls_ic_clear).
" Populate ls_log_entry and append to lt_final_log, setting ActivityName = 'Intercompany Document Cleared'
ENDLOOP.
" --- 4. Foreign Currency Valuation Run ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fcv_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fcv AND j~status = 'F'. " F = Finished
LOOP AT lt_fcv_jobs INTO DATA(ls_fcv_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Foreign Currency Valuation Run'
ENDLOOP.
" --- 5. GR/IR Clearing Run Executed ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_grir_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_grir AND j~status = 'F'.
LOOP AT lt_grir_jobs INTO DATA(ls_grir_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'GR/IR Clearing Run Executed'
ENDLOOP.
" --- 6. Account Reconciliation Started (Inferred) ---
" Note: Inferring this by first run of a report, e.g., FAGLB03. Requires custom logging or complex logic.
" Placeholder: Query a custom log table if available.
" SELECT ... FROM zreco_log ...
" --- 7. Adjusting Journal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_adjust)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_adjst.
LOOP AT lt_adjust INTO DATA(ls_adjust).
" Populate ls_log_entry and append, setting ActivityName = 'Adjusting Journal Entry Posted', JournalEntryType = 'Adjusting'
ENDLOOP.
" --- 8. Reversal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_reversal)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~stblg <> space.
LOOP AT lt_reversal INTO DATA(ls_reversal).
" Populate ls_log_entry and append, setting ActivityName = 'Reversal Entry Posted', JournalEntryType = 'Reversal'
ENDLOOP.
" --- 9. Trial Balance Report Generated (Inferred from Job) ---
" Similar to other jobs, query TBTCO for Trial Balance report programs.
" SELECT ... FROM tbtco ... WHERE jobname LIKE '[Your Trial Balance Program]'.
" --- 10. Financial Statements Generated ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fs_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fs AND j~status = 'F'.
LOOP AT lt_fs_jobs INTO DATA(ls_fs_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Financial Statements Generated'
ENDLOOP.
" --- 11. Reconciliation Reviewed (Inferred) ---
" Note: This activity is almost always managed outside of SAP or in a custom solution.
" Placeholder: Query a custom approval/log table if available.
" SELECT ... FROM zreco_approval ...
" --- 12. Period Closed For Posting ---
" Note: Similar to 'Period Opened', this is very complex. Query change documents for T001B.
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_close)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_close INTO DATA(ls_period_close).
" Further logic needed to parse OBJECTID and check CDPOS for closing a period.
ls_log_entry-ActivityName = 'Period Closed For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" ... Code to display or download the lt_final_log internal table ...
ENDFORMS. Stappen
- Verzamel de vereisten: Regel alleen-lezen-inloggegevens voor de onderliggende SAP ECC-database. Bepaal het juiste databaseschema. Dit heet meestal
SAPSR3of een vergelijkbare naam die je databasebeheerder opgeeft. - Breng de systeemconfiguratie in kaart: Stem met je SAP Finance-team af welke
Company Codes(BUKRS) en financiële perioden je wilt analyseren. Bepaal vooral welkeDocument Types(BLART) in jouw systeem worden gebruikt voor 'Accrual Or Provision Posted', 'Adjusting Journal Entry Posted' en 'Intercompany'-transacties. - Controleer programma- en jobnamen: Controleer de programmanamen van belangrijke batchjobs, zoals Foreign Currency Valuation, bijvoorbeeld
FAGL_FCV, GR/IR Clearing, bijvoorbeeldSAPF124, Trial Balance-rapporten, bijvoorbeeldRFBILA00, en het genereren van financiële overzichten, bijvoorbeeldRFBILA00. Je vindt deze door geplande jobs in transactieSM37te controleren. - Pas de SQL-query aan: Kopieer de meegeleverde SQL-query naar een teksteditor of SQL-client. Vervang de plaatshouders
{{start_date}},{{end_date}}en{{company_codes}}door de waarden voor jouw analyse. Pas de lijsten met documenttypen en programmanamen aan op basis van de informatie uit de vorige stappen. - Maak verbinding met de database: Gebruik een standaard SQL-client, zoals DBeaver, SQL Server Management Studio of Oracle SQL Developer, om met de verkregen inloggegevens verbinding te maken met de SAP-database.
- Voer de query uit: Voer de aangepaste SQL-query uit op de database. Afhankelijk van het datumbereik en de omvang van je financiële tabellen kan dit veel tijd kosten.
- Controleer de eerste resultaten: Controleer de uitvoer kort nadat de query is voltooid. Kijk of het aantal rijen logisch is, of alle kolommen aanwezig zijn en of verschillende waarden voor
ActivityNamein de resultaten staan. - Exporteer de data: Exporteer de volledige resultatenset vanuit je SQL-client naar een CSV-bestand. Sla het bestand op met UTF-8-codering om problemen met tekens te voorkomen.
- Maak de data klaar voor upload: Controleer voordat je de data naar een process mining-tool uploadt of de kolomkoppen in het CSV-bestand exact overeenkomen met de vereiste attribuutnamen, zoals
FinancialPeriod,ActivityNameenEventTime. Controleer ook of de kolomEventTimeeen consistente timestampindeling gebruikt, zoalsYYYY-MM-DD HH:MI:SS.
Configuratie
- Database-inloggegevens: Je hebt een databasegebruiker met alleen-lezenrechten nodig voor de belangrijkste SAP Finance- en systeemtabellen. Dit zijn onder andere BKPF, BSEG, TBTCO, CDHDR en CDPOS.
- Datumbereik: We raden aan om data over minimaal 3 tot 6 volledige financiële perioden te extraheren om relevante procesvariaties vast te leggen. Houd er rekening mee dat een groter datumbereik de uitvoeringstijd van de query flink verlengt.
- Company Codes (
BUKRS): Filter altijd op een specifieke lijst met company codes. Een query voor alle company codes in een groot systeem is niet haalbaar en veroorzaakt waarschijnlijk prestatieproblemen. - Documenttypen (
BLART): Het identificeren van typen boekingen, zoals overlopende posten en correcties, hangt volledig af van de SAP-configuratie van jouw organisatie. Je moet de juiste documenttypecodes opnemen in deWHERE-clausules van de query om activiteiten goed te classificeren. - Programma- en jobnamen: De query gebruikt gangbare programmanamen voor geautomatiseerde afsluitingsstappen. Jouw systeem kan aangepaste wrapperprogramma's of andere jobnamen gebruiken. Controleer deze in transactie
SM37en pas de query daarop aan. - Prestaties: Deze query gebruikt zeer grote tabellen, vooral
BSEGenCDPOS. Voer de extractie bij voorkeur buiten kantooruren uit om de systeemprestaties niet te beïnvloeden. Smalle filters voor datum en company code zijn de beste manier om de uitvoeringstijd beheersbaar te houden.
a Voorbeeldquery sql
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'FRPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'TOPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Accrual' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('SA', '[Your Accrual Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
h.AUGDT AS EventTime, -- Clearing Date
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Clearing' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.AUGDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Intercompany Doc Type]')
AND h.AUGBL IS NOT NULL
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'FAGL_FCV' OR p.PROGNAME = 'SAPF100'
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F' -- Finished
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'SAPF124' -- Program for F.13
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName, -- Proxy event
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('FAGLL03', 'FBL3N') -- Common reconciliation reports
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Adjusting' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Adjusting Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Reversal' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.STBLG IS NOT NULL -- STBLG links to the reversed document
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Trial Balance Report Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('RFSSLD00', 'S_ALR_87012310')
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'RFBILA00' -- Program for F.01
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
-- UNION ALL
-- Note: 'Reconciliation Reviewed' is typically not a standard, logged event in SAP ECC.
-- This activity often happens offline or in a custom tool.
-- The following is a placeholder to be adapted if a custom (Z-table) log exists.
-- SELECT
-- CONCAT(CAST(YEAR(z.REVIEW_DATE) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(z.REVIEW_DATE)), 2)) AS FinancialPeriod,
-- 'Reconciliation Reviewed' AS ActivityName,
-- z.REVIEW_DATE AS EventTime,
-- 'SAP_ECC' AS SourceSystem,
-- CURRENT_TIMESTAMP AS LastDataUpdate,
-- z.BUKRS AS CompanyCode,
-- z.HKONT AS DocumentNumber, -- Using GL Account as a proxy identifier
-- z.REVIEWER_USER AS ResponsibleUser,
-- z.HKONT AS GLAccount,
-- NULL AS DocumentType,
-- NULL AS AmountInLocalCurrency,
-- NULL AS JournalEntryType
-- FROM ZRECON_LOG z -- Replace with your custom table for reconciliation status
-- WHERE z.REVIEW_DATE BETWEEN '{{start_date}}' AND '{{end_date}}'
-- AND z.STATUS = 'Reviewed'
; Klaar om aan de slag te gaan?
Gebruik deze datatemplate als startpunt voor je process mining-traject en krijg waardevolle inzichten in je financiële afsluitingsprocessen. Begin vandaag met het optimaliseren van je Record to Report-proces.
Optimaliseer Record to Report-close en verkort nu de doorlooptijd
Verwijder bottlenecks en verkort je Record to Report-closecyclus met 30%.
Je hebt geen creditcard nodig. Start je gratis proefperiode van 14 dagen.