Uw Loonadministratiesdata Template
Uw Loonadministratiesdata Template
- Strategische datavelden voor salarisanalyse
- Belangrijke mijlpalen voor procesbekijkking
- Systeemspecifieke extracpakketichtlijnen
Loonadministraties-attributen
| Naam | Beschrijving | ||
|---|---|---|---|
| Activiteit Activity | De specifieke taak of `gebeurtenis` die plaatsvindt in het salarisproces. | ||
| Beschrijving Dit
Waarom het belangrijk is Het definieert de stappen in de procesgraaf, waardoor de visualisatie van processtromen, loops en varianten mogelijk worden. Waar te verkrijgen Afgeleid van SWWLOGHIST (Workflow), CDHDR (Change Documents), of PA03 (Control Record) statuswijzigingen. Voorbeelden Urenstaat IngediendBruto salaris berekendAudit-uitzondering gemarkeerdBetaling Uitgevoerd | |||
| Salarisrecord PayrollRecord | De unieke IDnummer die werknemer en salarisperiode combineert. | ||
| Beschrijving 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 Waarom het belangrijk is Het dient als de Case-ID, die alle relevante gebeurtenissen groepeert om het end-to-end procespad te reconstrueren voor elke uitgegeven salarisstrook. Waar te verkrijgen 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 | |||
| Tijdstempel EventTimestamp | De exacte datum en tijd waarop de activiteit plaatsvond. | ||
| Beschrijving Dit In SAP ECP wordt dit verkregen uit Waarom het belangrijk is Het maakt de berekening van de duur tussen gebeurtenissen mogelijk, wat belangrijk is voor het vinden van prestatieknelpunten en SLA-overschrijdingen. Waar te verkrijgen CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT, of specifieke auditlog tijdstempels. Voorbeelden 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| Bronsysteem SourceSystem | Het systeem waar de `gebeurtenis data` is ontstaan. | ||
| Beschrijving Dit Het is bijzonder nuttig bij het analyseren van Waarom het belangrijk is Het maakt datasegmentatie mogelijk in multi-systeemomgevingen en helpt bij het oplossen van datakwaliteitsproblemen door de oorsprong aan te wijzen. Waar te verkrijgen Systeem ID (SID) van de SAP-installatie of extractieconfiguratie. Voorbeelden SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| Tijdstip van extractie LastDataUpdate | De timestamp van de meest recente data-extractie. | ||
| Beschrijving Dit Hoewel niet direct gebruikt voor Waarom het belangrijk is Het zorgt ervoor dat gebruikers zich bewust zijn van vertraging in de data en helpt bij het bevestigen van de relevantie van de gerapporteerde meetwaarden. Waar te verkrijgen Gegenereerd door het ETL / extractiescript tijdens runtime. Voorbeelden 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| Betalingsperiode PayPeriod | Het specifieke periodenummer binnen het fiscale jaar. | ||
| Beschrijving Dit Gevonden in Waarom het belangrijk is Het maakt trendanalyse en de identificatie van seizoensgebonden knelpunten op specifieke tijden van het jaar mogelijk. Waar te verkrijgen Tabel PA0001 of Payroll Results Cluster (RGDIR), veld PABRP. Voorbeelden 01122652 | |||
| Bruto salarisbedrag GrossPayAmount | Het berekende totale bruto loon voor het record. | ||
| Beschrijving 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. Waarom het belangrijk is Het maakt analyse van procesgedrag mogelijk op basis van de betalingswaarde (bijv. duren grotere betalingen langer om goed te keuren?). Waar te verkrijgen 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. | ||
| Beschrijving Dit Booleaanse Het wordt doorgaans afgeleid door de gebruikers-id te controleren tegen een lijst van bekende systeemaccounts (bijv. 'BATCH', 'SAP_WORKFLOW'). Waarom het belangrijk is Het helpt automatiseringsgraden te meten en kansen te vinden voor het verminderen van handmatige inspanning. Waar te verkrijgen Afgeleid van Gebruiker ID (bijv. indien Gebruiker IN ['BATCH', 'SYSTEM'] dan true). Voorbeelden truefalse | |||
| Kostenplaats CostCenter | Het kostenplaatsnummer dat aan de werknemer is gekoppeld. | ||
| Beschrijving De Kosten 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 Informatietype Organisatorische Toewijzing (PA0001) als veld Waarom het belangrijk is Het maakt organisatorische drill-down mogelijk om specifieke afdelingen te vinden die vertragingen of herstelwerk veroorzaken. Waar te verkrijgen 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. | ||
| Beschrijving Dit Het is afgeleid van de velden Off-Cycle Reason ( Waarom het belangrijk is Het is belangrijk voor het meten van de 'Extra Betaling Ratio' KPI en het richten op reducties in niet-standaard verwerking. Waar te verkrijgen Tabel RGDIR (Cluster Directory), veld OCRSN of PAYTY. Voorbeelden RegulierCorrectie ABonusbetalingBeëindiging | |||
| Salarisgebied PayrollArea | Definieert de specifieke payrollgroep waartoe een medewerker behoort. | ||
| Beschrijving 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 Waarom het belangrijk is Het maakt de vergelijking van payrollcyclusprestaties tussen verschillende groepen mogelijk (bijv. Uurlijkse vs. Salariële). Waar te verkrijgen Tabel PA0001 (Organisatorische Toewijzing), veld ABKRS. Voorbeelden VS TweewekelijksDE MaandelijksDirectie Payroll | |||
| Salarisspecialist PayrollSpecialist | De gebruikers-id of naam van de persoon die het record verwerkt. | ||
| Beschrijving Dit Gevonden in het Waarom het belangrijk is Het is belangrijk voor werkbelastingbalancering en het vinden van menselijke knelpunten in het proces. Waar te verkrijgen Systeemvelden (SY-UNAME) gelogd in CDHDR of Workflow Actor ID. Voorbeelden JSMITHKMILLERSYSTEEM | |||
| Werknemerstype EmployeeType | Classificatie van de werknemer (bijv. Vast, Contractor). | ||
| Beschrijving Dit Technisch afgeleid van de velden Employee Group ( Waarom het belangrijk is Het helpt vinden of procesvariaties of vertragingen specifiek zijn voor bepaalde arbeidscategorieën. Waar te verkrijgen Tabel PA0001, velden PERSG (Groep) en PERSK (Subgroep). Voorbeelden Actieve WerknemerTraineeGepensioneerdeUurcontractant | |||
| Aantal Herstelwerken ReworkCount | Aantal keren dat een correctie is uitgevoerd. | ||
| Beschrijving Deze berekende metriek telt het aantal keren dat de activiteit 'Datacorrectie Uitgevoerd' verschijnt in de Hoge aantallen herstelwerk wijzen op aanhoudende Waarom het belangrijk is Het kwantificeert de inspanning die verloren gaat aan foutcorrectie en helpt datakwaliteitsinitiatieven te rechtvaardigen. Waar te verkrijgen 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. | ||
| Beschrijving Dit
Waarom het belangrijk is Het benadrukt datakwaliteitsproblemen en de noodzaak van handmatige interventie. Waar te verkrijgen 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. | ||
| Beschrijving Dit In SAP US Payroll is dit het Waarom het belangrijk is Het maakt de segmentatie van compliancerisico's en audituitzonderingen per regelgevende regio mogelijk. Waar te verkrijgen Tabel PA0001 of PA0207/PA0208, veld TXJCD. Voorbeelden CANYTXNRW | |||
| Rechtspersoon LegalEntity | De bedrijfs- of juridische entiteit van de werknemer. | ||
| Beschrijving Dit Gevonden in het veld Waarom het belangrijk is Het ondersteunt cross-company benchmarking en financiële allocatieanalyse. Waar te verkrijgen Tabel PA0001, veld BUKRS. Voorbeelden US01DE011000 | |||
| SLA-verwerkingsdeadline SLAProcessingDeadline | De doel `timestamp` voor het voltooien van de salarisrun. | ||
| Beschrijving 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 Waarom het belangrijk is Het biedt de benchmark voor het beoordelen van tijdigheid en SLA-naleving. Waar te verkrijgen Afgeleid van de Betaaldatum (T549S) minus de geconfigureerde verwerkingsdagen. Voorbeelden 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
Loonadministratiesactiviteiten
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Bankoverboekingsbestand gegenereerd | Het aanmaken van het Voorlopige Data Medium Exchange (pre-DME) of het definitieve DME-bestand. Dit creëert de betalingsinstructies voor de bank. | ||
| Waarom het belangrijk is Volgt de Bank Transfer Automation Monitor. Mislukte bestandsgeneraties zijn kritieke processtops. Waar te verkrijgen 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. | ||
| Waarom het belangrijk is Waarborgt naleving van regelgeving. Volgt de laatste compliancestap in de reeks. Waar te verkrijgen 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. | ||
| Waarom het belangrijk is De primaire eind Waar te verkrijgen 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 | |||
| Bruto salaris berekend | De succesvolle uitvoering van de bruto salarisschema-berekening. Bij standaardverwerking gebeurt dit wanneer de salarisdriver naar de PCL2 cluster schrijft. | ||
| Waarom het belangrijk is Een belangrijke mijlpaal die aangeeft dat tijd- en tariefdata succesvol zijn gecombineerd. Vertragingen hier beïnvloeden de Gross to Net Processing Efficiency. Waar te verkrijgen 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 | |||
| Payroll Simulatie Uitgevoerd | Een testrun van de payroll driver om fouten te vinden zonder de resultaten naar de database te schrijven. Dit is een belangrijke stap in de PCC validatiefase. | ||
| Waarom het belangrijk is Essentieel voor het berekenen van de First-Pass Calculatie Rate. Herhaalde simulaties duiden op datakwaliteitsproblemen. Waar te verkrijgen 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 | |||
| Salarisproces Geïnitialiseerd | De creatie van een salarisprocesinstantie binnen het Payroll Control Center (PCC). Dit markeert de officiële start van de salariscyclus voor een specifiek salarisgebied. | ||
| Waarom het belangrijk is Stelt de basislijn vast voor de totale End-to-End Salariscyclusduur. Het definieert de omvang van de te processen werknemers. Waar te verkrijgen 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. | ||
| Waarom het belangrijk is Markeert het einde van de berekenings-/validatiefase en de vrijgave voor betaling. Essentieel voor de analyse van Specialist Throughput. Waar te verkrijgen 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 | |||
| Urenstaat Goedgekeurd | De formele goedkeuring van tijddata door een manager of administrateur. Deze statuswijziging valideert de `data` voor overdracht naar de salarisengine. | ||
| Waarom het belangrijk is Berekent de Time Sheet Goedkeuring Doorlooptijd KPI. Knelpunten hier duiden op managementvertragingen of complexe goedkeuringshiërarchieën. Waar te verkrijgen 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 `gebeurtenis` 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. | ||
| Waarom het belangrijk is Markeert het begin van de data-accumulatiefase. Vertragingen hierin hebben stroomafwaarts gevolgen, wat leidt tot een kortere verwerkingsperiode voor de salarisadministratie. Waar te verkrijgen 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 gemarkeerd | Het genereren van een validatiemelding door de beleidscontroles van het Payroll Control Center. Deze meldingen vinden data-inconsistenties of compliancerisico's. | ||
| Waarom het belangrijk is Ondersteunt direct de Audit Uitzonderingsfrequentie en Compliance Risk dashboards. Hoge volumes duiden op upstream datakwaliteitsproblemen. Waar te verkrijgen 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 | |||
| Datacorrectie uitgevoerd | Wijzigingen aangebracht in stamdata of tijddata als reactie op een audit uitzondering. Dit vertegenwoordigt herstelwerk die nodig is om een payroll alert op te lossen. | ||
| Waarom het belangrijk is Volgt handmatige correctie- en herstelpercentages. Dit is de primaire activiteit die bijdraagt aan procesinefficiëntie. Waar te verkrijgen Afgeleid door PCC Alert tijdstempels 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 | |||
| Incentive Data 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. | ||
| Waarom het belangrijk is Late imports voorkomen nauwkeurige brutoloonberekeningen. Het analyseren hiervan helpt de Integratie Doorlooptijd van Bonusdata te optimaliseren. Waar te verkrijgen Audit Log (PCL4 of equivalent) die de aanmaak van records in Infotype 0015 (Aanvullende Betalingen) of 2010 (Werknemers BeloningsInformatie) toont. Vastleggen Vergelijk Infotype aanmaak tijdstempels met import job logs Gebeurtenistype inferred | |||
| Loonstrookje gepubliceerd | De actie van het beschikbaar stellen van de salarisspecificatie aan de werknemer via Self-Service (ESS). | ||
| Waarom het belangrijk is Meet de SLA Performance voor loonstrooklevering. Vertragingen hierin genereren helpdesk tickets. Waar te verkrijgen 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. | ||
| Waarom het belangrijk is Ondersteunt de analyse van de nauwkeurigheid van de berekening van voordelen en belastingen. Handig voor het debuggen van complexe inconsistenties in de inhoudingslogica. Waar te verkrijgen 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 | |||
Extractiegidsen
Stappen
- Identificeer de doelparameters voor het salarisadministratiegebied en de periode voor de extractie. De data wordt voornamelijk opgehaald 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 tijdstempels voor aanmaak en laatste wijziging in tabel PA2001 of de gespecialiseerde uren-interfacestabellen zoals PTREQ_HEADER, indien beschikbaar.
- Extraheer 'Incentive Data Imported' door Informatietypes 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 Simulatie Executed', 'Payroll Record Approved' en 'Pay Slip Published' vast te leggen.
- Doorzoek tabel PYC_D_ALERT om 'Audit Exception Flagged' gebeurtenissen te vinden. Deze records koppelen specifieke werknemers aan validatiefouten die tijdens de PCC-controlestappen zijn gevonden.
- Genereer 'Data Correction Performed' gebeurtenissen door de SAP Change Document Header-tabel (CDHDR) te koppelen aan loonrelevante Informatietypes (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 gebeurtenis 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 attributen, 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 opgehaald 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.
- Valuta: Normaaliseer financiële bedragen (GrossPayBedrag) naar één valuta als u data extraheert voor wereldwijde loonactiviteiten.
- Authorization: De databasegebruiker moet leesrechten hebben op Human Bronnen (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 Bewerkenor: Log in op uw SAP SuccessFactors Employee Central Payroll (ECP) systeem via de SAP GUI. Navigeer naar transactiecode SE38 (ABAP Bewerkenor).
- 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 gebeurtenisueel aanwezige standaardcode.
- Check and Activate: Klik op de knop Check (Ctrl+F2) om de syntaxis te bevestigen. 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 gebeurtenisueel 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, Activiteit, Timestamp en Attributen.
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 belangrijk 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-gebeurtenissen 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 ).