Uw Record to Report - Periodeafsluiting & Afstemming Data Template
Uw Record to Report - Periodeafsluiting & Afstemming Data Template
- Aanbevolen attributen om vast te leggen
- Belangrijkste activiteiten om te volgen
- Richtlijnen voor data-extractie
Record to Report - Periodesluiting & Afstemmingsattributen
| Naam | Omschrijving | ||
|---|---|---|---|
| Financiële Periode FinancialPeriod | Een unieke identifier voor de financiële rapportagecyclus, doorgaans een combinatie van het fiscale jaar en de boekingsperiode. | ||
| Omschrijving De financiële periode dient als de primaire case identifier, die alle activiteiten groepeert die gerelateerd zijn aan het afsluiten en reconciliëren van accounts voor die specifieke rapportagecyclus, zoals '2023-12' voor december 2023. Dit maakt een uitgebreide analyse van het gehele periodeafsluitingsproces van begin tot eind voor elke afzonderlijke periode mogelijk. In analyse maakt dit het mogelijk om de end-to-end cycle time voor elke afsluiting te volgen, de prestaties tussen verschillende periodes te vergelijken, en trends of afwijkingen te identificeren. Door elke financiële periode als een unieke case te definiëren, is het mogelijk om de efficiëntie, bottlenecks en variaties in het afsluitingsproces over tijd te visualiseren en te meten. Het belang Het is de essentiële case identifier die de analyse kadert, waardoor period-over-period vergelijkingen van close cyclustijden, workloads en proces compliance mogelijk zijn. Vindplaats Dit attribute wordt doorgaans afgeleid door het boekjaar (GJAHR) en de boekingsperiode (MONAT) uit financiële documentkopteksten te concateneren, bijvoorbeeld uit de BKPF-tabel. Voorbeelden 2023-122024-032023-Q4 | |||
| Activiteit ActivityName | De naam van de specifieke bedrijfs-event of taak die is uitgevoerd tijdens het periodeafsluitingsproces. | ||
| Omschrijving Dit attribute registreert de afzonderlijke stappen die binnen de Record to Report-cyclus zijn ondernomen, zoals 'Correctiejournaalpost geboekt' of 'Financiële overzichten gegenereerd'. Het vormt de ruggengraat van de proceskaart, en toont de reeks events die de periodeafsluiting vormen. Het analyseren van activiteiten is fundamenteel voor process mining. Het helpt de procesflow te visualiseren, de volgorde van taken te identificeren, procesvariaties te ontdekken en de frequentie en duur van elke stap te meten. Dit is cruciaal voor het opsporen van bottlenecks, niet-standaard procespaden en kansen voor standaardisatie of automatisering. Het belang Dit attribute is verplicht voor het construeren van de proceskaart, waardoor de visualisatie en analyse van de volgorde van taken in de periodeafsluiting mogelijk is. Vindplaats Dit is afgeleid van een combinatie van SAP-transactiecodes (TCODE), documenttypes (BLART), of specifieke programma-uitvoeringen (bijv. FAGL_FCV voor vreemde valuta waardering). Voorbeelden Corrigerende Journaalpost GeboektAccountreconciliatie GestartPeriode Afgesloten Voor Boekingen | |||
| Bronsysteem SourceSystem | De identificatie van het bronsysteem waaruit de `data` is geëxtraheerd. | ||
| Omschrijving Dit attribute specificeert de herkomst van de event data, zoals de specifieke SAP ECC instantienaam of ID. In organisaties met meerdere ERP's of financiële systemen is dit veld cruciaal voor het onderscheiden van data uit verschillende bronnen. Zelfs in een single-system landschap dient het als een cruciaal stuk metadata voor data governance, auditing en troubleshooting. Het bevestigt de herkomst van de data, wat essentieel is voor het opbouwen van vertrouwen in de analyse en het waarborgen van duidelijke data lineage. Het belang Biedt essentiële data lineage, bevestigt de herkomst van de data voor governance, en is cruciaal in multi-systeemlandschappen om processen te onderscheiden. Vindplaats Dit is typically a static value added during the data extraction process, identifying the specific SAP client and system ID (e.g., from table T000). Voorbeelden ECC_PROD_100SAP_E74_200ECC_FINANCE | |||
| Laatste data-update LastDataUpdate | De timestamp waarop de data voor het laatst is ververst of geëxtraheerd uit het bronsysteem. | ||
| Omschrijving Dit attribute geeft de actualiteit van de geanalyseerde data aan. Het toont de datum en tijd waarop de data pipeline voor het laatst is uitgevoerd, wat context biedt voor de recentheid van de procesinzichten. Voor dashboards, met name die de real-time voortgang volgen, is deze timestamp van vitaal belang voor gebruikers om te begrijpen of ze naar up-to-the-minute informatie of data van een voorgaande dag kijken. Het beheert gebruikersverwachtingen en is cruciaal voor een correcte interpretatie van de analyse. Het belang Informeert gebruikers over de actualiteit van de data, wat cruciaal is om ervoor te zorgen dat analyses en dashboards tijdig en relevant zijn. Vindplaats Deze timestamp wordt gegenereerd en toegevoegd door de data-extractie- of ETL-tool aan het einde van elk data laadproces. Voorbeelden 2024-05-21T04:00:00Z2024-05-20T04:00:00Z2024-05-19T04:00:00Z | |||
| Tijdstip Gebeurtenis EventTime | De timestamp die aangeeft wanneer een activiteit of event heeft plaatsgevonden. | ||
| Omschrijving De Event Time geeft de precieze datum en tijd voor elke activiteit in het proces, en dient als de chronologische basis voor de analyse. Het is doorgaans een combinatie van de aanmaakdatum en -tijd van het document. Deze timestamp is essentieel voor het correct ordenen van events om de procesflow te reconstrueren. Het wordt gebruikt om alle op duur gebaseerde metrics te berekenen, inclusief doorlooptijden tussen activiteiten, wachttijden en de totale duur van de periodeafsluiting. Het analyseren van timestamps helpt bij het identificeren van vertragingen en het begrijpen van de temporele spreiding van het werk. Het belang Als verplicht attribute biedt het de chronologische volgorde van events, wat nodig is voor het berekenen van cyclustijden en het ontdekken van procesknelpunten. Vindplaats Dit is doorgaans afkomstig van de documentboekingsdatum (CPUDT) en boekingstijd (CPUTM) in de BKPF-tabel voor financiële documenten. Voorbeelden 2023-12-28T14:30:15Z2024-01-02T09:05:00Z2024-01-05T17:21:45Z | |||
| Bedrag in Lokale Valuta DMBTR | De financiële waarde van een transactieregelitem, uitgedrukt in de lokale valuta van de bedrijfscode. | ||
| Omschrijving Dit attribute vertegenwoordigt de monetaire waarde geassocieerd met een financiële boeking. Het is de kern kwantitatieve maatstaf van de impact van een transactie op het grootboek. Het analyseren van het bedrag is cruciaal voor het prioriteren van problemen en het begrijpen van financieel risico. Het 'Adjusting Entries Volume Analysis' dashboard wordt bijvoorbeeld veel krachtiger wanneer het onderscheid kan maken tussen een groot volume aan correcties met lage waarde en een laag volume aan correcties met hoge waarde. Het helpt de aandacht te richten op transacties die financieel materieel zijn. Het belang Kwantificeert de financiële impact van transacties, waardoor analyse op basis van materialiteit mogelijk is, zoals het identificeren van waardevolle correctieboekingen. Vindplaats Beschikbaar in de documentregel-tabel, BSEG (DMBTR). Voorbeelden 1500.75-25000.00123456.00 | |||
| Bedrijfscode BUKRS | De organisatorische eenheid die een juridische entiteit vertegenwoordigt waarvoor financiële overzichten worden gegenereerd. | ||
| Omschrijving De bedrijfscode is een fundamentele organisatorische eenheid in SAP Financials. Het vertegenwoordigt een onafhankelijke onderneming met een eigen set van gebalanceerde boeken. Alle financiële transacties worden geboekt op bedrijfscodeniveau. In process mining is filteren op bedrijfscode essentieel voor het vergelijken van het periodeafsluitingsproces tussen verschillende juridische entiteiten binnen een onderneming. Dit maakt het mogelijk om best practices in goed presterende entiteiten te identificeren en entiteiten aan te wijzen die worstelen met vertragingen, hoge correctievolumes of procesafwijkingen. Het is een sleuteldimensie voor het segmenteren van de analyse. Het belang Maakt de vergelijking van period close performance en compliance mogelijk tussen verschillende juridische entiteiten, wat cruciaal is voor financiële analyse op groepsniveau. Vindplaats Dit veld is beschikbaar in bijna alle financiële documenttabellen in SAP, voornamelijk BKPF (Header) en BSEG (Line Item). Voorbeelden 10002000US01DE01 | |||
| Documentnummer BELNR | De unieke identificatie voor een boekingsdocument binnen een boekjaar en bedrijfscode. | ||
| Omschrijving Het boekingsdocumentnummer is de primaire sleutel voor financiële boekingen in SAP. Elk journaalpost, factuur of betalingsdocument krijgt een uniek nummer toegewezen. Hoewel doorgaans niet gebruikt voor procesanalyse op hoog niveau, is het documentnummer van onschatbare waarde voor drill-down mogelijkheden. Vanaf een process mining dashboard kunnen analisten het documentnummer gebruiken om direct terug te navigeren naar de specifieke transactie in SAP voor gedetailleerd onderzoek van afwijkingen, zoals een grote correctieboeking of een vertraagd reconciliatie-item. Het biedt een directe link van het inzicht naar de brontransactie. Het belang Biedt een directe link naar de brontransactie in SAP, wat gedetailleerde drill-down analyse vanuit de procesweergave naar specifieke boekhoudkundige entries mogelijk maakt. Vindplaats Te vinden in de BKPF-tabel (BELNR) als de primaire sleutel. Voorbeelden 100000456719000001233000008901 | |||
| Documenttype BLART | Een code die verschillende typen boekingsdocumenten classificeert. | ||
| Omschrijving Het documenttype wordt in SAP gebruikt om te onderscheiden tussen diverse bedrijfstransacties, zoals leveranciersfacturen (KR), klantbetalingen (DZ) en grootboekboekingen (SA). Het controleert ook eigenschappen zoals het documentnummerseries. Voor analyse van de periodeafsluiting is het documenttype een krachtig filter. Het kan worden gebruikt om specifieke soorten activiteiten te isoleren, zoals opboekingen, voorzieningen of omkeringsboekingen. Dit helpt bij het analyseren van het volume en de financiële impact van verschillende afsluitingsgerelateerde transacties en kan worden gebruikt om specifieke activiteiten in het procesmodel te definiëren. Het belang Helpt bij het classificeren en filteren van transacties, waardoor het mogelijk wordt om specifieke activiteiten zoals accruals, reversals of intercompany-boekingen te isoleren en te analyseren. Vindplaats Te vinden in de documentkopteksttabel, BKPF (BLART). Voorbeelden SAABKR | |||
| Grootboekrekening HKONT | Het grootboekrekeningnummer waarnaar een regelitem wordt geboekt. | ||
| Omschrijving De grootboekrekening (GL Account) is een kernstamdata-element in finance dat transacties classificeert. Elke financiële boeking wordt toegewezen aan één of meerdere grootboekrekeningen. In de context van de periodeafsluiting is het analyseren van activiteiten per grootboekrekening essentieel voor de dashboards 'Account Reconciliation Bottlenecks' en 'Adjusting Entries Volume Analysis'. Het helpt te identificeren welke rekeningen het moeilijkst te reconciliëren zijn, welke de meeste aanpassingen vereisen, en waar het risico op materiële afwijkingen het hoogst kan zijn. Deze focus stelt teams in staat hun inspanningen te prioriteren op problematische rekeningen. Het belang Maakt gerichte analyse van reconciliaties en aanpassingsboekingen mogelijk, wat helpt bij het identificeren van problematische accounts die vertragingen veroorzaken of frequente correcties vereisen. Vindplaats Beschikbaar in de financiële documentregel-tabel, BSEG (HKONT). Voorbeelden 113100400500750000 | |||
| Journaalpost Type JournalEntryType | Een classificatie van journaalboekingen, zoals 'Standaard', 'Adjusting', 'Accrual', of 'Reversal'. | ||
| Omschrijving Dit is een afgeleid attribute dat financiële documenten categoriseert op basis van hun bedrijfsdoel binnen het afsluitingsproces. Het wordt vaak bepaald door een combinatie van documenttype (BLART), omkeringsreden (STGRD), of specifieke grootboekrekeningen die worden gebruikt. Deze classificatie is fundamenteel voor het 'Adjusting Entries Volume Analysis' dashboard en gerelateerde KPI's. Door expliciet aanpassings- of opboekingsboekingen te identificeren, kunnen analisten hun volume en waarde meten, trends over tijd volgen en de grondoorzaken van hun noodzaak onderzoeken. Het helpt routine operationele boekingen te onderscheiden van einde-periode aanpassingen. Het belang Categoriseert boekingen voor gerichte analyse, waardoor het mogelijk is om belangrijke boekingstypen zoals aanpassingen en accruals te volgen en te meten, welke indicatoren zijn voor procesgezondheid. Vindplaats Dit is een afgeleid veld. Logica moet worden gedefinieerd op basis van bedrijfsregels, doorgaans met behulp van velden zoals Document Type (BLART) uit BKPF. Voorbeelden CorrigerendTransitorische PostTerugboekingStandaard | |||
| Verantwoordelijke Gebruiker USNAM | De SAP user ID van de persoon die de transactie heeft aangemaakt of uitgevoerd. | ||
| Omschrijving Dit veld registreert de gebruiker die een document heeft geboekt, een rapport heeft uitgevoerd of een afsluitingsgerelateerd programma heeft gestart. Het identificeert de persoon die verantwoordelijk is voor een bepaalde activiteit. Analyseren per gebruiker is cruciaal voor het begrijpen van de werkbelastingverdeling, het identificeren van trainingsbehoeften en het onderzoeken van procesafwijkingen. Dashboards die activiteiten per gebruiker tonen, kunnen overbelaste teamleden of individuen die niet-standaard procedures volgen, benadrukken. Het helpt ook bij prestatiebeheer en resource-allocatie binnen het finance-team. Het belang Maakt analyse mogelijk van workloadverdeling, teamprestaties en de identificatie van procesafwijkingen gekoppeld aan specifieke individuen. Vindplaats Beschikbaar in de BKPF-tabel (USNAM) voor het aanmaken van documenten. Voor batchjobs is het te vinden in TBTCO (SDLUNAME). Voorbeelden JSMITHRDOEFIN_ADMIN | |||
| Afdeling Department | De functionele afdeling of kostenplaats die verantwoordelijk is voor de activiteit of transactie. | ||
| Omschrijving Dit attribute identificeert de bedrijfsafdeling, zoals 'Finance', 'Sales' of 'Logistics', die aan een transactie is gekoppeld. Dit wordt vaak afgeleid van de kostenplaats stamdata die gekoppeld is aan een boeking of de stamdata van de gebruiker. Analyseren per afdeling ondersteunt het 'Close Team Workload Distribution' dashboard. Het helpt te begrijpen hoe verschillende bedrijfsfuncties bijdragen aan de workload aan het einde van de periode, met name in termen van het initiëren van transacties die later aanpassingen of reconciliaties kunnen vereisen. Het kan gebieden buiten het kern finance-team belichten die impact hebben op het afsluitingsproces. Het belang Helpt bij het analyseren van workload en procesnaleving binnen verschillende bedrijfsfuncties, en onthult hoe diverse afdelingen de efficiëntie van de financiële afsluiting beïnvloeden. Vindplaats Vaak afgeleid van het Kostenplaats (KOSTL) in BSEG of van de HR-stamdata van de verantwoordelijke gebruiker. Dit kan het koppelen van meerdere tabellen vereisen. Voorbeelden Corporate FinanceCrediteurenFP&A | |||
| Afstemmingsstatus ReconciliationStatus | De huidige status van een rekeningreconciliatie, zoals 'Open', 'Ter beoordeling' of 'Goedgekeurd'. | ||
| Omschrijving Dit attribute volgt de status van een rekeningreconciliatie naarmate deze door de workflow beweegt. Het geeft aan of een reconciliatie is gestart, ingediend ter beoordeling, goedgekeurd of afgewezen. Dit is een sleutelattribute voor het real-time monitoren van de voortgang van reconciliatieactiviteiten. Het helpt te identificeren welke reconciliaties vastzitten en hoe lang, en ondersteunt KPI's zoals 'Account Reconciliation Cycle Time'. Het biedt zichtbaarheid in het goedkeuringsproces en is cruciaal voor dashboards die reconciliatie bottlenecks en team workload volgen. Het belang Biedt inzicht in de reconciliatieworkflow, waardoor de voortgang kan worden gevolgd, bottlenecks kunnen worden geïdentificeerd en beoordelings- en goedkeuringstijden gemeten kunnen worden. Vindplaats Deze informatie bevindt zich vaak in een aparte reconciliatietool (bijv. SAP Account Substantiation and Automation by BlackLine) of een custom statusveld. Het is doorgaans geen standaardveld in BKPF/BSEG. Voorbeelden Niet gestartIn uitvoeringGoedgekeurdAfgewezen | |||
| Annuleringsreden ReversalReason | Een code die de reden aangeeft waarom een financieel document werd reversed. | ||
| Omschrijving Wanneer een document in SAP wordt geannuleerd, kan een redencode worden toegewezen om het doel van de annulering uit te leggen, bijvoorbeeld 'Annulering in huidige periode' of 'Onjuiste invoer'. Dit attribute biedt cruciale context voor de reden waarom herwerk plaatsvindt. Het analyseren van annuleringsredenen helpt patronen in fouten te identificeren, zoals incorrecte data-invoer of verkeerde datums. Dit inzicht kan worden gebruikt om preventieve maatregelen te implementeren, training te verbeteren of systeemcontroles te versterken om het aantal fouten en daaropvolgende annuleringen te verminderen, leidend tot een efficiëntere afsluiting. Het belang Biedt direct inzicht in de grondoorzaken van fouten en herwerk, wat helpt bij het identificeren van kansen voor procesverbetering en foutpreventie. Vindplaats Te vinden in de documentkopteksttabel, BKPF (STGRD). Voorbeelden 010205 | |||
| Beoogde Afrondingsdatum TargetCompletionDate | De geplande deadline of vervaldatum voor een activiteit of de gehele periodeafsluiting. | ||
| Omschrijving De Target Completion Date vertegenwoordigt het schema waartegen het periodeafsluitingsproces wordt gemeten. Het is de deadline waartegen specifieke milestones of de uiteindelijke afsluiting voltooid moeten zijn. Dit attribute is essentieel voor elke prestatie- of compliance-gerelateerde analyse. Het wordt gebruikt om de 'On-Time Period Close Rate' KPI te berekenen en het 'Close Compliance & Overdue Tasks' dashboard aan te drijven. Door de daadwerkelijke event time te vergelijken met deze target date, kan het systeem bepalen of taken op schema liggen, te laat zijn, of het risico lopen te laat te zijn, wat proactief management van het afsluitingsproces mogelijk maakt. Het belang Maakt compliance en performancemonitoring mogelijk door een baseline te bieden om te meten of afsluitingsactiviteiten op tijd worden voltooid, ter ondersteuning van on-time delivery KPI's. Vindplaats Dit zijn doorgaans stamdata die worden bijgehouden in een aparte kalender, een closing cockpit tool (zoals SAP Financial Closing cockpit), of een spreadsheet. Het maakt geen deel uit van transactionele data. Voorbeelden 2023-12-29T23:59:59Z2024-01-03T17:00:00Z2024-01-02T12:00:00Z | |||
| Boekjaar GJAHR | Het boekjaar waarin de transactie werd geboekt. | ||
| Omschrijving Het boekjaar is een fundamenteel element voor het organiseren van financiële data. Het is een sleutelcomponent van de Financial Period case ID en biedt essentiële context voor alle transacties. Hoewel vaak onderdeel van de case ID, is het hebben van Fiscal Year als een apart attribute nuttig voor lange termijn trendanalyse. Het maakt jaar-op-jaar vergelijkingen mogelijk van close cycle times, adjustment volumes of andere KPI's, wat helpt bij het identificeren van verbeteringen of verslechteringen in prestaties over meerdere jaren. Het belang Biedt essentiële temporele context en maakt jaar-op-jaar prestatievergelijkingen van het afsluitingsproces mogelijk. Vindplaats Beschikbaar in de documentkop-tabel, BKPF (GJAHR). Voorbeelden 202320242022 | |||
| Doorlooptijd Periodeafsluiting PeriodCloseCycleTime | De totale verstreken tijd vanaf het begin tot het einde van het periodeafsluitingsproces voor één enkele financiële periode. | ||
| Omschrijving Deze berekende metric meet de end-to-end duur van de gehele periodeafsluiting voor één financiële periode. Het wordt doorgaans berekend als het tijdsverschil tussen de eerste en laatst geregistreerde activiteiten binnen die periode. Dit is een primaire Key Performance Indicator (KPI) voor het Record to Report-proces. Het biedt een hoge-niveau maatstaf voor de algehele efficiëntie van de afsluiting. Dashboards die deze metric over tijd visualiseren, zijn essentieel voor het volgen van de voortgang naar strategische doelen zoals het versnellen van de afsluiting. Het belang Dit is een kritieke KPI die de algehele efficiëntie en snelheid van de financiële afsluiting meet, en strategische doelstellingen om afsluitingscycli te verkorten direct ondersteunt. Vindplaats Dit is een berekende metric, gecomputeerd binnen de process mining tool door het verschil te nemen tussen de maximum en minimum EventTime voor elke FinancialPeriod (CaseId). Voorbeelden 5 dagen 4 uur 30 minuten6,2 dagen120,5 uur | |||
| Handelspartner VBUND | De identificatie van de gelieerde groepsmaatschappij betrokken bij een intercompany-transactie. | ||
| Omschrijving De Trading Partner ID wordt gebruikt om de andere bedrijfscode te identificeren die deelneemt aan een intercompany-transactie. Dit is essentieel voor de reconciliatie van rekeningen tussen gerelateerde juridische entiteiten. Dit attribute ondersteunt direct het 'Intercompany Reconciliation Flow' dashboard en de 'Intercompany Recon. Cycle Time' KPI. Door te filteren op transacties waarbij een Trading Partner aanwezig is, kan de analyse zich specifiek richten op de efficiëntie en tijdigheid van het intercompany-reconciliatieproces, wat vaak een belangrijk pijnpunt is tijdens de periodeafsluiting. Het belang Identificeert specifiek intercompany-transacties, waardoor een gerichte analyse van het vaak complexe en tijdrovende intercompany-reconciliatieproces mogelijk is. Vindplaats Gevonden in de documentregel-tabel, BSEG (VBUND). Voorbeelden 1000US013000 | |||
| Is Geautomatiseerd IsAutomated | Een vlag die aangeeft of een activiteit werd uitgevoerd door een menselijke gebruiker of een geautomatiseerd systeem. | ||
| Omschrijving Dit boolean attribute onderscheidt handmatige taken van taken die automatisch door het systeem worden uitgevoerd, zoals een geplande batch job voor vreemde valuta waardering of een bot die terugkerende entries boekt. Dit wordt vaak bepaald door de user name geassocieerd met de transactie te analyseren (bijv. 'BATCHUSER'). Het begrijpen van de mate van automatisering is essentieel voor het identificeren van kansen voor efficiëntiewinsten. Het analyseren van dit attribute helpt visualiseren welke delen van het proces handmatig zijn en potentieel rijp zijn voor automatisering. Het helpt ook bij het nauwkeurig inschatten van de menselijke workload door systeem-gegenereerde activiteiten uit te sluiten. Het belang Onderscheidt handmatige en systeemgestuurde activiteiten, wat cruciaal is voor het identificeren van automatiseringsmogelijkheden en het nauwkeurig meten van handmatige workloads. Vindplaats Dit is een afgeleid attribute. De logica is doorgaans gebaseerd op de User Name (USNAM), waarbij een lijst van bekende systeem- of batch user ID's een geautomatiseerde taak aangeeft. Voorbeelden truefalse | |||
| Is herstelwerk IsRework | Een berekende vlag die activiteiten identificeert die rework vertegenwoordigen, zoals een reversal of een afgekeurde reconciliatie. | ||
| Omschrijving Dit boolean attribute markeert events of sequenties van events die inefficiënte loops of correcties in het proces aangeven. Bijvoorbeeld, een 'Reconciliation Reviewed' activiteit gevolgd door nog een 'Adjusting Journal Entry Posted' op dezelfde rekening kan als rework worden gemarkeerd. Dit attribute is essentieel voor het kwantificeren van procesverspilling en ondersteunt het 'Reconciliation Rework Instances' dashboard en de 'Reconciliation Rework Rate' KPI. Door rework te isoleren, kunnen teams de grondoorzaken onderzoeken, de impact op cycle time meten en de effectiviteit van procesverbeteringsinitiatieven volgen die gericht zijn op het direct goed doen. Het belang Kwantificeert procesinefficiëntie door activiteiten te markeren die correcties of herhalingen zijn, wat helpt om verspilde inspanning te meten en te verminderen. Vindplaats Dit is een berekend attribute. De logica wordt gedefinieerd in de process mining tool op basis van specifieke activiteitensequenties (bijv. loops) of attributes (bijv. ReversalReason is niet nul). Voorbeelden truefalse | |||
| Is te laat IsOverdue | Een berekende vlag die aangeeft of een activiteit is voltooid na de geplande streefdatum. | ||
| Omschrijving Dit boolean attribute vergelijkt de daadwerkelijke voltooiingstijd van een activiteit (EventTime) met de geplande deadline (TargetCompletionDate). Als de event time later is dan de target, wordt de vlag op 'true' gezet. Dit attribute ondersteunt direct het 'Close Compliance & Overdue Tasks' dashboard en de 'On-Time Period Close Rate' KPI. Het geeft een duidelijk en onmiddellijk signaal van afwijkingen in het schema, waardoor managers snel te late taken kunnen identificeren, de impact op de algehele tijdlijn kunnen begrijpen en teams verantwoordelijk kunnen houden voor het nakomen van deadlines. Het belang Biedt een duidelijke indicator van non-compliance met schema's, waardoor late taken snel kunnen worden geïdentificeerd en de on-time prestatie gemeten kan worden. Vindplaats Dit is een berekend attribute, gecomputeerd in de process mining tool door de EventTime te vergelijken met de TargetCompletionDate. Voorbeelden truefalse | |||
Record to Report - Periodesluiting & Afstemmingsactiviteiten
| Activiteit | Omschrijving | ||
|---|---|---|---|
| Accountreconciliatie Gestart | Vertegenwoordigt het begin van het reconciliatieproces voor een reeks grootboekrekeningen voor de periode. In standaard SAP ECC is dit geen afzonderlijke event en wordt het doorgaans afgeleid uit gerelateerde activiteiten, zoals het voor de eerste keer uitvoeren van een belangrijk rapport. | ||
| Het belang Deze activiteit vestigt een belangrijke milestone om de duur van de gehele reconciliatiefase te meten. Begrijpen wanneer reconciliatie begint is essentieel voor de Account Reconciliation Cycle Time KPI. Vindplaats Deze event wordt niet expliciet gelogd. Het moet worden afgeleid uit andere databronnen, zoals de systeemaudit log (transactie STAD) voor de eerste uitvoering van een saldoweergave rapport zoals FAGLB03 of FS10N. Vastleggen Afleiden uit de eerste uitvoering van relevante rapporttransacties (bijv. FAGLB03) in systeemlogs. Gebeurtenistype inferred | |||
| Corrigerende Journaalpost Geboekt | Een corrigerende journaalboeking wordt geboekt om accountsaldi te corrigeren nadat de initiële transactieverwerking voor de periode is voltooid. Dit event wordt vastgelegd als een standaard financiële documentboeking in SAP. | ||
| Het belang Dit is essentieel voor de 'Adjusting Entries Volume Analysis'. Een hoog volume aan correcties duidt op problemen met de nauwkeurigheid van upstream-processen en is een belangrijk doelwit voor procesverbeteringsinitiatieven. Vindplaats Gevonden in tabellen BKPF en BSEG. Deze boekingen worden doorgaans geïdentificeerd door een specifiek documenttype (BKPF-BLART) gereserveerd voor aanpassingen, of door te zijn geboekt in speciale afsluitperioden, zoals 13 t/m 16. Vastleggen Filter BKPF op documenten die in speciale perioden zijn geboekt of met aanpassingsdocumenttypen. Gebeurtenistype explicit | |||
| Financiële Overzichten Gecreëerd | Dit vertegenwoordigt het moment waarop officiële financiële overzichten, zoals de winst- en verliesrekening en balans, worden gegenereerd. Deze activiteit wordt doorgaans vastgelegd door de uitvoering van een specifiek rapportageprogramma te volgen. | ||
| Het belang Dit is een belangrijke milestone die het einde van de dataverwerking en het begin van de uiteindelijke beoordelings- en goedkeuringsfase markeert. De tijd vanaf deze event tot goedkeuring is een belangrijke KPI. Vindplaats Afgeleid uit systeem audit logs, zoals STAD, die de uitvoering van het financiële overzicht generatieprogramma vastleggen, meestel transactie F.01. Vastleggen Uit systeemlogs (STAD) die de uitvoering van financiële overzichtstransactie F.01 volgen. Gebeurtenistype inferred | |||
| Periode Afgesloten Voor Boekingen | Vertegenwoordigt de formele afsluiting van een boekingsperiode, wat verdere operationele journaalboekingen voorkomt. Dit waarborgt de integriteit van de financiële data voor de afgesloten periode en is een expliciete configuratiewijziging. | ||
| Het belang Dit is de definitieve eind event voor het periodeafsluitingsproces. Het is essentieel voor het nauwkeurig berekenen van de totale Period Close Cycle Time en het meten van on-time prestaties. Vindplaats De afsluiting van periodes via transactie OB52 wordt vastgelegd. Deze wijzigingen zijn te vinden door de wijzigingsdocumenten (tabellen CDHDR en CDPOS) te analyseren voor configuratietabel T001B. Vastleggen Extraheer uit wijzigingsdocumenten (CDHDR/CDPOS) voor tabel T001B. Gebeurtenistype explicit | |||
| Periode Geopend Voor Boekingen | Dit markeert de officiële start van een financiële periode, waardoor transacties naar het grootboek kunnen worden geboekt. Dit is een expliciete configuratiewijziging die wordt uitgevoerd door een geautoriseerde gebruiker om een specifieke periode voor boekingen in één of meerdere bedrijfscodes te openen. | ||
| Het belang Deze activiteit dient als de definitieve start event voor de periodeafsluitingscase. Het analyseren van de tijd vanaf dit punt helpt bij het begrijpen van de volledige lifecycle van de financiële periode. Vindplaats Wijzigingen in boekingsperioden via transactie OB52 worden gelogd. Deze wijzigingen kunnen worden geëxtraheerd door de wijzigingsdocumenten voor de onderliggende configuratietabel T001B te analyseren, doorgaans met behulp van tabellen CDHDR en CDPOS. Vastleggen Extraheer uit wijzigingsdocumenten (CDHDR/CDPOS) voor tabel T001B. Gebeurtenistype explicit | |||
| Valutawaarderun | Dit vertegenwoordigt de uitvoering van een programma om openstaande posten en saldi, vastgelegd in vreemde valuta, opnieuw te waarderen met behulp van einde-periode wisselkoersen. Dit wordt doorgaans als een batch job uitgevoerd als onderdeel van de einde-periode afsluitingsstappen. | ||
| Het belang Dit is een cruciale stap om nauwkeurige financiële rapportage in multinationale organisaties te waarborgen. Het analyseren van de timing en duur helpt bij het identificeren van automatiserings- en prestatieoptimalisatiemogelijkheden. Vindplaats Vastgelegd vanuit de uitvoeringslogs van het programma voor waardering vreemde valuta, zoals FAGL_FCV of F.05. Batch job details uit tabellen zoals TBTCO en TBTCP bieden uitvoerings timestamps. Vastleggen Uit batch job logs (tabel TBTCO) voor programma FAGL_FC_VALUATION of SAPF100. Gebeurtenistype explicit | |||
| Afstemming Beoordeeld | Geeft aan dat een reconciliatie voor een specifieke account of groep accounts is beoordeeld en bevestigd. In standaard SAP ECC is dit geen expliciet gelogd event en wordt het vaak beheerd via offline controles of custom oplossingen. | ||
| Het belang Het monitoren van de timing van reviews is belangrijk voor het identificeren van knelpunten in de controle- en toezichtfasen van het afsluitingsproces. Het kan vertragingen aan het licht brengen die worden veroorzaakt door de beschikbaarheid van management of herwerk. Vindplaats Deze informatie is niet beschikbaar in standaard ECC-tabellen. Het zou een custom solution vereisen, zoals een statusveld in een custom Z-tabel, een eenvoudige workflow of integratie met een gespecialiseerde third-party reconciliatietool. Vastleggen Leg statuswijziging vast vanuit een custom workflow of Z-tabel indien geïmplementeerd. Gebeurtenistype inferred | |||
| GR/IR Vereffeningsrun Uitgevoerd | De uitvoering van het geautomatiseerde afstemmingsprogramma voor de rekening Goederenontvangst/Factuurontvangst (GR/IR). Dit programma koppelt overeenkomstige goederenontvangsten en factuurontvangsten en boekt de items tegen elkaar af. | ||
| Het belang De GR/IR-rekening is een frequente bron van reconciliatieproblemen. Het monitoren van deze activiteit zorgt ervoor dat de geautomatiseerde stap correct verloopt en helpt het volume van uitzonderingen die handmatige opvolging vereisen te kwantificeren. Vindplaats Uitvoering wordt vastgelegd in batch job logs (transactie SM37). Het programma is doorgaans SAPF124, uitgevoerd via transactie F.13. Job log tabellen zoals TBTCO bieden de benodigde timestamps. Vastleggen Uit batch job logs (tabel TBTCO) voor clearing programma SAPF124. Gebeurtenistype explicit | |||
| Intercompany Document Afgestemd | Deze activiteit markeert het afboeken van een openstaand item tussen twee verschillende bedrijfscodes, wat aangeeft dat een intercompany-transactie is afgewikkeld of gereconcilieerd. Dit wordt vastgelegd als een expliciete financiële boeking in SAP, doorgaans een afboekingsdocument. | ||
| Het belang Vertragingen bij het afstemmen van intercompany items zijn een veelvoorkomend knelpunt in het afsluitproces. Het volgen van deze activiteit is cruciaal voor het meten en verbeteren van de intercompany reconciliatie cyclustijd. Vindplaats Geïdentificeerd uit financiële documenten in BKPF en BSEG. Een clearing document koppelt en sluit openstaande items, en de clearingdatum (BSEG-AUGDT) dient als de event timestamp. Intercompany transacties worden geïdentificeerd door trading partner velden. Vastleggen Identificeer clearing documenten in BKPF/BSEG die items met trading partners betreffen. Gebeurtenistype explicit | |||
| Proef- en Saldibalans Rapport Gegenereerd | Markeert de uitvoering van een rapport om de proef- en saldibalans te genereren. Dit is een essentiële stap om te verifiëren dat het totaal van debet gelijk is aan het totaal van credit, alvorens de officiële financiële overzichten op te stellen. | ||
| Het belang Dit is een cruciale kwaliteitscontrole vóór de definitieve rapportage. Herhaalde uitvoeringen van dit rapport kunnen erop duiden dat onderliggende data-issues worden gevonden en gecorrigeerd, wat mogelijk vertragingen veroorzaakt. Vindplaats Afgeleid uit systeem audit logs, zoals transactie STAD, die de uitvoering van proefbalansrapportagetransacties zoals S_ALR_87012277 of F.01 kunnen vastleggen. Vastleggen Uit systeemlogs (STAD) die de uitvoering van rapportage transactiecodes volgen. Gebeurtenistype inferred | |||
| Tegenboeking Geboekt | Deze activiteit legt de boeking vast van een document dat een eerder geplaatste journaalpost omkeert, vaak om een fout te corrigeren. SAP creëert een expliciete link tussen het omkeringsdocument en het originele document. | ||
| Het belang Een groot aantal reversals wijst op potentiële problemen met de datanauwkeurigheid of procescontroles. Het volgen van deze events helpt om first-time-right rates te meten en gebieden te identificeren die verbetering behoeven. Vindplaats Omkeringsdocumenten zijn te vinden in de BKPF-tabel. Ze worden vaak aangemaakt met transactie FB08 en bevatten een verwijzing naar het omgekeerde documentnummer in het veld BKPF-STBLG. Vastleggen Identificeer documenten waarbij BKPF-STBLG is gevuld of gemaakt via reversal T-codes. Gebeurtenistype explicit | |||
| Transitorische Post of Voorziening Geboekt | Dit vertegenwoordigt het vastleggen van een journaalpost voor een opboeking, uitstelpost of voorziening, die doorgaans aan het einde van een periode worden geboekt. Dit is geen afzonderlijk event type in SAP, maar wordt afgeleid door specifieke journaalposten te identificeren op basis van hun kenmerken. | ||
| Het belang Het isoleren van deze boekingen helpt bij het analyseren van het subproces voor het beheren van schattingen. Een hoog volume of frequente aanpassingen aan accruals kunnen duiden op gebieden voor procesverbetering. Vindplaats Afgeleid uit de financiële documenttabellen BKPF en BSEG. Boekingen kunnen worden geïdentificeerd door te filteren op een specifiek documenttype (BKPF-BLART), een unieke grootboekrekening (BSEG-HKONT), of keywords in de koptekst (BKPF-BKTXT). Vastleggen Filter BKPF/BSEG tabellen op documenttype, specifieke grootboekrekeningen of tekstvelden. Gebeurtenistype inferred | |||
Extractie Guides
Stappen
- Toegang SAP Query Tool: Log in op uw SAP ECC systeem. Ga naar transactiecode
SQVI(QuickViewer). 2. Nieuwe Query Aanmaken: Voer een naam in voor uw query, bijvoorbeeldZ_R2R_PERIOD_CLOSE, en klik op 'Aanmaken'. Geef in het pop-upvenster een beschrijvende titel op, zoals 'Record to Report Periode Afsluiting Extractie'. Voor de 'Data source' selecteert u 'Table join'. 3. Definieer Tabel Joins: Voeg de primaire tabelBKPF(Accounting Document Header) toe. Voeg vervolgens de tabelBSEG(Accounting Document Segment) toe. SAP zal de join-condities automatisch voorstellen (MANDT, BUKRS, BELNR, GJAHR), welke u dient te verifiëren en accepteren. Voor period open- en close-activiteiten heeft u een aparte query nodig dieCDHDRenCDPOSjoint. 4. Selecteer Output Velden (List Fields): Navigeer naar het tabblad 'List fld. select.'. Selecteer de velden die nodig zijn voor de event log uit de beschikbare tabellen. Dit omvatBKPF-BUKRS,BKPF-BELNR,BKPF-GJAHR,BKPF-MONAT,BKPF-CPUDT,BKPF-CPUTM,BKPF-USNAM,BKPF-BLART,BSEG-HKONT,BSEG-DMBTR, en andere indien nodig. 5. Definieer Input Parameters (Selection Fields): Navigeer naar het tabblad 'Selection fields'. Kies de velden die zullen worden gebruikt om de data te filteren tijdens de uitvoering. De belangrijkste velden zijnBKPF-BUKRS(Company Code) enBKPF-GJAHR(Fiscal Year). U kunt ookBKPF-MONAT(Posting Period) enBKPF-BLART(Document Type) toevoegen. 6. Maak Varianten voor Elke Activiteit: Omdat SQVI geen verschillende dataselecties (zoals een SQL UNION) kan combineren, moet u de query meerdere keren uitvoeren. Voor elke activiteit (bijv. 'Accrual Or Provision Posted'), voert u de query uit en voert u specifieke filterwaarden in op het selectiescherm, zoals een lijst met documenttypen die relevant zijn voor overlopende posten. Sla deze set selectiecriteria op als een variant. Herhaal dit proces voor elke extraheerbare activiteit. 7. Uitvoeren en Data Extraheren: Voer de query uit voor elke variant die u hebt gemaakt. Dit zal de query uitvoeren met de specifieke filters voor die activiteit. 8. Resultaten Exporteren: Exporteer in het resultaatenscherm de data naar een lokaal bestand. Het meest voorkomende formaat is 'Spreadsheet'. Herhaal de export voor elke variant. 9. Data Combineren en Transformeren: Open de geëxporteerde bestanden in een spreadsheetprogramma of gebruik een scriptingtool. Combineer handmatig de data van alle bestanden tot één masterbestand. 10. Voeg Constante en Berekende Kolommen Toe: Voeg in het gecombineerde bestand de kolommen toe die niet direct uit SAP-tabellen zijn geëxtraheerd. Dit omvatActivityName(handmatig in te stellen op basis van welke variant de data afkomstig is),FinancialPeriod(door Fiscaal Jaar en Periode te concatenen),EventTime(door datum- en tijdvelden te combineren),SourceSystem, enLastDataUpdate. 11. Formaat voor Upload: Zorg ervoor dat het uiteindelijke bestand wordt opgeslagen in een CSV- of Excel-formaat met de juiste kolomkoppen zoals vereist voor uw process mining tool. Verifieer datatypen en opmaak voordat u uploadt.
Configuratie
- Data Source: Table Join in SAP Query (SQVI). Belangrijke tabellen zijn BKPF, BSEG, CDHDR en CDPOS. * Date Range: Het wordt aanbevolen data te extraheren voor een periode van ten minste 3 tot 6 volledige financiële perioden om patronen te identificeren. Stel het filter in op
BKPF-GJAHR(Fiscaal Jaar) enBKPF-MONAT(Periode). * Company Code Filter: Filter altijd opBKPF-BUKRS(Company Code) om het data volume te beperken en de analyse te richten op specifieke juridische entiteiten. Het extraheren van alle company codes tegelijk wordt niet aanbevolen. * Document Type Filter: Gebruik filters opBKPF-BLART(Document Type) om specifieke activiteiten zoals overlopende posten, aanpassingen of reversals te isoleren. U zult de relevante documenttypen voor uw organisatie moeten achterhalen. * Prerequisites: De gebruiker die de extractie uitvoert, heeft autorisatie nodig om deSQVI-transactie te gebruiken en display-toegang tot de relevante financiële tabellen (bijv. autorisatie-object S_TABU_DIS). * Performance Considerations: Het joinen van BKPF en BSEG kan resource-intensief zijn. Voer de extractie uit tijdens daluren. Vermijd het gebruik van zeer brede datumbereiken of het open laten van het Company Code-filter, aangezien dit kan leiden tot geheugenproblemen of timeouts.
a Voorbeeldquery config
/*
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
- Program Scoping en Ontwerp: Definieer de specifieke logica voor het identificeren van elk van de 12 vereiste activiteiten. Raadpleeg business process owners en SAP functionele analisten om de documenttypen, grootboekrekeningen en programmanamen te bevestigen die geassocieerd zijn met periode-afsluitactiviteiten in uw specifieke SAP ECC-omgeving.
- ABAP Programma Maken: Gebruikmakend van transactie
SE38(ABAP Editor), maakt u een nieuw uitvoerbaar programma aan, bijvoorbeeldZ_PM_R2R_EXTRACTION. Geef een beschrijvende titel op en stel het programmatype in op 'Executable Program'. - Selectiescherm Definiëren: Definieer in het programma een selectiescherm met behulp van
PARAMETERSenSELECT-OPTIONS. Dit scherm stelt gebruikers in staat de extractiescope te specificeren, inclusief Company Code (BUKRS), Fiscaal Jaar (GJAHR) en Posting Period (MONAT). Dit is cruciaal voor het beheersen van het data volume. - Datastructuren Declaren: Definieer een interne tabelstructuur die de uiteindelijke event log data zal bevatten. Deze structuur moet alle vereiste en aanbevolen
attributesomvatten:FinancialPeriod,ActivityName,EventTime,SourceSystem,LastDataUpdate,BUKRS,BELNR,USNAM,HKONT,BLART,DMBTRenJournalEntryType. - Data Extractie Logica Implementeren: Schrijf de kern ABAP-logica om data te selecteren voor elk van de 12 activiteiten. Voor elke activiteit bevraagt u de relevante SAP-tabellen (bijv. BKPF, BSEG, TBTCO, CDHDR) en vult u een intermediaire interne tabel. Gebruik de logica die wordt geboden in de bijbehorende ABAP query sectie als template.
- Afgeleide Activiteiten Identificeren: Voor activiteiten die niet expliciet worden gelogd in standaard SAP, zoals 'Account Reconciliation Started' of 'Reconciliation Reviewed', implementeert u de overeengekomen inferentielogica. Dit kan inhouden dat u controleert op de eerste uitvoering van een specifiek rapport of custom 'Z-tabellen' bevraagt als deze bestaan.
- Event Data Consolideren: Nadat data voor alle individuele activiteiten is geëxtraheerd, voegt u de records van elke intermediaire tabel toe aan de uiteindelijke geconsolideerde interne tabel. Zorg ervoor dat het
EventTime-veld correct wordt gevuld vanuit het relevante bronveld, zoals documentboekingsdatum/-tijd of jobstartdatum/-tijd. - Data Standaardiseren en Formatteren: Voordat u output genereert, standaardiseert u sleutelvelden. Combineer het fiscale jaar en de periode in de
FinancialPeriod-identifier. Stel statische waarden in voorSourceSystemenLastDataUpdate. Zorg ervoor dattimestampseen consistent formaat hebben. - Output Functionaliteit Ontwikkelen: Voeg functionaliteit toe aan het programma om de uiteindelijke interne tabel te exporteren. De meest gebruikelijke methode is om de data naar een CSV- of tab-gescheiden bestand te schrijven op de SAP Application Server (met
OPEN DATASET) of om de gebruiker toe te staan het direct naar hun lokale machine te downloaden (met functiemodule GUI_DOWNLOAD). - Testen en Valideren: Test het programma grondig met een representatieve dataset die meerdere company codes en perioden omvat. Gebruik de validatiestappen om de datanauwkeurigheid en -volledigheid te waarborgen. Verfijn de selectielogica op basis van feedback van functionele experts.
- Uitvoering Plannen (Optioneel): Zodra gevalideerd, kan het programma worden gepland om als een background job te draaien via transactie
SM36. Dit maakt geautomatiseerde, periodieke extractie van de event log mogelijk zonder handmatige tussenkomst.
Configuratie
- Selection Criteria: Het programma dient een selectiescherm te bevatten om de data te filteren. Belangrijke filters zijn onder andere:
Company Code (BUKRS): Verplicht om de scope te beperken tot relevante juridische entiteiten.Fiscal Year (GJAHR): Verplicht om het primaire jaar voor de extractie te definiëren.Posting Period (MONAT): Verplicht om de specifieke financiële perioden te selecteren.
- Activity-Specific Configuration: Veel selecties zijn afhankelijk van uw specifieke SAP-configuratie. Deze moeten configureerbaar zijn als parameters of constanten binnen het programma:
Accrual/Provision Document Types: Een lijst met documenttypen (BLART) die worden gebruikt om boekingen voor overlopende activa en passiva te identificeren.Adjusting Entry Document Types: Een lijst met documenttypen die worden gebruikt om corrigerende journaalboekingen te identificeren.Background Job/Program Names: De technische namen van de programma's die worden gebruikt voor waardering vreemde valuta (bijv.FAGL_FCV), GR/IR-afrekening (bijv.SAPF124), proefbalansrapporten en het genereren van financiële overzichten (bijv.RFBILA00).
- Date Range: Hoewel de primaire selectie gebaseerd is op fiscaal jaar en periode, dient de onderliggende logica rekening te houden met de volledige datum en tijd van de events. Voor een initiële analyse wordt aanbevolen data te extraheren voor de laatste 3 tot 6 afgesloten financiële perioden.
- Performance: Voor grote SAP-omgevingen is de performance van het programma cruciaal. Zorg ervoor dat databaseselecties indexvelden gebruiken, vooral op tabellen zoals
BKPFenBSEG. Vermijd het selecteren van alle velden (SELECT *) en verwerk data in beheersbare pakketten indien nodig. - Authorizations: De gebruiker of het serviceaccount dat dit programma uitvoert, vereist autorisatie om toegang te krijgen tot alle bevraagde tabellen (
BKPF,BSEG,TBTCO,TBTCP,CDHDR,CDPOS) en om transacties zoalsSE38(voor ontwikkeling) enSM37/SM36(voor planning en monitoring) uit te voeren.
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
- Vereisten Verzamelen: Verkrijg read-only toegangsgegevens voor de onderliggende SAP ECC-database. Identificeer het juiste databaseschema, wat doorgaans
SAPSR3is of een vergelijkbare naam die door uw databasebeheerder wordt verstrekt. - Systeemconfiguratie Identificeren: Raadpleeg uw SAP Finance-team om de specifieke
Company Codes(BUKRS) en de financiële perioden die u wilt analyseren te bepalen. Cruciaal is het identificeren van de specifiekeDocument Types(BLART) die in uw systeem worden gebruikt voor 'Accrual Or Provision Posted', 'Adjusting Journal Entry Posted' en 'Intercompany' transacties. - Programma- en Jobnamen Verifiëren: Bevestig de programmanamen voor belangrijke batchjobs zoals waardering vreemde valuta (bijv.
FAGL_FCV), GR/IR-afrekening (bijv.SAPF124), proefbalansrapporten (bijv.RFBILA00) en het genereren van financiële overzichten (bijv.RFBILA00). Deze kunnen worden gevonden door geplande jobs in transactieSM37te controleren. - SQL Query Aanpassen: Kopieer de verstrekte SQL-query naar een teksteditor of SQL-client. Vervang de placeholder-variabelen
{{start_date}},{{end_date}}en{{company_codes}}door de daadwerkelijke waarden voor uw analyse. Werk de lijsten met documenttypen en programmanamen bij op basis van de informatie die in de vorige stappen is verzameld. - Verbinden met de Database: Gebruik een standaard SQL-clienttool, zoals DBeaver, SQL Server Management Studio of Oracle SQL Developer, om verbinding te maken met de SAP-database met behulp van de verkregen inloggegevens.
- Query Uitvoeren: Voer de aangepaste SQL-query uit op de database. Afhankelijk van het datumbereik en de grootte van uw financiële tabellen, kan deze query aanzienlijke tijd in beslag nemen.
- Initiële Resultaten Controleren: Nadat de query is voltooid, voert u een snelle controle uit van de output. Controleer op een redelijk aantal rijen, zorg ervoor dat alle kolommen aanwezig zijn en verifieer dat verschillende
ActivityName-waarden in de resultaten zijn opgenomen. - Data Exporteren: Exporteer de volledige resultatenset vanuit uw SQL-client naar een CSV-bestand. Zorg ervoor dat het bestand wordt opgeslagen met UTF-8-codering om karakterproblemen te voorkomen.
- Voorbereiden op Upload: Voordat u uploadt naar een process mining tool, bevestigt u dat de kolomkoppen in het CSV-bestand exact overeenkomen met de vereiste attribute namen (
FinancialPeriod,ActivityName,EventTime, enz.). Verifieer ook dat deEventTime-kolom een consistent timestamp-formaat heeft, zoalsYYYY-MM-DD HH:MI:SS.
Configuratie
- Database Credentials: Er is een read-only databasegebruiker nodig met toegang tot de kern SAP financiële en systeemtabellen. Dit omvat tabellen zoals
BKPF,BSEG,TBTCO,CDHDRenCDPOS. - Date Range: We raden aan data te extraheren voor ten minste 3 tot 6 volledige financiële perioden om betekenisvolle procesvariaties vast te leggen. Houd er rekening mee dat grotere datumbereiken de uitvoeringstijd van de query aanzienlijk zullen verlengen.
- Company Codes (
BUKRS): Filter altijd op een specifieke lijst van company codes. Het uitvoeren van de query voor alle company codes op een groot systeem is niet haalbaar en zal waarschijnlijk prestatieproblemen veroorzaken. - Document Types (
BLART): De identificatie van journaalboekingstypen, zoals overlopende posten en aanpassingen, is volledig afhankelijk van de specifieke SAP-configuratie van uw organisatie. U moet de juiste documenttypecodes opgeven in deWHERE-clausules van de query voor een accurate activiteitsclassificatie. - Program and Job Names: De query gebruikt veelvoorkomende programmanamen voor geautomatiseerde afsluitstappen. Uw systeem gebruikt mogelijk aangepaste wrapperprogramma's of andere jobnamen. Controleer deze in transactie
SM37en werk de query dienovereenkomstig bij. - Performance Considerations: Deze query heeft toegang tot zeer grote tabellen, met name
BSEGenCDPOS. Het wordt sterk aanbevolen deze extractie buiten kantooruren uit te voeren om de systeemprestaties niet te beïnvloeden. Het toepassen van smalle datum- en company code-filters is de meest effectieve manier om de uitvoeringstijd te beheren.
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'
;