Il Suo Template dati per l'elaborazione delle paghe
Il Suo Template dati per l'elaborazione delle paghe
- Campi dati strategici per l'analisi delle paghe
- Tappe fondamentali per la scoperta 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 paghe. | ||
| Descrizione Questo attributo acquisisce il nome della fase di processo in esecuzione, ad esempio 'Foglio presenze inviato', 'Simulazione paghe eseguita' o 'Pagamento eseguito'. Costituisce la base della process map e consente agli analisti di visualizzare la sequenza delle operazioni svolte durante il ciclo paghe. I dati per questo attributo vengono raccolti da diversi log, tra cui i log di Workflow (SWWLOGHIST), i log delle modifiche agli Infotype (CDHDR/CDPOS) e specifiche tabelle degli stati delle paghe. Durante l'estrazione vengono applicate convenzioni di denominazione coerenti, così da trasformare i codici tecnici degli eventi in nomi di attività comprensibili per il business. Perché è importante Definisce i nodi del grafo di processo e consente di visualizzare flussi, cicli e varianti del processo. Dove reperirlo Derivato da SWWLOGHIST (Workflow), CDHDR (documenti delle modifiche) o dalle variazioni di stato di PA03 (record di controllo). Esempi Timesheet inviatoRetribuzione lorda calcolataEccezione di audit segnalataPagamento eseguito | |||
| Record paghe PayrollRecord | L'identificativo univoco che combina il dipendente e il periodo di paga. | ||
| Descrizione Il Payroll Record funge da identificativo centrale del caso per l'analisi di Process Mining. Rappresenta una singola elaborazione delle paghe per uno specifico dipendente in un determinato periodo di paga e collega tutte le attività, dall'invio iniziale del foglio presenze fino all'invio definitivo dei dati fiscali. In SAP SuccessFactors Employee Central Payroll, viene generalmente costruito concatenando il Personnel Number (PERNR) con il Payroll Year (PABRJ) e il Payroll Period (PABRP), oltre a un eventuale numero di sequenza (SEQNR) per distinguere più esecuzioni. Questo livello di dettaglio garantisce che ogni ciclo di pagamento venga analizzato come un'istanza distinta, consentendo di misurare con precisione i tempi di ciclo e di monitorare gli errori. Perché è importante Funge da Case ID e raggruppa tutti gli eventi rilevanti per ricostruire il percorso end-to-end del processo per ogni stipendio emesso. Dove reperirlo Costruito a partire dal SAP Cluster 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 | |||
| Timestamp dell'evento EventTimestamp | La data e l'ora esatte in cui si è verificata l'attività. | ||
| Descrizione Questo attributo registra il momento preciso in cui si è verificato un evento, memorizzando sia la data sia l'ora. È fondamentale per calcolare tutte le metriche basate sul tempo, inclusi i tempi di ciclo, i tempi di attraversamento e i tassi di throughput 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 elemento essenziale per individuare i colli di bottiglia nelle prestazioni e le violazioni degli SLA. Dove reperirlo CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT o timestamp specifici dei log di audit. 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 attributo identifica la specifica istanza di SAP SuccessFactors Employee Central Payroll o il sottosistema connesso da cui sono stati estratti i dati. In ambienti complessi, con più sistemi paghe o configurazioni ibride, questo campo garantisce la provenienza e la tracciabilità dei dati. È particolarmente utile quando si analizzano dati provenienti da installazioni regionali diverse o si confrontano le prestazioni di sistemi legacy e sistemi migrati. In genere è una stringa statica configurata durante la predisposizione dell'estrazione dati. Perché è importante Consente di segmentare i dati in ambienti multisistema e aiuta a risolvere i problemi di qualità dei dati individuandone l'origine. Dove reperirlo System ID (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 dati più recente. | ||
| Descrizione Questo attributo indica quando il record dati è stato aggiornato l'ultima volta nel modello dati di Process Mining. Aiuta gli analisti a comprendere l'attualità dei dati e garantisce che gli insight si basino su informazioni aggiornate. Sebbene non venga utilizzato direttamente per l'analisi dei flussi di processo, è fondamentale per la governance e la validazione dei dati, poiché consente di verificare che il Dashboard rifletta lo stato più recente del sistema paghe. Perché è importante Garantisce che gli utenti siano consapevoli della latenza dei dati e aiuta a verificare l'attualità delle metriche riportate. Dove reperirlo Generato dallo script ETL / di estrazione durante l'esecuzione. Esempi 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| Area paghe PayrollArea | Definisce il gruppo paghe specifico a cui appartiene il dipendente. | ||
| Descrizione L'area paghe raggruppa i dipendenti elaborati nella stessa esecuzione paghe, spesso in base alla frequenza di pagamento, ad esempio mensile o bisettimanale, oppure alla struttura organizzativa. Questo attributo è fondamentale per segmentare l'analisi del processo e confrontare le prestazioni tra popolazioni diverse di dipendenti. In SAP corrisponde al campo tecnico Perché è importante Consente di confrontare le prestazioni del ciclo paghe tra gruppi diversi, ad esempio dipendenti a ore e dipendenti con stipendio fisso. Dove reperirlo Tabella PA0001 (assegnazione organizzativa), campo ABKRS. Esempi Cadenza bisettimanale negli Stati UnitiCadenza mensile in GermaniaPaghe 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. Funge da indicatore del reparto nel Dashboard 'Colli di bottiglia nell'approvazione dei fogli presenze' e aiuta a individuare le unità organizzative che rallentano il ciclo paghe. È presente nell'Infotype dell'assegnazione organizzativa (PA0001), nel campo Perché è importante Consente di eseguire il drill-down organizzativo per individuare i reparti specifici che causano ritardi o rilavorazioni. Dove reperirlo Tabella PA0001, campo KOSTL. Esempi CC-1000 FinanzaCC-2000 ITCC-3000 Vendite | |||
| È automatizzato IsAutomated | Indicatore che segnala se l'attività è stata eseguita da un utente di sistema. | ||
| Descrizione Questo attributo booleano identifica 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 il Dashboard 'Monitoraggio dell'automazione dei trasferimenti bancari', che consente di calcolare la percentuale di elaborazioni senza intervento manuale. In genere viene derivato confrontando l'ID utente con un elenco di account di sistema noti, ad esempio 'BATCH' e 'SAP_WORKFLOW'. Perché è importante Aiuta a misurare il livello di automazione e a individuare opportunità per ridurre l'impegno manuale. Dove reperirlo Derivato dall'ID utente, ad esempio se User IN ['BATCH', 'SYSTEM'] allora true. Esempi truefalse | |||
| Frequenza del ciclo paghe PayCycleFrequency | Indica se l'esecuzione è ordinaria o off-cycle. | ||
| Descrizione Questo attributo distingue le esecuzioni paghe standard e pianificate dalle esecuzioni ad hoc 'off-cycle', utilizzate per correzioni o pagamenti immediati. Un volume elevato di esecuzioni off-cycle è un indicatore importante di inefficienza del processo e viene monitorato dal Dashboard 'Analisi del volume dei pagamenti off-cycle'. Deriva dai campi Off-Cycle Reason ( Perché è importante È fondamentale per misurare il KPI 'Rapporto dei pagamenti off-cycle' e orientare la riduzione delle elaborazioni non standard. Dove reperirlo Tabella RGDIR (directory del cluster), campo OCRSN o PAYTY. Esempi OrdinarioCorrezione AErogazione del bonusCessazione | |||
| Importo lordo GrossPayAmount | L'importo totale della retribuzione lorda calcolata per il record. | ||
| Descrizione Questo attributo rappresenta il valore monetario totale della retribuzione lorda prima delle detrazioni. È una metrica fondamentale per la validazione finanziaria e viene utilizzato per correlare i pagamenti di importo elevato a un maggiore livello di controllo o a tempi di approvazione più lunghi. Viene estratto dalla tabella dei risultati paghe (RT), in genere da specifici wage type che rappresentano il totale lordo, ad esempio /101. Supporta l'analisi 'Accuratezza del calcolo di benefit e imposte', fornendo la base per il calcolo. Perché è importante Consente di analizzare il comportamento del processo in base al valore del pagamento, ad esempio verificando se i pagamenti più elevati richiedano più tempo per essere approvati. Dove reperirlo Tabella dei risultati paghe (RT), Wage Type /101 o equivalente. Esempi 5000.002500.5010500.00 | |||
| Periodo di paga PayPeriod | Il numero dello specifico periodo all'interno dell'anno fiscale. | ||
| Descrizione Questo attributo indica il numero progressivo del periodo di paga, ad esempio 01 per gennaio o per il primo ciclo bisettimanale. Consente agli analisti di monitorare l'andamento delle prestazioni nel tempo e di individuare la stagionalità dei carichi di elaborazione. Proviene da Perché è importante Consente di analizzare le tendenze e individuare i colli di bottiglia stagionali in determinati periodi dell'anno. Dove reperirlo Tabella PA0001 o Payroll Results Cluster (RGDIR), campo PABRP. Esempi 01122652 | |||
| Specialista paghe PayrollSpecialist | L'ID utente o il nome della persona che elabora il record. | ||
| Descrizione Questo attributo acquisisce l'identità dell'amministratore o dello specialista paghe responsabile dell'esecuzione delle fasi manuali o delle approvazioni. È l'attributo principale del Dashboard 'Throughput e carico di lavoro degli specialisti' e consente di analizzare la distribuzione del carico di lavoro e la produttività individuale. Proviene dal campo Perché è importante È essenziale per bilanciare il carico di lavoro e individuare i colli di bottiglia legati alle attività umane nel processo. Dove reperirlo Campi di sistema (SY-UNAME) registrati in CDHDR o ID dell'attore del Workflow. Esempi JSMITHKMILLERSYSTEM | |||
| Tipologia di dipendente EmployeeType | Classificazione del dipendente, ad esempio permanente o collaboratore a contratto. | ||
| Descrizione Questo attributo classifica i dipendenti in base al rapporto di lavoro, ad esempio dipendente attivo, pensionato o collaboratore a contratto. Le differenze nella complessità dell'elaborazione delle paghe sono spesso correlate alla tipologia di dipendente, poiché alcuni gruppi richiedono più interventi manuali o specifici controlli di conformità. Tecnicamente, il dato proviene dai campi Employee Group ( Perché è importante Aiuta a individuare se le variazioni o i ritardi del processo riguardano categorie professionali specifiche. Dove reperirlo Tabella PA0001, campi PERSG (gruppo) e PERSK (sottogruppo). Esempi Dipendente attivoTirocinantePensionatoCollaboratore a contratto retribuito a ore | |||
| Entità giuridica LegalEntity | Il codice azienda o l'entità giuridica del dipendente. | ||
| Descrizione Questo attributo identifica l'entità giuridica (Company Code) associata al record paghe. Consente di effettuare il reporting finanziario e analizzare le prestazioni delle paghe tra società controllate o entità aziendali diverse. Proviene dal campo Perché è importante Supporta il benchmarking tra società e l'analisi dell'allocazione finanziaria. Dove reperirlo Tabella PA0001, campo BUKRS. Esempi US01DE011000 | |||
| Giurisdizione fiscale TaxJurisdiction | La regione o l'autorità fiscale applicabile al dipendente. | ||
| Descrizione Questo attributo identifica l'autorità o la regione fiscale specifica, ad esempio Stato, Provincia o Cantone, che disciplina il record paghe. È essenziale per il Dashboard 'Eccezioni di audit e rischio di conformità', che consente di individuare geograficamente 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 reperirlo Tabella PA0001 o PA0207/PA0208, campo TXJCD. Esempi CANYTXNRW | |||
| Indicatore di eccezione di audit AuditExceptionFlag | Indicatore che segnala se si è verificata un'eccezione di audit. | ||
| Descrizione Questo attributo segnala i casi in cui le regole di validazione hanno generato un'eccezione o un avviso durante la simulazione o il calcolo delle paghe. Costituisce l'input principale per il KPI 'Frequenza delle eccezioni di audit'. I dati provengono spesso dal log paghe o da specifiche tabelle dei messaggi di errore (FEHLER). Un valore true indica che il flusso di 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 reperirlo Derivato dalla presenza di messaggi di errore nel log paghe o di specifici codici di stato. Esempi truefalse | |||
| Numero di 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 dei dati eseguita' compare nella cronologia del caso. È una misura diretta dell'inefficienza del processo e supporta il 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 validazione al primo tentativo. Perché è importante Quantifica l'impegno perso per la correzione degli errori e aiuta a motivare iniziative per la qualità dei dati. Dove reperirlo Calcolato contando le attività 'Correzione dei dati eseguita' per ogni CaseId. Esempi 013 | |||
| Scadenza di elaborazione SLA SLAProcessingDeadline | Il timestamp obiettivo per completare l'esecuzione paghe. | ||
| Descrizione Questo attributo rappresenta la scadenza interna o esterna entro cui finalizzare le paghe per garantire il pagamento puntuale. Viene utilizzato per calcolare il KPI 'Tasso di conformità agli SLA', confrontandolo con il timestamp effettivo di 'Pagamento eseguito'. Sebbene non sia sempre un campo standard delle tabelle SAP, viene spesso gestito in una tabella di controllo personalizzata oppure definito concettualmente sulla base del calendario paghe, ad esempio due giorni prima della data di pagamento. Per questo modello dati, viene spesso derivato dalla data di pagamento meno un margine predefinito. Perché è importante Fornisce il riferimento per valutare la puntualità e il rispetto degli SLA. Dove reperirlo Derivato dalla data di pagamento (T549S) meno il numero di giorni di elaborazione configurato. Esempi 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
Attività di elaborazione delle paghe
| Attività | Descrizione | ||
|---|---|---|---|
| File per bonifico bancario generato | La creazione del Preliminary Data Medium Exchange (pre-DME) o del file DME finale. Genera le istruzioni di pagamento per la banca. | ||
| Perché è importante Monitora il Bank Transfer Automation Monitor. La generazione non riuscita dei file rappresenta un’interruzione critica del processo. Dove reperirlo Log dell’esecuzione DME / Payment Medium Workbench (PMW), spesso archiviati in TemSe o in specifiche tabelle dei cicli di pagamento (ReguH/ReguP). Acquisizione Registrato quando il ciclo di pagamento (F110/RPCIPE) genera l’output Tipo di evento explicit | |||
| Pagamento eseguito | La finalizzazione del processo di pagamento, spesso confermata dalla banca o dal completamento del ciclo di pagamento F110. | ||
| Perché è importante Il timestamp finale principale per il tasso di conformità SLA. Determina se il dipendente è stato pagato puntualmente. Dove reperirlo Data e ora del ciclo nelle tabelle Payment Run (REGUH), oppure dedotte dalla data valuta. Acquisizione Registrato quando lo stato del ciclo di pagamento viene impostato su Posted/Complete Tipo di evento explicit | |||
| Presentazione fiscale completata | La generazione dei file per il tax reporter, ad esempio PU19 negli Stati Uniti, o il trasferimento a un provider esterno per la presentazione fiscale. | ||
| Perché è importante Garantisce la conformità normativa. Monitora il passaggio finale di conformità nella sequenza. Dove reperirlo Log di Tax Reporter Log Manager o B2A (Business to Administration) Manager che indicano la generazione corretta del file. Acquisizione Registrato quando l’esecuzione di Tax Reporter viene completata correttamente Tipo di evento explicit | |||
| Processo payroll inizializzato | La creazione di un’istanza di processo payroll all’interno del Payroll Control Center (PCC). Segna l’inizio ufficiale del ciclo payroll per una specifica area payroll. | ||
| Perché è importante Stabilisce la base per la durata complessiva dell’End-to-End Payroll Cycle. Definisce l’ambito dei dipendenti da elaborare. Dove reperirlo Tabelle del Payroll Control Center, ad esempio PYC_D_PY_PROC_INST, che registrano la creazione di un nuovo ID di processo. Acquisizione Registrato quando viene creata l’istanza di processo PCC Tipo di evento explicit | |||
| Record payroll approvato | L’approvazione formale dei risultati payroll per un dipendente o un gruppo retributivo. Avviene nello step 'Monitoring' o 'Sign Off' del PCC. | ||
| Perché è importante Segna la fine della fase di calcolo e validazione e il rilascio per il pagamento. È fondamentale per l’analisi dello Specialist Throughput. Dove reperirlo Log delle istanze degli step del Payroll Control Center (PYC_D_STEP_INST) per lo step di Approval o Confirmation. Acquisizione Registrato quando lo stato dello step di approvazione PCC cambia in COMPLETED Tipo di evento explicit | |||
| Retribuzione lorda calcolata | L’esecuzione corretta del calcolo dello schema payroll lordo. Nell’elaborazione standard, si verifica quando il driver payroll scrive nel cluster PCL2. | ||
| Perché è importante Una tappa fondamentale che indica la corretta combinazione dei dati relativi al tempo e alle tariffe. I ritardi in questo punto incidono sulla Gross-to-Net Processing Efficiency. Dove reperirlo Cluster PCL2 (Payroll Results), in particolare il timestamp della tabella directory (RGDIR) relativo al 'For-Period'. Acquisizione Registrato quando viene scritto un nuovo numero di sequenza nel cluster payroll Tipo di evento explicit | |||
| Simulazione payroll eseguita | Un’esecuzione di prova del driver payroll per identificare gli errori senza salvare i risultati nel database. È un passaggio fondamentale della fase di validazione del PCC. | ||
| Perché è importante È essenziale per calcolare il First-Pass Calculation Rate. Simulazioni ripetute indicano problemi nella qualità dei dati. Dove reperirlo Log delle istanze degli step del Payroll Control Center (PYC_D_STEP_INST) in cui il tipo di step corrisponde a Simulation. Acquisizione Registrato quando lo stato dello step di simulazione PCC cambia in COMPLETED Tipo di evento explicit | |||
| Timesheet approvato | L’approvazione formale dei dati relativi al tempo da parte di un responsabile o amministratore. Questa variazione di stato convalida i dati per il trasferimento al motore payroll. | ||
| Perché è importante Calcola il KPI Time Sheet Approval Lead Time. I colli di bottiglia in questo punto indicano ritardi manageriali o gerarchie di approvazione complesse. Dove reperirlo Tabelle Employee Central Workflow Request (WfRequest), filtrate per lo stato COMPLETED o APPROVED. Acquisizione Registrato quando lo stato del Workflow cambia in APPROVED Tipo di evento explicit | |||
| Timesheet inviato | L’evento in cui un dipendente o un responsabile invia i dati relativi al tempo per il periodo retributivo. Viene acquisito dai log delle richieste Workflow nel 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, comprimendo la finestra di elaborazione payroll. Dove reperirlo Tabelle Employee Central Workflow Request (WfRequest), filtrate per le categorie Time Sheet o Time Off. Acquisizione Registrato quando lo stato del Workflow cambia in SUBMITTED Tipo di evento explicit | |||
| Cedolino pubblicato | L’azione che rende disponibile al dipendente il prospetto retributivo tramite Self-Service (ESS). | ||
| Perché è importante Misura le prestazioni SLA relative alla consegna dei cedolini. I ritardi generano ticket all’helpdesk. Dove reperirlo Dedotto dalla 'Print Date' o dalla configurazione della data di disponibilità nei log del servizio mashup Pay Slip. Acquisizione Calcolare sulla base di Pay Date + ritardo della configurazione di sistema Tipo di evento inferred | |||
| Correzione dei dati eseguita | Modifiche apportate ai dati anagrafici o ai dati relativi al tempo in risposta a un’eccezione di audit. Rappresenta la rilavorazione necessaria per chiudere un avviso payroll. | ||
| Perché è importante Monitora i tassi di correzione manuale e rilavorazione. È l’attività principale che contribuisce all’inefficienza del processo. Dove reperirlo Dedotto collegando i timestamp degli avvisi PCC alle successive modifiche dell’Audit Log (PCL4) per lo stesso dipendente, prima della chiusura dell’avviso. Acquisizione Identificare gli aggiornamenti dei dati anagrafici che si verificano mentre un avviso PCC è attivo Tipo di evento inferred | |||
| Dati degli incentivi importati | L’acquisizione di dati retributivi non standard, come bonus o commissioni, nel sistema payroll. Di norma comporta il caricamento dei dati negli Infotype 0015 o 2010. | ||
| Perché è importante Le importazioni tardive impediscono calcoli accurati della retribuzione lorda. L’analisi aiuta a ottimizzare l’Incentive Data Integration Lead Time. Dove reperirlo Audit Log (PCL4 o equivalente) che mostra la creazione di record nell’Infotype 0015 (Additional Payments) o 2010 (Employee Remuneration Info). Acquisizione Confrontare i timestamp di creazione degli Infotype con i log dei job di importazione Tipo di evento inferred | |||
| Detrazioni per benefit applicate | Il passaggio specifico dello schema di calcolo in cui viene elaborata la logica dei benefit. Pur facendo parte dell’esecuzione principale, isolarlo aiuta a individuare gli errori di configurazione. | ||
| Perché è importante Supporta l’analisi dell’accuratezza del calcolo di benefit e imposte. Utile per il debugging di discrepanze complesse nella logica delle detrazioni. Dove reperirlo Dedotto dalla presenza dello split V0 nei risultati payroll o da specifiche voci di log, se è attivata la registrazione dettagliata, evento raro in produzione. Acquisizione Coincide con Retribuzione lorda calcolata, ma è concettualmente distinto ai fini dell’analisi Tipo di evento inferred | |||
| Eccezione di audit segnalata | La generazione di un avviso di validazione da parte dei controlli delle policy del Payroll Control Center. Questi avvisi identificano incoerenze nei dati o rischi di conformità. | ||
| Perché è importante Supporta direttamente le Dashboard Audit Exception Frequency e Compliance Risk. Volumi elevati suggeriscono problemi nella qualità dei dati a monte. Dove reperirlo Tabelle degli avvisi del Payroll Control Center (PYC_D_ALERT), che collegano codici di errore specifici al record del dipendente. Acquisizione Registrato quando viene creata una nuova voce nella tabella degli avvisi PCC Tipo di evento explicit | |||
Guide all'estrazione
Passaggi
- Individui l'area paghe e i parametri del periodo da utilizzare per l'estrazione. I dati verranno estratti principalmente dalle tabelle del Payroll Control Center (PYC_*) e dalla directory del cluster paghe (HRPY_RGDIR).
- Avvii il client SQL o SAP HANA Studio collegato allo schema backend di SAP SuccessFactors Employee Central Payroll (ECP).
- Esegua lo script di estrazione dei dati disponibile nella sezione Query. Lo script aggrega i dati delle tabelle anagrafiche, dei risultati paghe e dei log di audit del PCC.
- Mappi le attività 'Time Sheet Submitted' e 'Time Sheet Approved'. Poiché ECP riceve spesso questi dati da Employee Central, utilizzi i timestamp di creazione e dell'ultima modifica nella tabella PA2001 o nelle tabelle specializzate dell'interfaccia oraria, come PTREQ_HEADER, se disponibili.
- Estragga 'Incentive Data Imported' interrogando gli Infotype 0015 (Additional Payments) e 2010 (Employee Remuneration Info) per i record creati nel periodo paghe di riferimento.
- Recuperi i passaggi del processo PCC dalle tabelle PYC_D_PYP (Process Instances) e PYC_D_BINST (Step Instances) per acquisire 'Payroll Process Initialized', 'Payroll Simulation Executed', 'Payroll Record Approved' e 'Pay Slip Published'.
- Interroghi la tabella PYC_D_ALERT per individuare gli eventi 'Audit Exception Flagged'. Questi record collegano dipendenti specifici agli errori di convalida rilevati durante i controlli PCC.
- Generi gli eventi 'Data Correction Performed' unendo la tabella SAP Change Document Header (CDHDR) agli Infotype rilevanti per le paghe, ad esempio 0008, 0015 e 2001, durante la finestra attiva di elaborazione.
- Utilizzi la tabella HRPY_RGDIR per individuare il momento esatto di 'Gross Pay Calculated'. Crei un evento derivato per 'Benefit Deductions Applied' utilizzando lo stesso timestamp, poiché queste operazioni avvengono simultaneamente durante l'esecuzione dello schema.
- Colleghi i dati finanziari delle tabelle REGUH (Settlement Data) e REGUT (DME Administration) per acquisire 'Bank Transfer File Generated' e 'Payment Executed'.
- Trasformi la colonna 'PayrollRecord' affinché segua rigorosamente il formato [EmployeeID]-[Period]-[Year], così da garantire l'univocità del case ID.
- Esporti il dataset finale come 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 comprendente gli ultimi 6-12 mesi. I processi paghe sono ciclici e questo intervallo consente di acquisire una variazione sufficiente tra elaborazioni ordinarie e fuori ciclo.
- Area paghe (ABKRS): filtri per aree paghe specifiche, ad esempio US Monthly o DE Weekly, per garantire che l'analisi confronti cicli di processo omogenei.
- Lingua: verifichi che le descrizioni di Activities e Process Steps siano estratte nella lingua principale del sistema, ad esempio SPRAS = 'E'.
- ID dei processi PCC: individui gli specifici ID delle definizioni di processo (PYP_ID) utilizzati nella configurazione PCC per 'Monitoring', 'Production' e 'Off-Cycle', così da filtrare i passaggi pertinenti.
- Valuta: normalizzi gli importi finanziari (GrossPayAmount) in un'unica valuta se estrae dati relativi a operazioni paghe globali.
- Autorizzazioni: l'utente del database deve disporre dell'accesso in lettura alle tabelle Human Resources (PA/PY), in particolare alla Cluster Directory (HRPY_RGDIR) e alle tabelle PCC (PYC_*).
a 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. Acceda al codice transazione SE38 (ABAP Editor).
- Crei il programma: inserisca un nome per il nuovo programma, ad esempio
Z_PROCESSMINING_PAYROLL_EXT, e faccia clic su Crea. Selezioni Executable program come tipo e faccia clic su Salva come oggetto locale (pacchetto $TMP) per le attività di test. - Implementi il codice: copi il codice ABAP completo fornito nella sezione Query sottostante e lo incolli nell’editor, sostituendo l’eventuale codice predefinito presente.
- Verifichi e attivi: faccia clic sul pulsante Verifica (Ctrl+F2) per convalidare la sintassi. Quando lo stato non presenta errori, faccia clic su Attiva (Ctrl+F3).
- Esegua l’estrazione: prema Direct Processing (F8) per eseguire il report.
- Configuri la selezione: nella schermata di selezione, inserisca la
Payroll Area, ad esempio US o 99, un intervallo di date valido, ad esempio gli ultimi 3 mesi, e, facoltativamente, filtri per specificiPersonnel Numbers(PERNR) a fini di test. - Esegua l’estrazione: esegua il report. Il sistema elaborerà le tabelle HRPY_RGDIR, CATSDB, PA0015 e REGUH per costruire l’Event Log.
- Riveda l’output: il report utilizza
cl_demo_outputper visualizzare i risultati direttamente sullo schermo in una griglia, così da consentirne la convalida immediata. - Esporti i dati: faccia clic con il pulsante destro del mouse sulla griglia dei risultati, selezioni Spreadsheet e salvi il file in formato CSV o Excel.
- Formatti i dati per ProcessMind: apra il file esportato. Verifichi che la colonna
EventTimestampsia formattata comeYYYY-MM-DD HH:MM:SS. Controlli che la colonnaPayrollRecordidentifichi univocamente il caso, generalmente tramite PERNR-SEQNR. - Carichi il file: importi il CSV ripulito in ProcessMind, mappando le colonne su ID caso, attività, marca temporale e attributi secondo necessità.
Configurazione
- Intervallo di date: si consiglia di estrarre i dati in blocchi di 3-6 mesi per evitare timeout di memoria nell'ambiente di runtime ABAP.
- Area paghe: si tratta di un filtro fondamentale (tabella T549A). Estragga sempre un'area paghe alla volta, ad esempio Mensile o Bisettimanale, per garantire la coerenza del processo.
- Tabella di configurazione: lo script legge
HRPY_RGDIR(Payroll Directory) come riferimento principale. Verifichi che il Suo utente disponga dell'autorizzazioneS_TABU_DISper questa tabella. - Origine dei dati orari: lo script presuppone che i dati dei Time Sheet risiedano in
CATSDB. Se utilizza un sistema di rilevazione presenze di terze parti che si interfaccia direttamente conIT2001oIT2010senza CATS, le attività Time Sheet potrebbero risultare vuote e richiedere un adeguamento dello script. - Dati dei pagamenti: lo script collega le esecuzioni paghe alle esecuzioni dei pagamenti tramite
REGUH(Settlement Data). Verifichi che l'esecuzione pagamentiF110sia stata completata per il periodo selezionato, così da visualizzare gli eventi di pagamento. - Prestazioni: per i sistemi ad alto volume, con oltre 100.000 dipendenti, sostituisca la logica
SELECT *con un recupero basato su cursore oppure esegua il processo in 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 ). È pronto per iniziare?
Inizi il percorso verso un processo di elaborazione delle paghe più efficiente applicando questo Template all'estrazione dei Suoi dati. Il nostro approccio strutturato La aiuta a passare rapidamente dai dati grezzi a insight concreti.
Ottimizzi subito le prestazioni dell'elaborazione delle paghe
Si unisca alle aziende che oggi riducono del 30% i tempi dei cicli paghe.
Non è richiesta alcuna carta di credito. Configurazione in pochi minuti.