Il template dei dati per l’elaborazione delle paghe
Il template dei dati per l’elaborazione delle paghe
- Campi dati strategici per l’analisi delle paghe
- Tappe fondamentali per l’individuazione del processo
- Indicazioni per l’estrazione specifiche per il sistema
Attributi dell’elaborazione delle paghe
| Nome | Descrizione | ||
|---|---|---|---|
| Attività Activity | L’attività o l’evento specifico che si verifica nel processo di elaborazione delle retribuzioni. | ||
| Descrizione Questo attributo registra il nome della fase del processo in corso, ad esempio 'Foglio presenze inviato', 'Simulazione delle retribuzioni eseguita' o 'Pagamento eseguito'. Costituisce la base della mappa del processo e consente agli analisti di visualizzare la sequenza delle operazioni svolte durante il ciclo retributivo. I dati per questo attributo provengono da diversi registri, tra cui i registri Workflow (SWWLOGHIST), i registri delle modifiche agli infotype (CDHDR/CDPOS) e specifiche tabelle di stato delle retribuzioni. Durante l’estrazione si applicano convenzioni di denominazione coerenti, così da convertire i codici tecnici degli eventi in nomi di attività comprensibili per l’azienda. Perché è importante Definisce i nodi del grafo del processo e permette di visualizzare i flussi, i cicli e le varianti del processo. Dove reperirli Ricavato dalle modifiche di stato in SWWLOGHIST (Workflow), CDHDR (documenti delle modifiche) o PA03 (record di controllo). Esempi Foglio presenze inviatoRetribuzione lorda calcolataEccezione di audit segnalataPagamento eseguito | |||
| Data e ora dell’evento EventTimestamp | La data e l’ora esatte in cui si è verificata l’attività. | ||
| Descrizione Questo attributo registra il momento esatto in cui si è verificato un evento, includendo data e ora. È fondamentale per calcolare tutte le metriche temporali, tra cui i tempi di ciclo, i tempi di attraversamento e i tassi di completamento tra le diverse fasi del processo. In SAP ECP, il dato proviene da campi timestamp come Perché è importante Consente di calcolare la durata tra gli eventi, un dato essenziale per individuare i colli di bottiglia e le violazioni degli SLA. Dove reperirli CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT o timestamp specifici dei registri di audit. Esempi 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| Record retributivo PayrollRecord | Identificativo univoco che combina dipendente e periodo di paga. | ||
| Descrizione Il record retributivo funge da identificativo centrale del caso per l’analisi di Process Mining. Rappresenta una singola elaborazione delle retribuzioni per un dipendente specifico in un determinato periodo di paga e collega tutte le attività, dall’invio iniziale del foglio presenze alla presentazione finale dei dati fiscali. In SAP SuccessFactors Employee Central Payroll, in genere si ottiene concatenando il numero del personale (PERNR) con l’anno retributivo (PABRJ) e il periodo retributivo (PABRP), eventualmente aggiungendo un numero di sequenza (SEQNR) per distinguere le diverse esecuzioni. Questo livello di dettaglio consente di analizzare ogni ciclo di pagamento come un’istanza distinta e di misurare con precisione il tempo di ciclo e tracciare gli errori. Perché è importante Funge da ID del caso e raggruppa tutti gli eventi pertinenti per ricostruire il percorso completo del processo per ogni stipendio erogato. Dove reperirli Ricavato dal cluster SAP B2 (risultati della valutazione delle presenze) o dalle tabelle PC_PAYRESULT (PERNR, PABRJ, PABRP, SEQNR). Esempi 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| Sistema di origine SourceSystem | Il sistema da cui provengono i dati dell’evento. | ||
| Descrizione Questo attributo identifica la specifica istanza di SAP SuccessFactors Employee Central Payroll o il sottosistema collegato da cui sono stati estratti i dati. In architetture complesse con più sistemi retributivi o configurazioni ibride, questo campo garantisce la tracciabilità della provenienza dei dati. È particolarmente utile per analizzare dati provenienti da installazioni regionali diverse o per confrontare le prestazioni dei sistemi precedenti con quelle dei sistemi migrati. In genere è una stringa statica configurata durante la preparazione dell’estrazione dei dati. Perché è importante Consente di segmentare i dati in ambienti con più sistemi e aiuta a risolvere i problemi di qualità dei dati individuandone l’origine. Dove reperirli ID di sistema (SID) dell’installazione SAP o della configurazione di estrazione. Esempi SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| Ultimo aggiornamento dei dati LastDataUpdate | Il timestamp dell’estrazione dei dati più recente. | ||
| Descrizione Questo attributo indica quando il record dei dati è stato aggiornato l’ultima volta nel modello di dati di Process Mining. Aiuta gli analisti a valutare quanto siano aggiornati i dati e garantisce che le analisi si basino su informazioni attuali. Pur non essendo utilizzato direttamente per analizzare i flussi di processo, è fondamentale per la governance e la convalida dei dati, poiché permette di verificare che la Dashboard rifletta lo stato più recente del sistema retributivo. Perché è importante Permette agli utenti di conoscere la latenza dei dati e aiuta a verificare che le metriche riportate siano aggiornate. Dove reperirli Generato durante l’esecuzione dallo script ETL o di estrazione. Esempi 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| Area retributiva PayrollArea | Definisce il gruppo retributivo a cui appartiene un dipendente. | ||
| Descrizione L’area retributiva raggruppa i dipendenti elaborati nella stessa esecuzione delle retribuzioni, spesso in base alla frequenza di pagamento (ad esempio, mensile o bisettimanale) o alla struttura organizzativa. Questo attributo è essenziale per segmentare l’analisi del processo e confrontare le prestazioni tra diverse popolazioni di dipendenti. In SAP corrisponde al campo tecnico Perché è importante Consente di confrontare le prestazioni del ciclo retributivo tra gruppi diversi, ad esempio dipendenti pagati a ore e dipendenti con stipendio fisso. Dove reperirli Tabella PA0001 (assegnazione organizzativa), campo ABKRS. Esempi Stati Uniti, pagamento bisettimanaleGermania, pagamento mensileRetribuzioni dei dirigenti | |||
| Centro di costo CostCenter | Il centro di costo associato al dipendente. | ||
| Descrizione Il centro di costo rappresenta il reparto o l’unità finanziaria a cui vengono imputati i costi del dipendente. Nella Dashboard 'Colli di bottiglia nell’approvazione dei fogli presenze' funge da indicatore del reparto e aiuta a individuare le unità organizzative che ritardano il ciclo retributivo. Si trova nell’infotype Assegnazione organizzativa (PA0001), nel campo Perché è importante Consente di scendere di livello nell’analisi organizzativa per individuare i reparti specifici che causano ritardi o rilavorazioni. Dove reperirli Tabella PA0001, campo KOSTL. Esempi CC-1000 FinanzaCC-2000 ITCC-3000 Vendite | |||
| È automatizzato IsAutomated | Indicatore che specifica se l’attività è stata eseguita da un utente di sistema. | ||
| Descrizione Questo attributo booleano indica se una specifica fase del processo è stata eseguita da un job in background o da un utente di sistema, oppure da una persona. È fondamentale per la Dashboard 'Monitoraggio dell’automazione dei bonifici bancari', che consente di calcolare la percentuale di elaborazioni senza intervento manuale. In genere si ricava verificando se l’ID utente corrisponde a un elenco di account di sistema noti, ad esempio 'BATCH' o 'SAP_WORKFLOW'. Perché è importante Aiuta a misurare il livello di automazione e a individuare le opportunità per ridurre il lavoro manuale. Dove reperirli Ricavato dall’ID utente, ad esempio se User IN ['BATCH', 'SYSTEM'] allora true. Esempi truefalse | |||
| Frequenza del ciclo retributivo PayCycleFrequency | Indica se l’esecuzione è regolare o fuori ciclo. | ||
| Descrizione Questo attributo distingue le normali esecuzioni retributive pianificate dalle esecuzioni 'fuori ciclo' avviate ad hoc per correzioni o pagamenti immediati. Un numero elevato di esecuzioni fuori ciclo è un indicatore importante di inefficienza del processo e viene monitorato dalla Dashboard 'Analisi dei volumi dei pagamenti fuori ciclo'. Il dato è ricavato dai campi Motivo fuori ciclo ( Perché è importante È fondamentale per misurare il KPI 'Rapporto dei pagamenti fuori ciclo' e ridurre le elaborazioni non standard. Dove reperirli Tabella RGDIR (directory del cluster), campo OCRSN o PAYTY. Esempi RegolareCorrezione APagamento del bonusCessazione | |||
| Importo lordo GrossPayAmount | Importo lordo totale calcolato per il record. | ||
| Descrizione Questo attributo rappresenta il valore monetario totale della retribuzione lorda prima delle trattenute. È una metrica fondamentale per la convalida finanziaria e permette di correlare i pagamenti di importo elevato a controlli di audit più rigorosi o a tempi di approvazione più lunghi. Il dato viene estratto dalla tabella dei risultati retributivi (RT), in genere da specifici tipi di salario che rappresentano il lordo totale, ad esempio /101. Supporta l’analisi 'Precisione del calcolo di benefit e imposte', fornendo la base per il calcolo. Perché è importante Consente di analizzare il comportamento del processo in base all’importo del pagamento, ad esempio per verificare se i pagamenti più elevati richiedono più tempo per essere approvati. Dove reperirli Tabella dei risultati retributivi (RT), tipo di salario /101 o simile. Esempi 5000.002500.5010500.00 | |||
| Periodo di paga PayPeriod | Il numero del periodo specifico all’interno dell’anno fiscale. | ||
| Descrizione Questo attributo indica il numero progressivo del periodo retributivo, ad esempio 01 per gennaio o per il primo ciclo bisettimanale. Consente agli analisti di monitorare l’andamento delle prestazioni nel tempo e individuare la stagionalità dei carichi di elaborazione. Il dato proviene da Perché è importante Consente di analizzare l’andamento e individuare i colli di bottiglia stagionali in determinati periodi dell’anno. Dove reperirli Tabella PA0001 o cluster dei risultati retributivi (RGDIR), campo PABRP. Esempi 01122652 | |||
| Specialista delle retribuzioni PayrollSpecialist | L’ID utente o il nome della persona che elabora il record. | ||
| Descrizione Questo attributo registra l’identità dell’amministratore o dello specialista delle retribuzioni responsabile delle fasi manuali o delle approvazioni. È l’attributo principale per la Dashboard 'Produttività e carico di lavoro degli specialisti', che consente di analizzare la distribuzione del carico di lavoro e la produttività individuale. Il dato proviene dal campo Perché è importante È essenziale per bilanciare il carico di lavoro e individuare i colli di bottiglia legati alle risorse umane nel processo. Dove reperirli Campi di sistema (SY-UNAME) registrati in CDHDR o ID dell’autore del Workflow. Esempi JSMITHKMILLERSYSTEM | |||
| Tipo di dipendente EmployeeType | Classificazione del dipendente, ad esempio a tempo indeterminato o collaboratore esterno. | ||
| Descrizione Questo attributo classifica i dipendenti in base al rapporto di lavoro, ad esempio dipendente attivo, pensionato o collaboratore esterno. La complessità dell’elaborazione delle retribuzioni varia spesso in base alla categoria: alcuni gruppi richiedono più interventi manuali o specifici controlli di conformità. I dati provengono tecnicamente dai campi Gruppo dipendenti ( Perché è importante Aiuta a individuare se le varianti o i ritardi del processo riguardano categorie specifiche di dipendenti. Dove reperirli Tabella PA0001, campi PERSG (gruppo) e PERSK (sottogruppo). Esempi Dipendente attivoTirocinantePensionatoCollaboratore esterno pagato a ore | |||
| Entità giuridica LegalEntity | Il codice società o l’entità giuridica del dipendente. | ||
| Descrizione Questo attributo identifica l’entità giuridica (codice società) associata al record retributivo. Consente di rendicontare i dati finanziari e analizzare le prestazioni delle retribuzioni tra diverse società controllate o entità aziendali. Il dato proviene dal campo Perché è importante Supporta il confronto tra società e l’analisi dell’allocazione finanziaria. Dove reperirli Tabella PA0001, campo BUKRS. Esempi US01DE011000 | |||
| Giurisdizione fiscale TaxJurisdiction | La regione o l’autorità fiscale competente per il dipendente. | ||
| Descrizione Questo attributo identifica l’autorità o la regione fiscale specifica, ad esempio Stato, provincia o cantone, competente per il record retributivo. È essenziale per la Dashboard 'Eccezioni di audit e rischio di conformità', che consente di individuare le aree geografiche in cui si concentrano i problemi di conformità. In SAP US Payroll corrisponde al campo Perché è importante Consente di segmentare i rischi di conformità e le eccezioni di audit in base alla regione normativa. Dove reperirli Tabella PA0001 o PA0207/PA0208, campo TXJCD. Esempi CANYTXNRW | |||
| Indicatore di eccezione di audit AuditExceptionFlag | Indicatore che specifica se si è verificata un’eccezione di audit. | ||
| Descrizione Questo attributo segnala i casi in cui le regole di convalida hanno generato un’eccezione o un avviso durante la simulazione o il calcolo delle retribuzioni. È il dato principale per il KPI 'Frequenza delle eccezioni di audit'. I dati provengono spesso dal registro delle retribuzioni o da specifiche tabelle dei messaggi di errore (FEHLER). Il valore true indica che il flusso del processo ha seguito un percorso di gestione delle eccezioni. Perché è importante Evidenzia i problemi di qualità dei dati e la necessità di un intervento manuale. Dove reperirli Ricavato dalla presenza di messaggi di errore nel registro delle retribuzioni o da specifici codici di stato. Esempi truefalse | |||
| Numero di rilavorazioni ReworkCount | Numero di volte in cui è stata apportata una correzione. | ||
| Descrizione Questa metrica calcolata conta quante volte l’attività 'Correzione dei dati eseguita' compare nella cronologia del caso. Misura direttamente l’inefficienza del processo e supporta la Dashboard 'Tassi di correzione manuale e rilavorazione'. Un numero elevato di rilavorazioni indica problemi persistenti di qualità dei dati o casi complessi che non superano la convalida al primo tentativo. Perché è importante Quantifica il lavoro dedicato alla correzione degli errori e aiuta a motivare le iniziative per migliorare la qualità dei dati. Dove reperirli Calcolato contando le attività 'Correzione dei dati eseguita' per ogni CaseId. Esempi 013 | |||
| Scadenza di elaborazione SLA SLAProcessingDeadline | Il timestamp entro cui completare l’esecuzione delle retribuzioni. | ||
| Descrizione Questo attributo rappresenta la scadenza interna o esterna per finalizzare le retribuzioni e garantire pagamenti puntuali. Viene utilizzato per calcolare il KPI 'Tasso di conformità agli SLA', confrontandolo con il timestamp effettivo di 'Pagamento eseguito'. Non sempre è un campo standard nelle tabelle SAP: spesso viene mantenuto in una tabella di controllo personalizzata o definito in base al calendario retributivo, ad esempio due giorni prima della data di pagamento. In questo modello di dati, viene spesso ricavato sottraendo un intervallo prestabilito dalla data di pagamento. Perché è importante Fornisce il valore di riferimento per valutare la puntualità e il rispetto degli SLA. Dove reperirli Ricavato dalla data di pagamento (T549S) sottraendo i giorni di elaborazione configurati. Esempi 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
Attività di elaborazione delle paghe
| Attività | Descrizione | ||
|---|---|---|---|
| Dichiarazione fiscale completata | Generazione dei file per la rendicontazione fiscale (ad es. PU19 negli Stati Uniti) o trasferimento a un fornitore esterno di servizi per la presentazione delle dichiarazioni fiscali. | ||
| Perché è importante Assicura la conformità normativa e monitora il passaggio finale della sequenza di conformità. Dove reperirli Log di Tax Reporter Log Manager o B2A (Business to Administration) Manager che indicano la corretta generazione del file. Acquisizione Registrato al completamento corretto dell’elaborazione di Tax Reporter Tipo di evento explicit | |||
| File per il bonifico bancario generato | Creazione del file Preliminary Data Medium Exchange (pre-DME) o del file DME finale. Il file contiene le istruzioni di pagamento per la banca. | ||
| Perché è importante Monitora l’automazione dei bonifici bancari. La generazione non riuscita di un file interrompe in modo critico il processo. Dove reperirli Log dell’esecuzione di DME / Payment Medium Workbench (PMW), spesso archiviati in TemSe o in tabelle specifiche delle elaborazioni di pagamento (ReguH/ReguP). Acquisizione Registrato quando l’elaborazione dei pagamenti (F110/RPCIPE) genera l’output Tipo di evento explicit | |||
| Foglio presenze approvato | Approvazione formale dei dati relativi alle ore lavorate da parte di un responsabile o di un amministratore. Questa variazione di stato convalida i dati per il trasferimento al motore di elaborazione delle retribuzioni. | ||
| Perché è importante Calcola il KPI del tempo di attraversamento per l’approvazione dei fogli presenze. I colli di bottiglia in questa fase indicano ritardi da parte dei responsabili o gerarchie di approvazione complesse. Dove reperirli Tabelle delle richieste del flusso di lavoro di Employee Central (WfRequest), filtrate per stato COMPLETED o APPROVED. Acquisizione Registrato quando lo stato della richiesta del flusso di lavoro passa a APPROVED Tipo di evento explicit | |||
| Foglio presenze inviato | Evento in cui un dipendente o un responsabile invia i dati relativi alle ore lavorate nel periodo retributivo. Viene registrato nei log delle richieste del flusso di lavoro del modulo Employee Central collegato a ECP. | ||
| Perché è importante Segna l’inizio della fase di raccolta dei dati. I ritardi in questo punto si ripercuotono sulle fasi successive e riducono la finestra disponibile per l’elaborazione delle retribuzioni. Dove reperirli Tabelle delle richieste del flusso di lavoro di Employee Central (WfRequest), filtrate per le categorie Time Sheet o Time Off. Acquisizione Registrato quando lo stato della richiesta del flusso di lavoro passa a SUBMITTED Tipo di evento explicit | |||
| Pagamento eseguito | Finalizzazione del processo di pagamento, spesso confermata dalla banca o dal completamento dell’elaborazione dei pagamenti F110. | ||
| Perché è importante Timestamp finale di riferimento per il tasso di conformità agli SLA. Determina se il dipendente è stato pagato puntualmente. Dove reperirli Data e ora di esecuzione nelle tabelle delle elaborazioni di pagamento (REGUH) oppure dato dedotto dalla data valuta. Acquisizione Registrato quando lo stato dell’elaborazione dei pagamenti è impostato su Posted/Complete Tipo di evento explicit | |||
| Processo retributivo inizializzato | Creazione di un’istanza del processo retributivo nel Payroll Control Center (PCC). Segna l’inizio ufficiale del ciclo retributivo per una specifica area retributiva. | ||
| Perché è importante Definisce la base di riferimento per la durata complessiva del ciclo retributivo end-to-end e stabilisce l’insieme dei dipendenti da elaborare. Dove reperirli Tabelle del Payroll Control Center (ad es. PYC_D_PY_PROC_INST), che registrano la creazione di un nuovo ID di processo. Acquisizione Registrato alla creazione di un’istanza del processo PCC Tipo di evento explicit | |||
| Registrazione delle retribuzioni approvata | Approvazione formale dei risultati retributivi di un dipendente o di un gruppo retributivo. Avviene nel passaggio 'Monitoring' o 'Sign Off' del PCC. | ||
| Perché è importante Segna la fine della fase di calcolo e convalida e l’autorizzazione al pagamento. È fondamentale per analizzare la capacità di elaborazione degli specialisti. Dove reperirli Log delle istanze dei passaggi del Payroll Control Center (PYC_D_STEP_INST) relativi al passaggio Approval o Confirmation. Acquisizione Registrato quando lo stato del passaggio di approvazione PCC passa a COMPLETED Tipo di evento explicit | |||
| Retribuzione lorda calcolata | Esecuzione corretta del calcolo dello schema retributivo lordo. Nell’elaborazione standard, si verifica quando il programma di calcolo delle retribuzioni scrive nel cluster PCL2. | ||
| Perché è importante È una tappa fondamentale, che indica che i dati relativi alle ore lavorate e alle tariffe sono stati combinati correttamente. I ritardi in questa fase incidono sull’efficienza dell’elaborazione dal lordo al netto. Dove reperirli Cluster PCL2 (risultati delle retribuzioni), in particolare il timestamp della tabella di directory (RGDIR) per il periodo di riferimento ('For-Period'). Acquisizione Registrato quando viene scritto un nuovo numero di sequenza nel cluster retributivo Tipo di evento explicit | |||
| Simulazione delle retribuzioni eseguita | Esecuzione di prova del programma di calcolo delle retribuzioni per individuare gli errori senza salvare i risultati nel database. È un passaggio fondamentale della fase di convalida del PCC. | ||
| Perché è importante È essenziale per calcolare il tasso di calcolo corretto al primo tentativo. Simulazioni ripetute indicano problemi nella qualità dei dati. Dove reperirli Log delle istanze dei passaggi del Payroll Control Center (PYC_D_STEP_INST) in cui il tipo di passaggio corrisponde a Simulation. Acquisizione Registrato quando lo stato del passaggio di simulazione PCC passa a COMPLETED Tipo di evento explicit | |||
| Cedolino pubblicato | Pubblicazione del prospetto retributivo per renderlo disponibile al dipendente tramite Self-Service (ESS). | ||
| Perché è importante Misura le prestazioni SLA per la consegna dei cedolini. I ritardi generano richieste all’helpdesk. Dove reperirli Dato dedotto dalla 'Print Date' o dalla data di disponibilità configurata nei log del servizio mashup dei cedolini. Acquisizione Calcolare in base alla data di pagamento + il ritardo previsto dalla configurazione di sistema Tipo di evento inferred | |||
| Correzione dei dati effettuata | Modifiche ai dati anagrafici o ai dati relativi alle ore lavorate effettuate in risposta a un’eccezione di audit. Rappresenta la rilavorazione necessaria per chiudere un avviso retributivo. | ||
| Perché è importante Monitora i tassi di correzione manuale e di rilavorazione. È l’attività che contribuisce maggiormente all’inefficienza del processo. Dove reperirli Dedotta collegando i timestamp degli avvisi PCC alle successive modifiche nel registro di audit (PCL4) per lo stesso dipendente, prima della chiusura dell’avviso. Acquisizione Individuare gli aggiornamenti dei dati anagrafici effettuati mentre un avviso PCC è attivo Tipo di evento inferred | |||
| Dati sugli incentivi importati | Caricamento nel sistema retributivo di dati relativi a voci non standard, come bonus o commissioni. In genere comporta il caricamento dei dati negli Infotype 0015 o 2010. | ||
| Perché è importante Le importazioni tardive impediscono di calcolare correttamente la retribuzione lorda. L’analisi aiuta a ottimizzare il tempo di attraversamento dell’integrazione dei dati sugli incentivi. Dove reperirli Registro di audit (PCL4 o equivalente) che mostra la creazione di registrazioni nell’Infotype 0015 (pagamenti aggiuntivi) o 2010 (informazioni sulla retribuzione dei dipendenti). Acquisizione Confrontare i timestamp di creazione degli Infotype con i log dei processi di importazione Tipo di evento inferred | |||
| Eccezione di audit segnalata | Generazione di un avviso di convalida da parte dei controlli delle policy del Payroll Control Center. Gli avvisi segnalano incoerenze nei dati o rischi per la conformità. | ||
| Perché è importante Alimenta direttamente le Dashboard sulla frequenza delle eccezioni di audit e sui rischi di conformità. Un volume elevato di segnalazioni indica possibili problemi nella qualità dei dati a monte. Dove reperirli Tabelle degli avvisi del Payroll Control Center (PYC_D_ALERT), che associano specifici codici di errore alla registrazione del dipendente. Acquisizione Registrato quando viene creata una nuova voce nella tabella degli avvisi PCC Tipo di evento explicit | |||
| Trattenute per i benefit applicate | Passaggio specifico dello schema di calcolo in cui viene elaborata la logica dei benefit. Pur facendo parte dell’elaborazione principale, analizzarlo separatamente aiuta a individuare gli errori di configurazione. | ||
| Perché è importante Supporta l’analisi dell’accuratezza del calcolo di benefit e imposte. È utile per individuare le cause delle discrepanze nelle logiche complesse di trattenuta. Dove reperirli Dedotta dalla presenza della suddivisione V0 nei risultati retributivi o da specifiche voci di log, se è attiva la registrazione dettagliata, rara negli ambienti di produzione. Acquisizione Coincide con il calcolo della retribuzione lorda, ma è concettualmente distinto ai fini dell’analisi Tipo di evento inferred | |||
Guide all’estrazione
Passaggi
- Individui l’area paghe e i parametri del periodo da includere nell’estrazione. I dati provengono principalmente dalle tabelle del Payroll Control Center (PCC) (PYC_*) e dalla directory dei cluster paghe (HRPY_RGDIR).
- Avvii il client SQL o SAP HANA Studio connesso allo schema backend di SAP SuccessFactors Employee Central Payroll (ECP).
- Esegua lo script di estrazione dei dati fornito nella sezione Query. Lo script aggrega i dati delle tabelle anagrafiche, dei risultati delle paghe e dei log di audit del PCC.
- Mappi le attività 'Foglio presenze inviato' e 'Foglio presenze approvato'. Poiché ECP riceve spesso questi dati da Employee Central, utilizzi i timestamp di creazione e ultima modifica nella tabella PA2001 o, se disponibili, nelle tabelle specializzate dell’interfaccia oraria, come PTREQ_HEADER.
- Estragga l’attività 'Dati sugli incentivi importati' interrogando gli Infotype 0015 (pagamenti aggiuntivi) e 2010 (informazioni sulla retribuzione dei dipendenti) per i record creati nel periodo di paga selezionato.
- Recuperi le fasi del processo PCC dalle tabelle PYC_D_PYP (istanze di processo) e PYC_D_BINST (istanze delle fasi) per rilevare gli eventi 'Processo paghe inizializzato', 'Simulazione paghe eseguita', 'Record paghe approvato' e 'Cedolino pubblicato'.
- Interroghi la tabella PYC_D_ALERT per individuare gli eventi 'Eccezione di audit segnalata'. Questi record associano specifici dipendenti agli errori di convalida rilevati durante le verifiche PCC.
- Generi gli eventi 'Correzione dei dati eseguita' unendo la tabella SAP delle intestazioni dei documenti di modifica (CDHDR) agli Infotype pertinenti alle paghe (ad esempio, 0008, 0015, 2001) durante il periodo di elaborazione attivo.
- Utilizzi la tabella HRPY_RGDIR per individuare il momento esatto in cui è stato calcolato il lordo. Crei un evento derivato per 'Trattenute per benefit applicate' utilizzando lo stesso timestamp, poiché queste operazioni avvengono simultaneamente durante l’esecuzione dello schema.
- Colleghi i dati finanziari delle tabelle REGUH (dati di liquidazione) e REGUT (amministrazione DME) per rilevare gli eventi 'File di bonifico bancario generato' e 'Pagamento eseguito'.
- Trasformi la colonna 'PayrollRecord' affinché rispetti rigorosamente il formato [EmployeeID]-[Period]-[Year] e garantisca l’univocità dell’ID caso.
- Esporti il set di dati finale in un file CSV, verificando che le intestazioni corrispondano agli attributi definiti nel contratto, quindi lo carichi in ProcessMind.
Configurazione
- Intervallo temporale: configuri l’estrazione su una finestra mobile che copra gli ultimi 6-12 mesi. I processi paghe sono ciclici e questo intervallo consente di rilevare variazioni sufficienti tra le esecuzioni ordinarie e quelle straordinarie.
- Area paghe (ABKRS): applichi un filtro per aree paghe specifiche (ad esempio, mensile negli Stati Uniti, settimanale in Germania) per confrontare cicli di processo omogenei.
- Lingua: verifichi che le descrizioni di attività e fasi del processo siano estratte nella lingua principale del sistema (ad esempio, SPRAS = 'E').
- ID processo PCC: individui gli ID delle definizioni di processo (PYP_ID) utilizzati nella configurazione PCC per 'Monitoraggio', 'Produzione' e 'Fuori ciclo', così da filtrare le fasi pertinenti.
- Valuta: normalizzi gli importi finanziari (GrossPayAmount) in un’unica valuta se estrae dati relativi alle operazioni paghe globali.
- Autorizzazioni: l’utente del database deve disporre dell’accesso in lettura alle tabelle delle risorse umane (PA/PY), in particolare alla directory dei cluster (HRPY_RGDIR) e alle tabelle PCC (PYC_*).
Query di esempio sql
/* Activity 1: Time Sheet Submitted */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Submitted' AS Activity,
T.BEGDA AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 2: Time Sheet Approved */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Approved' AS Activity,
T.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'False' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 3: Incentive Data Imported */
SELECT
CONCAT(I.PERNR, CONCAT('-', I.PABRJ, I.PABRP)) AS PayrollRecord,
'Incentive Data Imported' AS Activity,
I.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
I.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
I.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
I.BETRG AS GrossPayAmount,
I.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA0015 AS I
LEFT JOIN PA0001 AS O ON I.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE I.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 4: Payroll Process Initialized */
SELECT
CONCAT('N/A', CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payroll Process Initialized' AS Activity,
P.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
P.CREATED_BY AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_PYP AS P
WHERE P.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 5: Payroll Simulation Executed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Simulation Executed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Simulate%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 6: Audit Exception Flagged */
SELECT
CONCAT(A.RO_ID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Audit Exception Flagged' AS Activity,
A.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
'SYSTEM' AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_ALERT AS A
JOIN PYC_D_PYP AS P ON A.PYP_ID = P.ID
WHERE A.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 7: Data Correction Performed */
SELECT
CONCAT(C.OBJECTID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Data Correction Performed' AS Activity,
TO_TIMESTAMP(CONCAT(C.UDATE, C.UTIME)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
C.USERNAME AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM CDHDR AS C
JOIN HRPY_RGDIR AS P ON C.OBJECTID = P.PERNR
WHERE C.TCODE IN ('PA30', 'PA40') AND C.UDATE BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 8: Gross Pay Calculated */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Gross Pay Calculated' AS Activity,
TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 9: Benefit Deductions Applied */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Benefit Deductions Applied' AS Activity,
ADD_SECONDS(TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)), 1) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 10: Payroll Record Approved */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Record Approved' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Check%' AND S.STATUS = 'OK' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 11: Bank Transfer File Generated */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Bank Transfer File Generated' AS Activity,
TO_TIMESTAMP(CONCAT(T.TSDAT, T.TSTIM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.USRID AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUT AS T
JOIN REGUH AS H ON T.LAUFD = H.LAUFD AND T.LAUFI = H.LAUFI
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.TSDAT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 12: Payment Executed */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payment Executed' AS Activity,
TO_TIMESTAMP(CONCAT(H.LAUFD, '120000')) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
H.RBETR AS GrossPayAmount,
H.ZNME1 AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUH AS H
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE H.LAUFD BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 13: Pay Slip Published */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Pay Slip Published' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Remuneration%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 14: Tax Filing Completed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Tax Filing Completed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Tax%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]' Passaggi
- Acceda all’editor ABAP: acceda al sistema SAP SuccessFactors Employee Central Payroll (ECP) tramite SAP GUI. Apra il codice transazione SE38 (editor ABAP).
- Crei il programma: inserisca un nome per il nuovo programma, ad esempio
Z_PROCESSMINING_PAYROLL_EXT, e selezioni Crea. Scelga Programma eseguibile come tipo e Salva come oggetto locale (pacchetto $TMP) per i test. - Inserisca il codice: copi il codice ABAP completo fornito nella sezione Query qui sotto e lo incolli nell’editor, sostituendo il codice predefinito eventualmente presente.
- Verifichi e attivi: selezioni il pulsante Verifica (Ctrl+F2) per convalidare la sintassi. Quando non risultano errori, selezioni Attiva (Ctrl+F3).
- Esegua l’estrazione: prema Elaborazione diretta (F8) per avviare il report.
- Configuri la selezione: nella schermata di selezione, inserisca l’
Area paghe(ad esempio, US, 99), unIntervallo di datevalido (ad esempio, gli ultimi 3 mesi) e, facoltativamente, filtri per specificiNumeri del personale(PERNR) a scopo di test. - Avvii l’estrazione: esegua il report. Il sistema elaborerà le tabelle HRPY_RGDIR, CATSDB, PA0015 e REGUH per creare l’event log.
- Riveda i risultati: il report utilizza
cl_demo_outputper visualizzare i risultati in una griglia direttamente sullo schermo, così da consentirne la verifica immediata. - Esporti i dati: faccia clic con il tasto destro sulla griglia dei risultati, selezioni Foglio di calcolo e salvi il file in formato CSV o Excel.
- Prepari i dati per ProcessMind: apra il file esportato. Verifichi che la colonna
EventTimestampsia nel formatoYYYY-MM-DD HH:MM:SSe che la colonnaPayrollRecordidentifichi univocamente il caso (in genere PERNR-SEQNR). - Carichi i dati: importi il file CSV ripulito in ProcessMind, associando le colonne a ID del caso, attività, timestamp e attributi.
Configurazione
- Intervallo di date: si consiglia di estrarre i dati in blocchi di 3-6 mesi per evitare timeout dovuti alla memoria nell’ambiente di esecuzione ABAP.
- Area paghe: è un filtro fondamentale (tabella T549A). Estragga sempre i dati di un’area paghe alla volta (ad esempio, mensile o bisettimanale) per garantire la coerenza del processo.
- Tabella di configurazione: lo script utilizza
HRPY_RGDIR(directory paghe) come tabella principale. Verifichi che l’utente disponga dell’autorizzazioneS_TABU_DISper questa tabella. - Origine dei dati orari: lo script presuppone che i dati dei fogli presenze si trovino in
CATSDB. Se utilizza un sistema di rilevazione presenze di terze parti che comunica direttamente conIT2001oIT2010senza passare da CATS, le attività relative ai fogli presenze potrebbero non restituire risultati e richiedere un adattamento dello script. - Dati di pagamento: lo script collega le esecuzioni delle paghe a quelle dei pagamenti tramite
REGUH(dati di liquidazione). Verifichi che l’esecuzione di pagamentoF110sia stata avviata per il periodo selezionato, altrimenti gli eventi di pagamento non saranno disponibili. - Prestazioni: per i sistemi con volumi elevati (oltre 100.000 dipendenti), sostituisca la logica
SELECT *con un recupero basato su cursore oppure esegua lo script in background (F9).
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 ). È pronto a iniziare?
Applichi questo template all’estrazione dei dati per avviare il percorso verso un processo di elaborazione delle paghe più efficiente. Il nostro approccio strutturato La aiuta a passare rapidamente dai dati grezzi a informazioni utili per agire.
Ottimizzi subito le prestazioni dell’elaborazione delle paghe
Si unisca alle aziende che oggi riducono del 30% i tempi dei cicli di elaborazione delle paghe.
Non è richiesta la carta di credito. La configurazione richiede pochi minuti.