Su Template de datos de procesamiento de nóminas
Su Template de datos de procesamiento de nóminas
- Campos de datos estratégicos para el análisis de nóminas
- Hitos clave para descubrir el proceso
- Guía de extracción específica del sistema
Atributos del procesamiento de nóminas
| Nombre | Descripción | ||
|---|---|---|---|
| Actividad Activity | La tarea o el evento específico que ocurre en el proceso de nómina. | ||
| Descripción Este atributo registra el nombre del paso del proceso que se está ejecutando, como «Hoja de horas enviada», «Simulación de nómina ejecutada» o «Pago ejecutado». Constituye la base del mapa de procesos y permite a los analistas visualizar la secuencia de operaciones realizadas durante el ciclo de nómina. Los datos de este atributo se recopilan de varios registros, incluidos los registros de Workflow (SWWLOGHIST), los registros de cambios de Infotype (CDHDR/CDPOS) y tablas específicas del estado de la nómina. Durante la extracción se aplican convenciones de nomenclatura coherentes para convertir los códigos técnicos de eventos en nombres de actividades comprensibles para el negocio. Por qué es importante Define los nodos del grafo del proceso y permite visualizar los flujos, bucles y variantes del proceso. Dónde obtenerlo Se deriva de SWWLOGHIST (Workflow), CDHDR (documentos de cambios) o de los cambios de estado de PA03 (registro de control). Ejemplos Hoja de horas enviadaSalario bruto calculadoExcepción de auditoría señaladaPago ejecutado | |||
| Marca de tiempo del evento EventTimestamp | La fecha y hora exactas en que ocurrió la actividad. | ||
| Descripción Este atributo registra el momento exacto en que tuvo lugar un evento e incluye la fecha y la hora. Es fundamental para calcular todas las métricas basadas en el tiempo, incluidos los tiempos de ciclo, los plazos y las tasas de rendimiento entre las distintas etapas del proceso. En SAP ECP, se obtiene de campos de marca de tiempo como Por qué es importante Permite calcular la duración entre eventos, algo esencial para identificar cuellos de botella de rendimiento e incumplimientos de SLA. Dónde obtenerlo CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT o marcas de tiempo específicas de los registros de auditoría. Ejemplos 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| Registro de nómina PayrollRecord | El identificador único que combina al empleado y el periodo de pago. | ||
| Descripción El registro de nómina actúa como identificador central del caso para el análisis de Process Mining. Representa una única ejecución del procesamiento de nómina para un empleado específico dentro de un periodo de pago definido y vincula todas las actividades, desde el envío inicial de la hoja de horas hasta la presentación fiscal final. En SAP SuccessFactors Employee Central Payroll, normalmente se construye concatenando el número de personal (PERNR) con el año de nómina (PABRJ) y el periodo de nómina (PABRP), y posiblemente con un número de secuencia (SEQNR) para distinguir varias ejecuciones. Este nivel de detalle garantiza que cada ciclo de pago se analice como una instancia independiente, lo que permite medir con precisión los tiempos de ciclo y hacer un seguimiento de los errores. Por qué es importante Actúa como el Case ID y agrupa todos los eventos relevantes para reconstruir la ruta completa del proceso de cada nómina emitida. Dónde obtenerlo Se construye a partir del clúster B2 de SAP (resultados de evaluación de tiempos) o de las tablas PC_PAYRESULT (PERNR, PABRJ, PABRP, SEQNR). Ejemplos 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| Sistema de origen SourceSystem | El sistema del que proceden los datos del evento. | ||
| Descripción Este atributo identifica la instancia específica de SAP SuccessFactors Employee Central Payroll o el subsistema conectado del que se extrajeron los datos. En entornos complejos con varios sistemas de nómina o configuraciones híbridas, este campo garantiza la trazabilidad y el linaje de los datos. Resulta especialmente útil al analizar datos de distintas instalaciones regionales o comparar el rendimiento entre sistemas heredados y sistemas migrados. Normalmente es una cadena estática configurada durante la preparación de la extracción de datos. Por qué es importante Permite segmentar los datos en entornos multisistema y ayuda a resolver problemas de calidad de datos al identificar su origen. Dónde obtenerlo ID del sistema (SID) de la instalación de SAP o de la configuración de extracción. Ejemplos SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| Última actualización de datos LastDataUpdate | La marca de tiempo de la extracción de datos más reciente. | ||
| Descripción Este atributo indica cuándo se actualizó por última vez el registro de datos en el modelo de datos de Process Mining. Ayuda a los analistas a conocer la actualidad de los datos y garantiza que las conclusiones se basen en información vigente. Aunque no se utiliza directamente para analizar el flujo del proceso, es fundamental para la gobernanza y la validación de los datos, ya que permite comprobar que el Dashboard refleja el estado más reciente del sistema de nómina. Por qué es importante Garantiza que los usuarios conozcan la latencia de los datos y ayuda a validar la actualidad de las métricas notificadas. Dónde obtenerlo Generado por el script de ETL o extracción durante la ejecución. Ejemplos 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| Área de nómina PayrollArea | Define el grupo de nómina específico al que pertenece un empleado. | ||
| Descripción El área de nómina agrupa a las personas empleadas que se procesan juntas en la misma ejecución de nómina, normalmente según la frecuencia de pago, por ejemplo, mensual o quincenal, o la estructura organizativa. Este atributo es fundamental para segmentar el análisis del proceso y comparar el rendimiento entre distintas poblaciones de personas empleadas. En SAP, corresponde al campo técnico Por qué es importante Permite comparar el rendimiento del ciclo de nómina entre distintos grupos, por ejemplo, empleados por hora y empleados asalariados. Dónde obtenerlo Tabla PA0001 (asignación organizativa), campo ABKRS. Ejemplos Bisemanal de EE. UU.Mensual de AlemaniaNómina ejecutiva | |||
| Centro de costos CostCenter | El centro de costos asociado al empleado. | ||
| Descripción El centro de costos representa el departamento o la unidad financiera a la que se asignan los costos del empleado. Actúa como indicador indirecto del departamento en el Dashboard «Cuellos de botella en la aprobación de hojas de horas» y ayuda a identificar qué unidades organizativas retrasan el ciclo de nómina. Se encuentra en el Infotype de asignación organizativa (PA0001), en el campo Por qué es importante Permite profundizar en la estructura organizativa para identificar los departamentos concretos que provocan demoras o retrabajo. Dónde obtenerlo Tabla PA0001, campo KOSTL. Ejemplos CC-1000 FinanzasCC-2000 TICC-3000 Ventas | |||
| Especialista de nómina PayrollSpecialist | El ID de usuario o el nombre de la persona que procesa el registro. | ||
| Descripción Este atributo registra la identidad del administrador o especialista de nómina responsable de ejecutar los pasos manuales o las aprobaciones. Es el atributo principal del Dashboard «Rendimiento y carga de trabajo de especialistas», que permite analizar la distribución de la carga y la productividad individual. Se obtiene del campo Por qué es importante Es esencial para equilibrar la carga de trabajo e identificar cuellos de botella humanos en el proceso. Dónde obtenerlo Campos del sistema (SY-UNAME) registrados en CDHDR o ID del actor de Workflow. Ejemplos JSMITHKMILLERSYSTEM | |||
| Está automatizado IsAutomated | Indicador que señala si la actividad fue realizada por un usuario del sistema. | ||
| Descripción Este atributo booleano identifica si un paso específico del proceso fue ejecutado por un job en segundo plano o un usuario del sistema, o por una persona. Es fundamental para el monitor «Automatización de transferencias bancarias», que calcula el porcentaje de procesamiento sin intervención manual. Normalmente se deriva comparando el ID de usuario con una lista de cuentas de sistema conocidas, como «BATCH» o «SAP_WORKFLOW». Por qué es importante Ayuda a medir las tasas de automatización e identificar oportunidades para reducir el esfuerzo manual. Dónde obtenerlo Se deriva del ID de usuario, por ejemplo, si User IN ['BATCH', 'SYSTEM'] entonces true. Ejemplos truefalse | |||
| Frecuencia del ciclo de pago PayCycleFrequency | Indica si la ejecución es regular o extraordinaria. | ||
| Descripción Este atributo distingue entre las ejecuciones de nómina estándar programadas y las ejecuciones extraordinarias «off-cycle», utilizadas para correcciones o pagos inmediatos. Un volumen elevado de ejecuciones off-cycle es un indicador clave de ineficiencia del proceso y se registra en el Dashboard «Análisis del volumen de pagos off-cycle». Se deriva de los campos Motivo de off-cycle ( Por qué es importante Es fundamental para medir el KPI «Proporción de pagos off-cycle» y orientar la reducción del procesamiento no estándar. Dónde obtenerlo Tabla RGDIR (directorio del clúster), campo OCRSN o PAYTY. Ejemplos RegularCorrección APago de bonoTerminación | |||
| Importe bruto de nómina GrossPayAmount | El importe bruto total calculado para el registro. | ||
| Descripción Este atributo representa el valor monetario total del salario bruto antes de las deducciones. Es una métrica fundamental para la validación financiera y se utiliza para relacionar los pagos de alto valor con un mayor nivel de revisión de auditoría o con plazos de aprobación más largos. Se extrae de la tabla de resultados de nómina (RT), normalmente de tipos de salario específicos que representan el total bruto, como /101. Sirve de base para el análisis «Precisión del cálculo de prestaciones e impuestos». Por qué es importante Permite analizar el comportamiento del proceso según el valor del pago, por ejemplo, si los pagos más elevados tardan más en aprobarse. Dónde obtenerlo Tabla de resultados de nómina (RT), tipo de salario /101 o similar. Ejemplos 5000.002500.5010500.00 | |||
| Periodo de pago PayPeriod | El número de periodo específico dentro del año fiscal. | ||
| Descripción Este atributo indica el número secuencial del periodo de nómina, por ejemplo, 01 para enero o para el primer ciclo quincenal. Permite a los analistas seguir las tendencias de rendimiento a lo largo del tiempo e identificar la estacionalidad de las cargas de procesamiento. Se obtiene de Por qué es importante Permite analizar tendencias e identificar cuellos de botella estacionales en determinados momentos del año. Dónde obtenerlo Tabla PA0001 o clúster de resultados de nómina (RGDIR), campo PABRP. Ejemplos 01122652 | |||
| Tipo de empleado EmployeeType | Clasificación del empleado, por ejemplo, permanente o contratista. | ||
| Descripción Este atributo clasifica a los empleados según su relación laboral, como personal activo, jubilado o contratista. Las diferencias en la complejidad del procesamiento de nómina suelen estar relacionadas con el tipo de empleado, ya que algunos grupos requieren más intervenciones manuales o controles de cumplimiento específicos. Técnicamente, se obtiene de los campos Grupo de empleados ( Por qué es importante Ayuda a identificar si las variaciones o demoras del proceso se limitan a determinadas categorías de empleo. Dónde obtenerlo Tabla PA0001, campos PERSG (grupo) y PERSK (subgrupo). Ejemplos Empleado activoPersona en formaciónPensionistaContratista por horas | |||
| Cantidad de retrabajos ReworkCount | Número de veces que se realizó una corrección. | ||
| Descripción Esta métrica calculada cuenta cuántas veces aparece la actividad «Corrección de datos realizada» en el historial del caso. Es una medida directa de la ineficiencia del proceso y sirve de apoyo al Dashboard «Tasas de corrección manual y retrabajo». Una cantidad elevada de retrabajos indica problemas persistentes de calidad de datos o casos complejos que no superan la validación en el primer intento. Por qué es importante Cuantifica el esfuerzo perdido en corregir errores y ayuda a justificar las iniciativas de calidad de datos. Dónde obtenerlo Se calcula contando las actividades «Corrección de datos realizada» por CaseId. Ejemplos 013 | |||
| Entidad jurídica LegalEntity | El código de empresa o la entidad jurídica del empleado. | ||
| Descripción Este atributo identifica la entidad jurídica (código de empresa) asociada al registro de nómina. Permite elaborar informes financieros y analizar el rendimiento de la nómina en distintas filiales o entidades corporativas. Se obtiene del campo Por qué es importante Facilita la comparación del rendimiento entre empresas y el análisis de la asignación financiera. Dónde obtenerlo Tabla PA0001, campo BUKRS. Ejemplos US01DE011000 | |||
| Fecha límite de procesamiento del SLA SLAProcessingDeadline | La marca de tiempo objetivo para completar la ejecución de nómina. | ||
| Descripción Este atributo representa la fecha límite interna o externa para finalizar la nómina y garantizar el pago puntual. Se utiliza para calcular el KPI «Tasa de cumplimiento del SLA» comparándolo con la marca de tiempo real de «Pago ejecutado». Aunque no siempre es un campo estándar de las tablas de SAP, suele mantenerse en una tabla de control personalizada o definirse conceptualmente a partir del calendario de nómina, por ejemplo, dos días antes de la fecha de pago. En este modelo de datos, normalmente se deriva de la fecha de pago menos un margen establecido. Por qué es importante Proporciona el punto de referencia para evaluar la puntualidad y el cumplimiento del SLA. Dónde obtenerlo Se deriva de la fecha de pago (T549S) menos los días de procesamiento configurados. Ejemplos 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
| Indicador de excepción de auditoría AuditExceptionFlag | Indicador que señala si se produjo una excepción de auditoría. | ||
| Descripción Este atributo marca los casos en los que las reglas de validación activaron una excepción o advertencia durante la simulación o el cálculo de nómina. Es la entrada principal del KPI «Frecuencia de excepciones de auditoría». Los datos suelen proceder del registro de nómina o de tablas específicas de mensajes de error (FEHLER). Un valor true indica que el flujo del proceso incluyó una ruta de gestión de excepciones. Por qué es importante Pone de relieve los problemas de calidad de datos y la necesidad de intervención manual. Dónde obtenerlo Se deriva de la presencia de mensajes de error en el registro de nómina o de códigos de estado específicos. Ejemplos truefalse | |||
| Jurisdicción fiscal TaxJurisdiction | La región o autoridad fiscal aplicable al empleado. | ||
| Descripción Este atributo identifica la autoridad o región fiscal específica, como estado, provincia o cantón, que regula el registro de nómina. Es esencial para que el Dashboard «Excepciones de auditoría y riesgo de cumplimiento» localice geográficamente los problemas de cumplimiento. En SAP US Payroll corresponde al campo Por qué es importante Permite segmentar los riesgos de cumplimiento y las excepciones de auditoría por región normativa. Dónde obtenerlo Tabla PA0001 o PA0207/PA0208, campo TXJCD. Ejemplos CANYTXNRW | |||
Actividades del procesamiento de nóminas
| Actividad | Descripción | ||
|---|---|---|---|
| Archivo de transferencia bancaria generado | La creación del archivo Preliminary Data Medium Exchange (pre-DME) o del archivo DME final. Este archivo contiene las instrucciones de pago para el banco. | ||
| Por qué es importante Realiza un seguimiento del Bank Transfer Automation Monitor. Las generaciones fallidas de archivos son interrupciones críticas del proceso. Dónde obtenerlo Registros de la ejecución de DME / Payment Medium Workbench (PMW), almacenados normalmente en TemSe o en tablas específicas de ejecuciones de pago (ReguH/ReguP). Recopilar Se registra cuando la ejecución de pagos (F110/RPCIPE) genera resultados Tipo de evento explicit | |||
| Hoja de horas aprobada | La aprobación formal de los datos de tiempo por parte de un responsable o administrador. Este cambio de estado valida los datos para transferirlos al motor de nómina. | ||
| Por qué es importante Calcula el KPI Time Sheet Approval Lead Time. Los cuellos de botella en este punto indican retrasos de los responsables o jerarquías de aprobación complejas. Dónde obtenerlo Tablas de solicitudes de Workflow de Employee Central (WfRequest), filtradas por los estados COMPLETED o APPROVED. Recopilar Se registra cuando el estado del Workflow cambia a APPROVED Tipo de evento explicit | |||
| Hoja de horas enviada | El evento en el que un empleado o responsable envía los datos de tiempo correspondientes al periodo de pago. Se captura a partir de los registros de solicitudes de Workflow del módulo Employee Central vinculado a ECP. | ||
| Por qué es importante Marca el inicio de la fase de acumulación de datos. Los retrasos en este punto se propagan al resto del proceso y comprimen la ventana de procesamiento de nómina. Dónde obtenerlo Tablas de solicitudes de Workflow de Employee Central (WfRequest), filtradas por las categorías Time Sheet o Time Off. Recopilar Se registra cuando el estado del Workflow cambia a SUBMITTED Tipo de evento explicit | |||
| Pago ejecutado | La finalización del proceso de pago, confirmada normalmente por el banco o por la finalización de la ejecución de pagos F110. | ||
| Por qué es importante La marca de tiempo final principal para la SLA Compliance Rate. Determina si el empleado recibió el pago a tiempo. Dónde obtenerlo Fecha y hora de la ejecución en las tablas de ejecuciones de pago (REGUH), o inferidas a partir de la fecha valor. Recopilar Se registra cuando el estado de la ejecución de pagos se establece en Posted/Complete Tipo de evento explicit | |||
| Presentación de impuestos completada | La generación de archivos para el informador fiscal, por ejemplo PU19 en EE. UU., o la transferencia a un proveedor externo de presentación de impuestos. | ||
| Por qué es importante Garantiza el cumplimiento normativo. Realiza un seguimiento del paso final de cumplimiento de la secuencia. Dónde obtenerlo Registros de Tax Reporter Log Manager o B2A (Business to Administration) Manager que indican que la generación del archivo se realizó correctamente. Recopilar Se registra cuando la ejecución de Tax Reporter finaliza correctamente Tipo de evento explicit | |||
| Proceso de nómina inicializado | La creación de una instancia de proceso de nómina en el Payroll Control Center (PCC). Marca el inicio oficial del ciclo de nómina para un área de nómina específica. | ||
| Por qué es importante Establece la línea base de la duración total del End to End Payroll Cycle. Define el alcance de los empleados que se procesarán. Dónde obtenerlo Tablas del Payroll Control Center, por ejemplo PYC_D_PY_PROC_INST, que registran la creación de un nuevo ID de proceso. Recopilar Se registra cuando se crea la instancia de proceso del PCC Tipo de evento explicit | |||
| Registro de nómina aprobado | La aprobación formal de los resultados de nómina de un empleado o grupo de pago. Se produce en el paso 'Monitoring' o 'Sign Off' del PCC. | ||
| Por qué es importante Marca el final de la fase de cálculo y validación y la liberación para el pago. Es fundamental para el análisis de Specialist Throughput. Dónde obtenerlo Registros de instancias de pasos del Payroll Control Center (PYC_D_STEP_INST) correspondientes al paso de Approval o Confirmation. Recopilar Se registra cuando el estado del paso de aprobación del PCC cambia a COMPLETED Tipo de evento explicit | |||
| Salario bruto calculado | La ejecución correcta del cálculo del esquema de nómina bruta. En el procesamiento estándar, se produce cuando el controlador de nómina escribe en el clúster PCL2. | ||
| Por qué es importante Un hito importante que indica que los datos de tiempo y tarifas se han combinado correctamente. Los retrasos en este punto afectan a la Gross to Net Processing Efficiency. Dónde obtenerlo Clúster PCL2 (Payroll Results), concretamente la marca de tiempo de la tabla de directorio (RGDIR) correspondiente a 'For-Period'. Recopilar Se registra cuando se escribe un nuevo número de secuencia en el clúster de nómina Tipo de evento explicit | |||
| Simulación de nómina ejecutada | Una ejecución de prueba del controlador de nómina para identificar errores sin confirmar los resultados en la base de datos. Es un paso clave de la fase de validación del PCC. | ||
| Por qué es importante Es esencial para calcular el First-Pass Calculation Rate. Las simulaciones repetidas indican problemas de calidad de datos. Dónde obtenerlo Registros de instancias de pasos del Payroll Control Center (PYC_D_STEP_INST) cuyo tipo de paso corresponde a Simulation. Recopilar Se registra cuando el estado del paso de simulación del PCC cambia a COMPLETED Tipo de evento explicit | |||
| Corrección de datos realizada | Cambios realizados en los datos maestros o de tiempo como respuesta a una excepción de auditoría. Representa la repetición del trabajo necesaria para resolver una alerta de nómina. | ||
| Por qué es importante Realiza un seguimiento de las tasas de corrección manual y repetición del trabajo. Es la principal actividad que contribuye a la ineficiencia del proceso. Dónde obtenerlo Se infiere al combinar las marcas de tiempo de las alertas del PCC con los cambios posteriores del Audit Log (PCL4) del mismo empleado antes de cerrar la alerta. Recopilar Identifique las actualizaciones de datos maestros que se producen mientras una alerta del PCC está activa Tipo de evento inferred | |||
| Datos de incentivos importados | La incorporación al sistema de nómina de datos de pago no estándar, como bonificaciones o comisiones. Normalmente implica cargar datos en los Infotypes 0015 o 2010. | ||
| Por qué es importante Las importaciones tardías impiden calcular correctamente el salario bruto. Analizar este punto ayuda a optimizar el Incentive Data Integration Lead Time. Dónde obtenerlo Audit Log (PCL4 o equivalente) que muestra la creación de registros en el Infotype 0015 (Additional Payments) o 2010 (Employee Remuneration Info). Recopilar Compare las marcas de tiempo de creación del Infotype con los registros de los trabajos de importación Tipo de evento inferred | |||
| Deducciones de beneficios aplicadas | El paso específico del esquema de cálculo en el que se procesa la lógica de beneficios. Aunque forma parte de la ejecución principal, aislarlo ayuda a localizar errores de configuración. | ||
| Por qué es importante Admite el análisis de Benefit and Tax Calculation Accuracy. Es útil para depurar discrepancias complejas en la lógica de deducciones. Dónde obtenerlo Se infiere a partir de la existencia de la división V0 en los resultados de nómina o de entradas de registro específicas si el registro detallado está habilitado, algo poco habitual en producción. Recopilar Coincide con Gross Pay Calculated, pero es conceptualmente distinto para el análisis Tipo de evento inferred | |||
| Excepción de auditoría señalada | La generación de una alerta de validación mediante las comprobaciones de políticas del Payroll Control Center. Estas alertas identifican incoherencias en los datos o riesgos de cumplimiento. | ||
| Por qué es importante Admite directamente los Dashboards de frecuencia de excepciones de auditoría y riesgo de cumplimiento. Los volúmenes elevados suelen indicar problemas de calidad de datos en los sistemas anteriores. Dónde obtenerlo Tablas de alertas del Payroll Control Center (PYC_D_ALERT), que vinculan códigos de error específicos con el registro del empleado. Recopilar Se registra cuando se crea una nueva entrada en la tabla de alertas del PCC Tipo de evento explicit | |||
| Recibo de nómina publicado | La acción de poner el recibo de remuneración a disposición del empleado mediante Self-Service (ESS). | ||
| Por qué es importante Mide el rendimiento del SLA de entrega de recibos de nómina. Los retrasos en este punto generan tickets para el servicio de asistencia. Dónde obtenerlo Se infiere a partir de la 'Print Date' o de la configuración de la fecha de disponibilidad en los registros del servicio mashup de recibos de nómina. Recopilar Calcular a partir de Pay Date + retraso de configuración del sistema Tipo de evento inferred | |||
Guías de extracción
Pasos
- Identifique el área de nómina y los parámetros del periodo objetivo para la extracción. Extraerá los datos principalmente de las tablas del Payroll Control Center (PYC_*) y del directorio del clúster de nómina (HRPY_RGDIR).
- Abra su cliente SQL o SAP HANA Studio conectado al esquema backend de SAP SuccessFactors Employee Central Payroll (ECP).
- Ejecute el script de extracción de datos proporcionado en la sección Query. Este script agrega datos de las tablas de datos maestros, los resultados de nómina y los registros de auditoría del PCC.
- Asigne las actividades 'Time Sheet Submitted' y 'Time Sheet Approved'. Como ECP suele recibir estos datos de Employee Central, utilice las marcas de tiempo de creación y última modificación de la tabla PA2001 o de tablas especializadas de interfaz de tiempo, como PTREQ_HEADER, si están disponibles.
- Extraiga 'Incentive Data Imported' consultando los Infotypes 0015 (Additional Payments) y 2010 (Employee Remuneration Info) para los registros creados dentro del periodo de pago objetivo.
- Recupere los pasos del proceso del PCC de las tablas PYC_D_PYP (Process Instances) y PYC_D_BINST (Step Instances) para capturar 'Payroll Process Initialized', 'Payroll Simulation Executed', 'Payroll Record Approved' y 'Pay Slip Published'.
- Consulte la tabla PYC_D_ALERT para identificar los eventos 'Audit Exception Flagged'. Estos registros vinculan empleados específicos con errores de validación detectados durante los pasos de comprobación del PCC.
- Genere eventos 'Data Correction Performed' uniendo la tabla de cabecera de documentos de modificación de SAP (CDHDR) con los Infotypes relevantes para nómina, por ejemplo, 0008, 0015 y 2001, durante la ventana activa de nómina.
- Utilice la tabla HRPY_RGDIR para determinar el momento exacto de 'Gross Pay Calculated'. Cree un evento derivado para 'Benefit Deductions Applied' utilizando la misma marca de tiempo, ya que ambos ocurren simultáneamente durante la ejecución del esquema.
- Vincule los datos financieros de las tablas REGUH (Settlement Data) y REGUT (DME Administration) para capturar 'Bank Transfer File Generated' y 'Payment Executed'.
- Transforme la columna 'PayrollRecord' para que siga estrictamente el formato [EmployeeID]-[Period]-[Year] y garantizar la unicidad del ID de caso.
- Exporte el conjunto de datos final como archivo CSV, asegurándose de que las cabeceras coincidan con los atributos definidos en el contrato, y cárguelo en ProcessMind.
Configuración
- Periodo: Configure la extracción para abarcar una ventana móvil de los últimos 6 a 12 meses. Los procesos de nómina son cíclicos y este intervalo captura suficiente variación en las ejecuciones regulares y extraordinarias.
- Área de nómina (ABKRS): Filtre por áreas de nómina específicas, por ejemplo, US Monthly o DE Weekly, para garantizar que el análisis compare ciclos de proceso similares.
- Idioma: Asegúrese de que las descripciones de Activities y Process Steps se extraigan en el idioma principal del sistema, por ejemplo, SPRAS = 'E'.
- ID de procesos del PCC: Identifique los ID de definición de proceso específicos (PYP_ID) utilizados en su configuración del PCC para 'Monitoring', 'Production' y 'Off-Cycle', con el fin de filtrar los pasos relevantes.
- Moneda: Normalice los importes financieros (GrossPayAmount) a una sola moneda si extrae datos de operaciones de nómina globales.
- Autorización: El usuario de la base de datos necesita acceso de lectura a las tablas de Recursos Humanos (PA/PY), específicamente al directorio del clúster (HRPY_RGDIR) y a las tablas del PCC (PYC_*).
a Consulta de ejemplo 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]' Pasos
- Acceder al editor ABAP: Inicie sesión en su sistema SAP SuccessFactors Employee Central Payroll (ECP) mediante la SAP GUI. Vaya al código de transacción SE38, ABAP Editor.
- Crear el programa: Introduzca un nombre para el programa nuevo, como
Z_PROCESSMINING_PAYROLL_EXT, y haga clic en Crear. Seleccione Executable program como tipo y Guardar como objeto local, paquete $TMP, para realizar pruebas. - Implementar el código: Copie el código ABAP completo proporcionado en la sección Query siguiente y péguelo en el editor, sustituyendo cualquier código predeterminado existente.
- Comprobar y activar: Haga clic en el botón Comprobar, Ctrl+F2, para validar la sintaxis. Cuando el estado no muestre errores, haga clic en Activar, Ctrl+F3.
- Ejecutar la extracción: Pulse Direct Processing, F8, para ejecutar el informe.
- Configurar la selección: En la pantalla de selección, introduzca el
Payroll Area, por ejemplo, US o 99, unDate Rangeválido, por ejemplo, los últimos 3 meses, y, opcionalmente, filtre porPersonnel Numbersespecíficos, PERNR, para realizar pruebas. - Ejecutar la extracción: Ejecute el informe. El sistema procesará las tablas HRPY_RGDIR, CATSDB, PA0015 y REGUH para construir el Registro de eventos.
- Revisar el resultado: El informe utiliza
cl_demo_outputpara mostrar los resultados directamente en pantalla en una vista de cuadrícula, lo que permite validarlos de inmediato. - Exportar los datos: Haga clic con el botón derecho en la cuadrícula de resultados, seleccione Spreadsheet y guarde el archivo en formato CSV o Excel.
- Dar formato para ProcessMind: Abra el archivo exportado. Asegúrese de que la columna
EventTimestamptenga el formatoYYYY-MM-DD HH:MM:SS. Compruebe que la columnaPayrollRecordidentifique de forma única el caso, normalmente mediante PERNR-SEQNR. - Cargar: Importe el archivo CSV depurado en ProcessMind y asigne las columnas a ID del caso, Actividad, Marca de tiempo y Atributos, según corresponda.
Configuración
- Intervalo de fechas: Se recomienda extraer los datos en bloques de 3 a 6 meses para evitar tiempos de espera por falta de memoria en el entorno de ejecución de ABAP.
- Área de nómina: Este es un filtro crítico (tabla T549A). Extraiga siempre un área de nómina a la vez, por ejemplo, mensual o quincenal, para garantizar la coherencia del proceso.
- Tabla de configuración: El script utiliza
HRPY_RGDIR(Payroll Directory) como controlador principal. Asegúrese de que su usuario tenga autorizaciónS_TABU_DISpara esta tabla. - Origen de los datos de tiempo: El script presupone que los datos de Time Sheet se encuentran en
CATSDB. Si utiliza un reloj de fichaje de terceros que se conecta directamente conIT2001oIT2010sin CATS, las actividades de Time Sheet pueden aparecer vacías y será necesario adaptar el script. - Datos de pago: El script vincula las ejecuciones de nómina con las ejecuciones de pago mediante
REGUH(Settlement Data). Asegúrese de que se haya ejecutado la ejecución de pagoF110para el periodo seleccionado para poder ver los eventos de pago. - Rendimiento: En sistemas de gran volumen, con más de 100.000 empleados, sustituya la lógica
SELECT *por una extracción basada en cursores o ejecute el proceso en segundo plano (F9).
a Consulta de ejemplo 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 ). ¿Listo para comenzar?
Comience su camino hacia un proceso de nómina más eficiente aplicando este Template a la extracción de sus datos. Nuestro enfoque estructurado le ayuda a pasar rápidamente de los datos sin procesar a información útil para la toma de decisiones.
Optimice ahora el rendimiento de su procesamiento de nóminas
Únase hoy a las empresas que reducen un 30 % sus tiempos de ciclo de nómina.
No se requiere tarjeta de crédito. Configuración en minutos.