Votre template de données Record to Report, clôture de période et rapprochement
Votre template de données Record to Report, clôture de période et rapprochement
- Attributs recommandés à collecter
- Activités clés à suivre pour l’analyse du processus
- Guide d’extraction des données, étape par étape
Record to Report - Attributs de la clôture de période et du rapprochement
| Nom | Description | ||
|---|---|---|---|
| Période financière FinancialPeriod | Identifiant unique du cycle de reporting financier, tel que « 2023-12 » pour décembre 2023, qui sert de cas pour le processus de clôture de fin de période. | ||
| Description La période financière constitue l’identifiant de cas principal qui regroupe toutes les activités liées à la clôture des comptes pour une période donnée, généralement un mois calendaire ou une période fiscale. Chaque période financière représente une exécution complète du processus de fin de période. Dans l’analyse de Process Mining, cet attribut permet de suivre tout le cycle de vie d’une clôture périodique, de son lancement au reporting final. Il sert à comparer les durées de cycle entre différentes périodes, à identifier les parcours récurrents et à analyser les variations entre les clôtures mensuelles, trimestrielles et annuelles. En considérant chaque période comme un cas, les analystes peuvent mesurer la performance dans le temps et repérer les goulots d’étranglement systémiques. Pourquoi c’est important Il s’agit de l’identifiant de cas essentiel qui structure l’analyse, permet de comparer les performances de clôture périodique dans le temps et d’identifier les tendances ou les problèmes récurrents. Où les obtenir Dérivé de la combinaison des champs Exercice fiscal (GJAHR) et Période de comptabilisation (MONAT) des en-têtes de documents financiers, généralement dans des tables telles que BKPF. Exemples 2023-122024-032024-T1 | |||
| Activité ActivityName | Nom d’une étape ou d’une tâche métier précise exécutée dans le processus de clôture périodique, telle que « Adjusting Journal Entry Posted » ou « Period Closed For Posting ». | ||
| Description Cet attribut représente un événement ou une tâche unique du processus de clôture périodique et de rapprochement de bout en bout. Les activités constituent les éléments de base de la carte du processus et montrent la séquence des travaux réalisés. Elles sont souvent dérivées d’une combinaison de codes de transaction, de types de documents ou de changements de statut dans SAP S/4HANA. L’analyse des activités est fondamentale en Process Mining. Elle aide à visualiser le déroulement du processus, à repérer les écarts par rapport à la procédure standard, à détecter les goulots d’étranglement lorsque certaines activités prennent trop de temps et à comprendre la fréquence ainsi que l’ordre des tâches. Elle est essentielle pour des Dashboards tels que Period Close Variant Analysis et Current Period Close Status. Pourquoi c’est important Définit les étapes du processus, constitue la base de la carte du processus et permet d’analyser son déroulement, ses écarts et ses goulots d’étranglement. Où les obtenir Dérivé de différentes sources, telles que les codes de transaction (TCODE), les types de documents (BLART) ou les champs de statut des tables liées aux tâches de clôture financière, par exemple dans SAP Financial Closing Cockpit. Exemples Période ouverte aux écrituresRapprochement de compte commencéÉtats financiers générésRapprochement intersociétés commencé | |||
| Heure de début EventTime | Horodatage indiquant le moment où une activité précise a commencé ou a été enregistrée dans le système. | ||
| Description L’heure de l’événement indique la date et l’heure précises auxquelles une activité s’est produite. Pour les écritures financières, il s’agit souvent de l’heure de création (CPUTM) ou de la date de comptabilisation (BUDAT) d’un document. Pour les changements de statut ou les tâches, il s’agit de l’horodatage auquel la modification a été enregistrée. Cet attribut est essentiel pour ordonner les activités chronologiquement et constitue la base de toutes les analyses temporelles. Il sert à calculer les durées de cycle entre les activités, la durée de tâches précises et la durée globale du processus de bout en bout. Il prend directement en charge des KPI tels que Average Period Close Cycle Time et Avg Reconciliation Approval Time. Pourquoi c’est important Cet horodatage obligatoire permet d’ordonner les événements chronologiquement et constitue la base de tous les calculs de durée et de performance. Où les obtenir Provient de champs d’horodatage tels que la date de création (CPUDT) et l’heure de création (CPUTM) dans des tables comme BKPF, ou de champs de date de modification dans différentes tables de statut, par exemple CDHDR et CDPOS. Exemples 2023-12-28T09:15:30Z2024-01-02T14:00:12Z2024-01-05T11:21:00Z | |||
| Code société CompanyCode | Identifiant unique d’une entité juridique ou d’une société au sein de l’organisation SAP. | ||
| Description Le code société représente une unité comptable indépendante au sein d’une entreprise, pour laquelle il est possible de créer un ensemble complet et autonome de comptes. Toutes les activités de clôture de fin de période sont réalisées au niveau du code société. Il s’agit d’une dimension organisationnelle fondamentale pour l’analyse financière. Dans le Process Mining, elle permet de comparer le processus de clôture entre différentes entités juridiques. Le Dashboard « Period Close Variant Analysis » utilise le code société pour repérer les incohérences et encourager la standardisation des procédures de clôture. Pourquoi c’est important Fournit un contexte organisationnel essentiel, qui permet de comparer les processus entre différentes entités juridiques afin d’identifier les écarts et les meilleures pratiques. Où les obtenir Présent dans pratiquement toutes les tables financières de SAP, notamment dans la table d’en-tête BKPF (champ BUKRS). Exemples 10001710US01DE01 | |||
| Date cible d’achèvement TargetCompletionDate | Date prévue ou date limite pour achever une activité essentielle, comme la production des états financiers. | ||
| Description La date cible d’achèvement représente l’échéance interne ou externe d’une étape précise du processus de clôture de fin de période. Il s’agit de la date à laquelle une tâche est censée être terminée. Cet attribut est essentiel pour mesurer le respect du calendrier et la performance par rapport aux échéances. Il constitue la base du Dashboard « Reporting Deadline Adherence » et du KPI « Financial Statement On-Time Rate », qui comparent cette date cible à Pourquoi c’est important Permet d’analyser la performance par rapport aux échéances et de mesurer puis d’améliorer le taux d’achèvement dans les délais des activités de clôture essentielles. Où les obtenir Ces données se trouvent souvent dans un système de gestion des tâches ou de planification, comme SAP Financial Closing cockpit, où les listes de tâches de clôture sont définies avec des dates de fin prévues. Exemples 2024-01-05T23:59:59Z2024-04-04T23:59:59Z2024-07-05T23:59:59Z | |||
| Heure de fin EndTime | Horodatage indiquant le moment où une activité a été terminée. | ||
| Description L’heure de fin marque l’achèvement d’une tâche. Dans certains cas, elle peut être identique à l’heure de début pour les événements instantanés enregistrés dans le système. Pour les activités dont la durée est mesurable, elle correspond à l’horodatage de finalisation. Associé à l’heure de début, cet attribut est essentiel pour calculer le Pourquoi c’est important Permet de calculer la durée des activités, ou Processing Time, ce qui est essentiel pour identifier les goulots d’étranglement et analyser l’efficacité. Où les obtenir Comme l’heure de début, cette valeur peut provenir de différents champs d’horodatage. Pour certaines activités, elle peut être identique à l’heure de début. Pour d’autres, elle peut correspondre à une date distincte de fin ou de modification dans les tables applicatives ou les journaux de modification, CDHDR et CDPOS. Exemples 2023-12-28T09:16:10Z2024-01-02T17:30:00Z2024-01-05T11:21:00Z | |||
| Numéro de compte général GlAccountNumber | Identifiant d’un compte donné dans le grand livre général. | ||
| Description Le numéro de compte du grand livre général (GL) identifie les comptes utilisés pour enregistrer les opérations financières, comme la trésorerie, les dettes fournisseurs ou les produits. De nombreuses activités de clôture de fin de période, telles que les rapprochements et les écritures d’ajustement, sont directement liées à des comptes généraux précis. Cet attribut est essentiel pour analyser les processus financiers dans le détail. Le Dashboard « Adjusting Journal Entry Analysis » l’utilise pour afficher le volume des ajustements par compte et ainsi repérer les zones problématiques. Le KPI « Avg GL Account Reconciliation Time » s’appuie également sur cet attribut pour identifier les retards liés à certains comptes. Pourquoi c’est important Relie les activités du processus à des comptes financiers précis, ce qui permet d’analyser en détail les rapprochements et les écritures comptables afin d’identifier les causes profondes des problèmes. Où les obtenir Présent dans les tables de postes des documents financiers, principalement BSEG (champ HKONT) ou dans la table de journal universel ACDOCA de S/4HANA. Exemples 113100004000000073000000 | |||
| Numéro de document DocumentNumber | Identifiant unique d’un document financier, tel qu’une écriture comptable. | ||
| Description Le numéro de document est une clé unique attribuée par SAP à chaque enregistrement financier. Il constitue la référence principale pour suivre et auditer les opérations individuelles qui composent les activités du processus de clôture. Bien qu’il ne s’agisse pas en soi d’un identifiant de cas, il fournit un lien essentiel vers le système source. Les analystes peuvent utiliser le numéro de document pour passer d’une vue de Process Mining aux détails de l’opération correspondante dans SAP S/4HANA et analyser les causes profondes. Il est particulièrement utile pour examiner des écritures d’ajustement ou des écritures de rapprochement précises. Pourquoi c’est important Fournit une référence directe vers l’opération sous-jacente dans SAP, ce qui facilite l’exploration détaillée et l’audit depuis le modèle de processus. Où les obtenir Situé dans la table d’en-tête des documents financiers BKPF (champ BELNR) et dans des tables de postes telles que BSEG ou ACDOCA. Exemples 100000045190000001300000023 | |||
| Statut du rapprochement ReconciliationStatus | Statut d’une activité de rapprochement de compte, par exemple « Open », « In Progress » ou « Approved ». | ||
| Description Cet attribut suit l’état du processus de rapprochement pour un compte ou une tâche donnée. Il indique si un rapprochement a été commencé, soumis pour révision, approuvé ou rejeté. Les changements de statut constituent des événements essentiels du processus. Il est fondamental pour le Dashboard « Reconciliation Rework Analysis ». L’analyse de la séquence des statuts permet d’identifier les situations dans lesquelles le statut « Approved » est suivi de nouveaux ajustements, ce qui révèle une reprise. Cet attribut contribue également au KPI « First-Pass Reconciliation Rate » en indiquant quels rapprochements sont approuvés sans rejet ni réouverture préalable. Pourquoi c’est important Suit l’avancement et le résultat des tâches de rapprochement, ce qui permet d’identifier les reprises, de mesurer les taux d’approbation et d’analyser les goulots d’étranglement. Où les obtenir Ces informations sont généralement stockées dans les tables associées à l’outil de rapprochement utilisé, comme SAP Financial Closing cockpit ou SAP Account Substantiation and Automation by BlackLine. Exemples Non commencéEn préparationApprouvéRejeté | |||
| Utilisateur responsable ResponsibleUser | Identifiant de l’utilisateur qui a exécuté l’activité ou qui est responsable de la tâche. | ||
| Description Cet attribut identifie le collaborateur qui a effectué une tâche donnée, comme la comptabilisation d’une écriture ou l’approbation d’un rapprochement. Il est généralement enregistré sous la forme d’un identifiant utilisateur dans les journaux système et les en-têtes de documents. L’analyse du processus par utilisateur est essentielle pour comprendre la répartition de la charge, la performance individuelle et les besoins de formation. Le Dashboard Resource Allocation Efficiency utilise directement cet attribut pour visualiser les temps de traitement des activités par utilisateur. Il peut également aider à identifier les tâches susceptibles d’être automatisées en mettant en évidence les tâches très répétitives effectuées par de nombreux utilisateurs. Pourquoi c’est important Relie les activités du processus aux personnes qui les ont réalisées, ce qui permet d’analyser la charge, d’optimiser les ressources et de piloter la performance. Où les obtenir Se trouve généralement dans les tables d’en-tête des documents, telles que BKPF, champ USNAM, ou dans les tables de documents de modification, telles que CDHDR, champ USERNAME. Exemples ABROWNCSMITHDJOHNSON | |||
| Code de transaction TransactionCode | Code de transaction SAP (T-code) utilisé pour exécuter l’activité. | ||
| Description Un code de transaction est un raccourci permettant de lancer une fonction ou un programme précis dans SAP. Par exemple, FB01 sert à enregistrer un document et FAGLB03 à afficher les soldes des comptes généraux. Le T-code fournit souvent un indicateur technique clair de l’activité exécutée. Cet attribut aide à définir les activités du modèle de processus. Il permet de distinguer de manière fiable les activités automatisées des activités manuelles et de comprendre précisément comment une tâche a été exécutée dans le système. L’analyse des T-codes peut révéler des méthodes non standard ou inefficaces utilisées par les collaborateurs. Pourquoi c’est important Fournit une vue technique, au niveau du système, de la manière dont une activité a été exécutée. Cette information est utile pour repérer les étapes manuelles ou automatisées ainsi que les procédures non standard. Où les obtenir Présent dans la table d’en-tête des documents financiers BKPF (champ TCODE) ou dans les journaux des documents de modification. Exemples FB01FAGL_FCVF.13 | |||
| Date réelle d’achèvement ActualCompletionDate | Date réelle à laquelle une activité essentielle ou l’ensemble de la clôture de fin de période a été achevé. | ||
| Description Cet attribut enregistre la date réelle d’achèvement d’une étape importante. Il correspond à l’horodatage de l’approbation finale des états financiers ou de la clôture de la période d’enregistrement. Il est le pendant de Pourquoi c’est important Fournit le calendrier réel des étapes importantes, nécessaire pour mesurer la performance par rapport aux échéances prévues et analyser les retards. Où les obtenir Provient de l’EventTime de la dernière activité d’une séquence, comme « Financial Statements Approved » ou « Period Closed For Posting ». Exemples 2024-01-06T10:00:00Z2024-04-05T17:00:00Z2024-07-04T11:00:00Z | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage indiquant le moment où les données ont été actualisées ou extraites pour la dernière fois du système source. | ||
| Description Cet attribut enregistre la date et l’heure de l’extraction de données la plus récente. Il précise le degré d’actualité des données analysées dans l’outil de Process Mining. Il sert principalement à la gouvernance des données et à informer les utilisateurs. Les utilisateurs d’un Dashboard peuvent voir jusqu’à quelle date l’analyse est à jour, ce qui est particulièrement important pour les Dashboards de suivi quasi temps réel tels que Current Period Close Status. Ils peuvent ainsi savoir s’ils consultent les données du jour, de la veille ou de la semaine précédente. Pourquoi c’est important Informe les utilisateurs sur l’actualité des données et leur permet de comprendre jusqu’à quelle date les analyses du processus sont à jour. Où les obtenir Il s’agit de métadonnées générées et horodatées dans le jeu de données par l’outil d’extraction des données ou l’outil ETL au moment de son exécution. Exemples 2024-06-10T08:00:00Z2024-06-09T08:00:00Z | |||
| Devise du document DocumentCurrency | Code devise des montants figurant dans le document financier. | ||
| Description Cet attribut précise la devise dans laquelle l’opération a été enregistrée, par exemple USD, EUR ou JPY. Il fournit le contexte nécessaire à l’attribut Dans les organisations internationales, l’analyse par devise peut être importante. Elle garantit une interprétation correcte des valeurs monétaires et est nécessaire pour convertir les montants dans une devise de reporting unique lors d’une analyse agrégée. Sans ce contexte, les valeurs de Pourquoi c’est important Fournit le contexte nécessaire à l’interprétation des valeurs monétaires, en particulier dans un environnement multidevise. Où les obtenir Situé dans la table d’en-tête des documents financiers BKPF (champ WAERS). Exemples USDEURJPY | |||
| Durée du cycle de clôture de fin de période PeriodCloseCycleTime | Temps total nécessaire à une période financière, de la première à la dernière activité. | ||
| Description Cette métrique représente la durée de bout en bout du processus de clôture de fin de période pour un cas donné (Financial Period). Elle est calculée comme la différence entre l’horodatage de la toute dernière activité et celui de la toute première activité de cette période. Il s’agit d’un indicateur clé de performance principal, qui alimente directement le Dashboard « Period Close Cycle Time Overview » et le KPI « Average Period Close Cycle Time ». Il fournit une mesure globale de l’efficacité et de la rapidité du processus de clôture, permettant des comparaisons dans le temps et entre différents codes société. Pourquoi c’est important Représente le KPI principal de la durée globale du processus et permet de suivre à un niveau général les gains d’efficacité au fil du temps. Où les obtenir Calculé au niveau du cas : Exemples P5D10H30MP7D2HP6D | |||
| Est automatisé IsAutomated | Indicateur booléen précisant si l’activité a été exécutée par un utilisateur système ou par un processus automatisé. | ||
| Description Cet indicateur distingue les tâches exécutées manuellement par un utilisateur de celles exécutées automatiquement par le système, comme un traitement batch planifié pour la valorisation des devises ou des opérations de lettrage automatisées. Il est généralement dérivé de l’identifiant Cet attribut est essentiel pour comprendre le niveau d’automatisation du processus de clôture. Il aide à repérer les possibilités d’automatisation supplémentaires en mettant en évidence les tâches manuelles à fort volume. Il est également utilisé pour l’analyse des causes profondes afin de déterminer si les goulots d’étranglement se situent dans des étapes manuelles ou automatisées. Pourquoi c’est important Distingue les activités humaines des activités système, ce qui est essentiel pour repérer les possibilités d’automatisation et analyser l’efficacité de chacune. Où les obtenir Il s’agit d’un attribut dérivé, souvent fondé sur une règle appliquée au champ « ResponsibleUser », par exemple la recherche d’identifiants d’utilisateurs système ou batch tels que « BATCHUSER », ou sur le code de transaction. Exemples truefalse | |||
| Est réalisé dans les délais IsOnTime | Indicateur booléen vrai lorsqu’une étape importante est achevée à la date cible ou avant celle-ci. | ||
| Description Cet attribut fournit un résultat binaire simple concernant le respect du calendrier. Il est calculé en comparant Il constitue le calcul central du KPI « Financial Statement On-Time Rate ». Il simplifie le suivi de la performance en transformant la comparaison des dates en un statut clair, « dans les délais » ou « en retard », facilement visualisable dans les Dashboards et les rapports. Il aide à mesurer l’efficacité des initiatives visant à accélérer la clôture. Pourquoi c’est important Simplifie l’analyse du respect des échéances en la ramenant à un résultat clair de réussite ou d’échec, ce qui facilite le suivi et le reporting de la performance dans les délais. Où les obtenir Champ calculé : Exemples truefalse | |||
| Est une reprise de rapprochement IsReconciliationRework | Indicateur booléen vrai lorsqu’une activité de rapprochement est suivie d’un rejet ou de nouveaux ajustements. | ||
| Description Cet attribut calculé identifie les reprises au sein du sous-processus de rapprochement. La logique signale les activités ou les cas dans lesquels un rapprochement est rejeté, rouvert après sa soumission, ou dans lesquels des écritures d’ajustement sont enregistrées alors qu’un rapprochement était supposé terminé pour un compte général. Cet indicateur est spécialement conçu pour alimenter le Dashboard « Reconciliation Rework Analysis » et le KPI « Reconciliation Rework Rate ». Il transforme des séquences de processus complexes en un attribut simple et mesurable qui quantifie l’ampleur des reprises et aide les équipes à améliorer la qualité dès la première exécution. Pourquoi c’est important Quantifie directement les reprises, une forme importante d’inefficacité des processus, et permet de cibler les analyses et les actions d’amélioration de la qualité des rapprochements. Où les obtenir Calculé à partir de la séquence des activités. Par exemple, l’indicateur prend la valeur true si la séquence « Reconciliation Approved » est suivie de « Adjusting Journal Entry Posted » pour le même compte général au cours de la même période. Exemples truefalse | |||
| Montant du document DocumentAmount | Valeur totale de l’écriture financière dans la devise du document. | ||
| Description Cet attribut représente la valeur monétaire associée à un document financier. Pour les ajustements de fin de période, il peut s’agir du montant de la provision ou de la correction enregistrée. L’analyse du montant est utile pour évaluer la matérialité. Elle permet aux analystes de prioriser l’examen des écritures d’ajustement de montant élevé, qui peuvent présenter un risque financier plus important. Elle peut également servir à filtrer la cartographie du processus afin de se concentrer sur les opérations dépassant un certain seuil et de simplifier la vue en ne conservant que les activités les plus significatives. Pourquoi c’est important Ajoute une dimension financière à l’analyse et permet de prioriser les problèmes selon leur impact monétaire et leur matérialité. Où les obtenir Cette valeur doit généralement être agrégée à partir de tables de postes telles que BSEG ou ACDOCA (champ WRBTR, montant dans la devise du document). Exemples 15000.00250.75-500.00 | |||
| Système source SourceSystemId | Identifiant de l’instance ou du client SAP S/4HANA précis à partir duquel les données ont été extraites. | ||
| Description Cet attribut précise le système d’origine des données. Dans les environnements comportant plusieurs instances SAP, par exemple pour différentes régions ou unités opérationnelles, ce champ est essentiel pour distinguer les sources de données. Il sert principalement à la gouvernance des données, à l’audit et au maintien de leur intégrité. Dans l’analyse, il peut être utilisé comme filtre pour comparer les processus entre différents systèmes sources lorsqu’ils sont regroupés dans un même modèle de Process Mining. Pourquoi c’est important Fournit les informations essentielles sur la traçabilité et le contexte des données, en clarifiant leur origine, notamment dans les environnements multisystèmes. Où les obtenir Il s’agit généralement de métadonnées ajoutées lors de l’extraction des données, souvent à partir de l’identifiant système (SY-SYSID) ou du client (SY-MANDT) dans SAP. Exemples S4H_PROD_100S4H_QAS_200ECC_LEGACY_001 | |||
| Type d’écriture comptable JournalEntryType | Type de document financier enregistré, qui distingue les écritures standard, les provisions et les ajustements. | ||
| Description Le type d’écriture comptable, appelé type de document dans la terminologie SAP, est une clé qui classe les documents comptables. Il détermine les types de comptes auxquels un document peut être enregistré et sert à distinguer différentes opérations métier, comme une facture fournisseur (KR), une écriture au grand livre général (SA) ou un paiement client (DZ). Dans le contexte de la clôture de fin de période, cet attribut est essentiel pour isoler certains types d’activités. Il permet notamment aux analystes de se concentrer sur les écritures d’ajustement afin d’alimenter le Dashboard « Adjusting Journal Entry Analysis » et le KPI « Adjusting Journal Entries Count ». Il contribue également au calcul du « Manual Postings Ratio ». Pourquoi c’est important Catégorise les opérations financières et permet de concentrer l’analyse sur certains types d’écritures, notamment les ajustements manuels, qui sont essentiels au bon déroulement de la clôture de fin de période. Où les obtenir Il s’agit d’un champ standard de la table d’en-tête des documents financiers BKPF (champ BLART). Exemples SAKRAB | |||
Record to Report - Activités de clôture de période et de rapprochement
| Activité | Description | ||
|---|---|---|---|
| Écriture d’ajustement comptabilisée | Cet événement représente une écriture comptable corrective effectuée après les premiers rapprochements, généralement pour corriger des écarts détectés lors du contrôle. Il s’agit d’une transaction explicite comptabilisée dans le grand livre. | ||
| Pourquoi c’est important Une fréquence élevée d’écritures d’ajustement indique une qualité insuffisante dès la première exécution des processus ou des rapprochements en amont. L’analyse de ces écritures est essentielle pour identifier les causes profondes des erreurs et réduire les reprises. Où les obtenir Ces écritures sont enregistrées explicitement dans les tables ACDOCA et BKPF. Elles peuvent être identifiées par des types de documents spécifiques, des dates de comptabilisation tardives dans le cycle de clôture ou des descriptions textuelles particulières. Collecte Filtrez les écritures comptables de BKPF en combinant le type de document et la date de comptabilisation par rapport aux activités de rapprochement. Type d’événement explicit | |||
| États financiers générés | Cette activité marque la création des états financiers officiels, tels que le bilan et le compte de résultat. Elle représente l’aboutissement des processus de comptabilité et de consolidation de fin de période. | ||
| Pourquoi c’est important Il s’agit d’une étape majeure du cycle Record to Report. Son calendrier est déterminant pour respecter les échéances de reporting et fournir des informations en temps utile aux parties prenantes. Où les obtenir La meilleure méthode consiste à extraire cet événement d’un outil de gestion de la clôture financière tel que SAP Financial Closing Cockpit, où il correspond à une tâche explicite. À défaut, il doit être déduit des journaux de génération des rapports ou des horodatages de création des fichiers. Collecte Suivez le statut d’achèvement de la tâche « Generate Financial Statements » dans un outil de clôture, ou analysez les journaux d’exécution des rapports. Type d’événement inferred | |||
| Période clôturée aux écritures | Il s’agit de la dernière activité du cycle : la période de comptabilisation est officiellement clôturée afin d’empêcher toute transaction supplémentaire. Cette action garantit l’intégrité des données utilisées pour les rapports financiers finalisés. | ||
| Pourquoi c’est important Cette activité constitue l’événement de fin définitif du processus. Elle est essentielle pour calculer la durée totale du cycle de clôture périodique et analyser les tendances d’achèvement du processus. Où les obtenir Comme pour l’ouverture d’une période, cet événement est extrait des documents de modification, stockés dans les tables CDHDR et CDPOS, qui enregistrent les mises à jour de la table de contrôle des périodes de comptabilisation T001B via la transaction OB52. Collecte Filtrez les journaux de modification de la table T001B afin d’identifier la clôture de l’exercice fiscal et de la période concernés. Type d’événement explicit | |||
| Période ouverte aux écritures | Cet événement marque le début de la période financière, lorsque les périodes comptables sont ouvertes pour l’enregistrement des transactions. Il s’agit d’une modification de configuration explicite et journalisée, effectuée par un administrateur financier dans SAP, qui autorise les écritures comptables pour la nouvelle période. | ||
| Pourquoi c’est important Cette activité constitue l’événement de début principal du processus de clôture de fin de période. Elle permet de mesurer précisément la durée totale du cycle et fournit un point de départ clair pour l’analyse du processus. Où les obtenir Cet événement est extrait des documents de modification, stockés dans les tables CDHDR et CDPOS, qui enregistrent les changements apportés à la table de contrôle des périodes de comptabilisation T001B, généralement au moyen de la transaction OB52. Collecte Filtrez les journaux de modification de la table T001B pour la période et l’exercice fiscal concernés. Type d’événement explicit | |||
| Rapprochement de compte approuvé | Cette activité marque l’approbation finale du rapprochement d’un compte du grand livre. Elle confirme que le solde est justifié et que les éventuels problèmes ont été résolus. Elle est déduite du passage du rapprochement au statut « Approuvé » dans un outil de rapprochement. | ||
| Pourquoi c’est important Cette étape marque l’achèvement d’une activité de contrôle importante. Le suivi des délais d’approbation aide à identifier les goulots d’étranglement du processus de contrôle et est essentiel pour mesurer les reprises ainsi que le taux de réussite dès la première exécution. Où les obtenir Cet événement est extrait d’un système de gestion des rapprochements, tel que SAP Account Substantiation and Automation, en suivant l’horodatage du statut d’approbation finale. Collecte Identifiez l’horodatage auquel le champ de statut d’un rapprochement est mis à jour avec son état final « Approuvé ». Type d’événement inferred | |||
| Rapprochement de compte commencé | Cet événement marque le début du processus manuel ou semi-automatisé de justification des soldes des comptes du grand livre. Il est déduit du passage du statut d’un rapprochement de « Nouveau » à « En cours », ou de l’enregistrement de la première action du préparateur. | ||
| Pourquoi c’est important Il s’agit d’une étape importante pour comprendre la durée et les efforts nécessaires à la justification des comptes de bilan. Elle permet d’identifier les comptes ou les services qui commencent leurs rapprochements tardivement. Où les obtenir Cet événement est généralement extrait d’un outil dédié au rapprochement, tel que SAP Account Substantiation and Automation by BlackLine, ou d’autres systèmes tiers. Il est déduit des horodatages des changements de statut. Collecte Suivez l’horodatage du premier changement de statut depuis l’état « Non commencé » pour le rapprochement d’un compte du grand livre donné. Type d’événement inferred | |||
| Rapprochement intersociétés commencé | Cette activité marque le début du processus de mise en correspondance et de rapprochement des transactions entre différents codes société d’un même groupe. Elle est souvent lancée par l’exécution d’un traitement de rapprochement ou par la création d’un nouveau cas de rapprochement dans l’outil ICMR de SAP. | ||
| Pourquoi c’est important Le rapprochement intersociétés est souvent complexe et chronophage. L’analyse de sa durée et de son déroulement est essentielle pour optimiser la clôture du groupe et garantir l’exactitude des états financiers consolidés. Où les obtenir Cet événement est déduit des changements de statut dans le module SAP Intercompany Matching and Reconciliation (ICMR), ou de la création des premiers documents de rapprochement pour la période. Collecte Suivez la date de création ou l’horodatage du changement de statut des unités de rapprochement dans l’outil ICMR pour la période concernée. Type d’événement inferred | |||
| Balance générale préparée | Cet événement indique qu’une balance générale a été générée et enregistrée pour contrôle. Il constitue un point de contrôle important avant l’établissement des états financiers définitifs. L’extraction de cet événement repose souvent sur des procédures dans lesquelles la sortie du rapport est enregistrée. | ||
| Pourquoi c’est important La préparation de la balance générale constitue un contrôle qualité important. L’analyse de son calendrier permet d’évaluer l’état de préparation du reporting final et de repérer d’éventuels retards dans les activités précédentes. Où les obtenir Il ne s’agit souvent pas d’un événement explicite. Il peut être déduit de l’exécution d’une transaction de reporting spécifique si les variantes sont enregistrées avec l’utilisateur et la date, ou si le processus est géré dans un outil tel que SAP Financial Closing Cockpit. Collecte Une analyse du système est nécessaire pour déterminer s’il existe un mécanisme de journalisation fiable, tel que des journaux d’exécution des rapports ou des listes de tâches du cockpit de clôture. Type d’événement inferred | |||
| États financiers approuvés | Cet événement représente la validation finale des états financiers par la direction habilitée avant leur publication. Il s’agit souvent d’un processus hors ligne, mais il peut être capturé lorsqu’une étape d’approbation numérique formelle existe. | ||
| Pourquoi c’est important Il s’agit du dernier contrôle qualité et de conformité. Le suivi de son calendrier est essentiel pour évaluer le respect des échéances de reporting et l’efficacité globale du cycle de revue par la direction. Où les obtenir Cet événement est enregistré lorsqu’un flux de travail ou un champ d’état existe pour l’approbation des relevés, par exemple dans SAP Financial Closing Cockpit ou dans un système de gestion documentaire. Collecte Identifiez le champ de données et l’horodatage indiquant l’approbation finale du dossier d’états financiers. Type d’événement inferred | |||
| Exécution du traitement de lettrage automatique | Cet événement représente l’exécution des programmes de lettrage automatique dans SAP, tels que le traitement de lettrage GR/IR (réception de marchandises/réception de facture). Ces traitements mettent en correspondance et lettrent les postes ouverts de certains comptes du grand livre, ce qui réduit les efforts de rapprochement manuel. | ||
| Pourquoi c’est important Cette activité met en évidence le niveau d’automatisation du processus de rapprochement. Les échecs ou les exceptions lors de ces traitements peuvent entraîner un travail manuel important et des retards. Où les obtenir Cet événement est extrait des journaux d’exécution de traitements par lots spécifiques, tels que F.13 ou F.13E pour le lettrage automatique. Les tables TBTCO et TBTCP contiennent les détails d’exécution. Collecte Surveillez les horodatages de début et de fin des traitements associés à des transactions telles que F.13 dans les journaux de traitements SAP. Type d’événement explicit | |||
| Provisions et charges à payer comptabilisées | Cet événement enregistre la création d’écritures comptables manuelles pour les charges à payer, les charges constatées d’avance et les autres provisions nécessaires à une information financière exacte selon la comptabilité d’engagement. Il s’agit de transactions explicites comptabilisées dans le grand livre. | ||
| Pourquoi c’est important Le suivi de ces écritures permet d’analyser le volume et le calendrier des ajustements manuels. Un volume élevé peut révéler des possibilités d’automatisation ou d’amélioration des processus en amont. Où les obtenir Ces écritures sont enregistrées explicitement dans le journal universel, table ACDOCA, ainsi que dans la table d’en-tête BKPF. Elles peuvent être identifiées grâce aux types de documents spécifiques configurés pour les provisions. Collecte Filtrez les documents de la table BKPF par type de document, par exemple « SA » ou des types personnalisés, et par date de comptabilisation au cours de la période. Type d’événement explicit | |||
| Tâches de consolidation exécutées | Cet événement représente l’exécution des activités de consolidation dans SAP Group Reporting, telles que la conversion des devises, les reclassements et l’élimination des bénéfices intersociétés. Ces tâches sont généralement gérées et journalisées dans le moniteur de consolidation. | ||
| Pourquoi c’est important Pour les organisations comptant plusieurs entités juridiques, la consolidation constitue une étape déterminante. Le suivi de ces tâches aide à optimiser la clôture du groupe et à garantir la production des états financiers consolidés dans les délais. Où les obtenir Cet événement est extrait des journaux de statut du Data Monitor ou du Consolidation Monitor dans SAP S/4HANA for Group Reporting. Chaque tâche comporte généralement un utilisateur, un horodatage et un statut. Collecte Extrayez les journaux d’exécution des tâches à partir des tables sous-jacentes du moniteur de consolidation de Group Reporting. Type d’événement explicit | |||
| Traitement d’évaluation des devises étrangères | Il s’agit d’une procédure standard de fin de mois qui consiste à réévaluer les postes ouverts et les soldes en devises étrangères sur la base des taux de change de fin de période. L’exécution de ce programme comptabilise les écarts d’évaluation qui en résultent. | ||
| Pourquoi c’est important Cette activité garantit le respect des normes comptables et fournit une image financière exacte. Son suivi permet de vérifier que toutes les évaluations de devises sont réalisées dans les délais. Où les obtenir Cet événement est extrait des journaux d’exécution du programme d’évaluation des devises étrangères, par exemple FAGL_FCV. Les détails des traitements sont stockés dans les tables TBTCO et TBTCP. Collecte Surveillez les journaux d’exécution des traitements liés à la transaction FAGL_FCV ou à son programme sous-jacent. Type d’événement explicit | |||
| Transfert des données des sous-livres terminé | Cet événement représente la fin des traitements par lots qui transfèrent les données récapitulatives des sous-livres, tels que les comptes clients, les comptes fournisseurs et la comptabilité des immobilisations, vers le grand livre. Il garantit que toutes les transactions opérationnelles sous-jacentes sont reflétées dans le GL avant le début des procédures de clôture. | ||
| Pourquoi c’est important Les retards dans la clôture des sous-livres peuvent constituer un goulot d’étranglement majeur pour l’ensemble du processus. Le suivi de cette activité aide à identifier les inefficacités liées à la collecte et à l’intégration des données provenant des systèmes sources. Où les obtenir Cet événement est déduit du statut de réussite de traitements par lots spécifiques chargés du règlement des livres et du transfert des données. Les journaux des traitements se trouvent dans les tables TBTCO et TBTCP. Collecte Identifiez et surveillez les horodatages de fin des traitements par lots concernés dans la vue des traitements SAP, transaction SM37. Type d’événement explicit | |||
Guides d’extraction
Étapes
- Identifier et vérifier les vues CDS : Connectez-vous à votre système SAP S/4HANA à l’aide de SAP HANA Studio ou d’Eclipse avec ADT. Utilisez les ABAP Development Tools pour rechercher et vérifier l’existence des vues CDS standard mentionnées dans la requête, telles que I_JournalEntryItem, I_BatchJob et I_ConsolidationTaskLog. Pour des processus comme le rapprochement des comptes, vous devrez peut-être créer des vues CDS personnalisées, par exemple Z_I_ACCOUNTRECONCILIATION, afin de capturer les changements de statut.
- Exposer les vues CDS via OData : Dans le back-end SAP, utilisez la transaction
SEGW(Gateway Service Builder) pour créer un nouveau projet. Cliquez avec le bouton droit sur le dossier Data Model, puis sélectionnez « Reference -> Data Source ». Ajoutez les vues CDS requises. Générez les objets d’exécution afin de créer un service OData qui expose ces vues pour une utilisation externe. - Activer le service OData : Accédez à la transaction
/IWFND/MAINT_SERVICEsur le hub SAP Gateway. Cliquez sur « Add Service », recherchez le service généré à l’étape précédente, puis ajoutez-le. Le service devient ainsi actif et disponible pour les requêtes. - Établir la connexion aux données : Depuis l’outil d’extraction de données choisi, par exemple Python, Power BI ou une plateforme ETL dédiée, établissez une connexion au service OData nouvellement créé. Vous aurez besoin de l’URL du service et d’identifiants disposant des autorisations nécessaires pour accéder aux vues CDS.
- Adapter et exécuter la requête : Copiez la requête SQL fournie. Modifiez les valeurs fictives correspondant aux plages de dates, aux codes société et aux éventuelles vues CDS personnalisées ou noms de jobs afin de les adapter à votre environnement SAP. Exécutez la requête sur le point de terminaison du service OData. OData utilise une syntaxe différente, notamment
$filteret$select; vous devrez donc peut-être traduire la logique de la requête UNION ALL en plusieurs appels API distincts, un par activité. - Consolider les données d’activité : OData ne prenant généralement pas en charge les requêtes UNION ALL complexes en un seul appel, exécutez une requête distincte pour chaque bloc d’activité. Consolidez ensuite les résultats dans un jeu de données ou une table unique au sein de votre outil client.
- Transformer et nettoyer les données : Examinez les données consolidées. Vérifiez que les colonnes
EventTimeetEndTimeutilisent un format d’horodatage cohérent. Assurez-vous queFinancialPeriodrespecte le format « YYYY-MM ». Traitez si nécessaire les valeurs NULL des colonnes telles queResponsibleUserouDocumentNumber. - Exporter sous forme de journal d’événements : Exportez le jeu de données final consolidé dans un fichier CSV. Vérifiez que les en-têtes de colonnes correspondent aux attributs requis :
FinancialPeriod,ActivityName,EventTime,EndTime,ResponsibleUser, etc. Le fichier est maintenant prêt à être importé dans ProcessMind.
Configuration
- Vues CDS : La requête repose sur une combinaison de vues CDS standard et personnalisées. Les vues standard telles que
I_JournalEntryItempour les écritures comptables etI_BatchJobpour les exécutions automatisées sont essentielles. Des vues personnalisées, commeZ_I_ACCOUNTRECONCILIATION, sont souvent nécessaires pour capturer le statut de processus internes qui ne sont pas couverts par les vues standard. - Plage de dates : Définissez une plage de dates précise pour l’extraction afin de maîtriser le volume de données. La requête utilise les valeurs fictives
[Start Date]et[End Date], qui doivent généralement couvrir 3 à 6 périodes fiscales complètes pour produire une analyse pertinente. - Filtres clés : Le filtrage est essentiel pour les performances et la pertinence des résultats. Filtrez toujours par
CompanyCode. Les autres filtres importants comprennentLedger, par exemple « 0L » pour le ledger principal,FiscalYearet certaines valeurs deDocumentTypepermettant de distinguer les écritures courantes, les provisions et les ajustements. - Prérequis : L’utilisateur qui exécute l’extraction doit disposer dans SAP des autorisations nécessaires pour accéder aux vues CDS indiquées et exécuter les services OData, par exemple les objets d’autorisation
S_SERVICEetS_RFC. Les services SAP Gateway doivent être configurés et activés. - Performances : Les requêtes sur
I_JournalEntryItempeuvent mobiliser beaucoup de ressources. Appliquez toujours des filtres sélectifs, notamment sur les dates, les codes société et les ledgers. Envisagez d’exécuter l’extraction en dehors des heures de pointe ou d’utiliser une stratégie de chargement incrémental pour une supervision continue.
a Exemple de requête sql
SELECT
CONCAT(CAST(PostingDate AS DATE FORMAT 'YYYY'), '-', CAST(PostingDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- This is a proxy; this activity is a configuration change often found in change logs (CDHDR/CDPOS for table T001B)
WHERE PostingPeriodVariant = '[Your Variant]' AND FiscalYear = '[Your Fiscal Year]' AND FromPostingPeriod = 1 AND AuthorizationGroup IS NOT NULL -- Logic to detect the opening event
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod, -- Infer period from Job Name if patterned, otherwise use job start date
'Subledger Data Transfer Completed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Subledger Job Prefix]%' AND JobStatus = 'F' -- 'F' for Finished
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(CreationDate AS DATE FORMAT 'YYYY'), '-', CAST(CreationDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Intercompany Reconciliation Started' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
CreatedByUser AS ResponsibleUser,
LeadingCompanyCode AS CompanyCode,
NULL AS GlAccountNumber,
ReconciliationCase AS DocumentNumber,
ReconciliationCaseStatus AS ReconciliationStatus,
NULL AS TargetCompletionDate,
NULL AS ProcessingTime
FROM I_ICRcnCase -- Part of SAP S/4HANA for group reporting
WHERE CreationDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Accrual Doc Type 1]', '[Accrual Doc Type 2]') -- e.g., 'SA', 'AC'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Automated Clearing Run Executed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'SAPF124%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'FAGL_FCV%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on like SAP Account Substantiation and Automation.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
ChangedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'In Progress' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'IN_PROGRESS' AND OldStatus = 'NEW'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Adjustment Doc Type 1]', '[Adjustment Doc Type 2]') -- e.g., 'AJ'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on product.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Approved' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
CAST(ChangedAt AS TIMESTAMP) AS EndTime,
ApprovedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'Approved' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'APPROVED'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Consolidation Tasks Executed' AS ActivityName,
CAST(TaskExecutionUTCTimestamp AS TIMESTAMP) AS EventTime,
CAST(TaskCompletionUTCTimestamp AS TIMESTAMP) AS EndTime,
ExecutedByUser AS ResponsibleUser,
ConsolidationUnitCompanyCode AS CompanyCode, -- Assuming mapping exists
NULL AS GlAccountNumber,
DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(TaskExecutionUTCTimestamp AS TIMESTAMP), CAST(TaskCompletionUTCTimestamp AS TIMESTAMP)) AS ProcessingTime
FROM I_ConsolidationTaskLog
WHERE ConsolidationTaskStatus = 'S' -- Successful
AND TaskExecutionUTCDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Trial Balance Prepared' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Trial Balance Job Prefix]%' AND JobStatus = 'F' -- Example: FAGL_TRIAL_BALANCE_RUN
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Fin Statement Job Prefix]%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- Approval is often a manual step. This requires a custom solution to capture.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(ApprovalYear, '-', LPAD(ApprovalPeriod, 2, '0')) AS FinancialPeriod,
'Financial Statements Approved' AS ActivityName,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EventTime,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EndTime,
ApproverUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
FinancialStatementVersion AS DocumentNumber,
'Approved' AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM Z_I_FINSTATEMENTAPPROVAL -- Placeholder for custom approval tracking view
WHERE ApprovalDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(LastChangeDate AS DATE FORMAT 'YYYY'), '-', CAST(LastChangeDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
CAST(LastChangeDateTime AS TIMESTAMP) AS EventTime,
CAST(LastChangeDateTime AS TIMESTAMP) AS EndTime,
LastChangedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- Proxy, see note on 'Period Opened'
WHERE PostingPeriodStatus = 'C' -- 'C' for Closed
AND LastChangeDate BETWEEN '[Start Date]' AND '[End Date]'; Étapes
- Vérifiez que l’accès direct en lecture au schéma SAP HANA contenant les tables applicatives requises est disponible et identifiez le propriétaire du schéma pour ACDOCA, TBTCO, CDHDR et CDPOS. Remplacez le paramètre de schéma dans la requête par le nom de schéma approuvé.
- Confirmez l’exercice fiscal, la période fiscale, le périmètre des codes société et la plage de dates d’extraction. Utilisez une plage couvrant l’intégralité du cycle de clôture, généralement de trois à six mois, puis remplacez les paramètres de date par les valeurs adaptées à votre système.
- Validez les associations de champs locales pour les modifications de configuration des périodes comptables, la fin des traitements par lots, les changements d’état des rapprochements, l’exécution de la consolidation, la génération des rapports et les enregistrements d’approbation. La requête utilise des paramètres génériques pour les objets sources dont la présence n’est pas garantie dans tous les déploiements SAP S/4HANA. Remplacez ces paramètres par les vues ou tables approuvées de votre système avant l’exécution.
- Exécutez la requête avec des identifiants de base de données en lecture seule. La requête crée explicitement une ligne d’événement pour chaque activité requise et ne déduit aucun événement supplémentaire à partir de l’ordre des événements.
- Examinez les colonnes renvoyées. FinancialPeriod est l’identifiant du cas, ActivityName correspond à l’activité de l’événement et EventTime à son horodatage requis. EndTime, ResponsibleUser, CompanyCode, GlAccountNumber, DocumentNumber, ReconciliationStatus et TargetCompletionDate sont inclus lorsque l’enregistrement source les fournit.
- Vérifiez que chaque activité requise est présente dans le résultat, y compris celles qui peuvent ne disposer d’aucun enregistrement source pour une période donnée. Pour les types d’activité manquants, la requête renvoie une ligne de validation dont ActivityName est défini sur Activity Coverage Validation. Supprimez cette ligne ou traitez-la séparément avant l’importation dans ProcessMind si la cible n’accepte que les événements métier.
- Rapprochez des événements représentatifs avec les enregistrements applicatifs et les journaux de traitements SAP. Vérifiez que les événements d’écritures comptables correspondent aux enregistrements ACDOCA, que les événements de traitements correspondent aux enregistrements TBTCO et que les événements de modification correspondent aux enregistrements CDHDR et CDPOS, ou aux sources de rapprochement et d’approbation configurées.
- Exportez le résultat au format CSV UTF-8 ou dans un autre format tabulaire pris en charge par ProcessMind. Conservez exactement les noms de colonnes FinancialPeriod, ActivityName et EventTime. Triez par FinancialPeriod et EventTime et conservez une ligne par événement explicitement extrait.
- Importez le journal d’événements dans ProcessMind et configurez FinancialPeriod comme identifiant du cas, ActivityName comme activité et EventTime comme horodatage de début. Associez EndTime à l’horodatage de fin lorsqu’il est disponible, puis associez les autres colonnes comme attributs d’événement ou de cas.
Remarque importante sur l’association des sources : SAP S/4HANA ne fournit pas une structure de tables universelle pour chaque outil de rapprochement, moniteur de consolidation, archive de rapports, flux de travail d’approbation ou configuration des périodes comptables. Remplacez chaque paramètre [Your table name] et [Your column name] de la requête par un objet et une colonne vérifiés dans votre système. Ne considérez pas un paramètre comme du code SQL exécutable.
Configuration
- Accès à la base de données : utilisez un utilisateur SAP HANA en lecture seule disposant de l’autorisation SELECT sur ACDOCA, TBTCO, CDHDR, CDPOS et les objets sources configurés pour le contrôle des périodes comptables, les rapprochements, la consolidation, le reporting et les approbations.
- Configuration du schéma : remplacez [Your SAP schema] par le schéma réel contenant les objets applicatifs. Vérifiez s’il s’agit de tables, de vues de calcul ou de vues de reporting approuvées.
- Plage de dates : extrayez l’intégralité du cycle de clôture, généralement de trois à six mois. Incluez les activités d’ouverture et de clôture, les écritures tardives, les extournes, les approbations et les ajustements postérieurs à la clôture.
- Période financière : filtrez selon l’exercice fiscal et la période fiscale utilisés par le code société. Ne supposez pas que les périodes correspondent à l’année civile si la variante d’exercice fiscal est différente.
- Code société : appliquez un filtre de code société lorsque le processus porte sur certaines entités juridiques. Utilisez [Configure based on your system] lorsque le périmètre est géré dans une association organisationnelle distincte.
- Types de documents : limitez l’extraction des écritures comptables aux types de documents utilisés pour les charges à payer, les provisions, les ajustements, les évaluations, le lettrage et les autres écritures de clôture. Vérifiez la configuration locale des types de documents avant d’activer ces filtres.
- État des traitements : incluez uniquement les traitements terminés ou exécutés avec succès pour les activités de fin de traitement. Validez les valeurs d’état locales de TBTCO avant d’appliquer un prédicat d’état.
- Documents de modification : filtrez CDHDR et CDPOS selon la classe d’objet et les indicateurs de modification pertinents après vérification de la configuration locale. Les seuls documents de modification peuvent ne pas suffire à identifier toutes les activités métier.
- Sources de rapprochement et d’approbation : configurez des objets sources vérifiés pour les transitions d’état des rapprochements, les actions des préparateurs, les approbations, les dates cibles et la signature électronique. Ces sources varient selon les composants SAP et les extensions déployés.
- Performances : limitez les prédicats portant sur l’exercice fiscal, la période fiscale, le code société, la date comptable et l’horodatage de l’événement. Appliquez les filtres dans chaque branche UNION ALL, évitez les analyses sans restriction d’ACDOCA et exécutez la requête pendant une fenêtre de reporting approuvée.
- Types de données : normalisez les horodatages selon un fuseau horaire et un type de données communs. Convertissez les chaînes vides en NULL et conservez les zéros initiaux des codes société, des numéros de compte et des numéros de document.
- Prérequis : vérifiez que les composants SAP requis, les outils de rapprochement, les fonctions de consolidation, la journalisation des traitements, l’activation des documents de modification ainsi que la journalisation d’audit des rapports ou des flux de travail sont disponibles et alimentés.
- Sécurité et conformité : appliquez le principe du moindre privilège, protégez les données financières et les données utilisateurs, documentez la finalité de l’extraction et respectez les exigences d’audit SAP et de la base de données de votre organisation.
a Exemple de requête sql
WITH
params AS (
SELECT
TO_DATE('[Start date YYYY-MM-DD]') AS start_date,
TO_DATE('[End date YYYY-MM-DD]') AS end_date,
'[Fiscal year]' AS fiscal_year_filter,
'[Fiscal period]' AS fiscal_period_filter,
'[Company code filter]' AS company_code_filter
FROM DUMMY
),
base_events AS (
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0') AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(a.BUDAT AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(a.USNAM AS NVARCHAR(80)) AS ResponsibleUser,
CAST(a.RBUKRS AS NVARCHAR(20)) AS CompanyCode,
CAST(a.RACCT AS NVARCHAR(40)) AS GlAccountNumber,
CAST(a.BELNR AS NVARCHAR(40)) AS DocumentNumber,
CAST(NULL AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Accrual document type]', '[Provision document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Adjusting Journal Entry Posted',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Adjusting journal entry document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Foreign Currency Valuation Run',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Foreign currency valuation document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Automated Clearing Run Executed',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Automated clearing document type]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Subledger Data Transfer Completed',
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job end timestamp column] >= p.start_date
AND j.[Job end timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job status column] = '[Successful job status]'
AND j.[Job name column] IN ('[AR transfer job]', '[AP transfer job]', '[Asset Accounting transfer job]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(j.[Job start timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job start timestamp column] >= p.start_date
AND j.[Job start timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job name column] IN ('[Intercompany reconciliation job]')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for intercompany reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('Started', 'In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Approved',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Approver user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(c.[Financial period column] AS NVARCHAR(20)),
'Consolidation Tasks Executed',
CAST(c.[Execution start timestamp column] AS TIMESTAMP),
CAST(c.[Execution end timestamp column] AS TIMESTAMP),
CAST(c.[Responsible user column] AS NVARCHAR(80)),
CAST(c.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(c.[Task identifier column] AS NVARCHAR(40)),
CAST(c.[Status column] AS NVARCHAR(40)),
CAST(c.[Target completion date column] AS DATE)
FROM [Your table name for consolidation execution] c
CROSS JOIN params p
WHERE c.[Execution start timestamp column] >= p.start_date
AND c.[Execution start timestamp column] < ADD_DAYS(p.end_date, 1)
AND c.[Status column] IN ('Completed', 'Successful')
UNION ALL
SELECT
CAST(t.[Financial period column] AS NVARCHAR(20)),
'Trial Balance Prepared',
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Responsible user column] AS NVARCHAR(80)),
CAST(t.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(t.[Report identifier column] AS NVARCHAR(40)),
CAST(t.[Status column] AS NVARCHAR(40)),
CAST(t.[Target completion date column] AS DATE)
FROM [Your table name for trial balance output] t
CROSS JOIN params p
WHERE t.[Report saved timestamp column] >= p.start_date
AND t.[Report saved timestamp column] < ADD_DAYS(p.end_date, 1)
AND t.[Status column] IN ('Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Generated',
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Responsible user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement output] f
CROSS JOIN params p
WHERE f.[Generation timestamp column] >= p.start_date
AND f.[Generation timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] IN ('Generated', 'Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Approved',
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approver user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement approval] f
CROSS JOIN params p
WHERE f.[Approval timestamp column] >= p.start_date
AND f.[Approval timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Opened For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Open'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Closed For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Closed'
),
activity_list AS (
SELECT 'Period Opened For Posting' AS ActivityName FROM DUMMY
UNION ALL SELECT 'Subledger Data Transfer Completed' FROM DUMMY
UNION ALL SELECT 'Intercompany Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Accruals And Provisions Posted' FROM DUMMY
UNION ALL SELECT 'Automated Clearing Run Executed' FROM DUMMY
UNION ALL SELECT 'Foreign Currency Valuation Run' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Adjusting Journal Entry Posted' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Approved' FROM DUMMY
UNION ALL SELECT 'Consolidation Tasks Executed' FROM DUMMY
UNION ALL SELECT 'Trial Balance Prepared' FROM DUMMY
UNION ALL SELECT 'Financial Statements Generated' FROM DUMMY
UNION ALL SELECT 'Financial Statements Approved' FROM DUMMY
UNION ALL SELECT 'Period Closed For Posting' FROM DUMMY
),
missing_activities AS (
SELECT
CAST(NULL AS NVARCHAR(20)) AS FinancialPeriod,
'Activity Coverage Validation' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(NULL AS NVARCHAR(80)) AS ResponsibleUser,
CAST(NULL AS NVARCHAR(20)) AS CompanyCode,
CAST(NULL AS NVARCHAR(40)) AS GlAccountNumber,
CAST(NULL AS NVARCHAR(40)) AS DocumentNumber,
CAST('Missing activity: ' || al.ActivityName AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM activity_list al
LEFT JOIN base_events b ON b.ActivityName = al.ActivityName
WHERE b.ActivityName IS NULL
)
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM base_events
UNION ALL
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM missing_activities
ORDER BY FinancialPeriod, EventTime, ActivityName Prêt à commencer ?
Donnez à votre organisation les moyens d’améliorer son efficacité et sa conformité grâce à ce template de données. Commencez dès aujourd’hui à transformer votre processus Record to Report.
Optimisez dès aujourd’hui votre clôture et vos rapprochements Record to Report
Identifiez les inefficacités et réduisez jusqu’à 30 % la durée de votre cycle de clôture.
Aucune carte bancaire requise. Commencez en quelques minutes.