Su Plantilla de Data para Mantenimiento de Activos
Su Plantilla de Data para Mantenimiento de Activos
- Atributos recomendados para la recopilación
- Actividades de mantenimiento críticas para rastrear.
- Guía de extracción técnica para SAP PM
Atributos de Mantenimiento de Activos
| Nombre | Descripción | ||
|---|---|---|---|
| Nombre de la Actividad Activity | La tarea específica o el cambio de estado que ocurrió. | ||
| Descripción Representa el paso realizado en el proceso de mantenimiento, como 'Orden de Mantenimiento Creada', 'Salida de Mercancías Contabilizada' o 'Operación de Orden Confirmada'. Estos se derivan típicamente de las tablas de gestión de estado (JEST) para los cambios de estado, o de tablas de transacción (AFRU para confirmaciones, MKPF para movimientos de material). Este atributo determina los nodos en el mapa de proceso. Por qué es importante Esto define el 'qué' del proceso, esencial para descubrir el flujo y las variantes del proceso. Dónde obtener Derivado de JEST (Estado), AFRU (Confirmaciones), QMEL (Notificaciones) Ejemplos Orden de Mantenimiento CreadaPedido LiberadoCompletado Técnicamente | |||
| Orden de Trabajo de Mantenimiento MaintenanceWorkOrder | El identificador único para la orden de trabajo de mantenimiento. | ||
| Descripción La Orden de Trabajo de Mantenimiento es el documento central en SAP Plant Maintenance (tabla AUFK, campo AUFNR). Vincula el requisito de mantenimiento (Notificación) con los recursos de ejecución, materiales y costos. En el análisis de Process Mining, esto sirve como el ID de Caso, permitiendo la reconstrucción del ciclo de vida de extremo a extremo de un trabajo de mantenimiento, desde la creación hasta la finalización técnica y comercial. Por qué es importante Es la clave única que une todas las actividades, costos y Dónde obtener Tabla SAP AUFK, Campo AUFNR Ejemplos 00004001234540012345000040098765 | |||
| Source System SourceSystem | El sistema donde se originaron los datos. | ||
| Descripción Identifica el cliente o instancia específica de SAP (por ejemplo, 'SAP_PM_PROD'). En un panorama con múltiples sistemas Por qué es importante Asegura la unicidad y el linaje de los Dónde obtener Configuración del Sistema / Registro de Extracción Ejemplos SAP_ECC_P01SAP_S4H_100 | |||
| Timestamp del Evento EventTimestamp | La fecha y hora exactas en que ocurrió la actividad. | ||
| Descripción Registra el momento específico en que ocurrió un evento. Para los cambios de estado, esto proviene del tiempo de actualización del estado del sistema; para las operaciones, es el tiempo de confirmación. Las marcas de tiempo precisas son críticas para calcular los tiempos de ciclo, los tiempos de entrega e identificar cuellos de botella entre pasos del proceso como 'Planificación' y 'Ejecución'. Por qué es importante Requerido para secuenciar eventos correctamente y calcular todos los KPIs basados en duración. Dónde obtener JEST (UDATE/UTIME), AFRU (ISDD/ISDZ), MKPF (CPUDT/CPUTM) Ejemplos 2023-10-15T08:30:00Z2023-10-15T14:45:12Z | |||
| Última actualización de datos LastDataUpdate | Timestamp de la extracción de datos más reciente. | ||
| Descripción Indica cuándo se actualizaron por última vez los Por qué es importante Fundamental para la gobernanza de los Dónde obtener ETL Timestamp Ejemplos 2023-11-01T12:00:00Z | |||
| Centro de Mantenimiento MaintenancePlant | La planta logística responsable del mantenimiento. | ||
| Descripción La Planta (WERKS) es la unidad organizacional principal en logística. Separa los datos por instalación física. Este atributo es esencial para comparar el rendimiento entre diferentes sitios y se mapea a 'Unidad de Negocio' para soportar el filtrado organizacional de alto nivel en los Por qué es importante Filtro organizacional principal para la comparación de instalaciones. Dónde obtener Tabla SAP AUFK, Campo WERKS Ejemplos 100020003000 | |||
| Centro de Trabajo Principal MainWorkCenter | El centro de trabajo o cuadrilla principal asignado para ejecutar la orden. | ||
| Descripción El Centro de Trabajo Principal (VAPLZ) representa el grupo de técnicos o máquinas que realizarán el trabajo físico. Este atributo se mapea a 'Equipo' y es vital para analizar la eficiencia de ejecución, como el "Tiempo Medio de Reparación" por cuadrilla. Ayuda a distinguir entre mano de obra interna y contratistas externos. Por qué es importante Permite el análisis del rendimiento a nivel de recurso. Dónde obtener Tabla SAP AFKO, Campo VAPLZ (o AUFK-VAPLZ dependiendo de la configuración) Ejemplos MECH_01ELEC_TEAMEXT_CONT | |||
| Creado Por Usuario CreatedByUser | El nombre de usuario de la persona que creó la orden. | ||
| Descripción Identifica al usuario (ERNAM) responsable de iniciar la orden de trabajo. Esto se mapea a 'Usuario' en el modelo genérico. Permite el análisis de la creación manual versus automatizada y ayuda en la auditoría de la actividad 'Orden de Mantenimiento Creada'. Por qué es importante Permite el análisis del comportamiento del usuario y la auditoría. Dónde obtener Tabla SAP AUFK, Campo ERNAM Ejemplos JSMITHBSERVICEDDAVIS | |||
| Estado del Sistema SystemStatus | El estado técnico actual de la orden (por ejemplo, REL, TECO). | ||
| Descripción Una cadena concatenada o lista de estados del sistema activos (de JEST) aplicados actualmente a la orden. Los valores comunes incluyen CRTD (Creada), REL (Liberada), TECO (Técnicamente Completada) y CLSD (Cerrada). Esto ayuda a filtrar casos abiertos vs. cerrados en el 'Monitor de Pendientes y Trabajo en Curso'. Por qué es importante El indicador principal de la etapa del ciclo de vida de la orden. Dónde obtener Módulo de Función SAP STATUS_TEXT_EDIT o Tabla JEST Ejemplos REL CNFTECOCRTD MACM | |||
| Fecha de Finalización Objetivo TargetFinishDate | La fecha de finalización programada para el trabajo de mantenimiento. | ||
| Descripción Esta fecha (típicamente Fecha Básica de Finalización - GLTRP) representa la fecha límite para la orden de trabajo. Se compara con la marca de tiempo de finalización real para calcular el KPI de "Tasa de Cumplimiento de SLA". Es la línea base para determinar si una orden de trabajo está a tiempo o con retraso. Por qué es importante El punto de referencia para todos los cálculos de Entrega a Tiempo (OTD). Dónde obtener Tabla SAP AFKO, Campo GLTRP Ejemplos 2023-12-012023-12-15 | |||
| Grupo de Planificación ResponsiblePlannerGroup | El grupo de planificadores responsable de procesar la orden. | ||
| Descripción El Grupo de Planificadores (INGRP) identifica el equipo o departamento específico responsable de planificar el trabajo de mantenimiento. Esto se mapea a 'Departamento' y es crucial para el Por qué es importante Identifica al equipo administrativo propietario del proceso de planificación. Dónde obtener Tabla SAP AUFK, Campo INGRP Ejemplos M01ELEMEC | |||
| Número de Equipo EquipmentNumber | Identificador para el activo físico específico que se está manteniendo. | ||
| Descripción El Número de Equipo (EQUNR) identifica la máquina individual o el objeto de activo. Al agregar datos en este campo, los analistas pueden calcular el Por qué es importante Conecta el rendimiento del proceso con activos físicos específicos. Dónde obtener Tabla SAP AUFK, Campo EQUNR Ejemplos 10004567PUMP-001HVAC-202 | |||
| Número de Notificación NotificationNumber | La notificación de mantenimiento que desencadenó esta orden. | ||
| Descripción El Número de Notificación (QMNUM) vincula la Orden de Trabajo con la solicitud inicial (Notificación). Este vínculo es necesario para calcular el tiempo de entrega completo desde la 'Solicitud de Mantenimiento Recibida' hasta la finalización. Sin esto, el análisis pierde la fase inicial de detección e informe del ciclo de vida del mantenimiento. Por qué es importante Conecta la fase de ejecución con la fase de solicitud/detección. Dónde obtener Tabla SAP AUFK, Campo QMNUM Ejemplos 1000050010000501 | |||
| Prioridad de Mantenimiento MaintenancePriority | El nivel de urgencia asignado a la orden de trabajo. | ||
| Descripción Indica la prioridad (PRIOK) de la tarea de mantenimiento, como '1-Muy Alta', '2-Alta' o '3-Media'. Este campo es la entrada directa para el Por qué es importante Factor clave para el análisis de Dónde obtener Tabla SAP AFKO, Campo PRIOK (o AUFK vía vista) Ejemplos 1-Emergencia2-Alta3-Media4-Baja | |||
| Tipo de Orden de Mantenimiento MaintenanceOrderType | Categoriza la orden de trabajo (por ejemplo, Preventiva, Correctiva). | ||
| Descripción El Tipo de Orden (AUART) en SAP PM distingue la naturaleza del trabajo de mantenimiento. Los tipos comunes incluyen PM01 (Correctivo), PM02 (Preventivo) y PM03 (Reacondicionamiento). Este atributo es esencial para el "Monitor de Impacto de Órdenes de Trabajo de Emergencia" y para segmentar las variantes de proceso, ya que los flujos de trabajo preventivos difieren significativamente de los reactivos. Por qué es importante Fundamental para segmentar el análisis entre el trabajo planificado y no planificado. Dónde obtener Tabla SAP AUFK, Campo AUART Ejemplos PM01PM02PM03 | |||
| Ubicación Funcional FunctionalLocation | La ubicación jerárquica donde está instalado el activo. | ||
| Descripción Representa el lugar en la estructura técnica donde se realiza la tarea de mantenimiento (TPLNR). A diferencia del Equipo, que se mueve, la Ubicación Funcional es estática. Este atributo soporta el Por qué es importante Permite el análisis espacial y jerárquico del rendimiento del mantenimiento. Dónde obtener Tabla SAP IFLOT, Campo TPLNR (o vía AUFK-TPLNR) Ejemplos PLANT1-BLD2-LN01US-TX-DAL-01 | |||
| ¿Es Retrabajo? IsRework | Indicador que señala si la orden involucró actividades de retrabajo. | ||
| Descripción Un booleano calculado que identifica si ocurrió un bucle de proceso, específicamente si la actividad 'Tarea de Mantenimiento Ejecutada' sucedió más de una vez o si el estado revirtió de 'Técnicamente Completado' a 'En Proceso'. Esto apoya el Por qué es importante Apoya directamente el análisis de control de calidad. Dónde obtener Calculado a partir del Flujo de Proceso Ejemplos truefalse | |||
| Costo Real Total TotalActualCost | El costo real total contabilizado en la orden de trabajo. | ||
| Descripción Costos agregados de mano de obra, materiales y servicios (de la tabla PMCO). Este Por qué es importante Proporciona la dimensión financiera a los datos del proceso operativo. Dónde obtener Tabla SAP PMCO (suma del tipo de valor 04 - Real) Ejemplos 150.002500.500.00 | |||
| Duración de la Actividad ActivityDuration | Tiempo transcurrido para completar la actividad específica. | ||
| Descripción La duración del paso específico, particularmente útil para actividades de 'Operación Confirmada' donde se registran las horas de mano de obra. Esto se mapea a 'ProcessingTime' en el modelo genérico y se utiliza para calcular la eficiencia y la utilización de la mano de obra. Por qué es importante Mide el esfuerzo real dedicado a las tareas. Dónde obtener Tabla SAP AFRU, Campo ISDD/ISDZ vs IEDD/IEDZ Ejemplos 2.5 horas45 minutos | |||
| Es Trabajo de Emergencia IsEmergencyWork | Indicador que señala si la orden de trabajo es una emergencia. | ||
| Descripción Un Por qué es importante Simplifica el filtrado para el análisis crítico del mantenimiento reactivo. Dónde obtener Calculado a partir de Ejemplos truefalse | |||
| Horas de Mano de Obra Planificadas PlannedLaborHours | Las horas de mano de obra estimadas para la orden. | ||
| Descripción El trabajo planificado total (ARBEI) de las operaciones de la orden. Comparar esto con la Duración de Actividad real ayuda en el Por qué es importante Métrica base para el análisis de la precisión de la planificación. Dónde obtener Tabla SAP AFKO (Suma de Trabajo Planificado de Operación) Ejemplos 4.08.512.0 | |||
Actividades de Mantenimiento de Activos
| Actividad | Descripción | ||
|---|---|---|---|
| Completado Comercial Establecido | Marca el cierre administrativo final de la orden de trabajo, impidiendo cualquier contabilización de costos adicional. Capturado a través del cambio de estado a CLSD (Cerrado). | ||
| Por qué es importante Representa el fin absoluto del ciclo de vida de la orden, crítico para la Precisión de Datos y el Cumplimiento de Registros. Dónde obtener Tabla JCDS, Estado I0046 (CLSD). Capturar Registrado cuando el estado se actualiza a CLSD en JCDS Tipo de evento explicit | |||
| Finalización Técnica Establecida | Marca el trabajo de mantenimiento como física y técnicamente finalizado. Capturado a través del cambio de estado a TECO (Técnicamente Completado). | ||
| Por qué es importante El punto final más crítico para el análisis operativo, que significa que el activo está restaurado y el mantenimiento ha finalizado. Dónde obtener Tabla JCDS, Estado I0045 (TECO). Capturar Registrado cuando el estado se actualiza a TECO en JCDS Tipo de evento explicit | |||
| Operación de Orden Confirmada | Representa el registro del tiempo real invertido por un técnico en una operación específica. Esto captura el trabajo de ejecución real en el activo. | ||
| Por qué es importante Esta actividad es la fuente de datos principal para el Tiempo Medio de Reparación y los cálculos de costos de mano de obra. Dónde obtener Tabla AFRU (Confirmaciones de Orden). Capturar Registrado cuando se ejecutó la transacción IW41 Tipo de evento explicit | |||
| Orden de Mantenimiento Creada | Marca la generación del objeto de orden de trabajo de mantenimiento en el sistema. Capturado explícitamente desde la `timestamp` de creación de la tabla de `Datos` Maestros de la Orden. | ||
| Por qué es importante Este es el evento ancla central para el caso, marcando la transición de la solicitud a la planificación y ejecución. Dónde obtener Tabla AUFK, campo ERDAT (Fecha) y ERFZEIT (Hora). Capturar Registrado cuando se ejecutó la transacción IW31 Tipo de evento explicit | |||
| Orden de Mantenimiento Liberada | Indica que la planificación está completa y la orden se libera para su ejecución. Capturado monitoreando el cambio de estado a REL en los registros de estado del sistema. | ||
| Por qué es importante Este hito separa la fase de planificación de la fase de ejecución, crucial para medir el Tiempo de Entrega de Planificación y Estimación. Dónde obtener Tabla JCDS (Documentos de Cambio de Estado), Estado I0002 (REL). Capturar Registrado cuando el estado se actualiza a REL en JCDS Tipo de evento explicit | |||
| Salida de Mercancías Contabilizada | Registra el consumo físico de piezas de repuesto o materiales contra la orden de trabajo. Capturado desde los encabezados de documentos de material vinculados a la orden. | ||
| Por qué es importante Confirma que las piezas están disponibles y han sido recogidas, impactando directamente el análisis del Tiempo de Espera por Disponibilidad de Piezas. Dónde obtener Tabla MSEG/MKPF, Tipo de Movimiento 261 (Salida de Mercancías para Orden). Capturar Registrado cuando se ejecutó la transacción MIGO/MB1A Tipo de evento explicit | |||
| Componente Material Añadido | Registra la adición de piezas de repuesto o materiales a la lista de componentes de la orden de trabajo. Capturado desde la creación de una partida de reserva. | ||
| Por qué es importante Identifica el inicio del ciclo de adquisición de piezas requeridas, apoyando el Dónde obtener Tabla RESB, campo BDTER (Fecha de Requerimiento) o marca de tiempo de creación. Capturar Registrado cuando se añadió una partida a RESB Tipo de evento explicit | |||
| Costo de Orden Liquidado | Indica que los costos recopilados en la orden han sido transferidos al objeto de control (por ejemplo, Centro de Costos). Capturado del documento de Control. | ||
| Por qué es importante Rastrea el aspecto del cierre financiero y apoya el KPI de Duración de la Liquidación Financiera. Dónde obtener Tabla COBK (Objeto CO: Cabecera de Documento), vinculada a la Orden. Capturar Registrado cuando se ejecutó la transacción de liquidación KO88 Tipo de evento explicit | |||
| Finalización Técnica Revertida | Registra la revocación del estado de Finalización Técnica, indicando que la orden ha sido reabierta. Esto crea un ciclo de retrabajo en el modelo de proceso. | ||
| Por qué es importante Indicador principal para el KPI de Tasa de Retrabajo en Mantenimiento, que resalta cierres prematuros o problemas de calidad. Dónde obtener Tabla JCDS, Cambio de Estado I0045 (TECO) a Inactivo. Capturar Registrado cuando se desactivó el estado TECO Tipo de evento explicit | |||
| Lectura de Medición Registrada | Registra la entrada de un documento de medición, como una lectura de contador o una evaluación de condición. A menudo sirve como el `evento` de Inspección Técnica. | ||
| Por qué es importante Esencial para el Mantenimiento Basado en Condición y el seguimiento de los Tiempos de Ciclo de Inspección Técnica. Dónde obtener Tabla IMRG (Documento de Medición), vinculada a Equipo o Ubicación Funcional. Capturar Registrado cuando se creó el documento de medición Tipo de evento explicit | |||
| Notificación de Mantenimiento Creada | Registra la creación inicial de una notificación de mantenimiento, que a menudo es el detonante de una orden de trabajo. Capturado desde la marca de tiempo de creación de la tabla QMEL, esta actividad vincula la solicitud anterior con la orden de ejecución. | ||
| Por qué es importante Esta actividad establece el inicio del proceso de mantenimiento de extremo a extremo, permitiendo el cálculo de los tiempos de reacción entre la detección de fallas y la generación de órdenes. Dónde obtener Tabla QMEL, campo ERDAT (Fecha de Creación) y MZEIT (Hora). Vinculado a la orden vía QMEL-AUFNR. Capturar Registrado cuando se creó el registro en la tabla QMEL Tipo de evento explicit | |||
| Orden de Trabajo Programada | Indica la programación específica de operaciones a una capacidad o fecha. Se infiere de la asignación del estado de Despacho a las operaciones. | ||
| Por qué es importante Mide la eficiencia de la asignación de recursos y apoya el Dónde obtener Tabla JCDS (Documentos de Cambio de Estado) para Operaciones (Tipo de Objeto OV), Estado I0009 (DSPT). Capturar Compare el campo de estado antes/después Tipo de evento inferred | |||
| Prioridad de Mantenimiento Cambiada | Registra una actualización del nivel de prioridad de la orden de trabajo, como la escalada a Emergencia. Derivado de los Documentos de Cambio asociados a los `datos` maestros de la orden. | ||
| Por qué es importante El seguimiento de los cambios de prioridad explica las desviaciones del proceso y apoya el Monitor de Impacto de Órdenes de Trabajo de Emergencia al identificar escaladas reactivas. Dónde obtener Tabla CDPOS/CDHDR para Clase de Objeto AUFTRAG, Campo PRIOK. Capturar Registrado en Documentos de Cambio (CDPOS) Tipo de evento explicit | |||
| Solicitud de Compra Creada | Significa que se ha generado una solicitud de adquisición externa o servicios. Esto conecta la orden de mantenimiento interna con la cadena de suministro externa. | ||
| Por qué es importante Crucial para analizar retrasos causados por proveedores externos o la adquisición de materiales no estándar. Dónde obtener Tabla EBAN, vinculada vía Asignación de Cuenta a AUFK-AUFNR. Capturar Registrado cuando se creó el registro EBAN Tipo de evento explicit | |||
Guías de Extracción
Pasos
Identifique la Interfaz de la Fuente de
Datos: Determine cómo accederá a la interfazSQLde SAP S/4HANA. Esto se realiza típicamente a través deSAP HANA Studio, las Herramientas de DesarrolloABAP (ADT)enEclipse, o una cadena de conexiónDBaaSsi la base dedatosdeHANAestá expuesta a su capa analítica.Verifique la Disponibilidad de Vistas
CDS: Asegúrese de que las vistas estándar deCore Data Services (CDS)estén activas en su sistema S/4HANA. Las vistas principales requeridas sonI_MaintenanceOrder,I_MaintenanceOrderOperation,I_MaintenanceNotification,I_MaintOrderConfirmationeI_MeasurementDocument. También necesitará acceso a la tabla de historial de estados del sistemaJCDSy a las tablas de documentos de cambio (CDHDR/CDPOS) para reconstruir el historial completo deeventos, ya que las vistasCDSestándar a menudo solo muestran el estado actual.Prepare el Entorno
SQL: Abra su editorSQL. Asegúrese de que su usuario tenga permisosSELECTen las vistasSQL DDL(generalmente el esquemaSAPABAP1o similar) para los artefactos mencionados anteriormente.Ejecute la Consulta de Extracción: Copie el script
SQLproporcionado en su editor. Reemplace el marcador de posición [Your Client Number] con suIDde clienteSAPespecífico (por ejemplo, 100). Si está filtrando por un rango de fechas específico, actualice los filtros deEventTimestampen las cláusulasWHERE.Transformación de
Datos: La consulta maneja la mayoría de las transformaciones, como elcastingdetimestampsy el mapeo de códigos de estado a texto legible. Sin embargo, asegúrese de que la columnaEventTimestampesté formateada segúnISO 8601(YYYY-MM-DDTHH:MM:SS) durante la exportación si su sistema de destino lo requiere.Exporte el Resultado: Ejecute la consulta y exporte los resultados a un archivo
CSVoParquet. Asegúrese de que la codificación esté configurada enUTF-8para manejar caracteres especiales en nombres de usuario o descripciones.Valide el Mapeo de Columnas: Abra una muestra de la exportación y asegúrese de que las columnas
MaintenanceWorkOrder,ActivityyEventTimestampestén completamente pobladas. Verifique que la columnaActivitycontenga las cadenas específicas enumeradas en los requisitos (por ejemplo, 'Orden de Mantenimiento Creada', 'Salida de Mercancías Contabilizada').Cargue a
ProcessMind: Importe el archivo plano validado enProcessMind. Mapee la columnaActivityal campoActivity ID,MaintenanceWorkOrderal campoCase IDyEventTimestampal campoTimestamp.
Configuración
- Filtro de Cliente: Los sistemas SAP son multi-cliente. Siempre filtre por
MANDToClient(por ejemplo, '100') para evitar datos duplicados o fugas de datos entre clientes. - Rango de Fechas: Se recomienda filtrar la
CreationDatede la Orden de Mantenimiento para los últimos 6 a 12 meses. Consultar el historial completo deJCDS(Estado) oCDPOS(Documentos de Cambio) sin filtros de fecha puede causartimeoutsde rendimiento. - Clave de Idioma: La consulta por defecto está en inglés ('E'). Si su organización utiliza un idioma principal diferente para las descripciones de texto, ajuste el filtro de idioma.
- Acceso al Sistema: Requiere acceso al esquema de
Core Data Servicesde ABAP o a las tablas HANA subyacentes. El acceso a las tablas brutas JCDS y CDHDR es crucial para el análisis histórico de estados, ya que las vistas CDS puras suelen basarse en instantáneas. - Tipos de Orden: La consulta extrae todos los tipos de orden. Puede que desee filtrar
MaintenanceOrderType(por ejemplo, solo PM01, PM02) si solo desea analizar escenarios de mantenimiento específicos.
a Consulta de ejemplo sql
/* Activity 1: Maintenance Notification Created */
SELECT
CAST(N.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(N.CreationDate, ' '), N.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
N.MaintenanceOrderType,
N.MaintenancePriority,
N.Equipment AS EquipmentNumber,
N.FunctionalLocation,
N.MaintenancePlant,
N.MaintenancePlannerGroup AS ResponsiblePlannerGroup,
N.MainWorkCenter,
N.MaintenanceNotification AS NotificationNumber,
CAST(NULL AS DATE) AS TargetFinishDate,
N.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceNotification N
JOIN I_MaintenanceOrder O ON N.MaintenanceOrder = O.MaintenanceOrder
WHERE N.MaintenanceOrder IS NOT NULL AND N.MaintenanceOrder <> ''
UNION ALL
/* Activity 2: Maintenance Order Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Created' AS Activity,
O.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrder O
UNION ALL
/* Activity 3: Maintenance Priority Changed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Priority Changed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(H.UDATE, ' '), H.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
H.USERNAME AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM CDHDR H
JOIN CDPOS P ON H.OBJECTCLAS = P.OBJECTCLAS AND H.OBJECTID = P.OBJECTID AND H.CHANGENR = P.CHANGENR
JOIN I_MaintenanceOrder O ON O.MaintenanceOrder = H.OBJECTID
WHERE H.OBJECTCLAS = 'ORDER'
AND P.TABNAME = 'AFKO'
AND P.FNAME = 'PRIOK'
UNION ALL
/* Activity 4: Maintenance Order Released */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Released' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0002' /* REL Status */
AND J.INACT = ' '
UNION ALL
/* Activity 5: Material Component Added */
SELECT
CAST(C.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Material Component Added' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(C.CreationDate, ' '), COALESCE(C.CreationTime, '000000')), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrderComponent C
JOIN I_MaintenanceOrder O ON C.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 6: Purchase Requisition Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Purchase Requisition Created' AS Activity,
PR.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
PR.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_PurchasingDocumentItem PR
JOIN I_MaintenanceOrder O ON PR.ServiceMaintenanceOrder = O.MaintenanceOrder
WHERE PR.PurchasingDocumentCategory = 'B' /* Requisition */
UNION ALL
/* Activity 7: Goods Issue Posted */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Goods Issue Posted' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(MD.CreationDate, ' '), MD.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
MD.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaterialDocumentItem MD
JOIN I_MaintenanceOrder O ON MD.MaintenanceOrder = O.MaintenanceOrder
WHERE MD.GoodsMovementType = '261'
UNION ALL
/* Activity 8: Work Order Scheduled (Operation Dispatched) */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Work Order Scheduled' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrderOperation OP ON J.OBJNR = OP.MaintenanceOrderOperationInternalID
JOIN I_MaintenanceOrder O ON OP.MaintenanceOrder = O.MaintenanceOrder
WHERE J.STAT = 'I0019' /* DSP Dispatched Status */
AND J.INACT = ' '
UNION ALL
/* Activity 9: Order Operation Confirmed */
SELECT
CAST(CNF.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Operation Confirmed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(CNF.CreationDate, ' '), CNF.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
CNF.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintOrderConfirmation CNF
JOIN I_MaintenanceOrder O ON CNF.MaintenanceOrder = O.MaintenanceOrder
WHERE CNF.IsReversed = ' '
UNION ALL
/* Activity 10: Measurement Reading Recorded */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Measurement Reading Recorded' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(M.CreationDate, ' '), M.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
M.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MeasurementDocument M
JOIN I_MaintenanceOrder O ON M.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 11: Technical Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = ' '
UNION ALL
/* Activity 12: Technical Completion Reversed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Reversed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = 'X' /* Inactive indicates it was removed/reversed */
AND J.CHIND = 'U' /* Update indicator */
UNION ALL
/* Activity 13: Order Cost Settled */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Cost Settled' AS Activity,
JE.CreationDateTime AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
JE.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_ActualPlanJrnlEntryItem JE
JOIN I_MaintenanceOrder O ON JE.OrderID = O.MaintenanceOrder
WHERE JE.BusinessTransactionType = 'KOAO' /* Settlement */
UNION ALL
/* Activity 14: Business Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Business Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0046' /* CLSD Status */
AND J.INACT = ' ' Pasos
Identifique la Interfaz de la Fuente de
Datos: Determine cómo accederá a la interfazSQLde SAP S/4HANA. Esto se realiza típicamente a través deSAP HANA Studio, las Herramientas de DesarrolloABAP (ADT)enEclipse, o una cadena de conexiónDBaaSsi la base dedatosdeHANAestá expuesta a su capa analítica.Verifique la Disponibilidad de Vistas
CDS: Asegúrese de que las vistas estándar deCore Data Services (CDS)estén activas en su sistema S/4HANA. Las vistas principales requeridas sonI_MaintenanceOrder,I_MaintenanceOrderOperation,I_MaintenanceNotification,I_MaintOrderConfirmationeI_MeasurementDocument. También necesitará acceso a la tabla de historial de estados del sistemaJCDSy a las tablas de documentos de cambio (CDHDR/CDPOS) para reconstruir el historial completo deeventos, ya que las vistasCDSestándar a menudo solo muestran el estado actual.Prepare el Entorno
SQL: Abra su editorSQL. Asegúrese de que su usuario tenga permisosSELECTen las vistasSQL DDL(generalmente el esquemaSAPABAP1o similar) para los artefactos mencionados anteriormente.Ejecute la Consulta de Extracción: Copie el script
SQLproporcionado en su editor. Reemplace el marcador de posición [Your Client Number] con suIDde clienteSAPespecífico (por ejemplo, 100). Si está filtrando por un rango de fechas específico, actualice los filtros deEventTimestampen las cláusulasWHERE.Transformación de
Datos: La consulta maneja la mayoría de las transformaciones, como elcastingdetimestampsy el mapeo de códigos de estado a texto legible. Sin embargo, asegúrese de que la columnaEventTimestampesté formateada segúnISO 8601(YYYY-MM-DDTHH:MM:SS) durante la exportación si su sistema de destino lo requiere.Exporte el Resultado: Ejecute la consulta y exporte los resultados a un archivo
CSVoParquet. Asegúrese de que la codificación esté configurada enUTF-8para manejar caracteres especiales en nombres de usuario o descripciones.Valide el Mapeo de Columnas: Abra una muestra de la exportación y asegúrese de que las columnas
MaintenanceWorkOrder,ActivityyEventTimestampestén completamente pobladas. Verifique que la columnaActivitycontenga las cadenas específicas enumeradas en los requisitos (por ejemplo, 'Orden de Mantenimiento Creada', 'Salida de Mercancías Contabilizada').Cargue a
ProcessMind: Importe el archivo plano validado enProcessMind. Mapee la columnaActivityal campoActivity ID,MaintenanceWorkOrderal campoCase IDyEventTimestampal campoTimestamp.
Configuración
- Filtro de Cliente: Los sistemas SAP son multi-cliente. Siempre filtre por
MANDToClient(por ejemplo, '100') para evitar datos duplicados o fugas de datos entre clientes. - Rango de Fechas: Se recomienda filtrar la
CreationDatede la Orden de Mantenimiento para los últimos 6 a 12 meses. Consultar el historial completo deJCDS(Estado) oCDPOS(Documentos de Cambio) sin filtros de fecha puede causartimeoutsde rendimiento. - Clave de Idioma: La consulta por defecto está en inglés ('E'). Si su organización utiliza un idioma principal diferente para las descripciones de texto, ajuste el filtro de idioma.
- Acceso al Sistema: Requiere acceso al esquema de
Core Data Servicesde ABAP o a las tablas HANA subyacentes. El acceso a las tablas brutas JCDS y CDHDR es crucial para el análisis histórico de estados, ya que las vistas CDS puras suelen basarse en instantáneas. - Tipos de Orden: La consulta extrae todos los tipos de orden. Puede que desee filtrar
MaintenanceOrderType(por ejemplo, solo PM01, PM02) si solo desea analizar escenarios de mantenimiento específicos.
a Consulta de ejemplo sql
/* Activity 1: Maintenance Notification Created */
SELECT
CAST(N.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(N.CreationDate, ' '), N.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
N.MaintenanceOrderType,
N.MaintenancePriority,
N.Equipment AS EquipmentNumber,
N.FunctionalLocation,
N.MaintenancePlant,
N.MaintenancePlannerGroup AS ResponsiblePlannerGroup,
N.MainWorkCenter,
N.MaintenanceNotification AS NotificationNumber,
CAST(NULL AS DATE) AS TargetFinishDate,
N.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceNotification N
JOIN I_MaintenanceOrder O ON N.MaintenanceOrder = O.MaintenanceOrder
WHERE N.MaintenanceOrder IS NOT NULL AND N.MaintenanceOrder <> ''
UNION ALL
/* Activity 2: Maintenance Order Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Created' AS Activity,
O.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrder O
UNION ALL
/* Activity 3: Maintenance Priority Changed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Priority Changed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(H.UDATE, ' '), H.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
H.USERNAME AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM CDHDR H
JOIN CDPOS P ON H.OBJECTCLAS = P.OBJECTCLAS AND H.OBJECTID = P.OBJECTID AND H.CHANGENR = P.CHANGENR
JOIN I_MaintenanceOrder O ON O.MaintenanceOrder = H.OBJECTID
WHERE H.OBJECTCLAS = 'ORDER'
AND P.TABNAME = 'AFKO'
AND P.FNAME = 'PRIOK'
UNION ALL
/* Activity 4: Maintenance Order Released */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Released' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0002' /* REL Status */
AND J.INACT = ' '
UNION ALL
/* Activity 5: Material Component Added */
SELECT
CAST(C.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Material Component Added' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(C.CreationDate, ' '), COALESCE(C.CreationTime, '000000')), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrderComponent C
JOIN I_MaintenanceOrder O ON C.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 6: Purchase Requisition Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Purchase Requisition Created' AS Activity,
PR.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
PR.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_PurchasingDocumentItem PR
JOIN I_MaintenanceOrder O ON PR.ServiceMaintenanceOrder = O.MaintenanceOrder
WHERE PR.PurchasingDocumentCategory = 'B' /* Requisition */
UNION ALL
/* Activity 7: Goods Issue Posted */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Goods Issue Posted' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(MD.CreationDate, ' '), MD.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
MD.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaterialDocumentItem MD
JOIN I_MaintenanceOrder O ON MD.MaintenanceOrder = O.MaintenanceOrder
WHERE MD.GoodsMovementType = '261'
UNION ALL
/* Activity 8: Work Order Scheduled (Operation Dispatched) */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Work Order Scheduled' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrderOperation OP ON J.OBJNR = OP.MaintenanceOrderOperationInternalID
JOIN I_MaintenanceOrder O ON OP.MaintenanceOrder = O.MaintenanceOrder
WHERE J.STAT = 'I0019' /* DSP Dispatched Status */
AND J.INACT = ' '
UNION ALL
/* Activity 9: Order Operation Confirmed */
SELECT
CAST(CNF.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Operation Confirmed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(CNF.CreationDate, ' '), CNF.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
CNF.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintOrderConfirmation CNF
JOIN I_MaintenanceOrder O ON CNF.MaintenanceOrder = O.MaintenanceOrder
WHERE CNF.IsReversed = ' '
UNION ALL
/* Activity 10: Measurement Reading Recorded */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Measurement Reading Recorded' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(M.CreationDate, ' '), M.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
M.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MeasurementDocument M
JOIN I_MaintenanceOrder O ON M.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 11: Technical Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = ' '
UNION ALL
/* Activity 12: Technical Completion Reversed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Reversed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = 'X' /* Inactive indicates it was removed/reversed */
AND J.CHIND = 'U' /* Update indicator */
UNION ALL
/* Activity 13: Order Cost Settled */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Cost Settled' AS Activity,
JE.CreationDateTime AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
JE.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_ActualPlanJrnlEntryItem JE
JOIN I_MaintenanceOrder O ON JE.OrderID = O.MaintenanceOrder
WHERE JE.BusinessTransactionType = 'KOAO' /* Settlement */
UNION ALL
/* Activity 14: Business Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Business Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0046' /* CLSD Status */
AND J.INACT = ' '