Ihr Daten-Template für die Lohnabrechnung
Ihr Daten-Template für die Lohnabrechnung
- Strategische Datenfelder für die Gehaltsabrechnungsanalyse
- Wichtige Meilensteine für die Prozesserkennung
- Systemspezifische Extraktionsanleitung
Attribute der Lohnabrechnung
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivität Activity | Die spezifische Aufgabe oder das Ereignis, das im Gehaltsabrechnungsprozess auftritt. | ||
| Beschreibung Dieses Attribut erfasst den Namen des ausgeführten Prozessschritts, wie zum Beispiel „Zeiterfassung eingereicht“, „Gehaltsabrechnungssimulation ausgeführt“ oder „Zahlung ausgeführt“. Es bildet die Grundlage der Prozesslandkarte und ermöglicht Analysten, die Abfolge der Operationen während des Gehaltsabrechnungszyklus zu visualisieren. Daten für dieses Attribut werden aus verschiedenen Protokollen gewonnen, darunter Workflow-Protokolle (SWWLOGHIST), Infotyp-Änderungsprotokolle (CDHDR/CDPOS) und spezifische Gehaltsabrechnungsstatus-Tabellen. Konsistente Namenskonventionen werden während der Extraktion angewendet, um sicherzustellen, dass technische Event-Codes in geschäftslesbare Aktivitätsnamen übersetzt werden. Bedeutung Es definiert die Datenquelle Abgeleitet von Beispiele Arbeitszeittabelle eingereicht`Gross Pay Calculated``Audit Exception` markiertZahlung ausgeführt | |||
| Ereignis-Timestamp EventTimestamp | Das genaue Datum und die Uhrzeit, zu der die Aktivität stattgefunden hat. | ||
| Beschreibung Dieses Attribut erfasst den genauen Zeitpunkt, zu dem ein Event stattgefunden hat, und speichert sowohl Datum als auch Uhrzeit. Es ist grundlegend für die Berechnung aller zeitbasierten Metriken, einschließlich Zykluszeiten, Vorlaufzeiten und Durchsatzraten zwischen verschiedenen Prozessphasen. In SAP ECP wird dies aus Timestamp-Feldern wie Bedeutung Es ermöglicht die Berechnung der Dauer zwischen Datenquelle CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT oder spezifische Beispiele 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| Lohnabrechnungsdatensatz PayrollRecord | Der eindeutige Identifikator, der Mitarbeiter und Abrechnungsperiode kombiniert. | ||
| Beschreibung Der Gehaltsabrechnungsdatensatz dient als zentrale Case-Identifikation für die Process Mining Analyse. Er repräsentiert eine einzelne Iteration der Gehaltsabrechnungsbearbeitung für einen spezifischen Mitarbeiter innerhalb einer definierten Abrechnungsperiode, die alle Aktivitäten von der ersten Zeiterfassung bis zur endgültigen Steuererklärung verbindet. In SAP SuccessFactors Employee Central Payroll wird dieser typischerweise durch die Verkettung der Personalnummer (PERNR) mit dem Gehaltsabrechnungsjahr (PABRJ) und der Gehaltsabrechnungsperiode (PABRP), sowie gegebenenfalls einer Sequenznummer (SEQNR) zur Unterscheidung mehrerer Läufe, gebildet. Diese Granularität stellt sicher, dass jeder Zahlungszyklus als eigenständige Instanz analysiert wird, was eine präzise Messung der Zykluszeit und Fehlerverfolgung ermöglicht. Bedeutung Es dient als Datenquelle Konstruiert aus Beispiele 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| Letzte Datenaktualisierung LastDataUpdate | Der Zeitstempel der letzten Datenextraktion. | ||
| Beschreibung Dieses Attribut gibt an, wann der Datensatz zuletzt im Process Mining Datenmodell aktualisiert wurde. Es hilft Analysten, die Aktualität der Daten zu verstehen und stellt sicher, dass die Erkenntnisse auf aktuellen Informationen basieren. Obwohl nicht direkt für die Prozessflussanalyse verwendet, ist es entscheidend für die Data Governance und Validierung, da es überprüft, dass das Dashboard den neuesten Zustand des Gehaltsabrechnungssystems widerspiegelt. Bedeutung Es stellt sicher, dass Benutzer über Datenquelle Generiert durch das Beispiele 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| Quellsystem SourceSystem | Das System, in dem die Event-Daten ihren Ursprung hatten. | ||
| Beschreibung Dieses Attribut identifiziert die spezifische SAP SuccessFactors Employee Central Payroll Instanz oder das verbundene Subsystem, aus dem die Daten extrahiert wurden. In komplexen Systemlandschaften mit mehreren Gehaltsabrechnungssystemen oder hybriden Setups gewährleistet dieses Feld Datenherkunft und Nachvollziehbarkeit. Es ist besonders nützlich bei der Analyse von Daten über verschiedene regionale Installationen hinweg oder beim Vergleich der Leistung zwischen Altsystemen und migrierten Systemen. Es handelt sich typischerweise um eine statische Zeichenfolge, die während des Datenextraktions-Setups konfiguriert wird. Bedeutung Es ermöglicht die Datenquelle System-ID (SID) aus der SAP-Installation oder Extraktionskonfiguration. Beispiele SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| Abrechnungsperiode PayPeriod | Die spezifische Periodennummer innerhalb des Geschäftsjahres. | ||
| Beschreibung Dieses Attribut bezeichnet die laufende Nummer der Gehaltsabrechnungsperiode (z.B. 01 für Januar oder den ersten zweiwöchentlichen Zyklus). Es ermöglicht Analysten, Leistungstrends im Zeitverlauf zu verfolgen und Saisonalität bei den Bearbeitungslasten zu identifizieren. Es stammt aus Bedeutung Es ermöglicht Datenquelle Tabelle PA0001 oder Gehaltsabrechnungsergebnis-Cluster (RGDIR), Feld PABRP. Beispiele 01122652 | |||
| Abrechnungszyklusfrequenz PayCycleFrequency | Gibt an, ob der `Run` regulär oder `Off-Cycle` ist. | ||
| Beschreibung Dieses Attribut unterscheidet zwischen standardmäßigen, geplanten Gehaltsabrechnungsläufen und ad-hoc „Off-Cycle“-Läufen, die für Korrekturen oder sofortige Zahlungen verwendet werden. Ein hohes Volumen an Off-Cycle-Läufen ist ein Schlüsselindikator für Prozesseffizienz und wird durch das Es wird aus den Feldern Off-Cycle-Grund ( Bedeutung Es ist entscheidend für die Messung des Datenquelle Tabelle RGDIR (Cluster-Verzeichnis), Feld OCRSN oder PAYTY. Beispiele RegulärKorrektur ABonuszahlungKündigung | |||
| Bruttogehaltsbetrag GrossPayAmount | Das für den Datensatz berechnete Bruttogehalt. | ||
| Beschreibung Dieses Attribut repräsentiert den monetären Gesamtwert des Bruttogehalts vor Abzügen. Es ist eine grundlegende Metrik für die Finanzvalidierung und wird verwendet, um hochwertige Zahlungen mit erhöhter Audit-Überprüfung oder längeren Genehmigungsfristen zu korrelieren. Es wird aus der Gehaltsabrechnungsergebnistabelle (RT) extrahiert, typischerweise unter spezifischen Lohnarten, die den Gesamtbruttobetrag repräsentieren (z.B. /101). Es unterstützt die Analyse der Bedeutung Es ermöglicht die Analyse des Prozessverhaltens basierend auf dem Zahlungswert (z.B. dauern größere Zahlungen länger in der Genehmigung?). Datenquelle Tabelle der Gehaltsabrechnungsergebnisse (RT), Lohnart /101 oder ähnlich. Beispiele 5000.002500.5010500.00 | |||
| Ist automatisiert IsAutomated | Flag, das anzeigt, ob die Aktivität von einem Systembenutzer durchgeführt wurde. | ||
| Beschreibung Dieses boolesche Attribut identifiziert, ob ein spezifischer Prozessschritt von einem Hintergrundjob/Systembenutzer oder von einem Menschen ausgeführt wurde. Es ist entscheidend für den Es wird typischerweise durch Überprüfung der Benutzer-ID mit einer Liste bekannter Systemkonten (z.B. „BATCH“, „SAP_WORKFLOW“) abgeleitet. Bedeutung Es hilft, Datenquelle Abgeleitet von Beispiele truefalsch | |||
| Kostenstelle CostCenter | Die Kostenstelle, die dem Mitarbeiter zugeordnet ist. | ||
| Beschreibung Die Kostenstelle repräsentiert die Finanzabteilung oder Einheit, der die Kosten des Mitarbeiters zugerechnet werden. Sie dient als Stellvertreter für die Abteilung im Gefunden im Infotyp Organisatorische Zuordnung (PA0001) als Feld Bedeutung Es ermöglicht ein organisatorisches Datenquelle Tabelle PA0001, Feld KOSTL. Beispiele CC-1000 FinanzenCC-2000 ITCC-3000 Vertrieb | |||
| Lohnabrechnungsgebiet PayrollArea | Definiert die spezifische Lohn- und Gehaltsgruppe, zu der ein Mitarbeitender gehört. | ||
| Beschreibung Das Gehaltsabrechnungsgebiet gruppiert Mitarbeiter, die im selben Gehaltsabrechnungslauf gemeinsam verarbeitet werden, oft basierend auf der Abrechnungsfrequenz (z.B. monatlich vs. zweiwöchentlich) oder der Organisationsstruktur. Dieses Attribut ist entscheidend für die Segmentierung der Prozessanalyse, um die Leistung über verschiedene Mitarbeiterpopulationen hinweg zu vergleichen. In SAP entspricht dies dem technischen Feld Bedeutung Es ermöglicht den Vergleich der Datenquelle Tabelle PA0001 (Organisatorische Zuordnung), Feld ABKRS. Beispiele US zweiwöchentlichDE MonatlichFührungsgehaltsabrechnung | |||
| Lohnabrechnungsspezialist PayrollSpecialist | Die Benutzer-ID oder der Name der Person, die den Datensatz verarbeitet. | ||
| Beschreibung Dieses Attribut erfasst die Identität des Lohnabrechnungsadministrators oder -spezialisten, der für die Ausführung manueller Schritte oder Genehmigungen verantwortlich ist. Es ist das Kernattribut für das Es wird aus dem Feld Bedeutung Es ist wesentlich für die Datenquelle Systemfelder (SY-UNAME), die in CDHDR oder der Workflow-Akteurs-ID protokolliert sind. Beispiele JSMITHKMILLERSYSTEM | |||
| Mitarbeitertyp EmployeeType | Klassifizierung des Mitarbeitenden (z.B. Festangestellter, Auftragnehmer). | ||
| Beschreibung Dieses Attribut kategorisiert Mitarbeiter basierend auf ihrem Beschäftigungsverhältnis, wie z.B. aktiv, Rentner oder Auftragnehmer. Variationen in der Komplexität der Gehaltsabrechnungsbearbeitung korrelieren oft mit dem Mitarbeitertyp, wobei bestimmte Gruppen mehr manuelle Eingriffe oder spezifische Compliance-Prüfungen erfordern. Technisch stammt es aus den Feldern Mitarbeitergruppe ( Bedeutung Es hilft zu identifizieren, ob Prozessabweichungen oder Verzögerungen spezifisch für bestimmte Beschäftigungskategorien sind. Datenquelle Tabelle PA0001, Felder PERSG (Gruppe) und PERSK (Untergruppe). Beispiele Aktiver MitarbeitenderAuszubildenderRentnerStundenbasierter Auftragnehmer | |||
| `Audit Exception`-Kennzeichen AuditExceptionFlag | Kennzeichen, das angibt, ob eine `Audit Exception` aufgetreten ist. | ||
| Beschreibung Dieses Attribut kennzeichnet Fälle, in denen Validierungsregeln während der Gehaltsabrechnungssimulation oder -berechnung eine Ausnahme oder Warnung ausgelöst haben. Es ist die primäre Eingabe für den KPI Daten werden oft aus dem Gehaltsabrechnungsprotokoll oder spezifischen Fehlermeldungstabellen (FEHLER) bezogen. Ein wahrer Wert zeigt an, dass der Prozessfluss einen Ausnahmebehandlungspfad enthielt. Bedeutung Es hebt Datenquelle Abgeleitet aus dem Vorhandensein von Fehlermeldungen im Beispiele truefalsch | |||
| Durchlaufzeit (Tage) CycleTimeDays | Gesamtdauer des Gehaltsabrechnungsprozesses in Tagen. | ||
| Beschreibung Dieses berechnete Attribut misst die verstrichene Zeit vom Prozessstart (z.B. „Zeiterfassung eingereicht“) bis zum Ende (z.B. „Zahlung ausgeführt“). Es bietet eine übergeordnete Ansicht der Prozessgeschwindigkeit und wird im Es wird als Differenz zwischen den maximalen und minimalen Timestamps für einen gegebenen Case berechnet. Bedeutung Es ist die primäre Datenquelle Berechnet: Beispiele 5.52.010.1 | |||
| Nacharbeitsanzahl ReworkCount | Anzahl der durchgeführten Korrekturen. | ||
| Beschreibung Diese berechnete Metrik zählt, wie oft die Aktivität „Datenkorrektur durchgeführt“ in der Case-Historie erscheint. Sie ist ein direktes Maß für Prozesseffizienz und unterstützt das Hohe Nacharbeitszahlen weisen auf anhaltende Datenqualitätsprobleme oder komplexe Cases hin, die die Erstvalidierung nicht bestehen. Bedeutung Es quantifiziert den Datenquelle Berechnet durch Zählung der Beispiele 013 | |||
| Rechtsträger LegalEntity | Der Buchungskreis oder die juristische Einheit des Mitarbeiters. | ||
| Beschreibung Dieses Attribut identifiziert die juristische Einheit (Buchungskreis), die mit dem Gehaltsabrechnungsdatensatz verknüpft ist. Es ermöglicht Finanzberichterstattung und Analyse der Gehaltsabrechnungsleistung über verschiedene Tochtergesellschaften oder Unternehmenseinheiten hinweg. Es stammt aus dem Feld Bedeutung Es unterstützt firmenübergreifendes Datenquelle Tabelle PA0001, Feld BUKRS. Beispiele US01DE011000 | |||
| SLA-Bearbeitungsfrist SLAProcessingDeadline | Der Ziel-Timestamp für den Abschluss des Gehaltsabrechnungslaufs. | ||
| Beschreibung Dieses Attribut repräsentiert die interne oder externe Frist für die Finalisierung der Gehaltsabrechnung, um eine pünktliche Zahlung sicherzustellen. Es wird verwendet, um den KPI Obwohl nicht immer ein Standardfeld in SAP-Tabellen, wird es oft in einer benutzerdefinierten Steuertabelle gepflegt oder konzeptionell basierend auf dem Gehaltsabrechnungskalender definiert (z.B. 2 Tage vor dem Zahltag). Für dieses Datenmodell wird es oft aus dem Zahltag abzüglich eines festgelegten Puffers abgeleitet. Bedeutung Es liefert den Datenquelle Abgeleitet vom Zahlungsdatum (T549S) minus konfigurierter Bearbeitungstage. Beispiele 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
| Steuerhoheitsgebiet TaxJurisdiction | Die Steuerregion oder Behörde, die für den Mitarbeiter zuständig ist. | ||
| Beschreibung Dieses Attribut identifiziert die spezifische Steuerbehörde oder -region (z.B. Bundesstaat, Provinz, Kanton), die den Gehaltsabrechnungsdatensatz regelt. Es ist unerlässlich für das Im SAP US Payroll ist dies das Feld Bedeutung Es ermöglicht die Datenquelle Tabelle PA0001 oder PA0207/PA0208, Feld TXJCD. Beispiele CANYTXNRW | |||
Aktivitäten der Lohnabrechnung
| Aktivität | Beschreibung | ||
|---|---|---|---|
| `Gross Pay Calculated` | Die erfolgreiche Ausführung der Brutto-Gehaltsabrechnungsschema-Berechnung. Bei der Standardverarbeitung erfolgt dies, wenn der Gehaltsabrechnungs-Treiber in den PCL2-Cluster schreibt. | ||
| Bedeutung Ein wichtiger Meilenstein, der anzeigt, dass Zeit- und Tarifsdaten erfolgreich kombiniert wurden. Verzögerungen hier wirken sich auf die Brutto-Netto-Verarbeitungseffizienz aus. Datenquelle Cluster PCL2 ( Erfassen Protokolliert, wenn eine neue Sequenznummer in den Ereignistyp explicit | |||
| Arbeitszeittabelle eingereicht | Das Ereignis, bei dem ein Mitarbeiter oder Manager Zeitdaten für die Abrechnungsperiode einreicht. Dies wird aus den Workflow-Anfrageprotokollen im Employee Central Modul, das mit ECP verknüpft ist, erfasst. | ||
| Bedeutung Markiert den Beginn der Datensammelphase. Verzögerungen hier wirken sich kaskadenförmig aus und führen zu einer Komprimierung des Gehaltsabrechnungszeitfensters. Datenquelle Employee Central Erfassen Protokolliert, wenn der Ereignistyp explicit | |||
| Arbeitszeittabelle genehmigt | Die formelle Genehmigung von Zeitdaten durch einen Manager oder Administrator. Diese Statusänderung validiert die Daten für die Übertragung an die Gehaltsabrechnungs-Engine. | ||
| Bedeutung Berechnet den Datenquelle Employee Central Erfassen Protokolliert, wenn der Ereignistyp explicit | |||
| Banküberweisungsdatei generiert | Die Erstellung der vorläufigen Datenträgeraustauschdatei (Pre-DTA) oder der endgültigen DTA-Datei. Dies erstellt die Zahlungsanweisungen für die Bank. | ||
| Bedeutung Verfolgt den Datenquelle
Erfassen Protokolliert, wenn der Zahlungs- Ereignistyp explicit | |||
| Gehaltsabrechnungsprozess initialisiert | Die Erstellung einer Gehaltsabrechnungsprozessinstanz innerhalb des Payroll Control Centers (PCC). Dies markiert den offiziellen Beginn des Gehaltsabrechnungszyklus für ein spezifisches Gehaltsabrechnungsgebiet. | ||
| Bedeutung Legt die Basis für die gesamte End-to-End-Dauer des Gehaltsabrechnungszyklus fest. Es definiert den Umfang der zu verarbeitenden Mitarbeiter. Datenquelle Tabellen des Payroll Control Centers (z.B. PYC_D_PY_PROC_INST), die die Erstellung einer neuen Prozess-ID verfolgen. Erfassen Protokolliert, wenn die PCC Ereignistyp explicit | |||
| Gehaltsabrechnungssimulation ausgeführt | Ein `Test Run` des Lohn- und Gehaltsabrechnungs-`Drivers` zur Identifizierung von Fehlern, ohne die Ergebnisse in der Datenbank zu speichern. Dies ist ein wichtiger `Step` in der PCC-Validierungsphase. | ||
| Bedeutung Wesentlich für die Berechnung der Datenquelle Protokolle der Payroll Control Center Schrittinstanzen (PYC_D_STEP_INST), bei denen der Schritttyp einer Simulation entspricht. Erfassen Protokolliert, wenn der PCC Ereignistyp explicit | |||
| Lohnabrechnungsdatensatz genehmigt | Die formelle Freigabe der Gehaltsabrechnungsergebnisse für einen Mitarbeiter oder eine Lohngruppe. Dies geschieht im PCC-Schritt „Monitoring“ oder „Sign Off“. | ||
| Bedeutung Markiert das Ende der Berechnungs-/Validierungsphase und die Freigabe zur Zahlung. Entscheidend für die Analyse des Spezialistendurchsatzes. Datenquelle Protokolle der Payroll Control Center Schrittinstanzen (PYC_D_STEP_INST) für den Genehmigungs- oder Bestätigungsschritt. Erfassen Protokolliert, wenn der PCC Ereignistyp explicit | |||
| Steuererklärung abgeschlossen | Die Generierung von Steuerreporterdateien (z.B. PU19 in den USA) oder die Übertragung an einen Drittanbieter für Steuererklärungen. | ||
| Bedeutung Sorgt für regulatorische Datenquelle Protokolle des Tax Reporter Log Manager oder B2A (Business to Administration) Manager, die eine erfolgreiche Dateigenerierung anzeigen. Erfassen Protokolliert, wenn der Ereignistyp explicit | |||
| Zahlung ausgeführt | Die Finalisierung des Zahlungsprozesses, oft durch die Bank oder den Abschluss des F110-Zahllaufs bestätigt. | ||
| Bedeutung Der primäre End-Timestamp für die SLA-Compliance-Rate. Bestimmt, ob der Mitarbeiter pünktlich bezahlt wurde. Datenquelle Tabellen der Zahlläufe (REGUH): Datum und Uhrzeit des Laufs oder abgeleitet vom Valutadatum. Erfassen Protokolliert, wenn der Ereignistyp explicit | |||
| `Audit Exception` markiert | Die Generierung eines Validierungsalarms durch die Richtlinienprüfungen des Payroll Control Centers. Diese Alarme identifizieren Dateninkonsistenzen oder Compliance-Risiken. | ||
| Bedeutung Unterstützt direkt die Datenquelle Alarmtabellen des Payroll Control Center (PYC_D_ALERT), die spezifische Fehlercodes mit dem Mitarbeiterdatensatz verknüpfen. Erfassen Protokolliert, wenn ein neuer Ereignistyp explicit | |||
| Datenkorrektur durchgeführt | Änderungen an `Master Data` oder `Time Data` als Reaktion auf eine `Audit Exception`. Dies stellt Nacharbeiten dar, die zur Behebung eines `Payroll Alerts` erforderlich sind. | ||
| Bedeutung Verfolgt manuelle Korrektur- und Nacharbeitsraten. Dies ist die primäre Aktivität, die zur Prozesseffizienz beiträgt. Datenquelle Abgeleitet durch Verknüpfung von PCC- Erfassen Identifizieren Sie Ereignistyp inferred | |||
| Gehaltszettel veröffentlicht | Die Bereitstellung des Vergütungsnachweises für den Mitarbeiter über Self-Service (ESS). | ||
| Bedeutung Misst die Service-Level-Agreement-Leistung (SLA) bei der Lohnabrechnungszustellung. Verzögerungen hier führen zu Helpdesk-Tickets. Datenquelle Abgeleitet vom 'Druckdatum' oder der Erfassen Berechnet basierend auf Zahlungsdatum + Systemkonfigurationsverzögerung Ereignistyp inferred | |||
| Leistungsabzüge angewendet | Der spezifische Schritt innerhalb des Berechnungsschemas, in dem die Leistungslogik verarbeitet wird. Obwohl Teil des Hauptlaufs, hilft die Isolierung dieses Schritts, Konfigurationsfehler zu lokalisieren. | ||
| Bedeutung Unterstützt die Analyse der Genauigkeit von Leistungs- und Steuerberechnungen. Nützlich zur Fehlerbehebung bei komplexen Abzugslogik-Diskrepanzen. Datenquelle Abgeleitet aus dem Vorhandensein des V0- Erfassen Fällt zusammen mit Ereignistyp inferred | |||
| Prämiendaten importiert | Die Aufnahme von nicht-standardmäßigen Lohndaten, wie Boni oder Provisionen, in das Gehaltsabrechnungssystem. Dies beinhaltet typischerweise das Laden von Daten in die Infotypen 0015 oder 2010. | ||
| Bedeutung Späte Datenquelle
Erfassen
Ereignistyp inferred | |||
Extraktionsleitfäden
Schritte
- Identifizieren Sie den Ziel-
Payroll Areaund die Periodenparameter für die Extraktion. Sie extrahieren Daten hauptsächlich aus denPayroll Control Center (PCC)-Tabellen (PYC_*) und demPayroll Cluster Directory(HRPY_RGDIR). - Starten Sie Ihren SQL-Client oder SAP HANA Studio, der mit dem SAP SuccessFactors Employee Central Payroll (ECP) Backend-Schema verbunden ist.
- Führen Sie das im Abschnitt "Query" bereitgestellte Datenextraktionsskript aus. Dieses Skript aggregiert Daten aus Stammdatentabellen,
Payroll Resultsund PCCAudit Logs. - Ordnen Sie die
Time Sheet Submitted- undTime Sheet Approved-Activitieszu. Da ECP dieseDataoft von Employee Central erhält, verwenden Sie die Erstellungs- und Änderungs-Timestampsin Tabelle PA2001 oder, falls verfügbar, die spezialisiertenTime Interface Tableswie PTREQ_HEADER. - Extrahieren Sie
Incentive Data Imported, indem SieInfotypes0015 (Zusätzliche Zahlungen) und 2010 (Mitarbeitervergütungsinformationen) nach Datensätzen abfragen, die innerhalb des Ziel-Pay Perioderstellt wurden. - Rufen Sie PCC-
Process Stepsaus den TabellenPYC_D_PYP(Process Instances) undPYC_D_BINST(Step Instances) ab, umPayroll Process Initialized,Payroll Simulation Executed,Payroll Record ApprovedundPay Slip Publishedzu erfassen. - Fragen Sie die Tabelle
PYC_D_ALERTab, umAudit Exception Flagged-Eventszu identifizieren. Diese Datensätze verknüpfen spezifische Mitarbeitende mit Validierungsfehlern, die während der PCC-Prüfschritte gefunden wurden. - Generieren Sie
Data Correction Performed-Events, indem Sie die SAPChange Document Header-Tabelle (CDHDR) mitPayroll-relevantenInfotypes(z.B. 0008, 0015, 2001) während des aktivenPayroll Windowverknüpfen. - Nutzen Sie die Tabelle
HRPY_RGDIR, um den genauen Zeitpunkt vonGross Pay Calculatedzu bestimmen. Erstellen Sie ein abgeleitetesEventfürBenefit Deductions Appliedunter Verwendung desselbenTimestamp, da diese gleichzeitig während des Schema-Laufs auftreten. - Verknüpfen Sie Finanzdaten aus den Tabellen
REGUH(Settlement Data) undREGUT(DME Administration), umBank Transfer File GeneratedundPayment Executedzu erfassen. - Transformieren Sie die
PayrollRecord-Spalte so, dass sie strikt dem Format [EmployeeID]-[Period]-[Year] folgt, um die Eindeutigkeit derCase IDzu gewährleisten. - Exportieren Sie den endgültigen Datensatz als CSV-Datei, stellen Sie sicher, dass die Kopfzeilen den im Vertrag definierten
Attributesentsprechen, unduploaden Sie ihn zu ProcessMind.
Konfiguration
- Zeitrahmen: Konfigurieren Sie die Extraktion so, dass sie ein rollierendes Fenster der letzten 6 bis 12 Monate abdeckt. Lohn- und Gehaltsabrechnungsprozesse sind zyklisch, und dieser Bereich erfasst ausreichende Variationen in regulären und
Off-Cycle-Läufen. - Payroll Area (ABKRS): Filtern Sie nach spezifischen
Payroll Areas(z.B. US Monthly, DE Weekly), um sicherzustellen, dass die Analyse ähnliche Prozesszyklen vergleicht. - Sprache: Stellen Sie sicher, dass Beschreibungen für
ActivitiesundProcess Stepsin der primären Systemsprache extrahiert werden (z.B. SPRAS = 'E'). - PCC Process IDs: Identifizieren Sie die spezifischen
Process Definition IDs(PYP_ID), die in Ihrer PCC-Konfiguration für 'Monitoring', 'Production' und 'Off-Cycle' verwendet werden, um relevante Schritte zu filtern. - Währung: Normalisieren Sie Finanzbeträge (
GrossPayAmount) auf eine einzige Währung, wenn Sie Daten für globale Lohn- und Gehaltsabrechnungsvorgänge extrahieren. - Autorisierung: Der Datenbankbenutzer benötigt Lesezugriff auf
Human Resources(PA/PY)-Tabellen und speziell auf dasCluster Directory(HRPY_RGDIR) und PCC-Tabellen (PYC_*).
a Beispielabfrage config
/* 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]' Schritte
- ABAP Editor aufrufen: Melden Sie sich in Ihrem SAP SuccessFactors Employee Central Payroll (ECP) System über die SAP GUI an. Navigieren Sie zum Transaktionscode SE38 (
ABAP Editor). - Programm anlegen: Geben Sie einen Namen für das neue Programm ein, z.B.
Z_PROCESSMINING_PAYROLL_EXT, und klicken Sie auf Anlegen. Wählen Sie Ausführbares Programm als Typ und speichern Sie es als lokales Objekt (Paket $TMP) zu Testzwecken. - Code implementieren: Kopieren Sie den vollständigen ABAP-Code aus dem Abschnitt "Query" unten und fügen Sie ihn in den Editor ein, wobei Sie eventuell vorhandenen Standardcode ersetzen.
- Prüfen und Aktivieren: Klicken Sie auf die Schaltfläche Prüfen (Strg+F2), um die Syntax zu validieren. Sobald der Status fehlerfrei ist, klicken Sie auf Aktivieren (Strg+F3).
- Extraktion ausführen: Drücken Sie Direktverarbeitung (F8), um den Bericht auszuführen.
- Selektion konfigurieren: Geben Sie im Selektionsbild den
Payroll Area(z.B. US, 99), einen gültigenDate Range(z.B. die letzten 3 Monate) ein und filtern Sie optional nach spezifischenPersonnel Numbers(PERNR) zu Testzwecken. - Extraktion starten: Führen Sie den Bericht aus. Das System verarbeitet die Tabellen HRPY_RGDIR, CATSDB, PA0015 und REGUH, um den
Event Logzu erstellen. - Ergebnis überprüfen: Der Bericht verwendet
cl_demo_output, um die Ergebnisse in einer Gitteransicht direkt auf dem Bildschirm zur sofortigen Validierung anzuzeigen. - Daten exportieren: Klicken Sie mit der rechten Maustaste auf das Ergebnisgitter, wählen Sie Tabellenkalkulation und speichern Sie die Datei als CSV- oder Excel-Format.
- Für ProcessMind formatieren: Öffnen Sie die exportierte Datei. Stellen Sie sicher, dass die Spalte
EventTimestampim FormatYYYY-MM-DD HH:MM:SSformatiert ist. Vergewissern Sie sich, dass die SpaltePayrollRecorddenCaseeindeutig identifiziert (normalerweise PERNR-SEQNR). - Hochladen: Importieren Sie die bereinigte CSV-Datei in ProcessMind und ordnen Sie die Spalten entsprechend
Case ID,Activity,TimestampundAttributeszu.
Konfiguration
- Date Range: Es wird empfohlen, Daten in 3- bis 6-Monats-Blöcken zu extrahieren, um Speicher-Timeouts in der ABAP-Laufzeitumgebung zu vermeiden.
- Payroll Area: Dies ist ein kritischer Filter (Tabelle T549A). Extrahieren Sie immer nur einen Abrechnungsbereich auf einmal (z.B. monatlich vs. zweiwöchentlich), um die Prozesskonsistenz sicherzustellen.
- Configuration Table: Das Skript liest
HRPY_RGDIR(Payroll Directory) als primären Treiber. Stellen Sie sicher, dass Ihr Benutzer dieS_TABU_DIS-Berechtigung für diese Tabelle hat. - Time Data Source: Das Skript geht davon aus, dass
Time Sheet-Daten inCATSDBgespeichert sind. Wenn Sie eine Drittanbieter-Zeiterfassung verwenden, die direkt mitIT2001oderIT2010ohneCATSverbunden ist, können dieTime Sheet-Aktivitäten leer zurückgegeben werden und erfordern eine Skriptanpassung. - Payment Data: Das Skript verknüpft
Payroll Runsmit Zahlungs-RunsüberREGUH(Settlement Data). Stellen Sie sicher, dass derF110 Payment Runfür den ausgewählten Zeitraum ausgeführt wurde, um Zahlungs-Eventszu sehen. - Performance: Für hochvolumige Systeme (über 100.000 Mitarbeitende) ersetzen Sie die
SELECT *-Logik durch einen Cursor-basierten Abruf oder führen Sie sie im Hintergrundmodus (F9) aus.
a Beispielabfrage 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 ).