Template dati Record to Report: Chiusura e Riconciliazione
Template dati Record to Report: Chiusura e Riconciliazione
- Attributi consigliati da raccogliere
- Attività chiave da tracciare
- Guida all'estrazione
Attributi di Record to Report - chiusura del periodo e riconciliazione
| Nome | Descrizione | ||
|---|---|---|---|
| Periodo contabile FinancialPeriod | Un identificativo univoco per il ciclo di rendicontazione finanziaria, solitamente combinando l'esercizio e il periodo di registrazione. | ||
| Descrizione Il Periodo finanziario funge da identificatore principale del Case, raggruppando tutte le attività relative alla chiusura e alla riconciliazione dei conti per quello specifico ciclo di reporting, ad esempio '2023-12' per dicembre 2023. Ciò consente un'analisi completa dell'intero processo di chiusura, dall'inizio alla fine, per ogni singolo periodo. In fase di analisi, permette di tracciare il tempo di ciclo end-to-end per ogni chiusura, confrontare le prestazioni tra periodi diversi e identificare tendenze o anomalie. Definendo ogni periodo finanziario come un Case unico, è possibile visualizzare e misurare l'efficienza, i colli di bottiglia e le variazioni nel processo di chiusura nel tempo. Perché è importante Rappresenta l'identificatore del Case essenziale che inquadra l'analisi, consentendo confronti tra periodi diversi dei tempi di chiusura, dei carichi di lavoro e della conformità dei processi. Dove trovare Questo attributo viene solitamente derivato concatenando l'Esercizio (GJAHR) e il Periodo di registrazione (MONAT) dalle testate dei documenti finanziari, ad esempio dalla tabella BKPF. Esempi 2023-122024-032023-Q4 | |||
| Activity ActivityName | Il nome dell'Event aziendale specifico o del Task eseguito durante il processo di chiusura del periodo. | ||
| Descrizione Questo attributo registra i singoli passaggi compiuti all'interno del ciclo Record to Report, come 'Registrazione scrittura contabile di rettifica' o 'Generazione bilancio'. Costituisce la spina dorsale della mappa del processo, mostrando la sequenza di Event che compongono la chiusura del periodo. L'analisi delle attività è fondamentale per il Process Mining. Aiuta a visualizzare il flusso del processo, identificare la sequenza dei Task, scoprire le variazioni del processo e misurare la frequenza e la durata di ogni fase. Questo è fondamentale per individuare colli di bottiglia, percorsi di processo non standard e opportunità di standardizzazione o automazione. Perché è importante Questo attributo è obbligatorio per costruire la mappa del processo, consentendo la visualizzazione e l'analisi della sequenza di Task nella chiusura del periodo. Dove trovare Questo viene derivato da una combinazione di codici transazione SAP (TCODE), tipi di documento (BLART) o esecuzioni di programmi specifici (ad es. FAGL_FCV per la valutazione della valuta estera). Esempi Registrazione scrittura di rettificaInizio riconciliazione contoPeriodo chiuso per registrazioni | |||
| Sistema di Origine SourceSystem | L'identificatore del sistema sorgente da cui sono stati estratti i dati. | ||
| Descrizione Questo attributo specifica l'origine dei dati degli Event, come il nome o l'ID della specifica istanza SAP ECC. Nelle organizzazioni con più ERP o sistemi finanziari, questo campo è fondamentale per distinguere i dati provenienti da diverse fonti. Anche in uno scenario con un unico sistema, funge da metadato cruciale per la data governance, l'audit e la risoluzione dei problemi. Conferma la provenienza dei dati, il che è essenziale per generare fiducia nell'analisi e garantire che il lineage dei dati sia chiaro. Perché è importante Garantisce la tracciabilità essenziale dei dati (data lineage), confermandone l'origine per scopi di governance; è fondamentale in scenari multi-sistema per distinguere i processi. Dove trovare Questo è tipicamente un valore statico aggiunto durante il processo di estrazione dei dati, che identifica lo specifico client SAP e l'ID del sistema (ad es. dalla tabella T000). Esempi ECC_PROD_100SAP_E74_200ECC_FINANCE | |||
| Timestamp Evento EventTime | Il timestamp che indica quando si è verificata un'attività o un evento. | ||
| Descrizione L'Event Time fornisce la data e l'ora precise di ogni attività del processo, fungendo da base cronologica per l'analisi. Di solito è una combinazione della data e dell'ora di creazione del documento. Questo timestamp è fondamentale per ordinare correttamente gli Event e ricostruire il flusso del processo. Viene utilizzato per calcolare tutte le metriche basate sulla durata, inclusi i tempi di ciclo tra le attività, i tempi di attesa e la durata complessiva della chiusura del periodo. L'analisi dei timestamp aiuta a identificare i ritardi e a comprendere la distribuzione temporale del lavoro. Perché è importante In quanto attributo obbligatorio, fornisce l'ordine cronologico degli eventi, necessario per calcolare i tempi di ciclo e individuare i colli di bottiglia del processo. Dove trovare Questo dato viene solitamente estratto dalla data di inserimento del documento (CPUDT) e dall'ora di inserimento (CPUTM) nella tabella BKPF per i documenti contabili. Esempi 2023-12-28T14:30:15Z2024-01-02T09:05:00Z2024-01-05T17:21:45Z | |||
| Ultimo `Data Update` LastDataUpdate | Il timestamp di quando i dati sono stati aggiornati o estratti l'ultima volta dal sistema di origine. | ||
| Descrizione Questo attributo indica quanto siano aggiornati i dati analizzati. Mostra la data e l'ora dell'ultima esecuzione della data pipeline, fornendo il contesto sulla recenza dei dati del processo. Per le dashboard, specialmente quelle che tracciano i progressi in tempo reale, questo timestamp è vitale affinché gli utenti capiscano se stanno visualizzando informazioni aggiornate al minuto o dati del giorno precedente. Gestisce le aspettative degli utenti ed è fondamentale per interpretare correttamente l'analisi. Perché è importante Informa gli utenti sull'aggiornamento dei dati, un aspetto fondamentale per garantire che le analisi e le dashboard siano tempestive e pertinenti. Dove trovare Questo timestamp viene generato e aggiunto dallo strumento di estrazione dati o ETL al termine di ogni processo di caricamento dei dati. Esempi 2024-05-21T04:00:00Z2024-05-20T04:00:00Z2024-05-19T04:00:00Z | |||
| Codice Società BUKRS | L'unità organizzativa che rappresenta un'entità legale per la quale viene generato il bilancio d'esercizio. | ||
| Descrizione La Società (Company Code) è un'unità organizzativa fondamentale in SAP Financials. Rappresenta una società indipendente con una propria contabilità. Tutte le transazioni finanziarie vengono registrate a livello di società. Nel Process Mining, filtrare per Società è essenziale per confrontare il processo di chiusura tra diverse entità legali all'interno di un gruppo. Ciò consente di identificare le best practice nelle entità con prestazioni elevate e di individuare quelle che presentano ritardi, volumi elevati di rettifiche o deviazioni di processo. È una dimensione chiave per segmentare l'analisi. Perché è importante Permette di confrontare le prestazioni di chiusura e la conformità tra diverse entità legali, un aspetto cruciale per l'analisi finanziaria a livello di gruppo. Dove trovare Questo campo è disponibile in quasi tutte le tabelle dei documenti finanziari in SAP, principalmente BKPF (Testata) e BSEG (Riga). Esempi 10002000US01DE01 | |||
| Conto Co.Ge. HKONT | Il numero del conto di contabilità generale su cui viene registrata una riga. | ||
| Descrizione Il Conto di contabilità generale (CoGe) è un elemento anagrafico centrale nel settore finanziario che classifica le transazioni. Ogni registrazione finanziaria è assegnata a uno o più conti CoGe. Nel contesto della chiusura del periodo, l'analisi delle attività per conto CoGe è fondamentale per le dashboard 'Colli di bottiglia della riconciliazione dei conti' e 'Analisi del volume delle scritture di rettifica'. Aiuta a identificare quali conti sono più difficili da riconciliare, quali richiedono il maggior numero di rettifiche e dove il rischio di errori materiali potrebbe essere più elevato. Questo focus consente ai team di dare priorità agli sforzi sui conti problematici. Perché è importante Consente un'analisi mirata delle riconciliazioni e delle rettifiche, aiutando a identificare i conti problematici che causano ritardi o richiedono correzioni frequenti. Dove trovare Disponibile nella tabella delle posizioni del documento contabile, BSEG (HKONT). Esempi 113100400500750000 | |||
| Importo in valuta locale DMBTR | Il valore finanziario di una riga di transazione, espresso nella valuta locale della società. | ||
| Descrizione Questo attributo rappresenta il valore monetario associato a una registrazione finanziaria. È la misura quantitativa principale dell'impatto di una transazione sulla contabilità generale. L'analisi dell'importo è fondamentale per dare priorità ai problemi e comprendere il rischio finanziario. Ad esempio, la dashboard 'Analisi del volume delle scritture di rettifica' diventa molto più efficace quando può distinguere tra un volume elevato di rettifiche di basso valore e un volume ridotto di rettifiche di valore elevato. Aiuta a focalizzare l'attenzione sulle transazioni finanziariamente rilevanti. Perché è importante Quantifica l'impatto finanziario delle transazioni, consentendo analisi basate sulla materialità, come l'identificazione di scritture di rettifica di valore elevato. Dove trovare Disponibile nella tabella delle posizioni documento, BSEG (DMBTR). Esempi 1500.75-25000.00123456.00 | |||
| Numero Documento BELNR | L'identificatore univoco per un documento contabile all'interno di un esercizio e di una società. | ||
| Descrizione Il numero del documento contabile è la chiave primaria per le registrazioni finanziarie in SAP. A ogni prima nota, fattura o documento di pagamento viene assegnato un numero univoco. Sebbene non venga utilizzato solitamente per l'analisi di processo ad alto livello, il numero del documento è prezioso per le funzionalità di drill-down. Da una dashboard di Process Mining, gli analisti possono usare il numero del documento per tornare direttamente alla transazione specifica in SAP per un'indagine dettagliata delle anomalie, come una scrittura di rettifica di importo elevato o una voce di riconciliazione ritardata. Fornisce un collegamento diretto dall'insight alla transazione di origine. Perché è importante Offre un collegamento diretto alla transazione di origine in SAP, consentendo un'analisi drill-down dettagliata dalla vista di processo alle singole voci contabili. Dove trovare Situato nella tabella BKPF (BELNR) come chiave primaria. Esempi 100000456719000001233000008901 | |||
| Tipo Documento BLART | Un codice che classifica i diversi tipi di documenti contabili. | ||
| Descrizione Il Tipo documento viene utilizzato in SAP per distinguere tra varie transazioni aziendali, come fatture fornitori (KR), pagamenti clienti (DZ) e registrazioni di contabilità generale (SA). Controlla anche proprietà come l'intervallo di numerazione dei documenti. Per l'analisi di chiusura di fine periodo, il tipo documento è un filtro potente. Può essere utilizzato per isolare tipi specifici di attività, come ratei, accantonamenti o scritture di storno. Ciò aiuta ad analizzare il volume e l'impatto finanziario di diverse transazioni legate alla chiusura e può essere utilizzato per definire attività specifiche nel modello di processo. Perché è importante Aiuta a classificare e filtrare le transazioni, rendendo possibile isolare e analizzare attività specifiche come ratei, storni o registrazioni intercompany. Dove trovare Situato nella tabella di testata del documento, BKPF (BLART). Esempi SAABKR | |||
| Tipo registrazione contabile JournalEntryType | Una classificazione delle scritture contabili, come 'Standard', 'Rettifica', 'Rateo' o 'Storno'. | ||
| Descrizione Si tratta di un attributo derivato che categorizza i documenti finanziari in base allo scopo aziendale all'interno del processo di chiusura. Viene spesso determinato da una combinazione di Tipo documento (BLART), Motivo storno (STGRD) o specifici conti CoGe utilizzati. Questa classificazione è fondamentale per la dashboard 'Analisi del volume delle scritture di rettifica' e i relativi KPI. Identificando esplicitamente le voci di rettifica o i ratei, gli analisti possono misurarne il volume e il valore, tracciare le tendenze nel tempo e indagarne le cause. Aiuta a distinguere le normali registrazioni operative dalle rettifiche di fine periodo. Perché è importante Categorizza le registrazioni per analisi mirate, consentendo il tracciamento e la misurazione di tipi di voci chiave come rettifiche e ratei, che sono indicatori dello stato di salute del processo. Dove trovare Si tratta di un campo derivato. La logica deve essere definita in base alle regole aziendali, in genere utilizzando campi come il Tipo documento (BLART) da BKPF. Esempi RettificaRateoStornoStandard | |||
| Utente Responsabile USNAM | L'ID utente SAP della persona che ha creato o eseguito la transazione. | ||
| Descrizione Questo campo acquisisce l'utente che ha registrato un documento, eseguito un report o lanciato un programma legato alla chiusura. Identifica l'individuo responsabile di una determinata attività. L'analisi per utente è fondamentale per comprendere la distribuzione del carico di lavoro, identificare le esigenze di formazione e indagare le deviazioni dal processo. Le dashboard che mostrano le attività per utente possono evidenziare membri del team sovraccarichi o persone che potrebbero seguire procedure non standard. Aiuta inoltre nella gestione delle prestazioni e nell'allocazione delle risorse all'interno del team finanziario. Perché è importante Consente l'analisi della distribuzione del carico di lavoro, delle prestazioni del team e l'identificazione di deviazioni di processo legate a singoli individui. Dove trovare Disponibile nella tabella BKPF (USNAM) per la creazione dei documenti. Per i job batch, si trova in TBTCO (SDLUNAME). Esempi JSMITHRDOEFIN_ADMIN | |||
| Anno Fiscale GJAHR | L'esercizio in cui la transazione è stata registrata. | ||
| Descrizione L'Esercizio è un elemento fondamentale per l'organizzazione dei dati finanziari. È un componente chiave dell'ID Case del periodo finanziario e fornisce il contesto essenziale per tutte le transazioni. Sebbene faccia spesso parte dell'ID Case, avere l'Esercizio come attributo separato è utile per l'analisi dei trend a lungo termine. Consente confronti anno su anno dei tempi di ciclo della chiusura, dei volumi di rettifica o di altri KPI, aiutando a identificare miglioramenti o peggioramenti delle prestazioni su più anni. Perché è importante Fornisce il contesto temporale essenziale e consente confronti delle prestazioni anno su anno del processo di chiusura. Dove trovare Disponibile nella tabella di testata documento, BKPF (GJAHR). Esempi 202320242022 | |||
| Data di Completamento Prevista TargetCompletionDate | La scadenza pianificata o la data di scadenza per un'attività o per l'intera chiusura del periodo. | ||
| Descrizione La Data di completamento prevista rappresenta il programma rispetto al quale viene misurato il processo di chiusura del periodo. È la scadenza entro cui completare milestone specifiche o la chiusura finale. Questo attributo è essenziale per qualsiasi analisi relativa alle prestazioni o alla conformità. Viene utilizzato per calcolare il KPI 'Tasso di chiusura del periodo puntuale' e per alimentare la dashboard 'Conformità della chiusura e Task scaduti'. Confrontando l'Event Time effettivo con questa data target, il sistema può determinare se i Task sono in corso, in ritardo o a rischio ritardo, consentendo una gestione proattiva del processo di chiusura. Perché è importante Consente il monitoraggio della conformità e delle prestazioni fornendo una baseline per misurare se le attività di chiusura vengono completate puntualmente, supportando i KPI di consegna puntuale. Dove trovare Si tratta solitamente di anagrafiche gestite in un calendario separato, in uno strumento di closing cockpit (come SAP Financial Closing cockpit) o in un foglio di calcolo. Non fa parte dei dati transazionali. Esempi 2023-12-29T23:59:59Z2024-01-03T17:00:00Z2024-01-02T12:00:00Z | |||
| Dipartimento Department | Il dipartimento funzionale o il centro di costo responsabile dell'attività o della transazione. | ||
| Descrizione Questo attributo identifica il dipartimento aziendale, come 'Finance', 'Sales' o 'Logistics', associato a una transazione. Spesso deriva dai dati anagrafici del Centro di costo collegati a una registrazione o dai dati anagrafici dell'utente. L'analisi per dipartimento supporta la dashboard 'Distribuzione del carico di lavoro del team di chiusura'. Aiuta a capire come le diverse funzioni aziendali contribuiscono al carico di lavoro di fine periodo, in particolare per quanto riguarda l'avvio di transazioni che potrebbero richiedere rettifiche o riconciliazioni in seguito. Può evidenziare aree al di fuori del team finanziario centrale che influiscono sul processo di chiusura. Perché è importante Aiuta ad analizzare il carico di lavoro e l'aderenza ai processi nelle diverse funzioni aziendali, rivelando come i vari dipartimenti influenzano l'efficienza della chiusura finanziaria. Dove trovare Spesso derivato dal Centro di costo (KOSTL) in BSEG o dai dati anagrafici HR dell'utente responsabile. Potrebbe richiedere il join di più tabelle. Esempi Finanza aziendaleContabilità FornitoriFP&A | |||
| È Automatizzato IsAutomated | Un indicatore che specifica se un'attività è stata eseguita da un utente o da un sistema automatizzato. | ||
| Descrizione Questo attributo booleano distingue tra i Task manuali e quelli eseguiti automaticamente dal sistema, come un job batch pianificato per la valutazione della valuta estera o un bot che registra scritture ricorrenti. Questo viene spesso determinato analizzando il nome utente associato alla transazione (ad es. 'BATCHUSER'). Comprendere il livello di automazione è fondamentale per identificare opportunità di miglioramento dell'efficienza. L'analisi di questo attributo aiuta a visualizzare quali parti del processo sono manuali e potenzialmente adatte all'automazione. Aiuta inoltre a valutare accuratamente il carico di lavoro umano escludendo le attività generate dal sistema. Perché è importante Distingue tra attività manuali e di sistema, fondamentale per identificare opportunità di automazione e misurare accuratamente i carichi di lavoro manuali. Dove trovare Si tratta di un attributo derivato. La logica si basa solitamente sul nome utente (USNAM), in cui un elenco di ID utente di sistema o batch noti indica un Task automatizzato. Esempi truefalse | |||
| È Scaduta IsOverdue | Un indicatore calcolato che segnala se un'attività è stata completata oltre la data target pianificata. | ||
| Descrizione Questo attributo booleano confronta l'ora di completamento effettiva di un'attività (EventTime) con la sua scadenza pianificata (TargetCompletionDate). Se l'Event Time è successivo al target, il flag è impostato su true. Questo attributo supporta direttamente la dashboard 'Conformità della chiusura e Task scaduti' e il KPI 'Tasso di chiusura del periodo puntuale'. Fornisce un segnale chiaro e immediato delle deviazioni dal programma, consentendo ai manager di identificare rapidamente i Task in ritardo, comprenderne l'impatto sulla cronologia complessiva e responsabilizzare i team sul rispetto delle scadenze. Perché è importante Fornisce un indicatore chiaro della non conformità alle scadenze, consentendo di identificare rapidamente i Task in ritardo e di misurare le prestazioni in termini di puntualità. Dove trovare Si tratta di un attributo calcolato, elaborato nello strumento di Process Mining confrontando l'Event Time con la Data di completamento prevista. Esempi truefalse | |||
| È una Rilavorazione IsRework | Un indicatore calcolato che identifica le attività che rappresentano una rilavorazione, come uno storno o una riconciliazione respinta. | ||
| Descrizione Questo attributo booleano contrassegna Event o sequenze di Event che indicano cicli inefficienti o correzioni nel processo. Ad esempio, un'attività di 'Revisione riconciliazione' seguita da un'altra 'Registrazione scrittura contabile di rettifica' sullo stesso conto potrebbe essere contrassegnata come rifacimento. Questo attributo è essenziale per quantificare gli sprechi di processo e supporta la dashboard 'Casi di rifacimento nelle riconciliazioni' e il KPI 'Tasso di rifacimento nelle riconciliazioni'. Isolando i rifacimenti, i team possono indagarne le cause profonde, misurare l'impatto sul tempo di ciclo e tracciare l'efficacia delle iniziative di miglioramento del processo volte a fare le cose bene al primo tentativo. Perché è importante Quantifica l'inefficienza del processo contrassegnando le attività che costituiscono correzioni o ripetizioni, aiutando a misurare e ridurre gli sforzi sprecati. Dove trovare Si tratta di un attributo calcolato. La logica viene definita nello strumento di Process Mining in base a sequenze di attività specifiche (ad es. loop) o attributi (ad es. ReversalReason non è nullo). Esempi truefalse | |||
| Motivo dello Storno ReversalReason | Un codice che indica il motivo per cui un documento contabile è stato stornato. | ||
| Descrizione Quando un documento viene stornato in SAP, è possibile assegnare un codice motivo per spiegare la causa dello storno, ad esempio 'Storno nel periodo corrente' o 'Inserimento errato'. Questo attributo fornisce un contesto fondamentale sul perché si verificano le rilavorazioni. L'analisi dei motivi di storno aiuta a identificare schemi ricorrenti negli errori, come l'inserimento errato di dati o date sbagliate. Queste informazioni possono essere utilizzate per implementare misure preventive, migliorare la formazione o potenziare i controlli di sistema per ridurre il numero di errori e i conseguenti storni, rendendo la chiusura più efficiente. Perché è importante Fornisce una visione diretta delle cause profonde di errori e rifacimenti, aiutando a identificare opportunità di miglioramento del processo e prevenzione degli errori. Dove trovare Situato nella tabella di testata del documento, BKPF (STGRD). Esempi 010205 | |||
| Partner Commerciale VBUND | L'identificatore della società del gruppo affiliata coinvolta in una transazione intercompany. | ||
| Descrizione L'ID Trading Partner viene utilizzato per identificare l'altra società del gruppo che partecipa a una transazione intercompany. Questo è essenziale per la riconciliazione dei conti tra entità legali correlate. Questo attributo supporta direttamente la dashboard 'Flusso di riconciliazione intercompany' e il KPI 'Tempo di ciclo riconciliazione intercompany'. Filtrando le transazioni in cui è presente un Trading Partner, l'analisi può concentrarsi specificamente sull'efficienza e sulla puntualità del processo di riconciliazione intercompany, che spesso rappresenta un punto critico durante la chiusura del periodo. Perché è importante Identifica in modo specifico le transazioni intercompany, consentendo un'analisi focalizzata sul processo di riconciliazione intercompany, spesso complesso e dispendioso in termini di tempo. Dove trovare Si trova nella tabella delle posizioni documento, BSEG (VBUND). Esempi 1000US013000 | |||
| Stato riconciliazione ReconciliationStatus | Lo stato attuale della riconciliazione di un conto, ad esempio 'Aperto', 'In revisione' o 'Approvato'. | ||
| Descrizione Questo attributo traccia lo stato della riconciliazione di un conto mentre attraversa il suo workflow. Indica se una riconciliazione è stata avviata, inviata per la revisione, approvata o rifiutata. Si tratta di un attributo chiave per monitorare l'avanzamento delle attività di riconciliazione in tempo reale. Aiuta a identificare quali riconciliazioni sono bloccate e per quanto tempo, supportando KPI come 'Tempo di ciclo riconciliazione dei conti'. Fornisce visibilità sul processo di approvazione ed è fondamentale per le dashboard che tracciano i colli di bottiglia della riconciliazione e il carico di lavoro del team. Perché è importante Garantisce visibilità sul workflow di riconciliazione, consentendo di tracciare i progressi, identificare i colli di bottiglia e misurare i tempi di revisione e approvazione. Dove trovare Queste informazioni risiedono spesso in uno strumento di riconciliazione separato (ad es. SAP Account Substantiation and Automation by BlackLine) o in un campo di stato personalizzato. Non è solitamente un campo standard in BKPF/BSEG. Esempi Non avviatoIn CorsoApprovatoRifiutato | |||
| Tempo di ciclo chiusura periodo PeriodCloseCycleTime | Il tempo totale trascorso dall'inizio alla fine del processo di chiusura per un singolo periodo finanziario. | ||
| Descrizione Questa metrica calcolata misura la durata end-to-end dell'intera chiusura per un singolo periodo finanziario. In genere viene calcolata come differenza di tempo tra la prima e l'ultima attività registrata in quel periodo. Si tratta di un indicatore chiave di prestazione (KPI) primario per il processo Record to Report. Fornisce una misura ad alto livello dell'efficienza complessiva della chiusura. Le dashboard che visualizzano questa metrica nel tempo sono essenziali per monitorare i progressi verso obiettivi strategici come l'accelerazione della chiusura. Perché è importante Si tratta di un KPI fondamentale che misura l'efficienza e la rapidità complessive della chiusura finanziaria, supportando direttamente gli obiettivi strategici di abbreviare i cicli di chiusura. Dove trovare Si tratta di una metrica calcolata, elaborata nello strumento di Process Mining calcolando la differenza tra l'Event Time massimo e minimo per ogni periodo finanziario (CaseId). Esempi 5 giorni, 4 ore e 30 minuti6,2 giorni120,5 ore | |||
Attività di Record to Report - chiusura del periodo e riconciliazione
| Activity | Descrizione | ||
|---|---|---|---|
| Bilancio d'esercizio generato | Indica il momento in cui vengono generati i bilanci ufficiali, come il Conto Economico e lo Stato Patrimoniale. Questa attività viene solitamente rilevata monitorando l'esecuzione di uno specifico programma di reporting. | ||
| Perché è importante Questa è una milestone importante che segna la fine dell'elaborazione dei dati e l'inizio della fase finale di revisione e approvazione. Il tempo trascorso da questo Event all'approvazione è un KPI fondamentale. Dove trovare Dedotto dai log di audit di sistema, come STAD, che registrano l'esecuzione del programma di generazione del bilancio d'esercizio, solitamente tramite la transazione F.01. Acquisisci Dai log di sistema (STAD) che tracciano l'esecuzione della transazione di bilancio F.01. Tipo di evento inferred | |||
| Esecuzione valutazione valuta estera | Rappresenta l'esecuzione di un programma per rivalutare le partite aperte e i saldi registrati in valuta estera utilizzando i tassi di cambio di fine periodo. Viene solitamente eseguito come job batch tra le fasi di chiusura del periodo. | ||
| Perché è importante Si tratta di un passaggio fondamentale per garantire un reporting finanziario accurato nelle organizzazioni multinazionali. L'analisi dei tempi e della durata aiuta a identificare opportunità di automazione e ottimizzazione delle prestazioni. Dove trovare Acquisito dai log di esecuzione del programma di valutazione valuta estera, come FAGL_FCV o F.05. I dettagli dei job batch dalle tabelle come TBTCO e TBTCP forniscono i timestamp di esecuzione. Acquisisci Dai log dei job batch (tabella TBTCO) per il programma FAGL_FC_VALUATION o SAPF100. Tipo di evento explicit | |||
| Inizio riconciliazione conto | Rappresenta l'inizio del processo di riconciliazione per un set di conti CoGe del periodo. In SAP ECC standard, questo non è un Event discreto e viene solitamente dedotto da attività correlate, come la prima esecuzione di un report chiave. | ||
| Perché è importante Questa attività stabilisce una milestone fondamentale per misurare la durata dell'intera fase di riconciliazione. Capire quando inizia la riconciliazione è essenziale per il KPI 'Tempo di ciclo riconciliazione dei conti'. Dove trovare Questo Event non viene registrato in modo esplicito. Deve essere dedotto da altre fonti di dati, come l'audit log di sistema (transazione STAD) per la prima esecuzione di un report di visualizzazione saldi come FAGLB03 o FS10N. Acquisisci Dedotto dalla prima esecuzione delle transazioni di reportistica pertinenti (es. FAGLB03) nei log di sistema. Tipo di evento inferred | |||
| Periodo aperto per registrazioni | Segna l'inizio ufficiale di un periodo contabile, consentendo la registrazione delle transazioni nel libro giornale. Si tratta di una modifica di configurazione esplicita eseguita da un utente autorizzato per aprire un periodo specifico alle registrazioni in uno o più codici società. | ||
| Perché è importante Questa attività funge da start event definitivo per ogni caso del processo di chiusura del periodo. Analizzare le tempistiche a partire da questo punto permette di comprendere l'intero ciclo di vita del periodo finanziario. Dove trovare Le modifiche ai periodi di registrazione tramite la transazione OB52 vengono registrate. È possibile estrarle analizzando i documenti di modifica per la tabella di configurazione sottostante T001B, solitamente utilizzando le tabelle CDHDR e CDPOS. Acquisisci Estrazione dai documenti di modifica (CDHDR/CDPOS) per la tabella T001B. Tipo di evento explicit | |||
| Periodo chiuso per registrazioni | Rappresenta la chiusura formale di un periodo di registrazione, che impedisce ulteriori scritture contabili operative. Garantisce l'integrità dei dati finanziari per il periodo chiuso ed è una modifica di configurazione esplicita. | ||
| Perché è importante Rappresenta l'evento finale del processo di chiusura del periodo. È indispensabile per calcolare con precisione il tempo di ciclo totale della chiusura contabile e misurare il rispetto delle scadenze. Dove trovare La chiusura dei periodi tramite la transazione OB52 viene registrata. Queste modifiche possono essere rilevate analizzando i documenti di modifica (tabelle CDHDR e CDPOS) per la tabella di configurazione T001B. Acquisisci Estrazione dai documenti di modifica (CDHDR/CDPOS) per la tabella T001B. Tipo di evento explicit | |||
| Registrazione scrittura di rettifica | Viene registrata una scrittura di rettifica per correggere i saldi dei conti al termine dell'elaborazione iniziale delle transazioni del periodo. Questo evento viene acquisito come una normale registrazione di documento contabile in SAP. | ||
| Perché è importante Questo elemento è fondamentale per l'analisi del volume delle scritture di rettifica. Un numero elevato di rettifiche indica spesso problemi di accuratezza nei processi a monte ed è un obiettivo primario per le iniziative di ottimizzazione. Dove trovare Si trovano nelle tabelle BKPF e BSEG. Queste voci sono solitamente identificate da un tipo documento specifico (BKPF-BLART) riservato alle rettifiche, o dalla registrazione in periodi di chiusura speciali (da 13 a 16). Acquisisci Filtrare BKPF per documenti registrati in periodi speciali o con tipi documento di rettifica. Tipo di evento explicit | |||
| Bilancio di verifica generato | Indica l'esecuzione di un report per generare il bilancio di verifica. È un passaggio fondamentale per verificare che il totale dei dare corrisponda al totale dei avere prima di creare il bilancio ufficiale. | ||
| Perché è importante Rappresenta un controllo di qualità critico prima del reporting finale. Le esecuzioni ripetute di questo report possono indicare che problemi nei dati sottostanti vengono rilevati e corretti, causando potenzialmente ritardi. Dove trovare Dedotto dai log di audit di sistema, come la transazione STAD, che registra l'esecuzione di transazioni di reportistica del bilancio di verifica come S_ALR_87012277 o F.01. Acquisisci Dai log di sistema (STAD) che tracciano l'esecuzione dei codici transazione di reportistica. Tipo di evento inferred | |||
| Documento intercompany compensato | Questa attività contrassegna la chiusura di una partita aperta tra due diverse società, a indicare che una transazione intercompany è stata regolata o riconciliata. Viene registrata come una scrittura finanziaria esplicita in SAP, solitamente un documento di compensazione. | ||
| Perché è importante I ritardi nella compensazione delle partite intercompany sono un collo di bottiglia comune. Monitorare questa attività è fondamentale per misurare e migliorare i tempi di ciclo della riconciliazione intercompany. Dove trovare Identificato dai documenti contabili in BKPF e BSEG. Un documento di compensazione collega e chiude le partite aperte; la sua data di compensazione (BSEG-AUGDT) funge da timestamp dell'evento. Le transazioni intercompany sono identificate dai campi del partner commerciale. Acquisisci Identificare i documenti di compensazione in BKPF/BSEG relativi a partite con partner commerciali. Tipo di evento explicit | |||
| Esecuzione compensazione GR/IR effettuata | L'esecuzione del programma di compensazione automatica per il conto Entrata merci/Entrata fattura (EM/EF). Questo programma abbina le entrate merci e le entrate fatture corrispondenti e compensa le partite tra loro. | ||
| Perché è importante Il conto EM/EF è una fonte frequente di problemi di riconciliazione. Il monitoraggio di questa attività garantisce che la fase automatica venga eseguita correttamente e aiuta a quantificare il volume delle eccezioni che richiedono un follow-up manuale. Dove trovare L'esecuzione viene acquisita nei log dei job batch (transazione SM37). Il programma è solitamente SAPF124, eseguito tramite la transazione F.13. Le tabelle dei log dei job come TBTCO forniscono i timestamp necessari. Acquisisci Dai log dei job batch (tabella TBTCO) per il programma di compensazione SAPF124. Tipo di evento explicit | |||
| Registrazione rateo o accantonamento | Rappresenta la registrazione di un movimento contabile per ratei, risconti o accantonamenti, solitamente inseriti verso la fine del periodo. Non è un tipo di evento distinto in SAP, ma viene dedotto identificando specifiche registrazioni in base alle loro caratteristiche. | ||
| Perché è importante Isolare queste voci aiuta ad analizzare il sottoprocesso di gestione delle stime. Un volume elevato o frequenti rettifiche ai ratei possono indicare aree in cui è necessario migliorare i processi. Dove trovare Ricavato dalle tabelle dei documenti contabili BKPF e BSEG. Le voci possono essere identificate filtrando per uno specifico tipo di documento (BKPF-BLART), un conto CoGe univoco (BSEG-HKONT) o parole chiave nel testo della testata (BKPF-BKTXT). Acquisisci Filtrare le tabelle BKPF/BSEG per tipo documento, conti Co.Ge. specifici o campi di testo. Tipo di evento inferred | |||
| Riconciliazione revisionata | Indica che la riconciliazione di un conto o di un gruppo di conti è stata revisionata e confermata. In SAP ECC standard, questo evento non è registrato esplicitamente e viene spesso gestito tramite controlli offline o soluzioni personalizzate. | ||
| Perché è importante Monitorare la tempistica delle revisioni è importante per comprendere i colli di bottiglia nelle fasi di controllo e supervisione del processo di chiusura. Può evidenziare ritardi causati dalla disponibilità del management o dalla necessità di rilavorazioni. Dove trovare Queste informazioni non sono disponibili nelle tabelle ECC standard. Sarebbe necessaria una soluzione personalizzata, come un campo di stato in una tabella Z personalizzata, un semplice workflow o l'integrazione con uno strumento di riconciliazione di terze parti specializzato. Acquisisci Acquisizione del cambio di stato da un workflow personalizzato o da una tabella Z, se implementati. Tipo di evento inferred | |||
| Scrittura di storno registrata | Questa attività rileva la registrazione di un documento che storna una prima nota precedentemente registrata, spesso per correggere un errore. SAP crea un collegamento esplicito tra il documento di storno e il documento originale. | ||
| Perché è importante Un numero elevato di storni indica potenziali problemi di accuratezza nell'inserimento dati o nei controlli di processo. Monitorare questi eventi aiuta a misurare i tassi di "buona la prima" e a individuare le aree da migliorare. Dove trovare I documenti di storno si trovano nella tabella BKPF. Sono spesso creati con la transazione FB08 e contengono un riferimento al numero del documento stornato nel campo BKPF-STBLG. Acquisisci Identificare i documenti in cui BKPF-STBLG è popolato o creati tramite codici transazione di storno. Tipo di evento explicit | |||
Guide all'Estrazione
Fasi
- Accesso allo strumento SAP Query: Acceda al sistema SAP ECC. Utilizzi il codice transazione
SQVI(QuickViewer). 2. Creazione nuova query: Inserisca un nome per la query, ad esempioZ_R2R_PERIOD_CLOSE, e clicchi su 'Crea'. Nel pop-up, fornisca un titolo descrittivo come 'Estrazione chiusura di periodo Record to Report'. Come 'Origine dati', selezioni 'Table join'. 3. Definizione dei join tra tabelle: Aggiunga la tabella principaleBKPF(Testata documento contabile). Successivamente, aggiunga la tabellaBSEG(Posizione documento contabile). SAP proporrà automaticamente le condizioni di join (MANDT, BUKRS, BELNR, GJAHR), che dovrà verificare e accettare. Per le attività di apertura e chiusura periodo, sarà necessaria una query separata che uniscaCDHDReCDPOS. 4. Selezione dei campi di output (Campi elenco): Passi alla scheda 'Selezione campi elenco'. Selezioni i campi necessari per il log degli eventi dalle tabelle disponibili. IncludaBKPF-BUKRS,BKPF-BELNR,BKPF-GJAHR,BKPF-MONAT,BKPF-CPUDT,BKPF-CPUTM,BKPF-USNAM,BKPF-BLART,BSEG-HKONT,BSEG-DMBTRe altri secondo necessità. 5. Definizione parametri di input (Campi di selezione): Passi alla scheda 'Campi di selezione'. Scelga i campi che verranno utilizzati per filtrare i dati durante l'esecuzione. I più importanti sonoBKPF-BUKRS(Società) eBKPF-GJAHR(Esercizio). Può aggiungere ancheBKPF-MONAT(Periodo di registrazione) eBKPF-BLART(Tipo documento). 6. Creazione varianti per ogni attività: Poiché SQVI non può combinare diverse selezioni di dati (come un UNION in SQL), deve eseguire la query più volte. Per ogni attività (es. 'Registrazione rateo o accantonamento'), esegua la query e inserisca valori di filtro specifici nella schermata di selezione, come l'elenco dei tipi documento pertinenti. Salvi questi criteri come variante. Ripeta l'operazione per ogni attività da estrarre. 7. Esecuzione ed estrazione dati: Esegua la query per ogni variante creata. Questo avvierà la query con i filtri specifici per quell'attività. 8. Esportazione dei risultati: Nella schermata dei risultati, esporti i dati in un file locale. Il formato più comune è 'Foglio elettronico'. Ripeta l'esportazione per ogni variante. 9. Combinazione e trasformazione dei dati: Apra i file esportati in un foglio di calcolo o utilizzi uno strumento di scripting. Combini manualmente i dati di tutti i file in un unico file master. 10. Aggiunta di colonne costanti e calcolate: Nel file combinato, aggiunga le colonne non estratte direttamente dalle tabelle SAP. IncludaActivityName(impostato manualmente in base alla variante di origine),FinancialPeriod(concatenando Esercizio e Periodo),EventTime(combinando i campi data e ora),SourceSystemeLastDataUpdate. 11. Formattazione per l'upload: Si assicuri che il file finale sia salvato in formato CSV o Excel con le intestazioni di colonna corrette richieste dal Suo strumento di process mining. Verifichi i tipi di dati e la formattazione prima di caricarlo.
Configurazione
- Origine dati: Table Join in SAP Query (SQVI). Le tabelle chiave sono BKPF, BSEG, CDHDR e CDPOS. * Intervallo temporale: Si consiglia di estrarre i dati per un periodo di almeno 3-6 periodi contabili completi per identificare i modelli ricorrenti. Impostate il filtro su
BKPF-GJAHR(Esercizio) eBKPF-MONAT(Periodo). * Filtro Società: Filtrate sempre perBKPF-BUKRS(Società) per limitare il volume dei dati e focalizzare l'analisi su specifiche entità legali. L'estrazione simultanea per tutte le società non è raccomandata. * Filtro Tipo documento: Utilizzate i filtri suBKPF-BLART(Tipo documento) per isolare attività specifiche come ratei, rettifiche o storni. Sarà necessario identificare i tipi documento pertinenti per la vostra organizzazione. * Prerequisiti: L'utente che esegue l'estrazione deve essere autorizzato a utilizzare la transazioneSQVIe avere accesso in visualizzazione alle tabelle finanziarie rilevanti (es. oggetto di autorizzazione S_TABU_DIS). * Considerazioni sulle prestazioni: Il join tra BKPF e BSEG può richiedere molte risorse. Eseguite l'estrazione durante le ore non di punta. Evitate intervalli temporali troppo ampi o di lasciare aperto il filtro Società, poiché ciò potrebbe causare problemi di memoria o timeout.
a Query di Esempio 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
*/ Fasi
- Definizione dell'ambito e progettazione: Definisca la logica specifica per identificare ognuna delle 12 attività richieste. Si consulti con i responsabili dei processi aziendali e gli analisti funzionali SAP per confermare i tipi documento, i conti Co.Ge. e i nomi dei programmi associati alle attività di chiusura nel Suo ambiente SAP ECC.
- Creazione del programma ABAP: Utilizzando la transazione
SE38(ABAP Editor), crei un nuovo programma eseguibile, ad esempioZ_PM_R2R_EXTRACTION. Fornisca un titolo descrittivo e imposti il tipo programma su 'Programma eseguibile'. - Definizione della schermata di selezione: Nel programma, definisca una schermata di selezione utilizzando
PARAMETERSeSELECT-OPTIONS. Questa schermata permetterà di specificare l'ambito dell'estrazione, inclusi Società (BUKRS), Esercizio (GJAHR) e Periodo contabile (MONAT), fondamentale per controllare il volume dei dati. - Dichiarazione delle strutture dati: Definisca una struttura di tabella interna per contenere i dati finali del log degli eventi. La struttura deve includere tutti gli attributi richiesti e consigliati:
FinancialPeriod,ActivityName,EventTime,SourceSystem,LastDataUpdate,BUKRS,BELNR,USNAM,HKONT,BLART,DMBTReJournalEntryType. - Implementazione della logica di estrazione: Scriva la logica ABAP principale per selezionare i dati di ciascuna delle 12 attività. Per ogni attività, interroghi le tabelle SAP pertinenti (es. BKPF, BSEG, TBTCO, CDHDR) e popoli una tabella interna intermedia. Utilizzi la logica fornita nella sezione query ABAP come modello.
- Identificazione delle attività dedotte: Per le attività non registrate esplicitamente in SAP standard, come 'Inizio riconciliazione conto' o 'Riconciliazione revisionata', implementi la logica di deduzione concordata. Ciò può includere il controllo della prima esecuzione di un report specifico o l'interrogazione di tabelle personalizzate ('Z-tables') se esistenti.
- Consolidamento dei dati degli eventi: Dopo l'estrazione per le singole attività, aggiunga i record di ogni tabella intermedia alla tabella interna consolidata finale. Verifichi che il campo
EventTimesia popolato correttamente dalla fonte pertinente, come la data/ora di registrazione del documento o di inizio del job. - Standardizzazione e formattazione dei dati: Prima dell'output, standardizzi i campi chiave. Combini esercizio e periodo nell'identificativo
FinancialPeriod. Imposti valori statici perSourceSystemeLastDataUpdate. Si assicuri che i timestamp abbiano un formato coerente. - Sviluppo della funzionalità di output: Aggiunga la funzione per esportare la tabella interna finale. Il metodo più comune consiste nello scrivere i dati in un file CSV o delimitato da tabulazioni sull'Application Server SAP (usando
OPEN DATASET) o permettere il download diretto sul PC dell'utente (usando il modulo funzioneGUI_DOWNLOAD). - Test e validazione: Testi approfonditamente il programma con un set di dati rappresentativo di più società e periodi. Utilizzi le fasi di validazione per garantire accuratezza e completezza. Perfezioni la logica di selezione in base ai feedback degli esperti funzionali.
- Pianificazione dell'esecuzione (Opzionale): Una volta validato, il programma può essere pianificato come job in background tramite la transazione
SM36. Ciò consente un'estrazione periodica e automatizzata del log degli eventi senza interventi manuali.
Configurazione
- Criteri di Selezione: Il programma deve prevedere una schermata di selezione per filtrare i dati. I filtri principali includono:
Società (BUKRS): Obbligatorio per limitare l'ambito alle entità legali di interesse.Esercizio (GJAHR): Obbligatorio per definire l'anno principale dell'estrazione.Periodo di registrazione (MONAT): Obbligatorio per selezionare i periodi contabili specifici.
- Configurazione specifica per attività: Molte selezioni dipendono dalla configurazione specifica di SAP. Queste dovrebbero essere configurabili come parametri o costanti all'interno del programma:
Tipi documento per ratei/accantonamenti: Un elenco di tipi documento (BLART) utilizzati per identificare le registrazioni di ratei e accantonamenti.Tipi documento per scritture di rettifica: Un elenco di tipi documento utilizzati per identificare le rettifiche di prima nota.Nomi job in background/programmi: I nomi tecnici dei programmi utilizzati per la Valutazione valuta estera (es.FAGL_FCV), la compensazione GR/IR (es.SAPF124), i report del Bilancio di verifica e la generazione del Bilancio d'esercizio (es.RFBILA00).
- Intervallo temporale: Sebbene la selezione principale avvenga per esercizio e periodo, la logica sottostante dovrebbe considerare la data e l'ora complete degli eventi. Per un'analisi iniziale, si consiglia di estrarre i dati relativi agli ultimi 3-6 periodi contabili conclusi.
- Prestazioni: Per ambienti SAP di grandi dimensioni, le prestazioni del programma sono fondamentali. Assicuratevi che le selezioni del database utilizzino i campi indice, specialmente sulle tabelle
BKPFeBSEG. Evitate di selezionare tutti i campi (SELECT *) e, se necessario, elaborate i dati in pacchetti gestibili. - Autorizzazioni: L'utente o l'account di servizio che esegue il programma deve essere autorizzato ad accedere a tutte le tabelle interrogate (
BKPF,BSEG,TBTCO,TBTCP,CDHDR,CDPOS) e ad eseguire transazioni comeSE38(per lo sviluppo) eSM37/SM36(per la pianificazione e il monitoraggio).
a Query di Esempio 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. Fasi
- Raccolta dei prerequisiti: Ottenga le credenziali di accesso in sola lettura per il database SAP ECC sottostante. Identifichi lo schema di database corretto, solitamente
SAPSR3o un nome simile fornito dall'amministratore del database. - Identificazione della configurazione di sistema: Consulti il team SAP Finance per determinare le
Società(BUKRS) e i periodi contabili da analizzare. È fondamentale identificare iTipi documento(BLART) specifici utilizzati per 'Registrazione rateo o accantonamento', 'Registrazione scrittura di rettifica' e transazioni 'Intercompany' nel Suo sistema. - Verifica dei nomi di programmi e job: Confermi i nomi dei programmi per i job batch principali, come la Valutazione valuta estera (es.
FAGL_FCV), la compensazione GR/IR (es.SAPF124), i report del Bilancio di verifica (es.RFBILA00) e la generazione del Bilancio d'esercizio (es.RFBILA00). Può trovarli controllando i job pianificati nella transazioneSM37. - Personalizzazione della query SQL: Copi la query SQL fornita in un editor di testo o in un client SQL. Sostituisca le variabili segnaposto
{{start_date}},{{end_date}}e{{company_codes}}con i valori effettivi per l'analisi. Aggiorni gli elenchi dei tipi documento e dei nomi dei programmi in base alle informazioni raccolte. - Connessione al database: Utilizzi uno strumento client SQL standard, come DBeaver, SQL Server Management Studio o Oracle SQL Developer, per connettersi al database SAP con le credenziali ottenute.
- Esecuzione della query: Esegua la query SQL personalizzata sul database. A seconda dell'intervallo di date e delle dimensioni delle tabelle finanziarie, l'operazione potrebbe richiedere molto tempo.
- Revisione dei risultati iniziali: Al termine della query, effettui una rapida revisione dell'output. Verifichi che il numero di righe sia ragionevole, che tutte le colonne siano presenti e che i diversi valori di
ActivityNamesiano inclusi. - Esportazione dei dati: Esporti il set di risultati completo dal client SQL in un file CSV. Si assicuri che il file sia salvato con codifica UTF-8 per evitare problemi con i caratteri.
- Preparazione per l'upload: Prima di caricare i dati nello strumento di process mining, verifichi che le intestazioni delle colonne nel file CSV corrispondano esattamente ai nomi degli attributi richiesti (
FinancialPeriod,ActivityName,EventTime, ecc.). Verifichi inoltre che la colonnaEventTimeutilizzi un formato timestamp coerente, comeYYYY-MM-DD HH:MI:SS.
Configurazione
- Credenziali del database: È necessario un utente database con permessi di sola lettura per le tabelle core di SAP Finance e di sistema, incluse
BKPF,BSEG,TBTCO,CDHDReCDPOS. - Intervallo temporale: Consigliamo di estrarre i dati per almeno 3-6 periodi contabili completi per acquisire variazioni di processo significative. Tenete presente che intervalli più ampi aumenteranno sensibilmente i tempi di esecuzione della query.
- Società (
BUKRS): Filtrate sempre per un elenco specifico di società. Eseguire la query per tutte le società su un sistema di grandi dimensioni non è fattibile e causerebbe problemi di prestazioni. - Tipi documento (
BLART): L'identificazione delle tipologie di scritture contabili, come ratei e rettifiche, dipende esclusivamente dalla configurazione SAP della vostra organizzazione. È necessario inserire i codici dei tipi documento corretti nelle clausoleWHEREdella query per una classificazione accurata delle attività. - Nomi programmi e job: La query utilizza nomi di programmi comuni per le fasi di chiusura automatizzate. Il vostro sistema potrebbe utilizzare programmi personalizzati (wrapper) o nomi di job differenti. Verificateli nella transazione
SM37e aggiornate la query di conseguenza. - Considerazioni sulle prestazioni: Questa query accede a tabelle molto voluminose, in particolare
BSEGeCDPOS. Si raccomanda vivamente di eseguire l'estrazione al di fuori dell'orario lavorativo per non influire sulle prestazioni del sistema. L'applicazione di filtri ristretti per data e società è il modo più efficace per gestire i tempi di esecuzione.
a Query di Esempio 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'
;