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
- Guide d'extraction
Du Bilan au Rapport - Attributs de Clôture Périodique et Rapprochement
| Nom | Description | ||
|---|---|---|---|
| Période financière FinancialPeriod | Un identifiant unique pour le cycle de reporting financier, combinant généralement l'exercice fiscal et la période comptable. | ||
| Description La période financière sert d'identifiant de case principal, regroupant toutes les activités liées à la clôture et au rapprochement des comptes pour ce cycle de reporting spécifique, tel que '2023-12' pour décembre 2023. Cela permet une analyse complète de l'ensemble du processus de clôture périodique du début à la fin pour chaque période distincte. En analyse, cela permet de suivre le temps de cycle de bout en bout pour chaque clôture, de comparer les performances sur différentes périodes et d'identifier les tendances ou les anomalies. En définissant chaque période financière comme un case unique, il est possible de visualiser et de mesurer l'efficacité, les bottlenecks et les variations du processus de clôture au fil du temps. Pourquoi c'est important Il s'agit de l'identifiant de case essentiel qui structure l'analyse, permettant des comparaisons d'un période à l'autre des temps de cycle de clôture, des charges de travail et de la conformité du processus. Où obtenir Cet attribut est généralement dérivé en concaténant l'exercice fiscal (GJAHR) et la période comptable (MONAT) des en-têtes de documents financiers, par exemple, de la table BKPF. Exemples 2023-122024-03T4-2023 | |||
| Activité ActivityName | Le nom de l'événement commercial ou de la tâche spécifique effectuée pendant le processus de clôture périodique. | ||
| Description Cet attribut enregistre les étapes distinctes entreprises dans le cycle Du Bilan au Rapport, telles que « Écriture de journal d'ajustement enregistrée » ou « États financiers générés ». Il constitue l'épine dorsale de la process map, montrant la séquence des événements qui constituent la clôture périodique. L'analyse des activités est fondamentale pour le process mining. Elle aide à visualiser le flux de processus, à identifier la séquence des tâches, à découvrir les variations de processus et à mesurer la fréquence et la durée de chaque étape. Ceci est crucial pour identifier les bottlenecks, les chemins de processus non standard et les opportunités de standardisation ou d'automatisation. Pourquoi c'est important Cet attribut est obligatoire pour la construction de la process map, permettant la visualisation et l'analyse de la séquence des tâches dans la clôture périodique. Où obtenir Ceci est dérivé d'une combinaison de codes de transaction SAP (TCODE), de types de documents (BLART) ou d'exécutions de programmes spécifiques (par exemple, FAGL_FCV pour l'évaluation des devises étrangères). Exemples Écriture de journal d'ajustement enregistréeRapprochement des comptes initiéPériode clôturée pour enregistrement | |||
| Dernière mise à jour des données LastDataUpdate | L'horodatage de la dernière actualisation ou extraction des données du système source. | ||
| Description Cet attribut indique la fraîcheur des données analysées. Il affiche la date et l'heure de la dernière exécution du pipeline de données, fournissant un contexte sur la récence des insights process. Pour les dashboards, en particulier ceux qui suivent les progrès en temps réel, ce timestamp est vital pour que les utilisateurs comprennent s'ils consultent des informations à jour ou des données du jour précédent. Il gère les attentes des utilisateurs et est crucial pour interpréter correctement l'analyse. Pourquoi c'est important Informe les utilisateurs sur la fraîcheur des données, ce qui est crucial pour garantir que les analyses et les dashboards sont pertinents et à jour. Où obtenir Cet horodatage est généré et ajouté par l'outil d'extraction de données ou ETL à la fin de chaque processus de chargement de données. Exemples 2024-05-21T04:00:00Z2024-05-20T04:00:00Z2024-05-19T04:00:00Z | |||
| Heure de l'événement EventTime | L'horodatage indiquant quand une activité ou un événement s'est produit. | ||
| Description L'heure de l'événement fournit la date et l'heure précises de chaque activité du processus, servant de base chronologique à l'analyse. Il s'agit généralement d'une combinaison de la date et de l'heure de création du document. Ce timestamp est essentiel pour ordonner correctement les événements afin de reconstruire le flux de processus. Il est utilisé pour calculer toutes les métriques basées sur la durée, y compris les temps de cycle entre les activités, les temps d'attente et la durée globale de la clôture périodique. L'analyse des timestamps aide à identifier les retards et à comprendre la distribution temporelle du travail. Pourquoi c'est important En tant qu'attribut obligatoire, il fournit l'ordre chronologique des événements, ce qui est nécessaire pour calculer les temps de cycle et découvrir les goulots d'étranglement du processus. Où obtenir Cette information provient généralement de la date de saisie du document (CPUDT) et de l'heure de saisie (CPUTM) dans la table BKPF pour les documents financiers. Exemples 2023-12-28T14:30:15Z2024-01-02T09:05:00Z2024-01-05T17:21:45Z | |||
| Système source SourceSystem | L'identifiant du système source d'où les données ont été extraites. | ||
| Description Cet attribut spécifie l'origine des données d'événement, telles que le nom ou l'ID de l'instance SAP ECC spécifique. Dans les organisations dotées de plusieurs ERP ou systèmes financiers, ce champ est essentiel pour distinguer les données provenant de différentes sources. Même dans une architecture à système unique, il sert de pièce cruciale de métadonnées pour la gouvernance des données, l'audit et le dépannage. Il confirme la provenance des données, ce qui est essentiel pour instaurer la confiance dans l'analyse et garantir la clarté de la lignée des données. Pourquoi c'est important Fournit une lignée de données essentielle, confirmant l'origine des données pour la gouvernance, et est critique dans les architectures multi-systèmes pour différencier les processus. Où obtenir Il s'agit généralement d'une valeur statique ajoutée pendant le processus d'extraction de données, identifiant le client SAP spécifique et l'ID système (par exemple, à partir de la table T000). Exemples ECC_PROD_100SAP_E74_200ECC_FINANCE | |||
| Code société BUKRS | L'unité organisationnelle représentant une entité juridique pour laquelle des états financiers sont générés. | ||
| Description Le Code Société est une unité organisationnelle fondamentale dans SAP Financials. Il représente une société indépendante avec sa propre comptabilité. Toutes les transactions financières sont enregistrées au niveau du code société. En process mining, le filtrage par Code Société est essentiel pour comparer le processus de clôture périodique entre différentes entités juridiques au sein d'une entreprise. Cela permet d'identifier les meilleures pratiques dans les entités performantes et de repérer les entités qui rencontrent des retards, des volumes d'ajustement élevés ou des déviations de processus. C'est une dimension clé pour segmenter l'analyse. Pourquoi c'est important Permet la comparaison de la performance et de la conformité de la clôture de période entre différentes entités juridiques, ce qui est crucial pour l'analyse financière au niveau du groupe. Où obtenir Ce champ est disponible dans presque toutes les tables de documents financiers dans SAP, principalement BKPF (En-tête) et BSEG (Poste). Exemples 10002000US01DE01 | |||
| Compte général HKONT | Le numéro de compte général auquel un poste est imputé. | ||
| Description Le compte général (GL) est un élément de données de base essentiel en finance qui classe les transactions. Chaque écriture financière est affectée à un ou plusieurs comptes GL. Dans le contexte de la clôture périodique, l'analyse des activités par compte GL est essentielle pour les dashboards « Bottlenecks de rapprochement de comptes » et « Analyse du volume des écritures d'ajustement ». Cela aide à identifier quels comptes sont les plus difficiles à rapprocher, lesquels nécessitent le plus d'ajustements et où le risque d'anomalie significative peut être le plus élevé. Cette approche permet aux équipes de prioriser leurs efforts sur les comptes problématiques. Pourquoi c'est important Permet une analyse ciblée des rapprochements et des ajustements, aidant à identifier les comptes problématiques qui causent des retards ou nécessitent des corrections fréquentes. Où obtenir Disponible dans la table des postes de document financier, BSEG (HKONT). Exemples 113100400500750000 | |||
| Montant en devise locale DMBTR | La valeur financière d'un poste de transaction, exprimée dans la devise locale du code société. | ||
| Description Cet attribut représente la valeur monétaire associée à une écriture financière. C'est la mesure quantitative fondamentale de l'impact d'une transaction sur le grand livre. L'analyse du montant est cruciale pour prioriser les problèmes et comprendre le risque financier. Par exemple, le dashboard « Analyse du volume des écritures d'ajustement » devient beaucoup plus puissant lorsqu'il peut distinguer entre un volume élevé d'ajustements de faible valeur et un faible volume d'ajustements de forte valeur. Il aide à concentrer l'attention sur les transactions qui sont financièrement significatives. Pourquoi c'est important Quantifie l'impact financier des transactions, permettant une analyse basée sur la matérialité, comme l'identification d'écritures d'ajustement de grande valeur. Où obtenir Disponible dans la table des postes de document, BSEG (DMBTR). Exemples 1500.75-25000.00123456.00 | |||
| Numéro de document BELNR | L'identifiant unique d'un document comptable au sein d'un exercice fiscal et d'un code société. | ||
| Description Le numéro de document comptable est la clé primaire des écritures financières dans SAP. Chaque écriture de journal, facture ou document de paiement se voit attribuer un numéro unique. Bien que n'étant pas généralement utilisé pour l'analyse de processus de haut niveau, le numéro de document est inestimable pour les capacités de drill-down. À partir d'un dashboard de process mining, les analystes peuvent utiliser le numéro de document pour naviguer directement vers la transaction spécifique dans SAP afin d'enquêter en détail sur les anomalies, telles qu'une écriture d'ajustement importante ou un élément de rapprochement retardé. Il fournit un lien direct de l'insight à la transaction source. Pourquoi c'est important Fournit un lien direct vers la transaction source dans SAP, permettant une analyse drill-down détaillée depuis la vue processus vers des écritures comptables spécifiques. Où obtenir Situé dans la table BKPF (BELNR) en tant que clé primaire. Exemples 100000456719000001233000008901 | |||
| Type d'écriture de journal JournalEntryType | Une classification des écritures de journal, telles que 'Standard', 'Ajustement', 'Régularisation' ou 'Annulation'. | ||
| Description Il s'agit d'un attribut dérivé qui catégorise les documents financiers en fonction de leur objectif commercial dans le processus de clôture. Il est souvent déterminé par une combinaison du type de document (BLART), du motif d'annulation (STGRD) ou des comptes GL spécifiques utilisés. Cette classification est fondamentale pour le dashboard « Analyse du volume des écritures d'ajustement » et les KPI associés. En identifiant explicitement les écritures d'ajustement ou de provision, les analystes peuvent mesurer leur volume et leur valeur, suivre les tendances au fil du temps et enquêter sur les causes profondes de leur nécessité. Cela aide à différencier les écritures opérationnelles de routine des ajustements de fin de période. Pourquoi c'est important Catégorise les enregistrements pour une analyse ciblée, permettant le suivi et la mesure des types d'écritures clés comme les ajustements et les régularisations, qui sont des indicateurs de la santé du processus. Où obtenir Ceci est un champ dérivé. La logique doit être définie sur la base de règles métier, généralement en utilisant des champs comme le type de document (BLART) de BKPF. Exemples AjustementProvisionContrepassationStandard | |||
| Type de document BLART | Un code qui classifie différents types de documents comptables. | ||
| Description Le type de document est utilisé dans SAP pour distinguer diverses transactions commerciales, telles que les factures fournisseurs (KR), les paiements clients (DZ) et les écritures de compte général (SA). Il contrôle également des propriétés comme la plage de numéros de document. Pour l'analyse de clôture de fin de période, le type de document est un filtre puissant. Il peut être utilisé pour isoler des types d'activités spécifiques, telles que les provisions, les dotations ou les écritures d'annulation. Cela aide à analyser le volume et l'impact financier des différentes transactions liées à la clôture et peut être utilisé pour définir des activités spécifiques dans le modèle de processus. Pourquoi c'est important Aide à classer et filtrer les transactions, rendant possible l'isolation et l'analyse d'activités spécifiques comme les régularisations, les annulations ou les enregistrements inter-sociétés. Où obtenir Situé dans la table d'en-tête de document, BKPF (BLART). Exemples SAABKR | |||
| Utilisateur responsable USNAM | L'ID utilisateur SAP de la personne qui a créé ou exécuté la transaction. | ||
| Description Ce champ capture l'utilisateur qui a enregistré un document, exécuté un rapport ou un programme lié à la clôture. Il identifie l'individu responsable d'une activité donnée. L'analyse par utilisateur est essentielle pour comprendre la répartition de la charge de travail, identifier les besoins en formation et enquêter sur les déviations de processus. Les dashboards montrant les activités par utilisateur peuvent mettre en évidence les membres de l'équipe surchargés ou les individus qui peuvent suivre des procédures non standard. Cela aide également à la gestion des performances et à l'allocation des ressources au sein de l'équipe financière. Pourquoi c'est important Permet l'analyse de la répartition de la charge de travail, de la performance des équipes et l'identification des déviations de processus liées à des individus spécifiques. Où obtenir Disponible dans la table BKPF (USNAM) pour la création de documents. Pour les jobs batch, il peut être trouvé dans TBTCO (SDLUNAME). Exemples JSMITHRDOEFIN_ADMIN | |||
| Date d'achèvement cible TargetCompletionDate | La date limite ou d'échéance prévue pour une activité ou pour l'ensemble de la clôture périodique. | ||
| Description La date cible d'achèvement représente le calendrier par rapport auquel le processus de clôture périodique est mesuré. C'est la date limite à laquelle des jalons spécifiques ou la clôture finale doivent être achevés. Cet attribut est essentiel pour toute analyse liée à la performance ou à la conformité. Il est utilisé pour calculer le KPI « Taux de clôture périodique à temps » et pour alimenter le dashboard « Conformité de la clôture et tâches en retard ». En comparant l'heure réelle de l'événement à cette date cible, le système peut déterminer si les tâches sont en cours, en retard ou à risque de l'être, permettant une gestion proactive du processus de clôture. Pourquoi c'est important Permet la surveillance de la conformité et des performances en fournissant une base de référence pour mesurer si les activités de clôture sont terminées à temps, soutenant les KPI de livraison à temps. Où obtenir Il s'agit typiquement de données de base gérées dans un calendrier séparé, un outil de cockpit de clôture (tel que SAP Financial Closing cockpit) ou une feuille de calcul. Ce n'est pas une partie des données transactionnelles. Exemples 2023-12-29T23:59:59Z2024-01-03T17:00:00Z2024-01-02T12:00:00Z | |||
| Département Department | Le département fonctionnel ou le centre de coûts responsable de l'activité ou de la transaction. | ||
| Description Cet attribut identifie le département commercial, tel que « Finance », « Ventes » ou « Logistique », associé à une transaction. Il est souvent dérivé des données de base du centre de coûts liées à une écriture ou des données de base de l'utilisateur. L'analyse par département soutient le dashboard « Répartition de la charge de travail de l'équipe de clôture ». Elle aide à comprendre comment les différentes fonctions commerciales contribuent à la charge de travail de fin de période, en particulier en termes d'initiatives de transactions pouvant nécessiter des ajustements ou des rapprochements ultérieurement. Elle peut mettre en évidence des domaines en dehors de l'équipe financière centrale qui impactent le processus de clôture. Pourquoi c'est important Aide à analyser la charge de travail et le respect des processus entre les différentes fonctions métier, révélant comment les divers départements impactent l'efficacité de la clôture financière. Où obtenir Souvent dérivé du Centre de Coût (KOSTL) dans BSEG ou des données de base RH de l'utilisateur responsable. Cela peut nécessiter de joindre plusieurs tables. Exemples Finance d'entrepriseComptabilité FournisseursFP&A | |||
| Est Automatisé IsAutomated | Un indicateur signalant si une activité a été réalisée par un utilisateur humain ou un système automatisé. | ||
| Description Cet attribut booléen distingue les tâches manuelles de celles exécutées automatiquement par le système, comme un job batch planifié pour l'évaluation des devises étrangères ou un bot enregistrant des écritures récurrentes. Cela est souvent déterminé en analysant le nom d'utilisateur associé à la transaction (par exemple, « BATCHUSER »). Comprendre le niveau d'automatisation est essentiel pour identifier les opportunités de gains d'efficacité. L'analyse de cet attribut aide à visualiser quelles parties du processus sont manuelles et potentiellement prêtes à être automatisées. Elle aide également à évaluer précisément la charge de travail humaine en excluant les activités générées par le système. Pourquoi c'est important Distingue les activités manuelles des activités système, ce qui est essentiel pour identifier les opportunités d'automatisation et mesurer avec précision les charges de travail manuelles. Où obtenir Il s'agit d'un attribut dérivé. La logique est généralement basée sur le nom d'utilisateur (USNAM), où une liste d'ID d'utilisateurs système ou de batch connus indique une tâche automatisée. Exemples truefaux | |||
| Est en souffrance IsOverdue | Un indicateur calculé signalant si une activité a été achevée après sa date cible prévue. | ||
| Description Cet attribut booléen compare l'heure d'achèvement réelle d'une activité (EventTime) avec sa date limite planifiée (TargetCompletionDate). Si l'heure de l'événement est postérieure à la date cible, le flag est défini sur true. Cet attribut supporte directement le dashboard « Conformité de la clôture et tâches en retard » et le KPI « Taux de clôture périodique à temps ». Il fournit un signal clair et immédiat des déviations de planning, permettant aux managers d'identifier rapidement les tâches en retard, de comprendre l'impact sur le calendrier global et de responsabiliser les équipes quant au respect des délais. Pourquoi c'est important Fournit un indicateur clair de non-conformité aux plannings, permettant une identification rapide des tâches en retard et la mesure de la performance dans les délais. Où obtenir Il s'agit d'un attribut calculé, déterminé dans l'outil de process mining en comparant le EventTime à la TargetCompletionDate. Exemples truefaux | |||
| Est un retravail IsRework | Un indicateur calculé qui identifie les activités représentant un retravail, comme une annulation ou un rapprochement rejeté. | ||
| Description Cet attribut booléen signale les événements ou séquences d'événements qui indiquent des boucles inefficaces ou des corrections dans le processus. Par exemple, une activité « Rapprochement examiné » suivie d'une autre « Écriture de journal d'ajustement enregistrée » sur le même compte pourrait être signalée comme retravail. Cet attribut est essentiel pour quantifier le gaspillage de processus et supporte le dashboard « Instances de retravail de rapprochement » et le KPI « Taux de retravail de rapprochement ». En isolant le retravail, les équipes peuvent enquêter sur les causes profondes, mesurer l'impact sur le temps de cycle et suivre l'efficacité des initiatives d'amélioration des processus visant à bien faire du premier coup. Pourquoi c'est important Quantifie l'inefficacité du processus en signalant les activités qui sont des corrections ou des répétitions, aidant à mesurer et à réduire les efforts inutiles. Où obtenir Il s'agit d'un attribut calculé. La logique est définie dans l'outil de process mining en fonction de séquences d'activités spécifiques (par exemple, des boucles) ou d'attributs (par exemple, ReversalReason n'est pas nul). Exemples truefaux | |||
| Exercice fiscal GJAHR | L'exercice fiscal au cours duquel la transaction a été enregistrée. | ||
| Description L'exercice fiscal est un élément fondamental pour l'organisation des données financières. Il s'agit d'un composant clé de l'ID de case de la période financière et fournit un contexte essentiel pour toutes les transactions. Bien que souvent partie de l'ID de case, avoir l'exercice fiscal comme attribut distinct est utile pour l'analyse des tendances à long terme. Cela permet des comparaisons d'une année sur l'autre des temps de cycle de clôture, des volumes d'ajustement ou d'autres KPI, aidant à identifier les améliorations ou les dégradations des performances sur plusieurs années. Pourquoi c'est important Fournit un contexte temporel essentiel et permet des comparaisons de performance du processus de clôture d'une année sur l'autre. Où obtenir Disponible dans la table d'en-tête de document, BKPF (GJAHR). Exemples 202320242022 | |||
| Partenaire commercial VBUND | L'identifiant de la société du groupe affiliée impliquée dans une transaction intersociétés. | ||
| Description L'ID du partenaire commercial est utilisé pour identifier l'autre code société participant à une transaction intersociétés. Ceci est essentiel pour le rapprochement des comptes entre entités juridiques liées. Cet attribut supporte directement le dashboard « Flux de rapprochement intersociétés » et le KPI « Temps de cycle de rapprochement intersociétés ». En filtrant les transactions où un partenaire commercial est présent, l'analyse peut se concentrer spécifiquement sur l'efficacité et la ponctualité du processus de rapprochement intersociétés, qui est souvent un point douloureux majeur pendant la clôture périodique. Pourquoi c'est important Identifie spécifiquement les transactions intersociétés, permettant une analyse ciblée du processus de rapprochement intersociétés, souvent complexe et chronophage. Où obtenir Trouvé dans la table des postes de document, BSEG (VBUND). Exemples 1000US013000 | |||
| Raison de l'annulation ReversalReason | Un code indiquant la raison pour laquelle un document financier a été annulé. | ||
| Description Lorsqu'un document est annulé dans SAP, un code motif peut être attribué pour expliquer la raison de l'annulation, par exemple, 'Annulation dans la période en cours' ou 'Saisie incorrecte'. Cet attribut fournit un contexte critique expliquant pourquoi des reprises sont nécessaires. L'analyse des motifs d'annulation aide à identifier les schémas d'erreurs, telles que des saisies de données incorrectes ou des dates erronées. Cette compréhension peut être utilisée pour mettre en œuvre des mesures préventives, améliorer la formation ou renforcer les contrôles système afin de réduire le nombre d'erreurs et les annulations subséquentes, menant ainsi à une clôture plus efficace. Pourquoi c'est important Fournit une vision directe des causes profondes des erreurs et du retravail, aidant à identifier les opportunités d'amélioration des processus et de prévention des erreurs. Où obtenir Situé dans la table d'en-tête de document, BKPF (STGRD). Exemples 010205 | |||
| Statut du rapprochement ReconciliationStatus | Le statut actuel d'un rapprochement de compte, tel que « Ouvert », « En revue » ou « Approuvé ». | ||
| Description Cet attribut suit l'état d'un rapprochement de compte au fur et à mesure de son progression dans son workflow. Il indique si un rapprochement a été démarré, soumis pour revue, approuvé ou rejeté. C'est un attribut clé pour le monitoring en temps réel de l'avancement des activités de rapprochement. Il aide à identifier quels rapprochements sont bloqués et pendant combien de temps, supportant des KPI comme le « Temps de cycle de rapprochement de comptes ». Il offre une visibilité sur le processus d'approbation et est crucial pour les dashboards qui suivent les bottlenecks de rapprochement et la charge de travail de l'équipe. Pourquoi c'est important Offre une visibilité sur le workflow de rapprochement, permettant de suivre la progression, d'identifier les bottlenecks et de mesurer les temps de revue et d'approbation. Où obtenir Cette information réside souvent dans un outil de rapprochement séparé (par exemple, SAP Account Substantiation and Automation by BlackLine) ou un champ de statut personnalisé. Ce n'est généralement pas un champ standard dans BKPF/BSEG. Exemples Non démarréEn coursApprouvéRejeté | |||
| Temps de cycle de clôture périodique PeriodCloseCycleTime | Le temps total écoulé du début à la fin du processus de clôture périodique pour une seule période financière. | ||
| Description Cette métrique calculée mesure la durée de bout en bout de l'intégralité de la clôture périodique pour une période financière. Elle est généralement calculée comme la différence de temps entre la première et la dernière activité enregistrée au cours de cette période. Il s'agit d'un indicateur clé de performance (KPI) principal pour le processus Du Bilan au Rapport. Il fournit une mesure de haut niveau de l'efficacité globale de la clôture. Les dashboards visualisant cette métrique au fil du temps sont essentiels pour suivre les progrès vers des objectifs stratégiques tels que l'accélération de la clôture. Pourquoi c'est important Il s'agit d'un KPI critique qui mesure l'efficacité et la rapidité globales de la clôture financière, soutenant directement les objectifs stratégiques de raccourcissement des cycles de clôture. Où obtenir Il s'agit d'une métrique calculée, déterminée au sein de l'outil de process mining en prenant la différence entre le EventTime maximum et minimum pour chaque FinancialPeriod (CaseId). Exemples 5 jours 4 heures 30 minutes6,2 jours120,5 heures | |||
Du Bilan au Rapport - Activités de Clôture Périodique et Rapprochement
| Activité | Description | ||
|---|---|---|---|
| Écriture de journal d'ajustement enregistrée | Une écriture de journal d'ajustement est enregistrée pour corriger les soldes de compte après que le traitement initial des transactions est terminé pour la période. Cet événement est capturé comme un enregistrement de document financier standard dans SAP. | ||
| Pourquoi c'est important Ceci est essentiel pour l'analyse du volume des écritures de régularisation. Un volume élevé de régularisations suggère des problèmes de précision des processus en amont et constitue une cible clé pour les initiatives d'amélioration des processus. Où obtenir Trouvé dans les tables BKPF et BSEG. Ces écritures sont généralement identifiées par un type de document spécifique (BKPF-BLART) réservé aux ajustements, ou par leur enregistrement dans des périodes de clôture spéciales, telles que 13 à 16. Capture Filtrez BKPF pour les documents enregistrés dans des périodes spéciales ou avec des types de documents d'ajustement. Type d'événement explicit | |||
| États financiers générés | Ceci représente le moment où les états financiers officiels, tels que le compte de résultat et le bilan, sont générés. Cette activité est généralement capturée en suivant l'exécution d'un programme de reporting spécifique. | ||
| Pourquoi c'est important Il s'agit d'un jalon majeur qui marque la fin du traitement des données et le début de la phase finale de revue et d'approbation. Le temps écoulé entre cet événement et l'approbation est un KPI clé. Où obtenir Inférence des journaux d'audit système, tels que STAD, qui enregistrent l'exécution du programme de génération des états financiers, le plus souvent la transaction F.01. Capture À partir des journaux système (STAD) suivant l'exécution de la transaction d'états financiers F.01. Type d'événement inferred | |||
| Exécution de l'évaluation des devises étrangères | Ceci représente l'exécution d'un programme de réévaluation des postes ouverts et des soldes enregistrés en devises étrangères en utilisant les taux de change de fin de période. Cette opération est généralement exécutée sous forme de tâche par lots dans le cadre des étapes de clôture de fin de période. | ||
| Pourquoi c'est important Il s'agit d'une étape critique pour garantir des rapports financiers précis dans les organisations multinationales. L'analyse de son timing et de sa durée permet d'identifier des opportunités d'automatisation et d'optimisation des performances. Où obtenir Capturé à partir des logs d'exécution du programme d'évaluation des devises étrangères, tel que FAGL_FCV ou F.05. Les détails des jobs batch des tables comme TBTCO et TBTCP fournissent les horodatages d'exécution. Capture À partir des journaux de jobs batch (table TBTCO) pour le programme FAGL_FC_VALUATION ou SAPF100. Type d'événement explicit | |||
| Période clôturée pour enregistrement | Représente la clôture formelle d'une période d'enregistrement, ce qui empêche d'autres écritures de journal opérationnelles. Cela garantit l'intégrité des données financières pour la période clôturée et constitue un changement de configuration explicite. | ||
| Pourquoi c'est important Ceci est l'événement de fin définitif du processus de clôture de période. Il est essentiel pour calculer précisément le temps de cycle total de clôture de période et mesurer la performance dans les délais impartis. Où obtenir La clôture des périodes via la transaction OB52 est enregistrée. Ces modifications peuvent être trouvées en analysant les documents de modification (tables CDHDR et CDPOS) pour la table de configuration T001B. Capture Extraire des documents de modification (CDHDR/CDPOS) pour la table T001B. Type d'événement explicit | |||
| Période ouverte pour enregistrement | Ceci marque le début officiel d'une période financière, permettant l'enregistrement des transactions dans le grand livre. Il s'agit d'une modification de configuration explicite, effectuée par un utilisateur autorisé pour ouvrir une période spécifique aux écritures dans un ou plusieurs codes société. | ||
| Pourquoi c'est important Cette activité sert d'événement de début définitif pour le case du processus de clôture périodique. L'analyse du temps à partir de ce point aide à comprendre le cycle de vie complet de la période financière. Où obtenir Les modifications des périodes comptables via la transaction OB52 sont enregistrées. Ces modifications peuvent être extraites en analysant les documents de modification de la table de configuration sous-jacente T001B, généralement en utilisant les tables CDHDR et CDPOS. Capture Extraire des documents de modification (CDHDR/CDPOS) pour la table T001B. Type d'événement explicit | |||
| Rapprochement des comptes initié | Représente le début du processus de rapprochement pour un ensemble de comptes GL pour la période. Dans SAP ECC standard, il ne s'agit pas d'un événement discret et est généralement déduit d'activités connexes, telles que l'exécution d'un rapport clé pour la première fois. | ||
| Pourquoi c'est important Cette activité établit un jalon clé pour mesurer la durée de l'intégralité de la phase de rapprochement. Comprendre quand le rapprochement commence est essentiel pour le KPI « Temps de cycle de rapprochement de comptes ». Où obtenir Cet événement n'est pas explicitement journalisé. Il doit être déduit d'autres sources de données, telles que le journal d'audit système (transaction STAD) pour la première exécution d'un rapport d'affichage de solde comme FAGLB03 ou FS10N. Capture Inférer de la première exécution des transactions de rapport pertinentes (par exemple, FAGLB03) dans les journaux système. Type d'événement inferred | |||
| Document intersociétés compensé | Cette activité marque la compensation d'un poste non soldé entre deux codes société différents, signifiant qu'une transaction intersociétés a été réglée ou rapprochée. Ceci est enregistré comme une écriture financière explicite dans SAP, typiquement un document de compensation. | ||
| Pourquoi c'est important Les retards dans la compensation des éléments inter-sociétés sont un goulot d'étranglement courant dans le processus de clôture. Le suivi de cette activité est essentiel pour mesurer et améliorer le temps de cycle de rapprochement inter-sociétés. Où obtenir Identifié à partir des documents financiers dans BKPF et BSEG. Un document de compensation relie et ferme les postes non soldés, et sa date de compensation (BSEG-AUGDT) sert d'horodatage d'événement. Les transactions inter-sociétés sont identifiées par les champs du partenaire commercial. Capture Identifier les documents de compensation dans BKPF/BSEG qui impliquent des postes avec des partenaires commerciaux. Type d'événement explicit | |||
| Écriture d'annulation enregistrée | Cette activité capture l'enregistrement d'un document qui annule une écriture de journal précédemment enregistrée, souvent pour corriger une erreur. SAP crée un lien explicite entre le document d'annulation et le document original. | ||
| Pourquoi c'est important Un nombre élevé d'annulations indique des problèmes potentiels de précision de saisie des données ou de contrôles de processus. Le suivi de ces événements aide à mesurer les taux de réussite du premier coup et à identifier les domaines nécessitant des améliorations. Où obtenir Les documents d'annulation se trouvent dans la table BKPF. Ils sont souvent créés avec la transaction FB08 et contiennent une référence au numéro du document annulé dans le champ BKPF-STBLG. Capture Identifier les documents où BKPF-STBLG est renseigné ou créé via des codes de transaction d'annulation. Type d'événement explicit | |||
| Exécution de la compensation GR/IR | L'exécution du programme de compensation automatisée pour le compte Réception de Marchandises/Réception de Factures (GR/IR). Ce programme rapproche les réceptions de marchandises et les réceptions de factures correspondantes et compense les éléments les uns par rapport aux autres. | ||
| Pourquoi c'est important Le compte GR/IR est une source fréquente de problèmes de rapprochement. Le monitoring de cette activité garantit que l'étape automatisée s'exécute correctement et aide à quantifier le volume d'exceptions nécessitant un suivi manuel. Où obtenir L'exécution est capturée dans les journaux de jobs batch (transaction SM37). Le programme est généralement SAPF124, exécuté via la transaction F.13. Les tables de journaux de jobs comme TBTCO fournissent les horodatages nécessaires. Capture À partir des journaux de jobs batch (table TBTCO) pour le programme de compensation SAPF124. Type d'événement explicit | |||
| Rapport de balance généré | Marque l'exécution d'un rapport pour générer la balance des comptes. Il s'agit d'une étape clé pour vérifier que le total des débits est égal au total des crédits avant de créer les états financiers officiels. | ||
| Pourquoi c'est important Il s'agit d'une étape de contrôle qualité critique avant la publication finale. Des exécutions répétées de ce rapport peuvent indiquer que des problèmes de données sous-jacents sont détectés et corrigés, ce qui pourrait entraîner des retards. Où obtenir Inférence des journaux d'audit système, comme la transaction STAD, qui peut enregistrer l'exécution des transactions de reporting de balance telles que S_ALR_87012277 ou F.01. Capture À partir des journaux système (STAD) suivant l'exécution des codes de transaction de reporting. Type d'événement inferred | |||
| Rapprochement examiné | Indique qu'un rapprochement pour un compte spécifique ou un groupe de comptes a été examiné et confirmé. Dans SAP ECC standard, ce n'est pas un événement explicitement enregistré et il est souvent géré par des contrôles hors ligne ou des solutions personnalisées. | ||
| Pourquoi c'est important Le suivi du calendrier des révisions est important pour comprendre les goulots d'étranglement dans les étapes de contrôle et de supervision du processus de clôture. Il peut mettre en évidence les retards causés par la disponibilité de la direction ou les reprises. Où obtenir Cette information n'est pas disponible dans les tables ECC standard. Elle nécessiterait une solution personnalisée, telle qu'un champ de statut dans une table Z personnalisée, un workflow simple ou une intégration avec un outil de rapprochement tiers spécialisé. Capture Capturer le changement de statut à partir d'un workflow personnalisé ou d'une table Z si implémenté. Type d'événement inferred | |||
| Régularisation ou provision enregistrée | Ceci représente l'enregistrement d'une écriture de journal pour une charge à payer, un produit à recevoir ou une provision, qui sont généralement comptabilisées vers la fin d'une période. Ce n'est pas un type d'événement distinct dans SAP, mais il est inféré en identifiant des écritures de journal spécifiques en fonction de leurs caractéristiques. | ||
| Pourquoi c'est important L'isolement de ces écritures permet d'analyser le sous-processus de gestion des estimations. Un volume élevé ou des ajustements fréquents des provisions peuvent indiquer des domaines d'amélioration du processus. Où obtenir Déduit des tables de documents financiers BKPF et BSEG. Les écritures peuvent être identifiées en filtrant sur un type de document spécifique (BKPF-BLART), un compte général (GL) unique (BSEG-HKONT) ou des mots-clés dans le texte d'en-tête (BKPF-BKTXT). Capture Filtrez les tables BKPF/BSEG sur le type de document, les comptes GL spécifiques ou les champs de texte. Type d'événement inferred | |||
Guides d'extraction
Étapes
- Accéder à l'outil SAP Query : Connectez-vous à votre système SAP ECC. Allez au code de transaction
SQVI(QuickViewer). 2. Créer une nouvelle requête : Saisissez un nom pour votre requête, par exemple,Z_R2R_PERIOD_CLOSE, et cliquez sur 'Créer'. Dans la fenêtre contextuelle, fournissez un titre descriptif comme 'Extraction Clôture de période Record to Report'. Pour la 'Source de données', sélectionnez 'Jointure de tables'. 3. Définir les jointures de tables : Ajoutez la table principaleBKPF(En-tête de document comptable). Ensuite, ajoutez la tableBSEG(Segment de document comptable). SAP proposera automatiquement les conditions de jointure (MANDT, BUKRS, BELNR, GJAHR), que vous devrez vérifier et accepter. Pour les activités d'ouverture et de clôture de période, vous aurez besoin d'une requête séparée joignantCDHDRetCDPOS. 4. Sélectionner les champs de sortie (Champs de liste) : Naviguez vers l'onglet 'Sélection champs de liste'. Sélectionnez les champs requis pour le journal d'événements à partir des tables disponibles. Cela inclutBKPF-BUKRS,BKPF-BELNR,BKPF-GJAHR,BKPF-MONAT,BKPF-CPUDT,BKPF-CPUTM,BKPF-USNAM,BKPF-BLART,BSEG-HKONT,BSEG-DMBTR, et d'autres si nécessaire. 5. Définir les paramètres d'entrée (Champs de sélection) : Naviguez vers l'onglet 'Champs de sélection'. Choisissez les champs qui seront utilisés pour filtrer les données pendant l'exécution. Les champs les plus importants sontBKPF-BUKRS(Code société) etBKPF-GJAHR(Exercice fiscal). Vous pouvez également ajouterBKPF-MONAT(Période comptable) etBKPF-BLART(Type de document). 6. Créer des variantes pour chaque activité : Comme SQVI ne peut pas combiner différentes sélections de données (comme une UNION SQL), vous devez exécuter la requête plusieurs fois. Pour chaque activité (par exemple, 'Régularisation ou provision enregistrée'), exécutez la requête et entrez des valeurs de filtre spécifiques sur l'écran de sélection, telles qu'une liste de types de documents pertinents pour les régularisations. Enregistrez cet ensemble de critères de sélection comme une variante. Répétez ce processus pour chaque activité extractible. 7. Exécuter et extraire les données : Exécutez la requête pour chaque variante que vous avez créée. Cela exécutera la requête avec les filtres spécifiques à cette activité. 8. Exporter les résultats : Dans l'écran des résultats, exportez les données vers un fichier local. Le format le plus courant est 'Feuille de calcul'. Répétez l'exportation pour chaque variante. 9. Combiner et transformer les données : Ouvrez les fichiers exportés dans un programme de feuille de calcul ou utilisez un outil de script. Combinez manuellement les données de tous les fichiers dans un seul fichier maître. 10. Ajouter des colonnes constantes et calculées : Dans le fichier combiné, ajoutez les colonnes qui ne sont pas directement extraites des tables SAP. Cela inclutActivityName(définissez-le manuellement en fonction de la variante d'où proviennent les données),FinancialPeriod(en concaténant l'exercice fiscal et la période),EventTime(en combinant les champs de date et d'heure),SourceSystem, etLastDataUpdate. 11. Formater pour l'upload : Assurez-vous que le fichier final est enregistré au format CSV ou Excel avec les en-têtes de colonne corrects requis par votre outil de process mining. Vérifiez les types de données et le formatage avant l'upload.
Configuration
- Source de données : Jointure de tables dans SAP Query (SQVI). Les tables clés sont BKPF, BSEG, CDHDR et CDPOS. * Période de données : Il est recommandé d'extraire les données pour une période d'au moins 3 à 6 périodes financières complètes afin d'identifier des tendances. Définissez le filtre sur
BKPF-GJAHR(Exercice fiscal) etBKPF-MONAT(Période). * Filtre Code société : Filtrez toujours parBKPF-BUKRS(Code société) pour limiter le volume de données et concentrer l'analyse sur des entités légales spécifiques. L'extraction pour tous les codes société simultanément n'est pas recommandée. * Filtre Type de document : Utilisez des filtres surBKPF-BLART(Type de document) pour isoler des activités spécifiques comme les régularisations, les ajustements ou les annulations. Vous devrez obtenir les types de documents pertinents pour votre organisation. * Prérequis : L'utilisateur exécutant l'extraction doit être autorisé à utiliser la transactionSQVIet avoir un accès d'affichage aux tables financières pertinentes (par exemple, l'objet d'autorisation S_TABU_DIS). * Considérations de performance : Joindre BKPF et BSEG peut être gourmand en ressources. Exécutez l'extraction pendant les heures creuses. Évitez d'utiliser des plages de dates très larges ou de laisser le filtre Code société ouvert, car cela peut entraîner des problèmes de mémoire ou des dépassements de délai.
a Exemple de requête 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
*/ Étapes
- Définition et conception du programme : Définissez la logique spécifique pour identifier chacune des 12 activités requises. Consultez les propriétaires de processus métier et les analystes fonctionnels SAP pour confirmer les types de documents, les comptes généraux et les noms de programmes associés aux activités de clôture de période dans votre environnement SAP ECC spécifique.
- Créer un programme ABAP : À l'aide de la transaction
SE38(Éditeur ABAP), créez un nouveau programme exécutable, par exemple,Z_PM_R2R_EXTRACTION. Donnez un titre descriptif et définissez le type de programme sur 'Programme exécutable'. - Définir l'écran de sélection : Dans le programme, définissez un écran de sélection à l'aide des
PARAMETERSetSELECT-OPTIONS. Cet écran permettra aux utilisateurs de spécifier le périmètre d'extraction, y compris le Code société (BUKRS), l'Exercice fiscal (GJAHR) et la Période comptable (MONAT). Ceci est crucial pour contrôler le volume de données. - Déclarer les structures de données : Définissez une structure de table interne qui contiendra les données finales du journal d'événements. Cette structure doit inclure tous les attributs requis et recommandés :
FinancialPeriod,ActivityName,EventTime,SourceSystem,LastDataUpdate,BUKRS,BELNR,USNAM,HKONT,BLART,DMBTRetJournalEntryType. - Implémenter la logique d'extraction de données : Écrivez la logique ABAP principale pour sélectionner les données pour chacune des 12 activités. Pour chaque activité, interrogez les tables SAP pertinentes (par exemple, BKPF, BSEG, TBTCO, CDHDR) et remplissez une table interne intermédiaire. Utilisez la logique fournie dans la section de requête ABAP correspondante comme modèle.
- Identifier les activités inférées : Pour les activités non explicitement enregistrées dans SAP standard, telles que 'Rapprochement de compte initié' ou 'Rapprochement examiné', implémentez la logique d'inférence convenue. Cela peut impliquer de vérifier la première exécution d'un rapport spécifique ou d'interroger des 'tables Z' personnalisées si elles existent.
- Consolider les données d'événement : Après avoir extrait les données pour toutes les activités individuelles, ajoutez les enregistrements de chaque table intermédiaire dans la table interne consolidée finale. Assurez-vous que le champ
EventTimeest correctement rempli à partir du champ source pertinent, tel que la date/heure de comptabilisation du document ou la date/heure de début du job. - Standardiser et formater les données : Avant la sortie, standardisez les champs clés. Combinez l'exercice fiscal et la période dans l'identifiant
FinancialPeriod. Définissez des valeurs statiques pourSourceSystemetLastDataUpdate. Assurez-vous que les horodatages sont dans un format cohérent. - Développer la fonctionnalité de sortie : Ajoutez des fonctionnalités au programme pour exporter la table interne finale. La méthode la plus courante consiste à écrire les données dans un fichier CSV ou délimité par des tabulations sur le serveur d'applications SAP (en utilisant
OPEN DATASET) ou à permettre à l'utilisateur de le télécharger directement sur sa machine locale (en utilisant le module de fonctionGUI_DOWNLOAD). - Testez et validez : Testez en profondeur le programme avec un jeu de données représentatif couvrant plusieurs codes société et périodes. Utilisez les étapes de validation pour garantir l'exactitude et l'exhaustivité des données. Affinez la logique de sélection en fonction des commentaires des experts fonctionnels.
- Planifier l'exécution (Facultatif) : Une fois validé, le programme peut être planifié pour s'exécuter en tant que job d'arrière-plan via la transaction
SM36. Cela permet une extraction automatique et périodique du journal d'événements sans intervention manuelle.
Configuration
- Critères de sélection : Le programme doit disposer d'un écran de sélection pour filtrer les données. Les principaux filtres incluent :
Code société (BUKRS): Obligatoire pour limiter le périmètre aux entités légales pertinentes.Exercice fiscal (GJAHR): Obligatoire pour définir l'année principale de l'extraction.Période comptable (MONAT): Obligatoire pour sélectionner les périodes financières spécifiques.
- Configuration spécifique aux activités : De nombreuses sélections dépendent de votre configuration SAP spécifique. Celles-ci doivent être configurables comme paramètres ou constantes au sein du programme :
Types de documents de régularisation/provision: Une liste de types de documents (BLART) utilisée pour identifier les écritures de régularisation et de provision.Types de documents d'ajustement: Une liste de types de documents utilisée pour identifier les écritures de journal d'ajustement.Noms des programmes/jobs d'arrière-plan: Les noms techniques des programmes utilisés pour l'évaluation des devises étrangères (par exemple,FAGL_FCV), la compensation GR/IR (par exemple,SAPF124), les rapports de balance et la génération d'états financiers (par exemple,RFBILA00).
- Période de données : Bien que la sélection principale soit par exercice fiscal et par période, la logique sous-jacente doit prendre en compte la date et l'heure complètes des événements. Pour une analyse initiale, il est recommandé d'extraire les données des 3 à 6 dernières périodes financières complètes.
- Performance : Pour les grands environnements SAP, la performance du programme est critique. Assurez-vous que les sélections de base de données utilisent des champs indexés, en particulier sur des tables comme
BKPFetBSEG. Évitez de sélectionner tous les champs (SELECT *) et traitez les données par paquets gérables si nécessaire. - Autorisations : L'utilisateur ou le compte de service exécutant ce programme nécessite une autorisation d'accès à toutes les tables interrogées (
BKPF,BSEG,TBTCO,TBTCP,CDHDR,CDPOS) et d'exécution des transactions commeSE38(pour le développement) etSM37/SM36(pour la planification et la surveillance).
a Exemple de requête 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. Étapes
- Rassembler les prérequis : Obtenez des identifiants d'accès en lecture seule pour la base de données SAP ECC sous-jacente. Identifiez le schéma de base de données correct, qui est généralement
SAPSR3ou un nom similaire fourni par votre administrateur de base de données. - Identifier la configuration du système : Consultez votre équipe financière SAP pour déterminer les
Codes société(BUKRS) spécifiques et les périodes financières que vous devez analyser. Il est crucial d'identifier lesTypes de documents(BLART) spécifiques utilisés pour les transactions 'Régularisation ou provision enregistrée', 'Écriture de journal d'ajustement enregistrée' et 'Inter-sociétés' dans votre système. - Vérifier les noms de programmes et de jobs : Confirmez les noms de programmes pour les jobs batch clés tels que l'évaluation des devises étrangères (par exemple,
FAGL_FCV), la compensation GR/IR (par exemple,SAPF124), les rapports de balance (par exemple,RFBILA00) et la génération des états financiers (par exemple,RFBILA00). Ceux-ci peuvent être trouvés en vérifiant les jobs planifiés dans la transactionSM37. - Personnaliser la requête SQL : Copiez la requête SQL fournie dans un éditeur de texte ou un client SQL. Remplacez les variables de remplacement
{{start_date}},{{end_date}}et{{company_codes}}par les valeurs réelles de votre analyse. Mettez à jour les listes de types de documents et de noms de programmes en fonction des informations recueillies aux étapes précédentes. - Se connecter à la base de données : Utilisez un outil client SQL standard, tel que DBeaver, SQL Server Management Studio ou Oracle SQL Developer, pour vous connecter à la base de données SAP à l'aide des identifiants que vous avez obtenus.
- Exécuter la requête : Exécutez la requête SQL personnalisée sur la base de données. Selon la plage de dates et la taille de vos tables financières, cette requête peut prendre un temps considérable pour se terminer.
- Revoir les résultats initiaux : Une fois la requête terminée, effectuez un examen rapide de la sortie. Vérifiez qu'un nombre raisonnable de lignes, que toutes les colonnes sont présentes et que différentes valeurs de
ActivityNamesont incluses dans les résultats. - Exporter les données : Exportez l'ensemble complet des résultats de votre client SQL vers un fichier CSV. Assurez-vous que le fichier est enregistré avec un encodage UTF-8 pour éviter les problèmes de caractères.
- Préparer pour l'upload : Avant de télécharger vers un outil de process mining, confirmez que les en-têtes de colonne du fichier CSV correspondent exactement aux noms d'attributs requis (
FinancialPeriod,ActivityName,EventTime, etc.). Vérifiez également que la colonneEventTimeest dans un format d'horodatage cohérent, tel queYYYY-MM-DD HH:MI:SS.
Configuration
- Identifiants de base de données : Un utilisateur de base de données en lecture seule avec accès aux tables centrales de finance et de système SAP est requis. Cela inclut des tables comme
BKPF,BSEG,TBTCO,CDHDRetCDPOS. - Période de données : Nous recommandons d'extraire des données pour au moins 3 à 6 périodes financières complètes afin de saisir des variations de processus significatives. N'oubliez pas que des plages de dates plus larges augmenteront considérablement le temps d'exécution des requêtes.
- Codes société (
BUKRS) : Filtrez toujours par une liste spécifique de codes société. L'exécution de la requête pour tous les codes société sur un grand système n'est pas réalisable et entraînera probablement des problèmes de performance. - Types de documents (
BLART) : L'identification des types d'écritures de journal, tels que les régularisations et les ajustements, dépend entièrement de la configuration SAP spécifique de votre organisation. Vous devez fournir les codes de type de document corrects dans les clausesWHEREde la requête pour une classification précise des activités. - Noms de programmes et de jobs : La requête utilise des noms de programmes courants pour les étapes de clôture automatisées. Votre système peut utiliser des programmes d'encapsulation personnalisés ou des noms de jobs différents. Vérifiez-les dans la transaction
SM37et mettez à jour la requête en conséquence. - Considérations de performance : Cette requête accède à de très grandes tables, notamment
BSEGetCDPOS. Il est fortement recommandé d'exécuter cette extraction en dehors des heures ouvrées afin d'éviter d'impacter les performances du système. L'application de filtres de date et de codes société étroits est le moyen le plus efficace de gérer le temps d'exécution.
a Exemple de requête 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'
;