Uw Salarisverwerking Data Template
Uw Salarisverwerking Data Template
- Strategische data velden voor salarisanalyse
- Belangrijke mijlpalen voor procesontdekking
- Systeemspecifieke extractierichtlijnen
Salarisverwerkingsattributen
| Naam | Omschrijving | ||
|---|---|---|---|
| Activiteit Activity | De specifieke taak of `event` die plaatsvindt in het salarisproces. | ||
| Omschrijving Dit
Het belang Het definieert de knooppunten in de procesgraaf, waardoor de visualisatie van processtromen, loops en varianten mogelijk wordt. Vindplaats Afgeleid van SWWLOGHIST (Workflow), CDHDR (Change Documents), of PA03 (Control Record) statuswijzigingen. Voorbeelden Urenstaat IngediendBrutoloon BerekendAudit Uitzondering GevlagdBetaling Uitgevoerd | |||
| Gebeurtenistijdstempel EventTimestamp | De exacte datum en tijd waarop de activiteit plaatsvond. | ||
| Omschrijving Dit In SAP ECP wordt dit verkregen uit Het belang Het maakt de berekening van de duur tussen events mogelijk, wat essentieel is voor het identificeren van prestatieknelpunten en SLA-schendingen. Vindplaats CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT, of specifieke audit log timestamps. Voorbeelden 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| Salarisrecord PayrollRecord | De unieke identificator die werknemer en salarisperiode combineert. | ||
| Omschrijving Het Payroll Record fungeert als de centrale In SAP SuccessFactors Employee Central Payroll wordt dit doorgaans geconstrueerd door het Personeelsnummer (PERNR) te concateneren met het Salarisjaar (PABRJ) en de Salarisperiode (PABRP), en potentieel een volgnummer (SEQNR) om meerdere runs te onderscheiden. Deze granulariteit zorgt ervoor dat elke betalingscyclus wordt geanalyseerd als een afzonderlijke Het belang Het dient als de Case ID, die alle relevante events groepeert om het end-to-end procespad te reconstrueren voor elke uitgegeven salarisstrook. Vindplaats Geconstrueerd uit SAP Cluster B2 (Tijdsevaluatie Resultaten) of PC_PAYRESULT tabellen (PERNR, PABRJ, PABRP, SEQNR). Voorbeelden 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| Bronsysteem SourceSystem | Het systeem waar de `event data` is ontstaan. | ||
| Omschrijving Dit Het is bijzonder nuttig bij het analyseren van Het belang Het maakt datasegmentatie mogelijk in multi-systeemomgevingen en helpt bij het oplossen van datakwaliteitsproblemen door de oorsprong aan te wijzen. Vindplaats Systeem ID (SID) van de SAP-installatie of extractieconfiguratie. Voorbeelden SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| Laatste data-update LastDataUpdate | De timestamp van de meest recente data-extractie. | ||
| Omschrijving Dit Hoewel niet direct gebruikt voor Het belang Het zorgt ervoor dat gebruikers zich bewust zijn van data latency en helpt bij het valideren van de actualiteit van de gerapporteerde metrics. Vindplaats Gegenereerd door het ETL / extractiescript tijdens runtime. Voorbeelden 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| Brutoloon Bedrag GrossPayAmount | Het berekende totale bruto loon voor het record. | ||
| Omschrijving Dit Geëxtraheerd uit de salarisresultatentabel (RT), typisch onder specifieke looncomponenten die het totale bruto loon vertegenwoordigen (bijv. /101). Het ondersteunt de 'Benefit and Tax Calculation Accuracy' analyse door de basis voor de berekening te bieden. Het belang Het maakt analyse van procesgedrag mogelijk op basis van de betalingswaarde (bijv. duren grotere betalingen langer om goed te keuren?). Vindplaats Salarisresultatentabel (RT), looncomponent /101 of vergelijkbaar. Voorbeelden 5000.002500,5010500.00 | |||
| Is Geautomatiseerd IsAutomated | Vlag die aangeeft of de activiteit is uitgevoerd door een systeemgebruiker. | ||
| Omschrijving Dit Booleaanse Het wordt doorgaans afgeleid door de gebruikers-ID te controleren tegen een lijst van bekende systeemaccounts (bijv. 'BATCH', 'SAP_WORKFLOW'). Het belang Het helpt automatiseringsgraden te meten en kansen te identificeren voor het verminderen van handmatige inspanning. Vindplaats Afgeleid van User ID (bijv. indien User IN ['BATCH', 'SYSTEM'] dan true). Voorbeelden truefalse | |||
| Kostenplaats CostCenter | Het kostenplaatsnummer dat aan de werknemer is gekoppeld. | ||
| Omschrijving De Cost Center vertegenwoordigt de financiële afdeling of eenheid waaraan de kosten van de werknemer worden toegerekend. Het fungeert als een proxy voor de afdeling in het Gevonden in het infotype Organisatorische Toewijzing (PA0001) als veld Het belang Het maakt organisatorische drill-down mogelijk om specifieke afdelingen te identificeren die vertragingen of herbewerking veroorzaken. Vindplaats Tabel PA0001, veld KOSTL. Voorbeelden CC-1000 FinanciënCC-2000 ITCC-3000 Verkoop | |||
| Salariscyclus Frequentie PayCycleFrequency | Geeft aan of de run regulier of extra is. | ||
| Omschrijving Dit Het is afgeleid van de velden Off-Cycle Reason ( Het belang Het is cruciaal voor het meten van de 'Extra Betaling Ratio' KPI en het richten op reducties in niet-standaard verwerking. Vindplaats Tabel RGDIR (Cluster Directory), veld OCRSN of PAYTY. Voorbeelden RegulierCorrectie ABonusbetalingBeëindiging | |||
| Salarisgebied PayrollArea | Definieert de specifieke payrollgroep waartoe een medewerker behoort. | ||
| Omschrijving Het Salarisgebied groepeert werknemers die samen worden verwerkt in dezelfde salarisrun, vaak gebaseerd op de betaalfrequentie (bijv. maandelijks versus tweewekelijks) of organisatiestructuur. Dit In SAP komt dit overeen met het technische veld Het belang Het maakt de vergelijking van payrollcyclusprestaties tussen verschillende groepen mogelijk (bijv. Uurlijkse vs. Salariële). Vindplaats Tabel PA0001 (Organisatorische Toewijzing), veld ABKRS. Voorbeelden VS TweewekelijksDE MaandelijksDirectie Payroll | |||
| Salarisperiode PayPeriod | Het specifieke periodenummer binnen het fiscale jaar. | ||
| Omschrijving Dit Gevonden in Het belang Het maakt trendanalyse en de identificatie van seizoensgebonden knelpunten op specifieke tijden van het jaar mogelijk. Vindplaats Tabel PA0001 of Payroll Results Cluster (RGDIR), veld PABRP. Voorbeelden 01122652 | |||
| Salarisspecialist PayrollSpecialist | De gebruikers-ID of naam van de persoon die het record verwerkt. | ||
| Omschrijving Dit Gevonden in het Het belang Het is essentieel voor werkbelastingbalancering en het identificeren van menselijke knelpunten in het proces. Vindplaats Systeemvelden (SY-UNAME) gelogd in CDHDR of Workflow Actor ID. Voorbeelden JSMITHKMILLERSYSTEEM | |||
| Werknemerstype EmployeeType | Classificatie van de werknemer (bijv. Vast, Contractor). | ||
| Omschrijving Dit Technisch afgeleid van de velden Employee Group ( Het belang Het helpt identificeren of procesvariaties of vertragingen specifiek zijn voor bepaalde arbeidscategorieën. Vindplaats Tabel PA0001, velden PERSG (Groep) en PERSK (Subgroep). Voorbeelden Actieve WerknemerTraineeGepensioneerdeUurcontractant | |||
| Aantal Herstelwerken ReworkCount | Aantal keren dat een correctie is uitgevoerd. | ||
| Omschrijving Deze berekende metric telt het aantal keren dat de activiteit 'Datacorrectie Uitgevoerd' verschijnt in de Hoge aantallen herstelwerk wijzen op aanhoudende Het belang Het kwantificeert de inspanning die verloren gaat aan foutcorrectie en helpt datakwaliteitsinitiatieven te rechtvaardigen. Vindplaats Berekend door 'Data Correctie Uitgevoerd' activiteiten per CaseId te tellen. Voorbeelden 013 | |||
| Audit Uitzonderingsvlag AuditExceptionFlag | Vlag die aangeeft of er een audit uitzondering is opgetreden. | ||
| Omschrijving Dit
Het belang Het benadrukt datakwaliteitsproblemen en de noodzaak van handmatige interventie. Vindplaats Afgeleid van de aanwezigheid van foutmeldingen in het payroll log of specifieke statuscodes. Voorbeelden truefalse | |||
| Belastingjurisdictie TaxJurisdiction | De belastingregio of autoriteit die van toepassing is op de werknemer. | ||
| Omschrijving Dit In SAP US Payroll is dit het Het belang Het maakt de segmentatie van compliancerisico's en audituitzonderingen per regelgevende regio mogelijk. Vindplaats Tabel PA0001 of PA0207/PA0208, veld TXJCD. Voorbeelden CANYTXNRW | |||
| Cyclustijd (Dagen) CycleTimeDays | Totale duur van het salarisproces in dagen. | ||
| Omschrijving Dit berekende Het wordt berekend als het verschil tussen de maximale en minimale Het belang Het is de primaire metric voor het beoordelen van de algehele procesefficiëntie en snelheid. Vindplaats Berekend: Eindtijd - Starttijd van de case. Voorbeelden 5.52.010.1 | |||
| Rechtspersoon LegalEntity | De bedrijfs- of juridische entiteit van de werknemer. | ||
| Omschrijving Dit Gevonden in het veld Het belang Het ondersteunt cross-company benchmarking en financiële allocatieanalyse. Vindplaats Tabel PA0001, veld BUKRS. Voorbeelden US01DE011000 | |||
| SLA Verwerkingsdeadline SLAProcessingDeadline | De doel `timestamp` voor het voltooien van de salarisrun. | ||
| Omschrijving Dit Hoewel niet altijd een standaardveld in SAP-tabellen, wordt het vaak bijgehouden in een aangepaste controletabel of conceptueel gedefinieerd op basis van de salariskalender (bijv. 2 dagen vóór de betaaldatum). Voor dit Het belang Het biedt de benchmark voor het beoordelen van tijdigheid en SLA-naleving. Vindplaats Afgeleid van de Betaaldatum (T549S) minus de geconfigureerde verwerkingsdagen. Voorbeelden 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
Salarisverwerkingsactiviteiten
| Activiteit | Omschrijving | ||
|---|---|---|---|
| Bankoverboekingsbestand Gemaakt | Het aanmaken van het Voorlopige Data Medium Exchange (pre-DME) of het definitieve DME-bestand. Dit creëert de betalingsinstructies voor de bank. | ||
| Het belang Volgt de Bank Transfer Automation Monitor. Mislukte bestandsgeneraties zijn kritieke processtops. Vindplaats Logs van de DME / Payment Medium Workbench (PMW) uitvoering, vaak opgeslagen in TemSe of specifieke betaalrun tabellen (ReguH/ReguP). Vastleggen Geregistreerd wanneer betalingsrun (F110/RPCIPE) output creëert Gebeurtenistype explicit | |||
| Belastingaangifte Voltooid | Het genereren van belastingrapportagebestanden (bijv. PU19 in de VS) of overdracht naar een externe belastingaangifteaanbieder. | ||
| Het belang Waarborgt naleving van regelgeving. Volgt de laatste compliancestap in de reeks. Vindplaats Tax Reporter Log Manager of B2A (Business to Administration) Manager logs die succesvolle bestandsgeneratie aangeven. Vastleggen Geregistreerd wanneer de Tax Reporter run succesvol wordt voltooid Gebeurtenistype explicit | |||
| Betaling Uitgevoerd | De afronding van het betalingsproces, vaak bevestigd door de bank of de voltooiing van de F110-betalingsrun. | ||
| Het belang De primaire eind Vindplaats Payment Run tabellen (REGUH) Datum en tijd van de run, of afgeleid van de Valutadatum. Vastleggen Geregistreerd wanneer de status van de Betaalrun is ingesteld op Geboekt/Voltooid Gebeurtenistype explicit | |||
| Brutoloon Berekend | De succesvolle uitvoering van de bruto salarisschema-berekening. Bij standaardverwerking gebeurt dit wanneer de salarisdriver naar de PCL2 cluster schrijft. | ||
| Het belang Een belangrijke mijlpaal die aangeeft dat tijd- en tariefdata succesvol zijn gecombineerd. Vertragingen hier beïnvloeden de Gross to Net Processing Efficiency. Vindplaats Cluster PCL2 (Payroll Resultaten), specifiek de directorytabel (RGDIR) timestamp voor de 'For-Period'. Vastleggen Geregistreerd wanneer een nieuw sequencenummer naar de payroll cluster wordt geschreven Gebeurtenistype explicit | |||
| Salarisproces Geïnitialiseerd | De creatie van een salarisprocesinstance binnen het Payroll Control Center (PCC). Dit markeert de officiële start van de salariscyclus voor een specifiek salarisgebied. | ||
| Het belang Stelt de basislijn vast voor de totale End-to-End Salariscyclusduur. Het definieert de omvang van de te verwerken werknemers. Vindplaats Payroll Control Center tabellen (bijv. PYC_D_PY_PROC_INST), die de creatie van een nieuwe proces-ID volgen. Vastleggen Geregistreerd wanneer een PCC Procesinstantie wordt aangemaakt Gebeurtenistype explicit | |||
| Salarisrecord Goedgekeurd | De formele afmelding van de salarisresultaten voor een werknemer of salarisgroep. Dit gebeurt in de PCC 'Monitoring' of 'Sign Off' stap. | ||
| Het belang Markeert het einde van de berekenings-/validatiefase en de vrijgave voor betaling. Essentieel voor de analyse van Specialist Throughput. Vindplaats Payroll Control Center Stap Instance logs (PYC_D_STEP_INST) voor de Goedkeurings- of Bevestigingsstap. Vastleggen Geregistreerd wanneer de PCC Goedkeuringsstap status verandert naar COMPLETED Gebeurtenistype explicit | |||
| Salarissimulatie Uitgevoerd | Een testrun van de payroll driver om fouten te identificeren zonder de resultaten naar de database te schrijven. Dit is een belangrijke stap in de PCC validatiefase. | ||
| Het belang Essentieel voor het berekenen van de First-Pass Calculatie Rate. Herhaalde simulaties duiden op data kwaliteitsproblemen. Vindplaats Payroll Control Center Stap Instance logs (PYC_D_STEP_INST) waarbij het staptype overeenkomt met Simulatie. Vastleggen Geregistreerd wanneer de PCC Simulatiestap status verandert naar COMPLETED Gebeurtenistype explicit | |||
| Urenstaat Goedgekeurd | De formele goedkeuring van tijddata door een manager of administrateur. Deze statuswijziging valideert de `data` voor overdracht naar de salarisengine. | ||
| Het belang Berekent de Time Sheet Goedkeuring Doorlooptijd KPI. Knelpunten hier duiden op managementvertragingen of complexe goedkeuringshiërarchieën. Vindplaats Employee Central Workflow Request tabellen (WfRequest), filterend op status COMPLETED of APPROVED. Vastleggen Geregistreerd wanneer de workflow status verandert naar APPROVED Gebeurtenistype explicit | |||
| Urenstaat Ingediend | De `event` waarbij een werknemer of manager tijddata indient voor de salarisperiode. Dit wordt vastgelegd uit de `workflow` request logs in de Employee Central module gekoppeld aan ECP. | ||
| Het belang Markeert het begin van de data-accumulatiefase. Vertragingen hierin hebben stroomafwaarts gevolgen, wat leidt tot een kortere verwerkingsperiode voor de salarisadministratie. Vindplaats Employee Central Workflow Request tabellen (WfRequest), filterend op Time Sheet of Time Off categorieën. Vastleggen Geregistreerd wanneer de workflow status verandert naar SUBMITTED Gebeurtenistype explicit | |||
| Audit Uitzondering Gevlagd | Het genereren van een validatiemelding door de beleidscontroles van het Payroll Control Center. Deze meldingen identificeren data-inconsistenties of compliance risico's. | ||
| Het belang Ondersteunt direct de Audit Uitzonderingsfrequentie en Compliance Risk dashboards. Hoge volumes duiden op upstream data kwaliteitsproblemen. Vindplaats Payroll Control Center Alert tabellen (PYC_D_ALERT), die specifieke foutcodes koppelen aan het werknemersrecord. Vastleggen Geregistreerd wanneer een nieuwe entry wordt aangemaakt in de PCC Alert tabel Gebeurtenistype explicit | |||
| Bonusdata Geïmporteerd | Het invoeren van niet-standaard betaaldata, zoals bonussen of commissies, in het salarissysteem. Meestal omvat dit het laden van data in Infotypes 0015 of 2010. | ||
| Het belang Late imports voorkomen nauwkeurige brutoloonberekeningen. Het analyseren hiervan helpt de Integratie Doorlooptijd van Bonusdata te optimaliseren. Vindplaats Audit Log (PCL4 of equivalent) die de aanmaak van records in Infotype 0015 (Aanvullende Betalingen) of 2010 (Werknemers Beloningsinformatie) toont. Vastleggen Vergelijk Infotype aanmaak timestamps met import job logs Gebeurtenistype inferred | |||
| Data Correctie Uitgevoerd | Wijzigingen aangebracht in stamdata of tijddata als reactie op een audit uitzondering. Dit vertegenwoordigt herbewerking die nodig is om een payroll alert op te lossen. | ||
| Het belang Volgt handmatige correctie- en herstelpercentages. Dit is de primaire activiteit die bijdraagt aan procesinefficiëntie. Vindplaats Afgeleid door PCC Alert timestamps te koppelen aan daaropvolgende Audit Log wijzigingen (PCL4) voor dezelfde medewerker voordat de alert wordt gesloten. Vastleggen Identificeer stamdata updates die plaatsvinden terwijl een PCC alert actief is Gebeurtenistype inferred | |||
| Loonstrook Gepubliceerd | De actie van het beschikbaar stellen van de salarisspecificatie aan de werknemer via Self-Service (ESS). | ||
| Het belang Meet de SLA Performance voor loonstrooklevering. Vertragingen hierin genereren helpdesk tickets. Vindplaats Afgeleid van de 'Printdatum' of beschikbaarheidsdatum configuratie in de Pay Slip mashup service logs. Vastleggen Bereken op basis van Betaaldatum + System Configuration lag Gebeurtenistype inferred | |||
| Voordeelinhoudingen Toegepast | De specifieke stap binnen het berekeningsschema waar de logica voor voordelen wordt verwerkt. Hoewel het deel uitmaakt van de hoofdrun, helpt het isoleren hiervan configuratiefouten op te sporen. | ||
| Het belang Ondersteunt de analyse van de nauwkeurigheid van de berekening van voordelen en belastingen. Handig voor het debuggen van complexe inconsistenties in de inhoudingslogica. Vindplaats Afgeleid uit het bestaan van de V0 split in de payroll resultaten of specifieke log entries indien gedetailleerde logging is ingeschakeld (zeldzaam in productie). Vastleggen Valt samen met Berekend Bruto Loon, maar conceptueel onderscheidend voor analyse Gebeurtenistype inferred | |||
Extractie Guides
Stappen
- Identificeer de doelparameters voor het salarisadministratiegebied en de periode voor de extractie. De data wordt voornamelijk geëxtraheerd uit de Payroll Control Center (PCC) tabellen (PYC_*) en de looncluster-directory (HRPY_RGDIR).
- Start uw SQL-client of SAP HANA Studio die verbonden is met het SAP SuccessFactors Employee Central Payroll (ECP) backend-schema.
- Voer het data-extractiescript uit dat in de sectie Query staat. Dit script aggregeert data uit stamgegevenstabellen, salarisresultaten en PCC-auditlogs.
- Koppel de activiteiten 'Time Sheet Submitted' en 'Time Sheet Approved'. Aangezien ECP deze data vaak ontvangt uit Employee Central, gebruikt u de timestamps voor aanmaak en laatste wijziging in tabel PA2001 of de gespecialiseerde uren-interfacestabellen zoals PTREQ_HEADER, indien beschikbaar.
- Extraheer 'Incentive Data Imported' door infotypes 0015 (Aanvullende betalingen) en 2010 (Informatie werknemersbeloning) te bevragen voor records die binnen de betreffende loonperiode zijn aangemaakt.
- Haal de PCC-processtappen op uit de tabellen PYC_D_PYP (Process Instances) en PYC_D_BINST (Step Instances) om 'Payroll Process Initialized', 'Payroll Simulation Executed', 'Payroll Record Approved' en 'Pay Slip Published' vast te leggen.
- Doorzoek tabel PYC_D_ALERT om 'Audit Exception Flagged' events te identificeren. Deze records koppelen specifieke werknemers aan validatiefouten die tijdens de PCC-controlestappen zijn gevonden.
- Genereer 'Data Correction Performed' events door de SAP Change Document Header-tabel (CDHDR) te koppelen aan loonrelevante infotypes (bijv. 0008, 0015, 2001) gedurende het actieve salarisverwerkingsvenster.
- Gebruik tabel HRPY_RGDIR om het exacte moment van 'Gross Pay Calculated' vast te stellen. Maak een afgeleid event aan voor 'Benefit Deductions Applied' met dezelfde timestamp, aangezien deze gelijktijdig plaatsvinden tijdens de run.
- Koppel financiële data uit de tabellen REGUH (Settlement Data) en REGUT (DME-beheer) om 'Bank Transfer File Generated' en 'Payment Executed' vast te leggen.
- Transformeer de kolom 'PayrollRecord' zodat deze strikt de notatie [EmployeeID]-[Period]-[Year] volgt om de uniekheid van de case-ID te waarborgen.
- Exporteer de uiteindelijke dataset als CSV-bestand, waarbij u zorgt dat de koppen overeenkomen met de in het contract gedefinieerde attributes, en upload deze naar ProcessMind.
Configuratie
- Timeframe: Configureer de extractie voor een voortschrijdend venster van de afgelopen 6 tot 12 maanden. Loonprocessen zijn cyclisch en dit bereik legt voldoende variatie vast in zowel reguliere als off-cycle runs.
- Payroll Area (ABKRS): Filter op specifieke salarisadministratiegebieden (bijv. US Monthly, DE Weekly) om te zorgen dat de analyse vergelijkbare procescycli vergelijkt.
- Language: Zorg dat omschrijvingen voor activiteiten en processtappen worden geëxtraheerd in de primaire systeemtaal (bijv. SPRAS = 'E').
- PCC Process IDs: Identificeer de specifieke Process Definition ID's (PYP_ID) die in uw PCC-configuratie worden gebruikt voor 'Monitoring', 'Production' en 'Off-Cycle' om relevante stappen te filteren.
- Currency: Normaliseer financiële bedragen (GrossPayAmount) naar één valuta als u data extraheert voor wereldwijde loonactiviteiten.
- Authorization: De databasegebruiker moet leesrechten hebben op Human Resources (PA/PY) tabellen, in het bijzonder de Cluster Directory (HRPY_RGDIR) en PCC-tabellen (PYC_*).
a Voorbeeldquery 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]' Stappen
- Access ABAP Editor: Log in op uw SAP SuccessFactors Employee Central Payroll (ECP) systeem via de SAP GUI. Navigeer naar transactiecode SE38 (ABAP Editor).
- Create Program: Voer een naam in voor het nieuwe programma, bijvoorbeeld
Z_PROCESSMINING_PAYROLL_EXT, en klik op Create. Selecteer Executable program als type en kies Save als Local Object (Package $TMP) voor testdoeleinden. - Implement Code: Kopieer de volledige ABAP-code uit de sectie Query hieronder en plak deze in de editor. Vervang hiermee de eventueel aanwezige standaardcode.
- Check and Activate: Klik op de knop Check (Ctrl+F2) om de syntaxis te valideren. Zodra de status foutvrij is, klikt u op Activate (Ctrl+F3).
- Execute Extraction: Druk op Direct Processing (F8) om het rapport uit te voeren.
- Configure Selection: Voer in het selectiescherm het
Payroll Areain (bijv. US, 99), een geldigDate Range(bijv. de laatste 3 maanden), en filter eventueel op specifiekePersonnel Numbers(PERNR) om te testen. - Run Extraction: Voer het rapport uit. Het systeem verwerkt de tabellen HRPY_RGDIR, CATSDB, PA0015 en REGUH om de event log op te bouwen.
- Review Output: Het rapport maakt gebruik van
cl_demo_outputom de resultaten direct op het scherm in een gridweergave te tonen voor directe validatie. - Export Data: Klik met de rechtermuisknop op het resultatenoverzicht, selecteer Spreadsheet en sla het bestand op in CSV- of Excel-formaat.
- Format for ProcessMind: Open het geëxporteerde bestand. Zorg dat de kolom
EventTimestampde notatieYYYY-MM-DD HH:MM:SSheeft. Controleer of de kolomPayrollRecordde case uniek identificeert (meestal PERNR-SEQNR). - Upload: Importeer het opgeschoonde CSV-bestand in ProcessMind en koppel de kolommen aan Case ID, Activity, Timestamp en Attributes.
Configuratie
- Date Range: Het wordt aanbevolen om de data te extraheren in blokken van 3 tot 6 maanden om memory timeouts in de ABAP-runtime-omgeving te voorkomen.
- Payroll Area: Dit is een essentieel filter (tabel T549A). Extraheer altijd één salarisadministratiegebied tegelijk (bijv. maandelijks vs. tweewekelijks) om procesconsistentie te waarborgen.
- Configuration Table: Het script gebruikt
HRPY_RGDIR(Payroll Directory) als primaire bron. Zorg dat uw gebruikerS_TABU_DISautorisatie heeft voor deze tabel. - Time Data Source: Het script gaat ervan uit dat de urenstaat-data in
CATSDBstaat. Als u een tijdregistratiesysteem van een externe partij gebruikt dat direct koppelt metIT2001ofIT2010zonder CATS, kunnen de urenstaat-activiteiten leeg blijven en is aanpassing van het script nodig. - Payment Data: Het script koppelt loonruns aan betalingsruns via
REGUH(Settlement Data). Controleer of deF110betalingsrun is uitgevoerd voor de geselecteerde periode om betalings-events te zien. - Performance: Vervang bij systemen met een hoog volume (meer dan 100.000 werknemers) de
SELECT *logica door een cursor-gebaseerde fetch of voer de actie uit in de achtergrondmodus (F9).
a Voorbeeldquery 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 ).