Su Template de datos para el procesamiento de nómina
Su Template de datos para el procesamiento de nómina
- Campos de datos estratégicos para analizar la nómina
- Hitos clave para descubrir el proceso
- Instrucciones de extracción específicas del sistema
Atributos del procesamiento de nómina
| Nombre | Descripción | ||
|---|---|---|---|
| Actividad Activity | La tarea o el evento específico que tiene lugar en el proceso de nómina. | ||
| Descripción Este atributo registra el nombre del paso del proceso que se ejecuta, como 'Hoja de horas enviada', 'Simulación de nómina ejecutada' o 'Pago ejecutado'. Sirve de base para el mapa del proceso y permite visualizar la secuencia de operaciones realizadas durante el ciclo de nómina. Los datos de este atributo se obtienen de varios registros, incluidos los registros de Workflow (SWWLOGHIST), los registros de cambios de infotipo (CDHDR/CDPOS) y tablas específicas de estado de nómina. Durante la extracción se aplican convenciones de nomenclatura coherentes para que los códigos técnicos de eventos se conviertan en nombres de actividades comprensibles para el negocio. Por qué es importante Define los nodos del grafo del proceso y permite visualizar los flujos, los bucles y las variantes del proceso. Dónde obtenerlo Se obtiene de SWWLOGHIST (Workflow), CDHDR (documentos de modificación) o 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 tuvo lugar la actividad. | ||
| Descripción Este atributo registra el momento exacto en que ocurrió un evento, con la fecha y la hora. Es fundamental para calcular todas las métricas basadas en el tiempo, incluidos los tiempos de ciclo, los tiempos de entrega y las tasas de procesamiento entre las distintas etapas del proceso. En SAP ECP, los datos proceden de campos de marca de tiempo como Por qué es importante Permite calcular la duración entre eventos, algo esencial para detectar cuellos de botella en el rendimiento e incumplimientos de los 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 | Identificador único que combina al empleado y el período de pago. | ||
| Descripción El registro de nómina funciona como identificador central del caso para el análisis de Process Mining. Representa una ejecución del procesamiento de nómina para un empleado específico durante un período de pago determinado y vincula todas las actividades, desde el envío inicial de la hoja de horas hasta la presentación final de los impuestos. En SAP SuccessFactors Employee Central Payroll, suele construirse concatenando el número de personal (PERNR), el año de nómina (PABRJ) y el período de nómina (PABRP). También puede incluir un número de secuencia (SEQNR) para distinguir varias ejecuciones. Este nivel de detalle permite analizar cada ciclo de pago como una instancia independiente y medir con precisión el tiempo de ciclo y hacer un seguimiento de los errores. Por qué es importante Funciona como ID del caso y agrupa todos los eventos pertinentes para reconstruir el recorrido completo del proceso de cada pago emitido. 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 seguimiento del origen de los datos. Resulta especialmente útil al analizar datos de distintas instalaciones regionales o comparar el rendimiento de sistemas heredados y migrados. Suele ser una cadena estática configurada durante la extracción de datos. Por qué es importante Permite segmentar los datos en entornos con varios sistemas y ayuda a resolver problemas de calidad de los 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 actualizaron por última vez los datos en el modelo de datos de Process Mining. Ayuda a comprender qué tan actualizados están los datos y a confirmar que las conclusiones se basan en información reciente. 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 Permite saber si hay retrasos en la disponibilidad de los datos y validar que las métricas presentadas estén actualizadas. Dónde obtenerlo Lo genera el script de ETL o de 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 al que pertenece un empleado. | ||
| Descripción El área de nómina agrupa a los empleados que se procesan juntos en una misma ejecución de nómina, a menudo según la frecuencia de pago (por ejemplo, mensual o quincenal) o la estructura de la organización. Este atributo es fundamental para segmentar el análisis del proceso y comparar el rendimiento de distintos grupos de empleados. 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, personal por horas y personal asalariado). Dónde obtenerlo Tabla PA0001 (asignación organizativa), campo ABKRS. Ejemplos Estados Unidos, quincenalAlemania, mensualNómina de ejecutivos | |||
| Automatizado IsAutomated | Indicador que señala si la actividad la realizó un usuario del sistema. | ||
| Descripción Este atributo booleano indica si un paso específico del proceso lo ejecutó un trabajo en segundo plano o un usuario del sistema, o bien una persona. Es fundamental para que el Dashboard 'Supervisión de la automatización de transferencias bancarias' calcule el porcentaje de procesamiento sin intervención manual. Suele obtenerse comparando el ID de usuario con una lista de cuentas del sistema conocidas (por ejemplo, 'BATCH' o 'SAP_WORKFLOW'). Por qué es importante Ayuda a medir los niveles de automatización e identificar oportunidades para reducir el trabajo manual. Dónde obtenerlo Se obtiene del ID de usuario (por ejemplo, si el usuario está en ['BATCH', 'SYSTEM'], entonces es verdadero). Ejemplos truefalse | |||
| Centro de coste CostCenter | El centro de coste asociado al empleado. | ||
| Descripción El centro de coste representa el departamento o la unidad financiera a la que se asignan los costes del empleado. En el Dashboard 'Cuellos de botella en la aprobación de hojas de horas', sirve como referencia para identificar qué unidades de la organización retrasan el ciclo de nómina. Se encuentra en el infotipo de asignación organizativa (PA0001), en el campo Por qué es importante Permite analizar la organización con más detalle para identificar los departamentos que causan 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 de la persona administradora o especialista de nómina responsable de realizar 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 de trabajo 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 relacionados con las personas en el proceso. Dónde obtenerlo Campos del sistema (SY-UNAME) registrados en CDHDR o ID del actor de Workflow. Ejemplos JSMITHKMILLERSYSTEM | |||
| 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 programadas y las ejecuciones extraordinarias ('fuera de ciclo'), que se utilizan para correcciones o pagos inmediatos. Un volumen elevado de ejecuciones fuera de ciclo es un indicador clave de ineficiencia del proceso y se registra en el Dashboard 'Análisis del volumen de pagos fuera de ciclo'. Se obtiene de los campos Motivo de ejecución fuera de ciclo ( Por qué es importante Es fundamental para medir el KPI 'Proporción de pagos fuera de ciclo' y reducir el procesamiento no estándar. Dónde obtenerlo Tabla RGDIR (directorio del clúster), campo OCRSN o PAYTY. Ejemplos RegularCorrección APago de bonificaciónTerminación | |||
| Importe bruto de la nómina GrossPayAmount | El importe bruto total calculado para el registro. | ||
| Descripción Este atributo representa el importe monetario total del salario bruto antes de las deducciones. Es una métrica fundamental para la validación financiera y permite relacionar los pagos de importes elevados con un mayor nivel de revisión de auditoría o con tiempos 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 (por ejemplo, /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 importe 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 | |||
| Período de pago PayPeriod | El número del período específico dentro del año fiscal. | ||
| Descripción Este atributo indica el número secuencial del período de nómina (por ejemplo, 01 para enero o para el primer ciclo quincenal). Permite hacer un seguimiento de las tendencias de rendimiento a lo largo del tiempo e identificar patrones estacionales en la carga de trabajo 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, por ejemplo, como personal activo, jubilado o contratista. La complejidad del procesamiento de nómina suele variar según el tipo de empleado; algunos grupos requieren más intervenciones manuales o comprobaciones de cumplimiento específicas. Técnicamente, se obtiene de los campos Grupo de empleados ( Por qué es importante Ayuda a determinar si las variaciones o demoras del proceso afectan específicamente a ciertas 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 retrabajo 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. Mide directamente la ineficiencia del proceso y sirve de apoyo al Dashboard 'Tasas de corrección manual y retrabajo'. Una cantidad elevada de retrabajo indica problemas persistentes de calidad de los datos o casos complejos que no superan la validación en el primer intento. Por qué es importante Cuantifica el esfuerzo dedicado a corregir errores y ayuda a justificar iniciativas de calidad de los datos. Dónde obtenerlo Se calcula contando las actividades 'Corrección de datos realizada' por ID del caso. 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 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 que el pago se realice a tiempo. Se utiliza para calcular el KPI 'Tasa de cumplimiento de los SLA', comparándolo con la marca de tiempo real de 'Pago ejecutado'. Aunque no siempre es un campo estándar en las tablas de SAP, suele mantenerse en una tabla de control personalizada o definirse según el calendario de nómina (por ejemplo, dos días antes de la fecha de pago). En este modelo de datos, suele calcularse restando un margen establecido a la fecha de pago. Por qué es importante Proporciona el valor de referencia para evaluar la puntualidad y el cumplimiento de los SLA. Dónde obtenerlo Se obtiene 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 señala los casos en los que las reglas de validación generaron una excepción o advertencia durante la simulación o el cálculo de nómina. Es el dato principal para el 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 verdadero indica que el flujo del proceso incluyó una ruta de gestión de excepciones. Por qué es importante Pone de manifiesto problemas de calidad de los datos y la necesidad de intervención manual. Dónde obtenerlo Se obtiene 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 (por ejemplo, estado, provincia o cantón) que rige el registro de nómina. Es esencial para que el Dashboard 'Excepciones de auditoría y riesgo de cumplimiento' permita localizar 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 regulatoria. Dónde obtenerlo Tabla PA0001 o PA0207/PA0208, campo TXJCD. Ejemplos CANYTXNRW | |||
Actividades del procesamiento de nómina
| Actividad | Descripción | ||
|---|---|---|---|
| Archivo de transferencia bancaria generado | 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 Registra la supervisión de la automatización de transferencias bancarias. Si no se generan los archivos, el proceso se detiene en un punto crítico. Dónde obtenerlo Registros de ejecución de DME o Payment Medium Workbench (PMW), que suelen almacenarse en TemSe o en tablas específicas de ciclos de pago (ReguH/ReguP). Capturar Se registra cuando el ciclo de pago (F110/RPCIPE) genera resultados Tipo de evento explicit | |||
| Declaración de impuestos completada | Generación de archivos de informes fiscales (por ejemplo, PU19 en EE. UU.) o transferencia a un proveedor externo de presentación de declaraciones de impuestos. | ||
| Por qué es importante Garantiza el cumplimiento normativo. Registra el último paso de cumplimiento de la secuencia. Dónde obtenerlo Registros de Tax Reporter Log Manager o B2A (Business to Administration) Manager que indican que el archivo se generó correctamente. Capturar Se registra cuando la ejecución de Tax Reporter finaliza correctamente Tipo de evento explicit | |||
| Hoja de horas aprobada | Aprobación formal de los datos de horas 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 de tiempo de aprobación de hojas de horas. 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 del flujo de trabajo de Employee Central (WfRequest), filtradas por los estados COMPLETED o APPROVED. Capturar Se registra cuando el estado del flujo de trabajo cambia a APPROVED Tipo de evento explicit | |||
| Hoja de horas enviada | Evento en el que un empleado o responsable envía los datos de horas del período de pago. Se registra a partir de los registros de solicitudes del flujo de trabajo del módulo Employee Central vinculado a ECP. | ||
| Por qué es importante Marca el inicio de la fase de recopilación de datos. Los retrasos en este punto repercuten en las etapas posteriores y reducen el tiempo disponible para procesar la nómina. Dónde obtenerlo Tablas de solicitudes del flujo de trabajo de Employee Central (WfRequest), filtradas por las categorías Time Sheet o Time Off. Capturar Se registra cuando el estado del flujo de trabajo cambia a SUBMITTED Tipo de evento explicit | |||
| Pago ejecutado | Finalización del proceso de pago, que suele confirmarse con el banco o al completarse el ciclo de pago F110. | ||
| Por qué es importante Marca de tiempo final principal para la tasa de cumplimiento de los SLA. Determina si el empleado recibió su pago a tiempo. Dónde obtenerlo Fecha y hora del ciclo en las tablas de ciclos de pago (REGUH) o inferidas a partir de la fecha valor. Capturar Se registra cuando el estado del ciclo de pago cambia a Posted/Complete Tipo de evento explicit | |||
| Proceso de nómina iniciado | Creación de una instancia de proceso de nómina en 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 el punto de partida para la duración total del ciclo de nómina de principio a fin. Define el grupo de empleados que se procesará. Dónde obtenerlo Tablas de Payroll Control Center (por ejemplo, PYC_D_PY_PROC_INST), que registran la creación de un nuevo ID de proceso. Capturar Se registra cuando se crea una instancia de proceso de PCC Tipo de evento explicit | |||
| Registro de nómina aprobado | Aprobación formal de los resultados de nómina de un empleado o grupo de pago. Se realiza en el paso «Monitoring» o «Sign Off» de PCC. | ||
| Por qué es importante Marca el final de la fase de cálculo y validación y la autorización del pago. Es fundamental para analizar el rendimiento de los especialistas. Dónde obtenerlo Registros de instancias de pasos de Payroll Control Center (PYC_D_STEP_INST) correspondientes al paso de aprobación o confirmación. Capturar Se registra cuando el estado del paso de aprobación de PCC cambia a COMPLETED Tipo de evento explicit | |||
| Salario bruto calculado | Ejecución correcta del cálculo del esquema de nómina bruta. En el procesamiento estándar, esto ocurre cuando el controlador de nómina escribe en el clúster PCL2. | ||
| Por qué es importante Hito importante que indica que los datos de horas y tarifas se han combinado correctamente. Los retrasos en este punto afectan a la eficiencia del procesamiento del salario bruto al neto. Dónde obtenerlo Clúster PCL2 (resultados de nómina), en concreto la marca de tiempo de la tabla de directorio (RGDIR) para el período «For-Period». Capturar 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 | Ejecución de prueba del controlador de nómina para detectar errores sin guardar los resultados en la base de datos. Es un paso clave de la fase de validación de PCC. | ||
| Por qué es importante Esencial para calcular la tasa de cálculos correctos al primer intento. Las simulaciones repetidas indican problemas de calidad de los datos. Dónde obtenerlo Registros de instancias de pasos de Payroll Control Center (PYC_D_STEP_INST) cuyo tipo de paso corresponde a Simulation. Capturar Se registra cuando el estado del paso de simulación de PCC cambia a COMPLETED Tipo de evento explicit | |||
| Corrección de datos realizada | Cambios en los datos maestros o de horas realizados en respuesta a una excepción de auditoría. Representa el retrabajo necesario para resolver una alerta de nómina. | ||
| Por qué es importante Registra las tasas de corrección manual y retrabajo. Esta es la actividad que más contribuye a la ineficiencia del proceso. Dónde obtenerlo Se infiere al combinar las marcas de tiempo de las alertas de PCC con los cambios posteriores del registro de auditoría (PCL4) del mismo empleado, antes de cerrar la alerta. Capturar Identifique las actualizaciones de datos maestros que se producen mientras una alerta de PCC está activa Tipo de evento inferred | |||
| Datos de incentivos importados | Incorporación al sistema de nómina de datos de remuneración no estándar, como bonificaciones o comisiones. Suele implicar la carga de datos en los infotipos 0015 o 2010. | ||
| Por qué es importante Las importaciones tardías impiden calcular correctamente el salario bruto. Analizarlas ayuda a optimizar el tiempo de integración de los datos de incentivos. Dónde obtenerlo Registro de auditoría (PCL4 o equivalente) que muestra la creación de registros en el infotipo 0015 (pagos adicionales) o 2010 (información sobre la remuneración del empleado). Capturar Compare las marcas de tiempo de creación de los infotipos con los registros de los trabajos de importación Tipo de evento inferred | |||
| Deducciones por beneficios aplicadas | Paso específico del esquema de cálculo en el que se procesa la lógica de beneficios. Aunque forma parte del ciclo principal, analizarlo por separado ayuda a localizar errores de configuración. | ||
| Por qué es importante Permite analizar la precisión del cálculo de beneficios e impuestos. 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 específicas del registro, si está habilitado el registro detallado, algo poco habitual en producción. Capturar Coincide con el cálculo del salario bruto, pero es un concepto distinto a efectos del análisis Tipo de evento inferred | |||
| Excepción de auditoría señalada | Generación de una alerta de validación mediante las comprobaciones de políticas de Payroll Control Center. Estas alertas identifican incoherencias en los datos o riesgos de incumplimiento. | ||
| Por qué es importante Alimenta directamente los Dashboards de frecuencia de excepciones de auditoría y riesgo de cumplimiento. Un volumen elevado suele indicar problemas de calidad de los datos en etapas anteriores. Dónde obtenerlo Tablas de alertas de Payroll Control Center (PYC_D_ALERT), que vinculan códigos de error específicos con el registro del empleado. Capturar Se registra cuando se crea una nueva entrada en la tabla de alertas de PCC Tipo de evento explicit | |||
| Recibo de nómina publicado | Acción de poner el recibo de remuneración a disposición del empleado a través del autoservicio (ESS). | ||
| Por qué es importante Mide el rendimiento del SLA de entrega de recibos de nómina. Los retrasos en este punto generan solicitudes al servicio de asistencia. Dónde obtenerlo Se infiere a partir de la fecha de impresión o de la fecha de disponibilidad configurada en los registros del servicio mashup de recibos de nómina. Capturar Calcule a partir de la fecha de pago y el retraso configurado en el sistema Tipo de evento inferred | |||
Guías de extracción
Pasos
- Identifique el área de nómina y los parámetros del período que se extraerán. Los datos se extraerán principalmente de las tablas del Payroll Control Center (PCC) (PYC_*) y del directorio de clústeres de nómina (HRPY_RGDIR).
- Abra su cliente SQL o SAP HANA Studio conectado al esquema de backend de SAP SuccessFactors Employee Central Payroll (ECP).
- Ejecute el script de extracción de datos incluido 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 de PCC.
- Asigne las actividades 'Hoja de horas enviada' y 'Hoja de horas aprobada'. 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 'Datos de incentivos importados' consultando los infotipos 0015 (pagos adicionales) y 2010 (información sobre remuneración del empleado) para obtener los registros creados durante el período de pago seleccionado.
- Recupere los pasos del proceso de PCC de las tablas PYC_D_PYP (instancias de proceso) y PYC_D_BINST (instancias de paso) para registrar 'Proceso de nómina inicializado', 'Simulación de nómina ejecutada', 'Registro de nómina aprobado' y 'Recibo de pago publicado'.
- Consulte la tabla PYC_D_ALERT para identificar los eventos 'Excepción de auditoría señalada'. Estos registros vinculan a empleados específicos con errores de validación detectados durante los pasos de comprobación de PCC.
- Genere eventos de 'Corrección de datos realizada' uniendo la tabla de cabecera de documentos de modificación de SAP (CDHDR) con los infotipos pertinentes para la nómina (por ejemplo, 0008, 0015 y 2001) durante el período activo de nómina.
- Utilice la tabla HRPY_RGDIR para determinar el momento exacto en que se calculó el salario bruto. Cree un evento derivado para 'Deducciones de beneficios aplicadas' con 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 (datos de liquidación) y REGUT (administración de DME) para registrar 'Archivo de transferencia bancaria generado' y 'Pago ejecutado'.
- Transforme la columna 'PayrollRecord' para que siga estrictamente el formato [EmployeeID]-[Period]-[Year] y garantizar que el ID del caso sea único.
- Exporte el conjunto de datos final como archivo CSV, compruebe que los encabezados coincidan con los atributos definidos en el contrato y cárguelo en ProcessMind.
Configuración
- Período: Configure la extracción para abarcar un período móvil de los últimos 6 a 12 meses. Los procesos de nómina son cíclicos y este intervalo permite captar suficientes variaciones entre las ejecuciones regulares y extraordinarias.
- Área de nómina (ABKRS): Filtre por áreas de nómina específicas (por ejemplo, mensual en EE. UU. o semanal en Alemania) para comparar ciclos de proceso similares.
- Idioma: Asegúrese de extraer las descripciones de las actividades y los pasos del proceso en el idioma principal del sistema (por ejemplo, SPRAS = 'E').
- ID de proceso de PCC: Identifique los ID de definición de proceso específicos (PYP_ID) utilizados en la configuración de PCC para 'Supervisión', 'Producción' y 'Extraordinario', a fin de filtrar los pasos pertinentes.
- 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), en particular al directorio de clústeres (HRPY_RGDIR) y a las tablas de PCC (PYC_*).
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
- Acceda al editor ABAP: Inicie sesión en su sistema SAP SuccessFactors Employee Central Payroll (ECP) mediante SAP GUI. Vaya al código de transacción SE38 (editor ABAP).
- Cree el programa: Introduzca un nombre para el nuevo programa, como
Z_PROCESSMINING_PAYROLL_EXT, y haga clic en Crear. Seleccione Programa ejecutable como tipo y Guardar como objeto local (paquete $TMP) para realizar pruebas. - Implemente el código: Copie todo el código ABAP de la sección Query que aparece a continuación y péguelo en el editor, sustituyendo cualquier código predeterminado existente.
- Compruebe y active: 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).
- Ejecute la extracción: Pulse Procesamiento directo (F8) para ejecutar el informe.
- Configure la selección: En la pantalla de selección, introduzca el
Payroll Area(por ejemplo, US, 99), unDate Rangeválido (por ejemplo, los últimos 3 meses) y, si lo desea, filtre porPersonnel Numbers(PERNR) específicos para realizar pruebas. - Ejecute la extracción: Ejecute el informe. El sistema procesará las tablas HRPY_RGDIR, CATSDB, PA0015 y REGUH para crear el registro de eventos.
- Revise los resultados: El informe utiliza
cl_demo_outputpara mostrar los resultados en una cuadrícula directamente en la pantalla y facilitar su validación inmediata. - Exporte los datos: Haga clic con el botón derecho en la cuadrícula de resultados, seleccione Hoja de cálculo y guarde el archivo en formato CSV o Excel.
- Dé 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 PERNR-SEQNR). - Cargue los datos: Importe el archivo CSV depurado en ProcessMind y asigne las columnas correspondientes a ID del caso, Actividad, marca de tiempo y Atributos.
Configuración
- Intervalo de fechas: Se recomienda extraer los datos en bloques de 3 a 6 meses para evitar que se agote la memoria en el entorno de ejecución ABAP.
- Área de nómina: Es un filtro fundamental (tabla T549A). Extraiga siempre un área de nómina a la vez (por ejemplo, mensual o quincenal) para mantener la coherencia del proceso.
- Tabla de configuración: El script utiliza
HRPY_RGDIR(directorio de nómina) como tabla principal. Asegúrese de que su usuario tenga autorizaciónS_TABU_DISpara esta tabla. - Fuente de datos de tiempo: El script presupone que los datos de las hojas de horas están en
CATSDB. Si utiliza un sistema de control horario de terceros que se conecta directamente aIT2001oIT2010sin CATS, las actividades de las hojas de horas podrían no devolver resultados y sería necesario adaptar el script. - Datos de pago: El script vincula las ejecuciones de nómina con las ejecuciones de pago mediante
REGUH(datos de liquidación). Asegúrese de que se haya ejecutado el proceso de pagoF110para el período seleccionado para ver los eventos de pago. - Rendimiento: En sistemas de gran volumen (más de 100.000 empleados), sustituya la lógica
SELECT *por una recuperación basada en cursor o ejecute el proceso en segundo plano (F9).
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 ). ¿Todo listo para comenzar?
Aplique este Template a la extracción de datos para iniciar el camino hacia un proceso de nómina más eficiente. Nuestro enfoque estructurado le permite pasar rápidamente de los datos sin procesar a conclusiones útiles para la acción.
Optimice ahora el rendimiento del procesamiento de nómina
Únase hoy a las empresas que reducen un 30 % el tiempo de ciclo de nómina.
No se requiere tarjeta de crédito. Configuración en minutos.