Votre modèle de données pour le traitement de la paie
Votre modèle de données pour le traitement de la paie
- Champs de données stratégiques pour l’analyse de la paie
- Jalons clés pour la découverte du processus
- Instructions d’extraction propres au système
Attributs du traitement de la paie
| Nom | Description | ||
|---|---|---|---|
| Activité Activity | Tâche ou événement précis qui survient au cours du processus de paie. | ||
| Description Cet attribut indique le nom de l’étape du processus en cours, par exemple « Feuille de temps soumise », « Simulation de paie exécutée » ou « Paiement effectué ». Il constitue la base de la cartographie du processus et permet aux analystes de visualiser l’enchaînement des opérations du cycle de paie. Les données de cet attribut proviennent de différents journaux, notamment ceux des flux de travail (SWWLOGHIST), des modifications d’infotype (CDHDR/CDPOS) et des tables de statut propres à la paie. Des conventions de nommage cohérentes sont appliquées lors de l’extraction afin de convertir les codes d’événement techniques en noms d’activités compréhensibles par les équipes métier. Pourquoi est-ce important ? Il définit les nœuds du graphe du processus et permet de visualiser les flux, les boucles et les variantes du processus. Où trouver ces données Dérivé de SWWLOGHIST (flux de travail), CDHDR (documents de modification) ou des changements de statut de PA03 (enregistrement de contrôle). Exemples Feuille de temps soumiseSalaire brut calculéAnomalie d’audit signaléePaiement exécuté | |||
| Enregistrement de paie PayrollRecord | Identifiant unique combinant le salarié et la période de paie. | ||
| Description L’enregistrement de paie sert d’identifiant central du cas pour l’analyse Process Mining. Il représente une exécution du traitement de la paie pour un salarié donné et une période définie. Il relie toutes les activités, depuis la soumission initiale de la feuille de temps jusqu’à la déclaration fiscale finale. Dans SAP SuccessFactors Employee Central Payroll, cet identifiant est généralement construit en concaténant le matricule (PERNR), l’année de paie (PABRJ) et la période de paie (PABRP), auxquels peut s’ajouter un numéro de séquence (SEQNR) pour distinguer plusieurs exécutions. Ce niveau de détail permet d’analyser chaque cycle de paiement comme une instance distincte, et de mesurer précisément les temps de cycle et de suivre les erreurs. Pourquoi est-ce important ? Il sert d’ID de cas et regroupe tous les événements pertinents afin de reconstituer le parcours complet de chaque paie versée. Où trouver ces données Construit à partir du cluster SAP B2 (résultats de l’évaluation des temps) ou des tables PC_PAYRESULT (PERNR, PABRJ, PABRP, SEQNR). Exemples 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| Horodatage de l’événement EventTimestamp | Date et heure exactes auxquelles l’activité a eu lieu. | ||
| Description Cet attribut enregistre le moment précis où un événement s’est produit, avec sa date et son heure. Il est indispensable au calcul des métriques temporelles, notamment les temps de cycle, les délais et les taux de traitement entre les différentes étapes du processus. Dans SAP ECP, il provient de champs d’horodatage tels que Pourquoi est-ce important ? Il permet de calculer la durée entre les événements, ce qui est essentiel pour repérer les goulots d’étranglement et les dépassements des SLA. Où trouver ces données CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT ou horodatages spécifiques des journaux d’audit. Exemples 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage de la dernière extraction des données. | ||
| Description Cet attribut indique la date de la dernière actualisation de l’enregistrement dans le modèle de données Process Mining. Il aide les analystes à évaluer l’actualité des données et à vérifier que les analyses reposent sur des informations à jour. Bien qu’il ne soit pas directement utilisé pour analyser les flux de processus, il est important pour la gouvernance et la validation des données. Il permet de vérifier que le Dashboard reflète l’état le plus récent du système de paie. Pourquoi est-ce important ? Il informe les utilisateurs du délai de mise à jour des données et les aide à vérifier l’actualité des métriques présentées. Où trouver ces données Généré à l’exécution par le script ETL ou d’extraction. Exemples 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| Système source SourceSystem | Système d’origine des données d’événement. | ||
| Description Cet attribut identifie l’instance SAP SuccessFactors Employee Central Payroll ou le sous-système connecté dont les données ont été extraites. Dans les environnements complexes comprenant plusieurs systèmes de paie ou une architecture hybride, il garantit la traçabilité et la provenance des données. Il est particulièrement utile pour analyser des données issues de différentes installations régionales ou comparer les performances des systèmes existants et des systèmes migrés. Il s’agit généralement d’une chaîne statique définie lors de la configuration de l’extraction des données. Pourquoi est-ce important ? Il permet de segmenter les données dans les environnements multisystèmes et facilite le diagnostic des problèmes de qualité des données en identifiant leur origine. Où trouver ces données ID système (SID) de l’installation SAP ou de la configuration d’extraction. Exemples SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| Automatisé IsAutomated | Indique si l’activité a été effectuée par un utilisateur système. | ||
| Description Cet attribut booléen indique si une étape du processus a été exécutée par un traitement en arrière-plan ou un utilisateur système, ou par une personne. Il est essentiel au Dashboard « Suivi de l’automatisation des virements bancaires », qui calcule la part des traitements sans intervention humaine. Il est généralement déterminé en comparant l’ID utilisateur à une liste de comptes système connus, par exemple « BATCH » ou « SAP_WORKFLOW ». Pourquoi est-ce important ? Il aide à mesurer le taux d’automatisation et à repérer les possibilités de réduire les interventions manuelles. Où trouver ces données Dérivé de l’ID utilisateur, par exemple si l’utilisateur figure dans ['BATCH', 'SYSTEM'], la valeur est true. Exemples truefalse | |||
| Centre de coûts CostCenter | Centre de coûts associé au salarié. | ||
| Description Le centre de coûts désigne le service ou l’unité financière auquel sont imputés les coûts du salarié. Dans le Dashboard « Goulots d’étranglement des approbations de feuilles de temps », il sert d’indicateur du service et aide à repérer les unités organisationnelles qui retardent le cycle de paie. Il figure dans l’infotype Affectation organisationnelle (PA0001), sous le champ Pourquoi est-ce important ? Il permet d’examiner les données par niveau organisationnel afin de repérer les services à l’origine de retards ou de reprises. Où trouver ces données Table PA0001, champ KOSTL. Exemples CC-1000 FinanceCC-2000 InformatiqueCC-3000 Ventes | |||
| Fréquence du cycle de paie PayCycleFrequency | Indique si l’exécution est régulière ou hors cycle. | ||
| Description Cet attribut distingue les exécutions de paie standard et planifiées des exécutions ponctuelles hors cycle, utilisées pour les corrections ou les paiements immédiats. Un volume élevé d’exécutions hors cycle est un indicateur important d’inefficacité du processus. Il est suivi dans le Dashboard « Analyse du volume des paiements hors cycle ». Il est dérivé des champs Motif hors cycle ( Pourquoi est-ce important ? Il est essentiel au calcul de l’indicateur clé de performance « Taux de paiements hors cycle » et à la réduction des traitements non standard. Où trouver ces données Table RGDIR (répertoire du cluster), champ OCRSN ou PAYTY. Exemples RégulierCorrection APaiement de primeFin de contrat | |||
| Groupe de paie PayrollArea | Définit le groupe de paie auquel appartient un salarié. | ||
| Description Le groupe de paie rassemble les salariés traités lors d’une même exécution, souvent selon la fréquence de paiement (par exemple, mensuelle ou toutes les deux semaines) ou la structure organisationnelle. Cet attribut est essentiel pour segmenter l’analyse et comparer les performances entre différentes populations de salariés. Dans SAP, il correspond au champ technique Pourquoi est-ce important ? Il permet de comparer les performances du cycle de paie entre différents groupes, par exemple les salariés rémunérés à l’heure et les salariés mensualisés. Où trouver ces données Table PA0001 (affectation organisationnelle), champ ABKRS. Exemples États-Unis, toutes les deux semainesAllemagne, mensuelPaie des cadres dirigeants | |||
| Montant brut de la paie GrossPayAmount | Montant total brut calculé pour l’enregistrement. | ||
| Description Cet attribut représente le montant total de la rémunération brute avant déductions. Il s’agit d’une métrique fondamentale pour la validation financière, qui permet de mettre en relation les paiements élevés avec un contrôle d’audit plus poussé ou des délais d’approbation plus longs. Il est extrait de la table des résultats de paie (RT), généralement à partir de types de salaire spécifiques représentant le total brut, par exemple /101. Il sert de base au calcul dans l’analyse « Exactitude du calcul des avantages sociaux et des impôts ». Pourquoi est-ce important ? Il permet d’analyser le comportement du processus en fonction du montant du paiement, par exemple pour déterminer si les paiements plus élevés prennent davantage de temps à être approuvés. Où trouver ces données Table des résultats de paie (RT), type de salaire /101 ou équivalent. Exemples 5000.002500.5010500.00 | |||
| Période de paie PayPeriod | Numéro de la période au cours de l’exercice fiscal. | ||
| Description Cet attribut indique le numéro séquentiel de la période de paie, par exemple 01 pour janvier ou pour le premier cycle bimensuel. Il permet aux analystes de suivre l’évolution des performances et de repérer les variations saisonnières de la charge de traitement. Issu de Pourquoi est-ce important ? Il permet d’analyser les tendances et de repérer les goulots d’étranglement saisonniers à certaines périodes de l’année. Où trouver ces données Table PA0001 ou cluster des résultats de paie (RGDIR), champ PABRP. Exemples 01122652 | |||
| Spécialiste de la paie PayrollSpecialist | Identifiant ou nom de la personne qui traite l’enregistrement. | ||
| Description Cet attribut identifie l’administrateur ou le spécialiste de la paie chargé des étapes manuelles ou des approbations. Il est au cœur du Dashboard « Débit de traitement et charge de travail des spécialistes », qui permet d’analyser la répartition de la charge et la productivité individuelle. Il provient du champ Pourquoi est-ce important ? Il est essentiel pour équilibrer la charge de travail et repérer les goulots d’étranglement liés aux interventions humaines. Où trouver ces données Champs système (SY-UNAME) consignés dans CDHDR ou ID de l’acteur du flux de travail. Exemples JSMITHKMILLERSYSTEM | |||
| Type de salarié EmployeeType | Catégorie du salarié, par exemple salarié permanent ou prestataire. | ||
| Description Cet attribut classe les salariés selon leur situation professionnelle, par exemple salarié actif, retraité ou prestataire. La complexité du traitement de la paie varie souvent selon le type de salarié : certains groupes nécessitent davantage d’interventions manuelles ou de contrôles de conformité spécifiques. Il est dérivé des champs Groupe de salariés ( Pourquoi est-ce important ? Il aide à déterminer si les variantes du processus ou les retards concernent certaines catégories de salariés en particulier. Où trouver ces données Table PA0001, champs PERSG (groupe) et PERSK (sous-groupe). Exemples Salarié actifStagiaireRetraitéPrestataire rémunéré à l’heure | |||
| Échéance de traitement du SLA SLAProcessingDeadline | Horodatage cible pour terminer l’exécution de la paie. | ||
| Description Cet attribut représente l’échéance interne ou externe de finalisation de la paie, afin que les paiements soient effectués à temps. Il sert à calculer l’indicateur clé de performance « Taux de conformité aux SLA », en comparant cette échéance à l’horodatage réel de l’événement « Paiement effectué ». Même s’il ne figure pas toujours dans les tables SAP standard, il est souvent conservé dans une table de contrôle personnalisée ou défini à partir du calendrier de paie, par exemple deux jours avant la date de paiement. Dans ce modèle de données, il est souvent calculé en soustrayant un délai défini à la date de paiement. Pourquoi est-ce important ? Il fournit une référence pour évaluer le respect des délais et des SLA. Où trouver ces données Calculé à partir de la date de paiement (T549S), moins le nombre de jours de traitement configuré. Exemples 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
| Entité juridique LegalEntity | Code société ou entité juridique du salarié. | ||
| Description Cet attribut identifie l’entité juridique (code société) associée à l’enregistrement de paie. Il permet de produire des rapports financiers et d’analyser les performances de la paie dans différentes filiales ou entités du groupe. Il provient du champ Pourquoi est-ce important ? Il facilite les comparaisons entre sociétés et l’analyse de la répartition financière. Où trouver ces données Table PA0001, champ BUKRS. Exemples US01DE011000 | |||
| Indicateur d’exception d’audit AuditExceptionFlag | Indique si une exception d’audit s’est produite. | ||
| Description Cet attribut signale les cas où les règles de validation ont déclenché une exception ou un avertissement pendant la simulation ou le calcul de la paie. Il constitue la principale donnée d’entrée de l’indicateur clé de performance « Fréquence des exceptions d’audit ». Les données proviennent souvent du journal de paie ou de tables spécifiques de messages d’erreur (FEHLER). La valeur true indique que le flux du processus a suivi un parcours de gestion des exceptions. Pourquoi est-ce important ? Il met en évidence les problèmes de qualité des données et les besoins d’intervention manuelle. Où trouver ces données Dérivé de la présence de messages d’erreur dans le journal de paie ou de codes de statut spécifiques. Exemples truefalse | |||
| Juridiction fiscale TaxJurisdiction | Région ou autorité fiscale compétente pour le salarié. | ||
| Description Cet attribut identifie l’autorité ou la région fiscale compétente pour l’enregistrement de paie, par exemple un État, une province ou un canton. Il est essentiel au Dashboard « Exceptions d’audit et risques de conformité », qui permet de repérer les problèmes de conformité par zone géographique. Dans SAP US Payroll, il correspond au champ Pourquoi est-ce important ? Il permet de segmenter les risques de conformité et les exceptions d’audit par région réglementaire. Où trouver ces données Table PA0001 ou PA0207/PA0208, champ TXJCD. Exemples CANYTXNRW | |||
| Nombre de reprises ReworkCount | Nombre de corrections effectuées. | ||
| Description Cette métrique calculée compte le nombre d’occurrences de l’activité « Correction des données effectuée » dans l’historique du cas. Elle mesure directement l’inefficacité du processus et alimente le Dashboard « Taux de corrections manuelles et de reprises ». Un nombre élevé de reprises indique des problèmes persistants de qualité des données ou des cas complexes qui échouent à la première validation. Pourquoi est-ce important ? Il quantifie les efforts consacrés à corriger les erreurs et aide à justifier les initiatives en faveur de la qualité des données. Où trouver ces données Calculé en comptant les activités « Correction des données effectuée » pour chaque CaseId. Exemples 013 | |||
Activités de traitement de la paie
| Activité | Description | ||
|---|---|---|---|
| Déclaration fiscale terminée | Génération des fichiers du Tax Reporter (par exemple, PU19 aux États-Unis) ou transfert à un prestataire tiers de déclaration fiscale. | ||
| Pourquoi est-ce important ? Garantit la conformité réglementaire et suit la dernière étape de conformité du processus. Où trouver ces données Journaux du Tax Reporter Log Manager ou du B2A (Business to Administration) Manager indiquant la génération réussie du fichier. Données à recueillir Enregistré lorsque l’exécution du Tax Reporter se termine correctement Type d’événement explicit | |||
| Dossier de paie approuvé | Validation officielle des résultats de paie d’un salarié ou d’un groupe de paie. Elle intervient à l’étape « Monitoring » ou « Sign Off » du PCC. | ||
| Pourquoi est-ce important ? Marque la fin de la phase de calcul et de validation, ainsi que l’autorisation du paiement. Cette étape est essentielle pour analyser le débit de traitement des spécialistes. Où trouver ces données Journaux des instances d’étape du Payroll Control Center (PYC_D_STEP_INST) pour l’étape Approval ou Confirmation. Données à recueillir Enregistré lorsque le statut de l’étape d’approbation PCC passe à COMPLETED Type d’événement explicit | |||
| Feuille de temps approuvée | Approbation officielle des données de temps par un responsable ou un administrateur. Ce changement de statut valide les données pour leur transfert au moteur de paie. | ||
| Pourquoi est-ce important ? Permet de calculer le KPI du délai d’approbation des feuilles de temps. Les goulots d’étranglement à cette étape signalent des retards de la part des responsables ou une hiérarchie d’approbation complexe. Où trouver ces données Tables de demandes de flux de travail d’Employee Central (WfRequest), filtrées par statut COMPLETED ou APPROVED. Données à recueillir Enregistré lorsque le statut du flux de travail passe à APPROVED Type d’événement explicit | |||
| Feuille de temps soumise | Événement correspondant à la soumission des données de temps de la période de paie par un salarié ou un responsable. Il est enregistré à partir des journaux de demandes de flux de travail du module Employee Central lié à ECP. | ||
| Pourquoi est-ce important ? Marque le début de la collecte des données. Tout retard à cette étape se répercute sur les étapes suivantes et réduit le temps disponible pour traiter la paie. Où trouver ces données Tables de demandes de flux de travail d’Employee Central (WfRequest), filtrées par catégorie Time Sheet ou Time Off. Données à recueillir Enregistré lorsque le statut du flux de travail passe à SUBMITTED Type d’événement explicit | |||
| Fichier de virement bancaire généré | Création du fichier Preliminary Data Medium Exchange (pre-DME) ou du fichier DME final. Ce fichier contient les instructions de paiement destinées à la banque. | ||
| Pourquoi est-ce important ? Suit le moniteur d’automatisation des virements bancaires. L’échec de la génération d’un fichier interrompt le processus. Où trouver ces données Journaux d’exécution de DME / Payment Medium Workbench (PMW), souvent stockés dans TemSe ou dans des tables spécifiques aux cycles de paiement (ReguH/ReguP). Données à recueillir Enregistré lorsque le cycle de paiement (F110/RPCIPE) génère un fichier de sortie Type d’événement explicit | |||
| Paiement exécuté | Finalisation du processus de paiement, généralement confirmée par la banque ou par l’achèvement du cycle de paiement F110. | ||
| Pourquoi est-ce important ? Horodatage de fin principal pour le taux de respect des SLA. Il permet de déterminer si le salarié a été payé à temps. Où trouver ces données Date et heure d’exécution dans les tables du cycle de paiement (REGUH), ou données déduites de la date de valeur. Données à recueillir Enregistré lorsque le statut du cycle de paiement passe à Posted/Complete Type d’événement explicit | |||
| Processus de paie initialisé | Création d’une instance de processus de paie dans le Payroll Control Center (PCC). Elle marque le début officiel du cycle de paie pour une zone de paie donnée. | ||
| Pourquoi est-ce important ? Définit le point de départ pour mesurer la durée totale du cycle de paie de bout en bout. Il détermine le périmètre des salariés concernés. Où trouver ces données Tables du Payroll Control Center (par exemple, PYC_D_PY_PROC_INST), qui enregistrent la création d’un nouvel identifiant de processus. Données à recueillir Enregistré lors de la création d’une instance de processus PCC Type d’événement explicit | |||
| Salaire brut calculé | Exécution réussie du calcul du schéma de paie brute. Dans le traitement standard, cette étape correspond à l’écriture des résultats par le programme de paie dans le cluster PCL2. | ||
| Pourquoi est-ce important ? Étape clé qui confirme la combinaison réussie des données de temps et de taux. Tout retard à ce stade affecte l’efficacité du traitement du salaire brut au salaire net. Où trouver ces données Cluster PCL2 (résultats de paie), en particulier l’horodatage de la table de répertoire (RGDIR) pour la période « For-Period ». Données à recueillir Enregistré lorsqu’un nouveau numéro de séquence est écrit dans le cluster de paie Type d’événement explicit | |||
| Simulation de paie exécutée | Exécution test du programme de paie pour repérer les erreurs sans enregistrer les résultats dans la base de données. Il s’agit d’une étape clé de la phase de validation du PCC. | ||
| Pourquoi est-ce important ? Indispensable au calcul du taux de calcul réussi dès la première tentative. Des simulations répétées signalent des problèmes de qualité des données. Où trouver ces données Journaux des instances d’étape du Payroll Control Center (PYC_D_STEP_INST), où le type d’étape correspond à Simulation. Données à recueillir Enregistré lorsque le statut de l’étape de simulation PCC passe à COMPLETED Type d’événement explicit | |||
| Anomalie d’audit signalée | Génération d’une alerte de validation par les contrôles de règles du Payroll Control Center. Ces alertes signalent des incohérences dans les données ou des risques de non-conformité. | ||
| Pourquoi est-ce important ? Alimente directement les Dashboards sur la fréquence des anomalies d’audit et les risques de non-conformité. Un volume élevé d’anomalies indique souvent des problèmes de qualité des données en amont. Où trouver ces données Tables d’alertes du Payroll Control Center (PYC_D_ALERT), qui associent des codes d’erreur précis aux dossiers des salariés. Données à recueillir Enregistré lors de la création d’une nouvelle entrée dans la table des alertes PCC Type d’événement explicit | |||
| Bulletin de paie publié | Mise à disposition du bulletin de rémunération au salarié par le biais du libre-service (ESS). | ||
| Pourquoi est-ce important ? Mesure le respect du SLA de mise à disposition des bulletins de paie. Les retards à cette étape génèrent des demandes auprès du service d’assistance. Où trouver ces données Déduit de la date d’impression (« Print Date ») ou de la date de disponibilité configurée dans les journaux du service mashup des bulletins de paie. Données à recueillir Calculé à partir de la date de paiement et du délai défini dans la configuration du système Type d’événement inferred | |||
| Correction des données effectuée | Modifications apportées aux données de référence ou de temps à la suite d’une anomalie d’audit. Elles correspondent aux reprises nécessaires pour résoudre une alerte de paie. | ||
| Pourquoi est-ce important ? Suit les taux de correction manuelle et de reprise. Cette activité contribue principalement aux inefficacités du processus. Où trouver ces données Déduit en reliant les horodatages des alertes PCC aux modifications ultérieures du journal d’audit (PCL4) pour le même salarié, avant la clôture de l’alerte. Données à recueillir Repérer les mises à jour des données de référence effectuées pendant qu’une alerte PCC est active Type d’événement inferred | |||
| Données de rémunération variable importées | Importation dans le système de paie de données de rémunération non standard, comme les primes ou les commissions. Elle implique généralement le chargement des données dans les infotypes 0015 ou 2010. | ||
| Pourquoi est-ce important ? Les importations tardives empêchent de calculer correctement le salaire brut. Leur analyse aide à réduire le délai d’intégration des données de rémunération variable. Où trouver ces données Journal d’audit (PCL4 ou équivalent) indiquant la création de dossiers dans l’infotype 0015 (paiements supplémentaires) ou 2010 (informations sur la rémunération des salariés). Données à recueillir Comparer les horodatages de création des infotypes aux journaux des tâches d’importation Type d’événement inferred | |||
| Retenues liées aux avantages sociaux appliquées | Étape précise du schéma de calcul où sont traitées les règles relatives aux avantages sociaux. Bien qu’elle fasse partie du traitement principal, son analyse distincte aide à repérer les erreurs de configuration. | ||
| Pourquoi est-ce important ? Contribue à l’analyse de l’exactitude du calcul des avantages sociaux et des impôts. Utile pour diagnostiquer les écarts complexes dans les règles de retenue. Où trouver ces données Déduit de la présence de la division V0 dans les résultats de paie ou d’entrées de journal spécifiques, si la journalisation détaillée est activée, ce qui est rare en production. Données à recueillir Survient en même temps que le calcul du salaire brut, mais constitue une étape distincte pour l’analyse. Type d’événement inferred | |||
Guides d’extraction
Étapes
- Identifiez la zone de paie et les paramètres de période à extraire. Les données proviendront principalement des tables du Payroll Control Center (PCC) (PYC_*) et du répertoire des clusters de paie (HRPY_RGDIR).
- Ouvrez votre client SQL ou SAP HANA Studio connecté au schéma principal de SAP SuccessFactors Employee Central Payroll (ECP).
- Exécutez le script d’extraction des données fourni dans la section Query. Ce script agrège les données des tables de données de base, des résultats de paie et des journaux d’audit PCC.
- Associez les activités « Time Sheet Submitted » et « Time Sheet Approved ». Comme ECP reçoit souvent ces données d’Employee Central, utilisez les horodatages de création et de dernière modification de la table PA2001 ou, si elles sont disponibles, des tables spécialisées de l’interface de gestion des temps, telles que PTREQ_HEADER.
- Extrayez l’activité « Incentive Data Imported » en interrogeant les infotypes 0015 (paiements supplémentaires) et 2010 (informations sur la rémunération des employés) pour les enregistrements créés pendant la période de paie visée.
- Récupérez les étapes du processus PCC dans les tables PYC_D_PYP (instances de processus) et PYC_D_BINST (instances d’étape) afin de relever les activités « Payroll Process Initialized », « Payroll Simulation Executed », « Payroll Record Approved » et « Pay Slip Published ».
- Interrogez la table PYC_D_ALERT pour repérer les événements « Audit Exception Flagged ». Ces enregistrements associent des employés précis aux erreurs de validation détectées lors des étapes de contrôle PCC.
- Générez les événements « Data Correction Performed » en joignant la table d’en-tête des documents de modification SAP (CDHDR) aux infotypes pertinents pour la paie (par exemple, 0008, 0015, 2001) pendant la période de paie active.
- Utilisez la table HRPY_RGDIR pour déterminer le moment exact de l’activité « Gross Pay Calculated ». Créez un événement dérivé « Benefit Deductions Applied » avec le même horodatage, car ces opérations ont lieu simultanément pendant l’exécution du schéma.
- Reliez les données financières des tables REGUH (données de règlement) et REGUT (administration DME) pour relever les activités « Bank Transfer File Generated » et « Payment Executed ».
- Transformez la colonne « PayrollRecord » pour respecter strictement le format [EmployeeID]-[Period]-[Year] et garantir l’unicité de l’ID de cas.
- Exportez le jeu de données final au format CSV. Vérifiez que les en-têtes correspondent aux attributs définis dans le contrat, puis importez le fichier dans ProcessMind.
Configuration
- Période : configurez l’extraction sur une période glissante couvrant les 6 à 12 derniers mois. Les processus de paie étant cycliques, cette plage permet de couvrir suffisamment de variations entre les cycles réguliers et hors calendrier.
- Zone de paie (ABKRS) : filtrez par zone de paie (par exemple, paie mensuelle aux États-Unis, paie hebdomadaire en Allemagne) afin de comparer des cycles de processus similaires.
- Langue : veillez à extraire les descriptions des activités et des étapes du processus dans la langue principale du système (par exemple, SPRAS = 'E').
- ID de processus PCC : repérez les ID de définition de processus (PYP_ID) utilisés dans votre configuration PCC pour « Monitoring », « Production » et « Off-Cycle », afin de filtrer les étapes pertinentes.
- Devise : normalisez les montants financiers (GrossPayAmount) dans une seule devise si vous extrayez des données pour des opérations de paie internationales.
- Autorisations : l’utilisateur de la base de données doit disposer d’un accès en lecture aux tables des ressources humaines (PA/PY), notamment au répertoire des clusters (HRPY_RGDIR) et aux tables PCC (PYC_*).
a Exemple de requête sql
/* Activity 1: Time Sheet Submitted */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Submitted' AS Activity,
T.BEGDA AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 2: Time Sheet Approved */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Approved' AS Activity,
T.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'False' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 3: Incentive Data Imported */
SELECT
CONCAT(I.PERNR, CONCAT('-', I.PABRJ, I.PABRP)) AS PayrollRecord,
'Incentive Data Imported' AS Activity,
I.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
I.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
I.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
I.BETRG AS GrossPayAmount,
I.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA0015 AS I
LEFT JOIN PA0001 AS O ON I.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE I.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 4: Payroll Process Initialized */
SELECT
CONCAT('N/A', CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payroll Process Initialized' AS Activity,
P.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
P.CREATED_BY AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_PYP AS P
WHERE P.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 5: Payroll Simulation Executed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Simulation Executed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Simulate%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 6: Audit Exception Flagged */
SELECT
CONCAT(A.RO_ID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Audit Exception Flagged' AS Activity,
A.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
'SYSTEM' AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_ALERT AS A
JOIN PYC_D_PYP AS P ON A.PYP_ID = P.ID
WHERE A.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 7: Data Correction Performed */
SELECT
CONCAT(C.OBJECTID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Data Correction Performed' AS Activity,
TO_TIMESTAMP(CONCAT(C.UDATE, C.UTIME)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
C.USERNAME AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM CDHDR AS C
JOIN HRPY_RGDIR AS P ON C.OBJECTID = P.PERNR
WHERE C.TCODE IN ('PA30', 'PA40') AND C.UDATE BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 8: Gross Pay Calculated */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Gross Pay Calculated' AS Activity,
TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 9: Benefit Deductions Applied */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Benefit Deductions Applied' AS Activity,
ADD_SECONDS(TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)), 1) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 10: Payroll Record Approved */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Record Approved' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Check%' AND S.STATUS = 'OK' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 11: Bank Transfer File Generated */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Bank Transfer File Generated' AS Activity,
TO_TIMESTAMP(CONCAT(T.TSDAT, T.TSTIM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.USRID AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUT AS T
JOIN REGUH AS H ON T.LAUFD = H.LAUFD AND T.LAUFI = H.LAUFI
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.TSDAT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 12: Payment Executed */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payment Executed' AS Activity,
TO_TIMESTAMP(CONCAT(H.LAUFD, '120000')) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
H.RBETR AS GrossPayAmount,
H.ZNME1 AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUH AS H
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE H.LAUFD BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 13: Pay Slip Published */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Pay Slip Published' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Remuneration%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 14: Tax Filing Completed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Tax Filing Completed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Tax%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]' Étapes
- Accéder à l’éditeur ABAP : connectez-vous à votre système SAP SuccessFactors Employee Central Payroll (ECP) via SAP GUI. Accédez à la transaction SE38 (éditeur ABAP).
- Créer un programme : saisissez un nom pour le nouveau programme, par exemple
Z_PROCESSMINING_PAYROLL_EXT, puis cliquez sur Créer. Sélectionnez Programme exécutable comme type, puis Enregistrer en tant qu’objet local (package $TMP) à des fins de test. - Ajouter le code : copiez l’intégralité du code ABAP fourni dans la section Query ci-dessous et collez-le dans l’éditeur en remplaçant le code par défaut, le cas échéant.
- Vérifier et activer : cliquez sur le bouton Vérifier (Ctrl+F2) pour valider la syntaxe. Une fois les erreurs corrigées, cliquez sur Activer (Ctrl+F3).
- Exécuter l’extraction : appuyez sur Traitement direct (F8) pour lancer le rapport.
- Configurer la sélection : dans l’écran de sélection, indiquez la
Payroll Area(par exemple, US, 99), uneDate Rangevalide (par exemple, les 3 derniers mois) et, si nécessaire, filtrez parPersonnel Numbers(PERNR) pour effectuer un test. - Lancer l’extraction : exécutez le rapport. Le système traite les tables HRPY_RGDIR, CATSDB, PA0015 et REGUH pour constituer le journal d’événements.
- Examiner les résultats : le rapport utilise
cl_demo_outputpour afficher les résultats dans une grille à l’écran et permettre leur validation immédiate. - Exporter les données : faites un clic droit sur la grille de résultats, sélectionnez Spreadsheet, puis enregistrez le fichier au format CSV ou Excel.
- Mettre les données au format ProcessMind : ouvrez le fichier exporté. Vérifiez que la colonne
EventTimestampest au formatYYYY-MM-DD HH:MM:SS. Assurez-vous que la colonnePayrollRecordidentifie chaque cas de manière unique (généralement PERNR-SEQNR). - Importer : importez le fichier CSV nettoyé dans ProcessMind et associez les colonnes à ID de cas, Activité, Horodatage et Attributs.
Configuration
- Plage de dates : il est recommandé d’extraire les données par périodes de 3 à 6 mois pour éviter les dépassements de délai liés à la mémoire dans l’environnement d’exécution ABAP.
- Zone de paie : il s’agit d’un filtre essentiel (table T549A). Extrayez toujours une seule zone de paie à la fois (par exemple, mensuelle ou bimensuelle) afin de garantir la cohérence du processus.
- Table de configuration : le script utilise
HRPY_RGDIR(répertoire de paie) comme table principale. Vérifiez que votre utilisateur dispose de l’autorisationS_TABU_DISpour cette table. - Source des données de temps : le script suppose que les données de feuille de temps se trouvent dans
CATSDB. Si vous utilisez une pointeuse tierce qui alimente directementIT2001ouIT2010sans passer par CATS, les activités de feuille de temps risquent de ne renvoyer aucun résultat et le script devra être adapté. - Données de paiement : le script relie les cycles de paie aux cycles de paiement via
REGUH(données de règlement). Vérifiez que le cycle de paiementF110a été exécuté pour la période sélectionnée afin de faire apparaître les événements de paiement. - Performances : pour les systèmes à fort volume (plus de 100 000 employés), remplacez la logique
SELECT *par une récupération basée sur un curseur ou exécutez le traitement en arrière-plan (F9).
a Exemple de requête abap
REPORT Z_PROCESSMINING_PAYROLL_EXT.
TABLES: pernr, hrpy_rgdir, catsdb, pa0015, reguh.
TYPES: BEGIN OF ty_event_log,
payroll_record TYPE string,
activity TYPE string,
event_timestamp TYPE string,
source_system TYPE string,
last_data_update TYPE string,
payroll_area TYPE abkrs,
employee_type TYPE persg,
pay_period TYPE pabrj,
pay_cycle_freq TYPE string,
gross_pay_amount TYPE string,
payroll_specialist TYPE usnam,
cost_center TYPE kostl,
is_automated TYPE string,
END OF ty_event_log.
DATA: gt_output TYPE TABLE OF ty_event_log,
gs_output TYPE ty_event_log,
gt_rgdir TYPE TABLE OF hrpy_rgdir,
gs_rgdir TYPE hrpy_rgdir,
gt_cats TYPE TABLE OF catsdb,
gs_cats TYPE catsdb,
gt_p0015 TYPE TABLE OF pa0015,
gs_p0015 TYPE pa0015,
gt_reguh TYPE TABLE OF reguh,
gs_reguh TYPE reguh,
gv_tstamp TYPE timestamp,
gv_date TYPE d,
gv_time TYPE t,
gv_pernr TYPE pernr_d.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_pernr FOR pernr-pernr,
s_date FOR sy-datum OBLIGATORY.
PARAMETERS: p_abkrs TYPE abkrs OBLIGATORY DEFAULT '99'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
" 1. Fetch Payroll Directory (The Core Process Driver)
SELECT * FROM hrpy_rgdir INTO TABLE gt_rgdir
WHERE pernr IN s_pernr
AND fpper LIKE '%'
AND cdate IN s_date.
IF gt_rgdir IS INITIAL.
WRITE: / 'No payroll results found for selection.'.
EXIT.
ENDIF.
SORT gt_rgdir BY pernr seqnr.
" Loop through Payroll Directory to build events
LOOP AT gt_rgdir INTO gs_rgdir.
CLEAR gs_output.
CONCATENATE gs_rgdir-pernr '-' gs_rgdir-seqnr INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-last_data_update = sy-datum.
gs_output-payroll_area = p_abkrs.
gs_output-pay_period = gs_rgdir-fpper.
gs_output-payroll_specialist = gs_rgdir-uname.
" --- Activity: Payroll Process Initialized ---
" Derived from the run date start
gs_output-activity = 'Payroll Process Initialized'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payroll Simulation Executed ---
IF gs_rgdir-srtza = 'S'. " S = Simulation
gs_output-activity = 'Payroll Simulation Executed'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Audit Exception Flagged ---
IF gs_rgdir-void IS NOT INITIAL. " Void indicator means rejected/exception
gs_output-activity = 'Audit Exception Flagged'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Data Correction Performed ---
" Inferred: If voided, a correction usually follows immediately
gs_output-activity = 'Data Correction Performed'.
" Add 1 hour to simulate reaction time
DATA: lv_corr_time TYPE t.
lv_corr_time = gs_rgdir-ctime + 3600.
CONCATENATE gs_rgdir-cdate lv_corr_time INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Gross Pay Calculated ---
IF gs_rgdir-srtza = 'A'. " A = Actual Result
gs_output-activity = 'Gross Pay Calculated'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-gross_pay_amount = '1000.00'. " Placeholder: Cluster read required for actual amount
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Benefit Deductions Applied ---
" Logically occurs immediately after gross calc
gs_output-activity = 'Benefit Deductions Applied'.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payroll Record Approved ---
" Inferred from successful write of 'A' record
gs_output-activity = 'Payroll Record Approved'.
DATA: lv_appr_time TYPE t.
lv_appr_time = gs_rgdir-ctime + 60. " +1 minute
CONCATENATE gs_rgdir-cdate lv_appr_time INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
" --- Activity: Pay Slip Published ---
" Available via ESS usually next day
gs_output-activity = 'Pay Slip Published'.
DATA: lv_slip_date TYPE d.
lv_slip_date = gs_rgdir-cdate + 1.
CONCATENATE lv_slip_date '080000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Tax Filing Completed ---
" End of period logic
gs_output-activity = 'Tax Filing Completed'.
DATA: lv_tax_date TYPE d.
lv_tax_date = gs_rgdir-paydt.
CONCATENATE lv_tax_date '235959' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDIF.
ENDLOOP.
" 2. Fetch Time Sheet Data (CATSDB)
" Linking to Payroll Record loosely via Period/Date
SELECT * FROM catsdb INTO TABLE gt_cats
WHERE pernr IN s_pernr
AND workdate IN s_date.
LOOP AT gt_cats INTO gs_cats.
CLEAR gs_output.
CONCATENATE gs_cats-pernr '-00000' INTO gs_output-payroll_record. " Generic mapping
gs_output-payroll_area = p_abkrs.
gs_output-source_system = 'SAP_ECP'.
" --- Activity: Time Sheet Submitted ---
IF gs_cats-status = '20' OR gs_cats-status = '30'.
gs_output-activity = 'Time Sheet Submitted'.
CONCATENATE gs_cats-laudate gs_cats-lautime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Time Sheet Approved ---
IF gs_cats-status = '30'. " 30 = Approved
gs_output-activity = 'Time Sheet Approved'.
CONCATENATE gs_cats-apdat gs_cats-aptime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
ENDLOOP.
" 3. Fetch Incentive Data (Infotype 0015)
SELECT * FROM pa0015 INTO TABLE gt_p0015
WHERE pernr IN s_pernr
AND begda IN s_date.
LOOP AT gt_p0015 INTO gs_p0015.
CLEAR gs_output.
CONCATENATE gs_p0015-pernr '-00000' INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-payroll_area = p_abkrs.
" --- Activity: Incentive Data Imported ---
gs_output-activity = 'Incentive Data Imported'.
CONCATENATE gs_p0015-aedtm '120000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDLOOP.
" 4. Fetch Payment Data (REGUH)
SELECT * FROM reguh INTO TABLE gt_reguh
WHERE zaldt IN s_date.
LOOP AT gt_reguh INTO gs_reguh.
" Filter for our PERNRs roughly (REGUH does not always have PERNR directly indexable easily in all views)
" For simulation, we map broadly or require join logic. Here assuming simple extraction.
CLEAR gs_output.
CONCATENATE gs_reguh-pernr '-99999' INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-payroll_area = p_abkrs.
" --- Activity: Bank Transfer File Generated ---
gs_output-activity = 'Bank Transfer File Generated'.
CONCATENATE gs_reguh-laufd gs_reguh-cpzut INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payment Executed ---
gs_output-activity = 'Payment Executed'.
CONCATENATE gs_reguh-zaldt '100000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDLOOP.
" Output Display
cl_demo_output=>display( gt_output ). Prêt à commencer ?
Lancez votre démarche d’amélioration du traitement de la paie en appliquant ce modèle à l’extraction de vos données. Notre méthode structurée vous aide à passer rapidement des données brutes à des analyses concrètes.
Améliorez dès maintenant les performances du traitement de votre paie
Rejoignez les entreprises qui réduisent aujourd’hui de 30 % la durée de leurs cycles de paie.
Aucune carte bancaire requise. Configuration en quelques minutes.