Il Suo template di dati per l'elaborazione del libro paga
Il Suo template di dati per l'elaborazione del libro paga
- Campi `dati` strategici per l'analisi del libro paga
- Pietre miliari chiave per la scoperta dei processi
- Guida all'estrazione specifica del sistema
Attributi di elaborazione del libro paga
| Nome | Descrizione | ||
|---|---|---|---|
| Activity Activity | L'attività o l'`evento` specifico che si verifica nel processo del libro paga. | ||
| Descrizione Questo attributo rileva il nome della fase del processo in esecuzione, come "Foglio presenze inviato", "Simulazione paghe eseguita" o "Pagamento eseguito". Costituisce la base della mappa di processo e consente agli analisti di visualizzare la sequenza delle operazioni effettuate durante il ciclo paghe. I dati per questo attributo sono estratti da vari log, inclusi i log Workflow (SWWLOGHIST), i log delle modifiche agli Infotype (CDHDR/CDPOS) e tabelle specifiche sullo stato dei payroll. Durante l'estrazione vengono applicate convenzioni di denominazione coerenti per garantire che i codici tecnici degli eventi siano tradotti in nomi di attività comprensibili per l'area business. Perché è importante Definisce i nodi nel grafo di processo, consentendo la visualizzazione di flussi di processo, Dove trovare Derivato dalle modifiche di stato di SWWLOGHIST ( Esempi Scheda attività inviataRetribuzione Lorda CalcolataEccezione di Audit SegnalataPagamento Eseguito | |||
| Record libro paga PayrollRecord | L'identificatore unico che combina dipendente e periodo di pagamento. | ||
| Descrizione Il Record del Libro Paga funge da identificatore centrale del caso per l'analisi del In SAP SuccessFactors Employee Central Payroll, questo è tipicamente costruito concatenando il Numero di Personale (PERNR) con l'Anno del Libro Paga (PABRJ) e il Periodo del Libro Paga (PABRP), e potenzialmente un numero di sequenza (SEQNR) per distinguere più esecuzioni. Questa granularità assicura che ogni ciclo di pagamento sia analizzato come un'istanza distinta, consentendo una misurazione precisa dei tempi di ciclo e il tracciamento degli errori. Perché è importante Serve come Case ID, raggruppando tutti gli Dove trovare Costruito da SAP Cluster B2 (Risultati Valutazione Tempo) o tabelle PC_PAYRESULT (PERNR, PABRJ, PABRP, SEQNR). Esempi 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| Timestamp Evento EventTimestamp | La data e l'ora esatte in cui si è verificata l'attività. | ||
| Descrizione Questo In SAP ECP, questo è ottenuto dai campi timestamp come Perché è importante Consente il calcolo della durata tra gli Dove trovare CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT, o Esempi 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| Sistema di Origine SourceSystem | Il sistema da cui hanno avuto origine i `dati` dell'`evento`. | ||
| Descrizione Questo È particolarmente utile quando si analizzano i Perché è importante Consente la segmentazione dei Dove trovare ID di sistema (SID) dall'installazione SAP o dalla configurazione di estrazione. Esempi SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| Ultimo `Data Update` LastDataUpdate | Il `timestamp` dell'estrazione `dati` più recente. | ||
| Descrizione Questo Sebbene non sia direttamente utilizzato per l'analisi del flusso di processo, è cruciale per la governance e la convalida dei Perché è importante Assicura che gli utenti siano consapevoli della latenza dei Dove trovare Generato dallo Esempi 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| Area libro paga PayrollArea | Definisce lo specifico gruppo di payroll a cui appartiene un dipendente. | ||
| Descrizione L'Area Libro Paga raggruppa i dipendenti che vengono elaborati insieme nella stessa esecuzione del libro paga, spesso in base alla frequenza di pagamento (es. mensile vs bisettimanale) o alla struttura organizzativa. Questo In SAP, ciò corrisponde al campo tecnico Perché è importante Consente il confronto delle Dove trovare Tabella PA0001 (Assegnazione organizzativa), campo ABKRS. Esempi Bisettimanale USAMensile DEPayroll Dirigenziale | |||
| Centro di Costo CostCenter | Il centro di costo associato al dipendente. | ||
| Descrizione Il Centro di Costo rappresenta il dipartimento o l'unità finanziaria a cui sono allocati i costi del dipendente. Serve da proxy per il dipartimento nella Si trova nell'infotype Assegnazione Organizzativa (PA0001) come campo Perché è importante Consente un Dove trovare Tabella PA0001, campo KOSTL. Esempi CC-1000 FinanzaCC-2000 ITCC-3000 Vendite | |||
| È Automatizzato IsAutomated | `Flag` che indica se l'attività è stata eseguita da un utente di sistema. | ||
| Descrizione Questo È tipicamente derivato controllando l'ID utente rispetto a un elenco di account di sistema noti (es. 'BATCH', 'SAP_WORKFLOW'). Perché è importante Aiuta a misurare i tassi di automazione e a identificare opportunità per ridurre lo sforzo manuale. Dove trovare Derivato dall'ID Utente (es. se User IN ['BATCH', 'SYSTEM'] allora vero). Esempi truefalse | |||
| Frequenza ciclo di pagamento PayCycleFrequency | Indica se l'esecuzione è regolare o fuori ciclo. | ||
| Descrizione Questo È derivato dai campi Motivo Fuori Ciclo ( Perché è importante È critico per misurare il KPI 'Rapporto Pagamenti Fuori Ciclo' e puntare a riduzioni nell'elaborazione non Dove trovare Tabella RGDIR (Directory Cluster), campo OCRSN o PAYTY. Esempi RegolareCorrezione APagamento BonusTerminazione | |||
| Importo Retribuzione Lorda GrossPayAmount | La retribuzione lorda totale calcolata per il record. | ||
| Descrizione Questo Perché è importante Consente l'analisi del comportamento del processo basato sul valore del pagamento (es. i pagamenti più grandi richiedono più tempo per essere approvati?). Dove trovare Tabella Risultati Libro Paga (RT), Tipo di Voce /101 o simili. Esempi 5000.002500.5010500.00 | |||
| Periodo di pagamento PayPeriod | Il numero di periodo specifico all'interno dell'anno fiscale. | ||
| Descrizione Questo Ricavato da Perché è importante Consente l'analisi delle Dove trovare Tabella PA0001 o Cluster Risultati Libro Paga (RGDIR), campo PABRP. Esempi 01122652 | |||
| Specialista del libro paga PayrollSpecialist | L'ID utente o il nome della persona che elabora il record. | ||
| Descrizione Questo Ricavato dal campo Perché è importante È essenziale per il bilanciamento del carico di lavoro e l'identificazione dei Dove trovare Campi di sistema (SY-UNAME) registrati in CDHDR o ID Attore del Esempi JSMITHKMILLERSYSTEM | |||
| Tipo di dipendente EmployeeType | Classificazione del dipendente (es. Permanente, Appaltatore). | ||
| Descrizione Questo Tecnicamente derivato dai campi Gruppo Dipendenti ( Perché è importante Aiuta a identificare se le variazioni o i ritardi di processo sono specifici di determinate categorie di impiego. Dove trovare Tabella PA0001, campi PERSG (Gruppo) e PERSK (Sottogruppo). Esempi Dipendente AttivoTirocinantePensionatoAppaltatore Orario | |||
| Conteggio rilavorazioni ReworkCount | Numero di volte in cui è stata eseguita una correzione. | ||
| Descrizione Questa metrica calcolata conta il numero di volte in cui l'attività "Correzione dati eseguita" compare nella cronologia del caso. Rappresenta una misura diretta dell'inefficienza del processo e alimenta la dashboard "Tassi di correzione manuale e rilavorazione". Un numero elevato di rilavorazioni indica problemi persistenti nella qualità dei dati o casi complessi che non superano la convalida al primo passaggio. Perché è importante Quantifica lo sforzo perso per la correzione degli errori e aiuta a giustificare le iniziative di qualità dei Dove trovare Calcolato contando le Esempi 013 | |||
| Entità Legale LegalEntity | Il codice azienda o l'entità legale del dipendente. | ||
| Descrizione Questo Ricavato dal campo Perché è importante Supporta il Dove trovare Tabella PA0001, campo BUKRS. Esempi US01DE011000 | |||
| Flag Eccezione di Audit AuditExceptionFlag | Flag che indica se si è verificata un'eccezione di `audit`. | ||
| Descrizione Questo I Perché è importante Evidenzia i problemi di qualità dei Dove trovare Derivato dalla presenza di messaggi di errore nel Esempi truefalse | |||
| Giurisdizione fiscale TaxJurisdiction | La regione fiscale o l'autorità applicabile al dipendente. | ||
| Descrizione Questo Nel libro paga SAP USA, questo è il campo Perché è importante Consente la segmentazione dei rischi di Dove trovare Tabella PA0001 o PA0207/PA0208, campo TXJCD. Esempi CANYTXNRW | |||
| Scadenza elaborazione SLA SLAProcessingDeadline | Il timestamp di riferimento per il completamento dell'esecuzione del libro paga. | ||
| Descrizione Questo Sebbene non sia sempre un campo standard nelle tabelle SAP, è spesso mantenuto in una tabella di controllo personalizzata o definito concettualmente in base al calendario del libro paga (es. 2 giorni prima della Data di Pagamento). Per questo modello di Perché è importante Fornisce il Dove trovare Derivato dalla Data di Pagamento (T549S) meno i giorni di elaborazione configurati. Esempi 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
| Tempo di Ciclo (Giorni) CycleTimeDays | Durata totale del processo del libro paga in giorni. | ||
| Descrizione Questo È calcolato come la differenza tra i timestamp massimi e minimi per un dato Perché è importante È la metrica primaria per valutare l'efficienza e la velocità complessiva del processo. Dove trovare Calcolato: EndTime - StartTime del Esempi 5.52.010.1 | |||
Attività di elaborazione del libro paga
| Activity | Descrizione | ||
|---|---|---|---|
| File Bonifico Bancario Generato | La creazione del file Preliminary Data Medium Exchange (pre-DME) o DME finale. Questo crea le istruzioni di pagamento per la banca. | ||
| Perché è importante Traccia il Monitoraggio Automazione Bonifici Bancari. Le generazioni di file fallite sono arresti di processo critici. Dove trovare Log dall'esecuzione del DME / Acquisisci Registrato quando l'esecuzione del pagamento (F110/RPCIPE) crea l'output Tipo di evento explicit | |||
| Pagamento Eseguito | La finalizzazione del processo di pagamento, spesso confermata dalla banca o dal completamento dell'esecuzione del pagamento F110. | ||
| Perché è importante Il timestamp di fine principale per il tasso di Dove trovare Tabelle delle esecuzioni di pagamento (REGUH) Data e ora dell'esecuzione, o dedotte dalla Data Valuta. Acquisisci Registrato quando lo Tipo di evento explicit | |||
| Presentazione dichiarazione fiscale completata | La generazione di file di Tax Reporter (es. PU19 negli Stati Uniti) o il trasferimento a un fornitore di dichiarazioni fiscali di terze parti. | ||
| Perché è importante Garantisce la Dove trovare Log di Tax Reporter Log Manager o B2A (Business to Administration) Manager che indicano la generazione riuscita del file. Acquisisci Registrato quando l'esecuzione di Tax Reporter si completa con successo Tipo di evento explicit | |||
| Processo libro paga inizializzato | La creazione di un'istanza di processo del libro paga all'interno del Payroll Control Center (PCC). Questo segna l'inizio ufficiale del ciclo del libro paga per una specifica area libro paga. | ||
| Perché è importante Stabilisce la base per la durata complessiva del ciclo di libro paga end-to-end. Definisce l'ambito dei dipendenti da elaborare. Dove trovare Tabelle del Payroll Control Center (es. PYC_D_PY_PROC_INST), che tracciano la creazione di un nuovo ID processo. Acquisisci Registrato quando viene creata l'istanza di processo PCC Tipo di evento explicit | |||
| Record libro paga approvato | L'approvazione formale dei risultati del libro paga per un dipendente o un gruppo di pagamento. Questo avviene nel passaggio 'Monitoraggio' o 'Approvazione' del PCC. | ||
| Perché è importante Segna la fine della fase di calcolo/validazione e il rilascio per il pagamento. Critico per l'analisi del throughput degli specialisti. Dove trovare Log delle istanze di passaggio del Payroll Control Center (PYC_D_STEP_INST) per il passaggio di Approvazione o Conferma. Acquisisci Registrato quando lo Tipo di evento explicit | |||
| Retribuzione Lorda Calcolata | L'esecuzione riuscita del calcolo dello schema del libro paga lordo. Nell'elaborazione standard, questo avviene quando il driver del libro paga scrive nel cluster PCL2. | ||
| Perché è importante Una pietra miliare importante che indica che i Dove trovare Cluster PCL2 (Risultati Payroll), specificamente il Acquisisci Registrato quando un nuovo numero di sequenza viene scritto nel Tipo di evento explicit | |||
| Scheda attività approvata | L'approvazione formale dei `dati` orari da parte di un manager o amministratore. Questo cambiamento di stato convalida i `dati` per il trasferimento al motore del libro paga. | ||
| Perché è importante Calcola il KPI Tempo di Approvazione Time Sheet. I Dove trovare Tabelle Employee Central Acquisisci Registrato quando lo Tipo di evento explicit | |||
| Scheda attività inviata | L'evento in cui un dipendente o un manager invia i `dati` orari per il periodo di pagamento. Questo viene acquisito dai log di richiesta del `workflow` nel modulo Employee Central collegato a ECP. | ||
| Perché è importante Segna l'inizio della fase di accumulo dei dati. Ritardi qui si propagano a valle, causando una compressione della finestra di elaborazione del libro paga. Dove trovare Tabelle Employee Central Acquisisci Registrato quando lo Tipo di evento explicit | |||
| Simulazione libro paga eseguita | Un'esecuzione di prova del `driver` di payroll per identificare errori senza salvare i risultati nel `database`. Questo è un `step` chiave nella fase di validazione PCC. | ||
| Perché è importante Essenziale per calcolare il tasso di calcolo al primo passaggio. Simulazioni ripetute indicano problemi di qualità dei Dove trovare Log delle istanze di passaggio del Payroll Control Center (PYC_D_STEP_INST) dove il tipo di passaggio corrisponde a Simulazione. Acquisisci Registrato quando lo Tipo di evento explicit | |||
| Busta paga pubblicata | L'azione di rendere disponibile il prospetto di retribuzione al dipendente tramite Self-Service (ESS). | ||
| Perché è importante Misura la performance dello SLA di consegna delle buste paga. Ritardi qui generano ticket all'helpdesk. Dove trovare Deducibile dalla 'Data di Stampa' o dalla configurazione della data di disponibilità nei Acquisisci Calcolare in base alla Data di Pagamento + Tipo di evento inferred | |||
| Correzione Dati Eseguita | Modifiche apportate ai `dati master` o ai `dati` di tempo in risposta a un'eccezione di `audit`. Questo rappresenta il rilavorazione richiesto per risolvere un avviso di payroll. | ||
| Perché è importante Traccia i tassi di correzione manuale e rilavorazione. Questa è l'attività principale che contribuisce all'inefficienza del processo. Dove trovare Deducibile unendo i Acquisisci Identificare gli aggiornamenti dei Tipo di evento inferred | |||
| Dati Incentivi Importati | L'ingestione di `dati` di pagamento non standard, come bonus o commissioni, nel sistema del libro paga. Di solito comporta il caricamento di `dati` negli Infotipi 0015 o 2010. | ||
| Perché è importante Le importazioni tardive impediscono calcoli accurati della retribuzione lorda. L'analisi di questo aspetto aiuta a ottimizzare il tempo di Dove trovare Log di Audit (PCL4 o equivalente) che mostra la creazione di Acquisisci Confrontare i Tipo di evento inferred | |||
| Deduzioni Benefici Applicate | Il passaggio specifico all'interno dello schema di calcolo dove viene elaborata la logica dei benefici. Sebbene faccia parte dell'esecuzione principale, isolarlo aiuta a individuare gli errori di configurazione. | ||
| Perché è importante Supporta l'analisi dell'accuratezza del calcolo dei benefici e delle imposte. Utile per il debug di complesse discrepanze nella logica di deduzione. Dove trovare Deducibile dall'esistenza della suddivisione V0 nei risultati di payroll o da voci di Acquisisci Coincide con la Retribuzione Lorda Calcolata ma concettualmente distinto per l'analisi Tipo di evento inferred | |||
| Eccezione di Audit Segnalata | La generazione di un avviso di convalida tramite i controlli delle policy del Payroll Control Center. Questi avvisi identificano incoerenze nei `dati` o rischi di `conformità`. | ||
| Perché è importante Supporta direttamente i Dove trovare Tabelle degli avvisi del Payroll Control Center (PYC_D_ALERT), che collegano codici di errore specifici al record del dipendente. Acquisisci Registrato quando viene creata una nuova voce nella tabella Avvisi PCC Tipo di evento explicit | |||
Guide all'Estrazione
Fasi
- Identificare l'area di payroll e i parametri di periodo di destinazione per l'estrazione. Si estrarranno
datiprincipalmente dalle tabelle del Payroll Control Center (PCC) (PYC_*) e dalladirectorydelclusterpayroll (HRPY_RGDIR). - Avviare il
clientSQL o SAP HANAStudioconnesso allo schema dibackendSAP SuccessFactors Employee Central Payroll (ECP). - Eseguire lo
scriptdi estrazionedatifornito nella sezioneQuery. Questoscriptaggregadatidalle tabelledati master, dai risultati di payroll e dailogdiauditPCC. - Mappare le
attività'Time Sheet Inviata' e 'Time Sheet Approvata'. Poiché ECP spesso riceve questidatida Employee Central, utilizzare itimestampdi creazione e ultima modifica nella tabella PA2001 o le tabelle di interfaccia temporale specializzate come PTREQ_HEADER, se disponibili. - Estrarre 'Dati Incentivi Importati' interrogando gli Infotipi 0015 (Pagamenti Aggiuntivi) e 2010 (Informazioni Remunerazione Dipendenti) per i
recordcreati all'interno del periodo di pagamento di destinazione. - Recuperare i
passaggidel processo PCC dalle tabelle PYC_D_PYP (Istanze di Processo) e PYC_D_BINST (StepIstanze) per catturare 'Processo Payroll Inizializzato', 'Simulazione Payroll Eseguita', 'Record Payroll Approvato' e 'Busta Paga Pubblicata'. - Interrogare la tabella PYC_D_ALERT per identificare gli
eventi'Eccezione di Audit Segnalata'. Questirecordcollegano dipendenti specifici a errori di validazione riscontrati durante ipassaggidi controllo PCC. - Generare
eventi'Correzione Dati Eseguita' unendo la tabella SAP Change Document Header (CDHDR) con gli Infotipi rilevanti per la payroll (es. 0008, 0015, 2001) durante la finestra di payroll attiva. - Utilizzare la tabella HRPY_RGDIR per individuare il momento esatto di 'Retribuzione Lorda Calcolata'. Creare un
eventoderivato per 'Deduzioni Benefici Applicate' utilizzando lo stessotimestamp, poiché questi avvengono simultaneamente durante l'esecuzione dello schema. - Collegare i
datifinanziari dalle tabelle REGUH (Dati di Liquidazione) e REGUT (Amministrazione DME) per catturare 'File Bonifico Bancario Generato' e 'Pagamento Eseguito'. - Trasformare la colonna 'PayrollRecord' per seguire rigorosamente il formato [IDDipendente]-[Periodo]-[Anno] per garantire l'unicità dell'ID
case. - Esportare il
datasetfinale comefileCSV, assicurandosi che le intestazioni corrispondano agliattributidefiniti nel contratto, euploadsu ProcessMind.
Configurazione
- Periodo di Tempo: Configurare l'estrazione per coprire una finestra scorrevole degli ultimi 6-12 mesi. I processi di payroll sono ciclici e questo intervallo cattura una variazione sufficiente nelle esecuzioni regolari e fuori ciclo.
- Area di Payroll (ABKRS): Filtrare per Aree di Payroll specifiche (es. Mensile USA, Settimanale DE) per assicurare che l'analisi confronti cicli di processo simili.
- Lingua: Assicurarsi che le descrizioni per Attività e Fasi di Processo siano estratte nella lingua principale del sistema (es. SPRAS = 'E').
- ID Processo PCC: Identificare gli ID di Definizione Processo (PYP_ID) specifici utilizzati nella configurazione PCC per 'Monitoraggio', 'Produzione' e 'Fuori Ciclo' per filtrare le fasi pertinenti.
- Valuta: Normalizzare gli importi finanziari (GrossPayAmount) a una singola valuta se si estraggono dati per operazioni di payroll globali.
- Autorizzazione: L'utente del
databaserichiede l'accesso in lettura alle tabelle delle Risorse Umane (PA/PY) e specificamente alla Directory Cluster (HRPY_RGDIR) e alle tabelle PCC (PYC_*).
a Query di Esempio 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]' Fasi
- Accesso all'Editor ABAP: Accedere al sistema SAP SuccessFactors Employee Central Payroll (ECP) tramite SAP GUI. Navigare al codice transazione SE38 (Editor ABAP).
- Creare Programma: Inserire un nome per il nuovo programma, come
Z_PROCESSMINING_PAYROLL_EXT, e cliccare Crea. Selezionare Programma eseguibile come tipo e Salvare come Oggetto Locale (Package $TMP) per scopi di test. - Implementare il Codice: Copiare il codice ABAP completo fornito nella sezione Query sottostante e incollarlo nell'editor, sostituendo qualsiasi codice predefinito esistente.
- Verificare e Attivare: Cliccare sul pulsante Verifica (Ctrl+F2) per validare la sintassi. Una volta che lo stato è privo di errori, cliccare Attiva (Ctrl+F3).
- Eseguire Estrazione: Premere Elaborazione diretta (F8) per eseguire il
report. - Configurare Selezione: Nella schermata di selezione, inserire l'
Area di Payroll(es. US, 99), unIntervallo di Datevalido (es. gli ultimi 3 mesi) e opzionalmente filtrare perNumeri di Personale(PERNR) specifici per il test. - Eseguire Estrazione: Eseguire il
report. Il sistema elaborerà le tabelle HRPY_RGDIR, CATSDB, PA0015 e REGUH per costruire l'event log. - Rivedere l'Output: Il
reportutilizzacl_demo_outputper visualizzare i risultati in una griglia direttamente sullo schermo per una validazione immediata. - Esportare Dati: Cliccare con il tasto destro sulla griglia dei risultati, selezionare Foglio di calcolo e salvare il
filein formato CSV o Excel. - Formattare per ProcessMind: Aprire il
fileesportato. Assicurarsi che la colonnaEventTimestampsia formattata comeYYYY-MM-DD HH:MM:SS. Verificare che la colonnaPayrollRecordidentifichi in modo univoco ilcase(solitamente PERNR-SEQNR). - Caricare: Importare il
fileCSV pulito in ProcessMind, mappando le colonne su Case ID, Activity,TimestampeAttributidi conseguenza.
Configurazione
- Intervallo di Date: Si raccomanda di estrarre i dati in blocchi di 3-6 mesi per evitare timeout di memoria nell'ambiente runtime ABAP.
- Area di Payroll: Questo è un filtro critico (Tabella T549A). Estrarre sempre un'area di payroll alla volta (es. Mensile vs Bisettimanale) per garantire la coerenza del processo.
- Tabella di Configurazione: Lo script legge
HRPY_RGDIR(Directory Payroll) come driver primario. Assicurarsi che l'utente disponga dell'autorizzazioneS_TABU_DISper questa tabella. - Sorgente Dati di Tempo: Lo script presume che i dati delle Time Sheet risiedano in
CATSDB. Se si utilizza un sistema di rilevazione presenze di terze parti che si interfaccia direttamente conIT2001oIT2010senza CATS, le attività delle Time Sheet potrebbero risultare vuote e richiedere un adattamento dello script. - Dati di Pagamento: Lo script collega le esecuzioni di payroll alle esecuzioni di pagamento tramite
REGUH(Dati di Liquidazione). Assicurarsi che l'esecuzione di pagamentoF110sia stata eseguita per il periodo selezionato per visualizzare gli eventi di pagamento. - Prestazioni: Per sistemi ad alto volume (oltre 100.000 dipendenti), sostituire la logica
SELECT *con unfetchbasato su cursore o eseguire in modalitàbackground(F9).
a Query di Esempio 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 ).