Su Template de datos de mantenimiento de activos
Su Template de datos de mantenimiento de activos
- Atributos recomendados para recopilar
- Actividades críticas de mantenimiento que debe supervisar
- Indicaciones técnicas para la extracción en SAP PM
Atributos del mantenimiento de activos
| Nombre | Descripción | ||
|---|---|---|---|
| Marca de tiempo del evento EventTimestamp | La fecha y hora exactas en que se produjo la actividad. | ||
| Descripción Registra el momento exacto en que tuvo lugar un evento. En los cambios de estado, procede de la hora de actualización del estado del sistema; en las operaciones, de la hora de confirmación. Las marcas de tiempo precisas son fundamentales para calcular los tiempos de ciclo y los plazos, así como para identificar cuellos de botella entre pasos del proceso como «Planificación» y «Ejecución». Por qué es importante Es necesario para ordenar correctamente los eventos y calcular todos los KPI basados en la duración. Dónde obtenerlo JEST (UDATE/UTIME), AFRU (ISDD/ISDZ), MKPF (CPUDT/CPUTM) Ejemplos 2023-10-15T08:30:00Z2023-10-15T14:45:12Z | |||
| Nombre de la actividad Activity | La tarea específica o el cambio de estado que se produjo. | ||
| Descripción Representa el paso realizado en el proceso de mantenimiento, como «Orden de mantenimiento creada», «Salida de mercancías contabilizada» u «Operación de la orden confirmada». Normalmente se deriva de las tablas de gestión de estados (JEST) para los cambios de estado o de las tablas de transacciones (AFRU para las confirmaciones, MKPF para los movimientos de material). Este atributo determina los nodos del mapa de procesos. Por qué es importante Define el «qué» del proceso, algo esencial para descubrir el flujo y las variantes del proceso. Dónde obtenerlo Derivado de JEST (estado), AFRU (confirmaciones), QMEL (notificaciones) Ejemplos Orden de mantenimiento creadaOrden liberadaFinalizada técnicamente | |||
| Orden de trabajo de mantenimiento MaintenanceWorkOrder | El identificador único de la orden de trabajo de mantenimiento. | ||
| Descripción La orden de trabajo de mantenimiento es el documento central de SAP Plant Maintenance (tabla AUFK, campo AUFNR). Vincula la necesidad de mantenimiento (notificación) con los recursos de ejecución, los materiales y los costes. En el análisis de Process Mining, actúa como ID del caso y permite reconstruir el ciclo de vida completo de un trabajo de mantenimiento, desde su creación hasta su finalización técnica y empresarial. Por qué es importante Es la clave única que vincula todas las actividades, costes y marcas de tiempo, lo que permite visualizar el flujo del proceso. Dónde obtenerlo Tabla SAP AUFK, campo AUFNR Ejemplos 00004001234540012345000040098765 | |||
| Sistema de origen SourceSystem | El sistema del que proceden los datos. | ||
| Descripción Identifica el cliente o la instancia específica de SAP, por ejemplo, «SAP_PM_PROD». En entornos con varios sistemas ERP, este atributo ayuda a distinguir los registros que podrían compartir identificadores idénticos, pero pertenecer a distintas entidades jurídicas o entornos de sistema. Por qué es importante Garantiza la unicidad y la trazabilidad de los datos en entornos con varios sistemas. Dónde obtenerlo Configuración del sistema / registro de extracción Ejemplos SAP_ECC_P01SAP_S4H_100 | |||
| Última actualización de los datos LastDataUpdate | Marca de tiempo de la extracción de datos más reciente. | ||
| Descripción Indica cuándo se actualizaron por última vez los datos en el modelo de datos de Process Mining. Permite a los analistas comprender la actualidad de las conclusiones y ayuda a validar la vigencia de los datos en los Dashboards que supervisan el trabajo pendiente en tiempo real o el cumplimiento de los SLA. Por qué es importante Es fundamental para la gobernanza de datos y para generar confianza en los Dashboards. Dónde obtenerlo Marca de tiempo del ETL Ejemplos 2023-11-01T12:00:00Z | |||
| Centro de mantenimiento MaintenancePlant | El centro logístico responsable del mantenimiento. | ||
| Descripción La planta (WERKS) es la principal unidad organizativa de logística. Separa los datos por instalación física. Este atributo es esencial para comparar el rendimiento entre distintos centros y se asigna a «BusinessUnit» para facilitar el filtrado organizativo de alto nivel en los Dashboards. Por qué es importante Filtro organizativo principal para comparar instalaciones. Dónde obtenerlo Tabla SAP AUFK, campo WERKS Ejemplos 100020003000 | |||
| Centro de trabajo principal MainWorkCenter | El centro de trabajo principal o equipo asignado para ejecutar la orden. | ||
| Descripción El centro de trabajo principal (VAPLZ) representa al grupo de técnicos o máquinas que realizará el trabajo físico. Este atributo se asigna a «Team» y es esencial para analizar la eficiencia de ejecución, como el tiempo medio de reparación por equipo. Ayuda a distinguir entre la mano de obra interna y los contratistas externos. Por qué es importante Permite analizar el rendimiento a nivel de recurso. Dónde obtenerlo Tabla SAP AFKO, campo VAPLZ (o AUFK-VAPLZ según la configuración) Ejemplos MECH_01ELEC_TEAMEXT_CONT | |||
| Estado del sistema SystemStatus | El estado técnico actual de la orden, por ejemplo, REL o TECO. | ||
| Descripción Cadena concatenada o lista de estados activos del sistema, procedentes de JEST, aplicados actualmente a la orden. Entre los valores habituales se incluyen CRTD (creada), REL (liberada), TECO (completada técnicamente) y CLSD (cerrada). Esto ayuda a filtrar los casos abiertos y cerrados en el «Backlog and Work In Progress Monitor». Por qué es importante El indicador principal de la etapa del ciclo de vida de la orden. Dónde obtenerlo Módulo de función SAP STATUS_TEXT_EDIT o tabla JEST Ejemplos REL CNFTECOCRTD MACM | |||
| Fecha objetivo de finalización TargetFinishDate | La fecha programada para completar el trabajo de mantenimiento. | ||
| Descripción Esta fecha, normalmente la fecha básica de finalización (GLTRP), representa el plazo límite de 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 referencia para determinar si una orden de trabajo se completa 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 obtenerlo Tabla SAP AFKO, campo GLTRP Ejemplos 2023-12-012023-12-15 | |||
| Grupo de planificadores ResponsiblePlannerGroup | El grupo de planificadores responsable de procesar la orden. | ||
| Descripción El grupo de planificadores (INGRP) identifica al equipo o departamento específico responsable de planificar el trabajo de mantenimiento. Se asigna a «Department» y es fundamental para el Dashboard de utilización y programación de recursos, ya que permite identificar qué equipos de planificación son cuellos de botella en la fase de preparación. Por qué es importante Identifica al equipo administrativo responsable del proceso de planificación. Dónde obtenerlo Tabla SAP AUFK, campo INGRP Ejemplos M01ELEMEC | |||
| Número de equipo EquipmentNumber | Identificador del activo físico específico objeto del mantenimiento. | ||
| Descripción El número de equipo (EQUNR) identifica la máquina o el activo individual. Al agregar los datos de este campo, los analistas pueden calcular el Dashboard de costes y rendimiento del mantenimiento de activos para encontrar equipos problemáticos que requieren reparaciones frecuentes y costosas. Esto permite realizar análisis de mantenimiento centrado en la fiabilidad. Por qué es importante Vincula el rendimiento del proceso con activos físicos específicos. Dónde obtenerlo Tabla SAP AUFK, campo EQUNR Ejemplos 10004567PUMP-001HVAC-202 | |||
| Número de notificación NotificationNumber | La notificación de mantenimiento que activó 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 plazo completo desde la recepción de la solicitud de mantenimiento hasta su finalización. Sin él, el análisis omite la fase inicial de detección y notificación del ciclo de vida del mantenimiento. Por qué es importante Conecta la fase de ejecución con la fase de solicitud y detección. Dónde obtenerlo 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 del KPI de proporción de órdenes de trabajo de emergencia. Analizar el flujo por prioridad ayuda a determinar si las órdenes de alta prioridad avanzan realmente más rápido por el sistema que los trabajos rutinarios. Por qué es importante Es un factor clave para el análisis de SLA y la identificación de trabajos de emergencia. Dónde obtenerlo Tabla SAP AFKO, campo PRIOK (o AUFK mediante una vista) Ejemplos 1-Emergencia2-Alta3-Media4-Baja | |||
| Tipo de orden de mantenimiento MaintenanceOrderType | Clasifica la orden de trabajo, por ejemplo, preventiva o correctiva. | ||
| Descripción El tipo de orden (AUART) en SAP PM distingue la naturaleza del trabajo de mantenimiento. Entre los tipos habituales se incluyen PM01 (correctivo), PM02 (preventivo) y PM03 (reacondicionamiento). Este atributo es esencial para el «Monitor del impacto de las órdenes de trabajo de emergencia» y para segmentar las variantes del proceso, ya que los flujos preventivos difieren considerablemente de los reactivos. Por qué es importante Es fundamental para segmentar el análisis entre trabajo planificado y no planificado. Dónde obtenerlo Tabla SAP AUFK, campo AUART Ejemplos PM01PM02PM03 | |||
| Ubicación técnica FunctionalLocation | La ubicación jerárquica donde está instalado el activo. | ||
| Descripción Representa el lugar de la estructura técnica donde se realiza la tarea de mantenimiento (TPLNR). A diferencia del equipo, que puede desplazarse, la ubicación técnica es estática. Este atributo respalda el Dashboard de tiempos de ciclo de las inspecciones técnicas al permitir comparar el rendimiento entre distintas áreas de la planta, como la sala de calderas y la línea de embalaje. Por qué es importante Permite analizar el rendimiento del mantenimiento desde una perspectiva espacial y jerárquica. Dónde obtenerlo Tabla SAP IFLOT, campo TPLNR (o mediante AUFK-TPLNR) Ejemplos PLANT1-BLD2-LN01US-TX-DAL-01 | |||
| Usuario que creó el registro 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. Se asigna a «User» en el modelo genérico. Permite analizar la creación manual frente a la automatizada y facilita la auditoría de la actividad «Maintenance Order Created». Por qué es importante Facilita el análisis y la auditoría del comportamiento de los usuarios. Dónde obtenerlo Tabla SAP AUFK, campo ERNAM Ejemplos JSMITHBSERVICEDDAVIS | |||
| Coste total real TotalActualCost | El coste total real contabilizado en la orden de trabajo. | ||
| Descripción Costes agregados de mano de obra, materiales y servicios (de la tabla PMCO). Este atributo respalda el Dashboard de costes y rendimiento del mantenimiento de activos y permite a los responsables conocer el impacto financiero de las actividades de mantenimiento. Es esencial para determinar la rentabilidad de reparar o sustituir los activos. Por qué es importante Aporta la dimensión financiera a los datos operativos del proceso. Dónde obtenerlo Tabla SAP PMCO (suma del tipo de valor 04: real) Ejemplos 150.002500.500.00 | |||
| Es retrabajo IsRework | Indicador que señala si la orden incluyó actividades de retrabajo. | ||
| Descripción Valor booleano calculado que identifica si se produjo un bucle en el proceso, concretamente si la actividad «Maintenance Task Executed» ocurrió más de una vez o si el estado pasó de «Technically Completed» a «In Process». Esto respalda el KPI «Maintenance Rework Rate» y ayuda a identificar problemas de calidad. Por qué es importante Respalda directamente el análisis del control de calidad. Dónde obtenerlo Calculado a partir del flujo del proceso Ejemplos truefalse | |||
| Es trabajo de emergencia IsEmergencyWork | Indicador que señala si la orden de trabajo es de emergencia. | ||
| Descripción Atributo booleano calculado a partir de la prioridad de mantenimiento. Si la prioridad es «1» o el código específico de emergencia configurado, este indicador es verdadero. Simplifica el filtrado y la creación del KPI «Emergency Work Order Ratio» sin lógica compleja en la capa del Dashboard. Por qué es importante Simplifica el filtrado para analizar el mantenimiento reactivo crítico. Dónde obtenerlo Calculado a partir de MaintenancePriority Ejemplos truefalse | |||
| Horas de trabajo planificadas PlannedLaborHours | Las horas de trabajo estimadas para la orden. | ||
| Descripción El trabajo total planificado (ARBEI) de las operaciones de la orden. Compararlo con la duración real de la actividad ayuda a evaluar la precisión de la planificación del mantenimiento en el Dashboard «Planning and Estimation Performance». Por qué es importante Métrica base para analizar la precisión de la planificación. Dónde obtenerlo Tabla SAP AFKO (suma del trabajo planificado de las operaciones) Ejemplos 4.08.512.0 | |||
Actividades de mantenimiento de activos
| Actividad | Descripción | ||
|---|---|---|---|
| Finalización empresarial establecida | Marca el cierre administrativo final de la orden de trabajo e impide nuevas contabilizaciones de costes. Se captura mediante el cambio de estado a CLSD (cerrado). | ||
| Por qué es importante Representa el final absoluto del ciclo de vida de la orden y es fundamental para la precisión de los datos y el cumplimiento de los registros. Dónde obtenerlo Tabla JCDS, estado I0046 (CLSD). Recopilar Se registra cuando el estado se actualiza a CLSD en JCDS Tipo de evento explicit | |||
| Finalización técnica establecida | Marca el trabajo de mantenimiento como finalizado física y técnicamente. Se captura mediante el cambio de estado a TECO (finalizado técnicamente). | ||
| Por qué es importante Es el punto final más importante para el análisis operativo, ya que indica que el activo se ha restaurado y el mantenimiento ha concluido. Dónde obtenerlo Tabla JCDS, estado I0045 (TECO). Recopilar Se registra cuando el estado se actualiza a TECO en JCDS Tipo de evento explicit | |||
| Operación de la orden confirmada | Representa el registro del tiempo real dedicado por un técnico a una operación específica. Captura el trabajo de ejecución realizado sobre el activo. | ||
| Por qué es importante Esta actividad es la principal fuente de datos para calcular el tiempo medio de reparación y los costes de mano de obra. Dónde obtenerlo Tabla AFRU (confirmaciones de órdenes). Recopilar Se registra cuando se ejecuta 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. Se captura explícitamente a partir de la marca de tiempo de creación de la tabla de datos maestros de la orden. | ||
| Por qué es importante Este es el evento central del caso, que marca la transición de la solicitud a la planificación y la ejecución. Dónde obtenerlo Tabla AUFK, campos ERDAT (fecha) y ERFZEIT (hora). Recopilar Se registra cuando se ejecuta la transacción IW31 Tipo de evento explicit | |||
| Orden de mantenimiento liberada | Indica que la planificación ha finalizado y que la orden está liberada para su ejecución. Se captura mediante el seguimiento del 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, algo esencial para medir el plazo de planificación y estimación. Dónde obtenerlo Tabla JCDS (documentos de cambio de estado), estado I0002 (REL). Recopilar Se registra cuando el estado se actualiza a REL en JCDS Tipo de evento explicit | |||
| Salida de mercancías contabilizada | Registra el consumo físico de repuestos o materiales imputado a la orden de trabajo. Se captura a partir de las cabeceras de documentos de material vinculadas a la orden. | ||
| Por qué es importante Confirma que las piezas están disponibles y se han retirado, lo que afecta directamente al análisis del tiempo de espera por disponibilidad de piezas. Dónde obtenerlo Tabla MSEG/MKPF, clase de movimiento 261 (salida de mercancías para la orden). Recopilar Se registra cuando se ejecuta la transacción MIGO/MB1A Tipo de evento explicit | |||
| Componente de material añadido | Registra la incorporación de repuestos o materiales a la lista de componentes de la orden de trabajo. Se captura a partir de la creación de una posición de reserva. | ||
| Por qué es importante Identifica el inicio del ciclo de aprovisionamiento de las piezas necesarias y respalda el Dashboard de plazos de aprovisionamiento de repuestos. Dónde obtenerlo Tabla RESB, campo BDTER (fecha de necesidad) o marca de tiempo de creación. Recopilar Se registra cuando se añade una posición a RESB Tipo de evento explicit | |||
| Costes de la orden liquidados | Indica que los costes acumulados en la orden se han transferido al objeto de controlling, por ejemplo, el centro de coste. Se captura a partir del documento de controlling. | ||
| Por qué es importante Realiza el seguimiento del cierre financiero y respalda el KPI de duración de la liquidación financiera. Dónde obtenerlo Tabla COBK (objeto CO: cabecera del documento), vinculada a la orden. Recopilar Se registra cuando se ejecuta 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, lo que indica que la orden se ha reabierto. Esto crea un bucle de retrabajo en el modelo del proceso. | ||
| Por qué es importante Es el principal indicador del KPI de tasa de retrabajo de mantenimiento y pone de relieve los cierres prematuros o los problemas de calidad. Dónde obtenerlo Tabla JCDS, cambio del estado I0045 (TECO) a inactivo. Recopilar Se registra cuando se desactiva el estado TECO Tipo de evento explicit | |||
| Lectura de medición registrada | Registra la introducción de un documento de medición, como una lectura de contador o una evaluación del estado. A menudo actúa como evento de inspección técnica. | ||
| Por qué es importante Es esencial para el mantenimiento basado en el estado y el seguimiento de los tiempos de ciclo de las inspecciones técnicas. Dónde obtenerlo Tabla IMRG (documento de medición), vinculada al equipo o a la ubicación técnica. Recopilar Se registra cuando se crea 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 activa una orden de trabajo. Capturada a partir de la marca de tiempo de creación de la tabla QMEL, esta actividad vincula la solicitud inicial con la orden de ejecución. | ||
| Por qué es importante Esta actividad establece el inicio del proceso de mantenimiento de extremo a extremo y permite calcular los tiempos de reacción entre la detección de la avería y la generación de la orden. Dónde obtenerlo Tabla QMEL, campos ERDAT (fecha de creación) y MZEIT (hora). Vinculada a la orden mediante QMEL-AUFNR. Recopilar Se registra cuando se crea el registro en la tabla QMEL Tipo de evento explicit | |||
| Orden de trabajo programada | Indica la programación específica de las operaciones para una capacidad o fecha determinadas. Se infiere a partir de la asignación del estado Dispatch a las operaciones. | ||
| Por qué es importante Mide la eficiencia de la asignación de recursos y respalda el Dashboard de utilización y programación de recursos. Dónde obtenerlo Tabla JCDS (documentos de cambio de estado) para operaciones (ObjType OV), estado I0009 (DSPT). Recopilar Comparar el campo de estado antes y después Tipo de evento inferred | |||
| Prioridad de mantenimiento modificada | Registra una actualización del nivel de prioridad de la orden de trabajo, como su escalamiento a Emergencia. Se deriva de los documentos de modificación 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 respalda el monitor del impacto de las órdenes de trabajo de emergencia al identificar los escalados reactivos. Dónde obtenerlo Tabla CDPOS/CDHDR para la clase de objeto AUFTRAG, campo PRIOK. Recopilar Se registra en los documentos de modificación (CDPOS) Tipo de evento explicit | |||
| Solicitud de compra creada | Indica que se ha generado una solicitud de aprovisionamiento externo o de servicios. Esto conecta la orden de mantenimiento interna con la cadena de suministro externa. | ||
| Por qué es importante Es esencial para analizar los retrasos causados por proveedores externos o por el aprovisionamiento de materiales no disponibles en stock. Dónde obtenerlo Tabla EBAN, vinculada mediante la imputación a AUFK-AUFNR. Recopilar Se registra cuando se crea el registro en EBAN Tipo de evento explicit | |||
Guías de extracción
Pasos
Identifique la interfaz de origen de datos: determine cómo accederá a la interfaz SQL de SAP S/4HANA. Normalmente, esto se hace mediante SAP HANA Studio, ABAP Development Tools (ADT) en Eclipse o una cadena de conexión DBaaS si la base de datos HANA está expuesta a su capa de análisis.
Verifique la disponibilidad de las vistas CDS: asegúrese de que las vistas estándar Core Data Services (CDS) estén activas en su sistema S/4HANA. Las vistas principales necesarias son I_MaintenanceOrder, I_MaintenanceOrderOperation, I_MaintenanceNotification, I_MaintOrderConfirmation e I_MeasurementDocument. También necesitará acceso a la tabla de historial de estados del sistema JCDS y a las tablas de documentos de modificación (CDHDR/CDPOS) para reconstruir el historial completo de eventos, ya que las vistas CDS estándar a menudo solo muestran el estado actual.
Prepare el entorno SQL: abra su editor SQL. Asegúrese de que su usuario tenga permisos SELECT sobre las vistas SQL DDL, normalmente en el esquema SAPABAP1 o similar, correspondientes a los artefactos indicados.
Ejecute la consulta de extracción: copie el script SQL proporcionado en su editor. Sustituya el marcador [Your Client Number] por el ID específico de su cliente SAP, por ejemplo, 100. Si filtra por un intervalo de fechas concreto, actualice los filtros EventTimestamp de las cláusulas WHERE.
Transforme los datos: la consulta gestiona la mayoría de las transformaciones, como la conversión de marcas de tiempo y la asignación de códigos de estado a texto legible. Sin embargo, asegúrese de que la columna EventTimestamp tenga el formato ISO 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 CSV o Parquet. Asegúrese de utilizar la codificación UTF-8 para admitir caracteres especiales en los nombres de usuario o las descripciones.
Valide la asignación de columnas: abra una muestra de la exportación y asegúrese de que las columnas MaintenanceWorkOrder, Activity y EventTimestamp estén completas. Compruebe que la columna Activity contenga las cadenas específicas indicadas en los requisitos, por ejemplo, Maintenance Order Created y Goods Issue Posted.
Cargue los datos en ProcessMind: importe el archivo plano validado en ProcessMind. Asigne la columna Activity al campo Activity ID, MaintenanceWorkOrder al campo Case ID y EventTimestamp al campo Timestamp.
Configuración
- Filtro de cliente: Los sistemas SAP son multicliente. Filtre siempre por
MANDToClient(por ejemplo, '100') para evitar datos duplicados o filtraciones entre clientes. - Rango de fechas: Se recomienda filtrar
CreationDatede la orden de mantenimiento para incluir los últimos 6 a 12 meses. Consultar todo el historial deJCDS(Status) oCDPOS(Change Documents) sin filtros de fecha puede provocar tiempos de espera agotados. - Clave de idioma: La consulta utiliza el inglés ('E') de forma predeterminada. Si su organización utiliza otro idioma principal para las descripciones de texto, ajuste el filtro de idioma.
- Acceso al sistema: Se requiere acceso al esquema de ABAP Core Data Services o a las tablas HANA subyacentes. El acceso a las tablas sin procesar JCDS y CDHDR es fundamental para analizar el historial 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 filtrar
MaintenanceOrderType(por ejemplo, solo PM01 y PM02) si desea analizar únicamente 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
- Confirme que dispone de acceso de lectura directa a AUFK, AFVC, JEST, QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG y a las tablas aplicables de documentos de modificación y documentos de controlling. Confirme los nombres físicos exactos y las asignaciones de campos en su base de datos SAP, ya que la disponibilidad de los campos y las estructuras de las tablas replicadas varían según la implementación.
- Configure la conexión de extracción, las credenciales, la fecha de inicio y la fecha de fin de la extracción, así como los filtros específicos de la empresa. Utilice inicialmente un periodo móvil de tres a seis meses para la validación y amplíelo después de comprobar el rendimiento y la integridad.
- Extraiga los atributos de cabecera de la orden desde AUFK, los atributos de operación desde AFVC y los registros de estado desde JEST. Una los registros relacionados con la orden mediante el campo de número de orden utilizado en su esquema SAP. JEST es una tabla de estado actual en muchas implementaciones de SAP, por lo que las marcas de tiempo históricas de los estados requieren una fuente de historial de estados o de documentos de modificación. Configure [Your status history table] y sus campos de marca de tiempo si JEST no conserva el historial de cambios de estado.
- Extraiga la creación de notificaciones desde QMEL, la creación de componentes desde RESB, la creación de solicitudes de compra desde EBAN, la información de salidas de mercancías desde MSEG y MKPF, las confirmaciones desde AFRU, las lecturas de medición desde IMRG y los registros de liquidación de controlling desde [Your controlling document table]. Extraiga los cambios de prioridad desde [Your order change document table] y [Your change document item table]. Estas fuentes son necesarias porque AUFK, AFVC y JEST por sí solas no pueden proporcionar las 14 actividades solicitadas.
- Normalice todas las marcas de tiempo de origen a una única zona horaria y un único tipo de datos de marca de tiempo. Convierta los campos de fecha y hora de SAP, o los campos de marca de tiempo de la base de datos, en EventTimestamp. Conserve la precisión disponible de la marca de tiempo de origen. Aplique el intervalo de extracción configurado a EventTimestamp, no solo a la fecha de creación de la orden.
- Cree una fila de evento por cada ocurrencia de origen. No dependa de ProcessMind para inferir eventos. Asigne el valor exacto de Activity especificado en la consulta, complete MaintenanceWorkOrder, EventTimestamp, SourceSystem, LastDataUpdate y los atributos recomendados disponibles, y conserve los identificadores de origen cuando sean útiles para investigar duplicados.
- Elimine duplicados únicamente cuando se trate de eventos de origen idénticos mediante claves de origen estables. No agrupe cambios de estado, confirmaciones, movimientos de materiales, lecturas de medición o documentos de liquidación independientes que hayan ocurrido en momentos distintos. Si varios registros de origen representan un mismo evento empresarial, documente la precedencia de la fuente seleccionada en la especificación de extracción.
- Valide que los 14 valores de Activity aparezcan como filas explícitas, que cada fila tenga un identificador de caso y una marca de tiempo, y que las marcas de tiempo se encuentren dentro del periodo de extracción solicitado. Compare los recuentos con los informes de SAP o con los recuentos de las tablas de origen aplicando los mismos filtros.
- Exporte el resultado como CSV UTF-8 u otro formato de registro de eventos compatible con ProcessMind. Utilice una fila por evento, incluya las columnas obligatorias con los nombres configurados exactos, conserve las marcas de tiempo ISO 8601 cuando sea compatible y cargue el archivo o configure la conexión de base de datos en ProcessMind. Establezca MaintenanceWorkOrder como identificador del caso, Activity como columna de actividad y EventTimestamp como columna de marca de tiempo.
Configuración
- Tablas de origen y asignaciones: AUFK proporciona los datos de cabecera de la orden, AFVC proporciona los datos de las operaciones y JEST proporciona los datos de estado del sistema. También se requieren QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG, las fuentes de documentos de modificación y las fuentes de documentos de controlling para generar las 14 actividades. Verifique los nombres exactos de los campos en su base de datos SAP antes de ejecutar la consulta.
- Columnas de salida obligatorias: MaintenanceWorkOrder, Activity, EventTimestamp, SourceSystem y LastDataUpdate deben estar presentes en cada fila de evento.
- Columnas de salida recomendadas: MaintenanceOrderType, MaintenancePriority, EquipmentNumber, FunctionalLocation, MaintenancePlant, ResponsiblePlannerGroup, MainWorkCenter, NotificationNumber, TargetFinishDate, CreatedByUser y SystemStatus deben completarse cuando estén disponibles.
- Rango de fechas: Comience con un periodo de tres a seis meses. Utilice un límite inicial inclusivo y uno final exclusivo para evitar eventos duplicados entre ejecuciones incrementales. Para cargas históricas, divida la extracción por mes u otro periodo compatible con la base de datos.
- Filtros: Configure [Company Code filter], [Order Type filter], [Maintenance Plant filter], [Notification Type filter] y [Document Type filter] según el alcance de los informes. No aplique filtros que excluyan órdenes sin notificaciones, operaciones, componentes, solicitudes, confirmaciones, mediciones o documentos de liquidación.
- Historial de estados: JEST suele representar las asignaciones de estado, pero los cambios históricos de estado pueden requerir [Your status history table] o documentos de modificación. Configure la fuente que contenga la marca de tiempo del cambio de estado y el historial de transiciones.
- Historial de prioridades: Los cambios de prioridad requieren [Your order change document table] y [Your change document item table], junto con el identificador del objeto, el nombre del campo, el valor anterior, el valor nuevo y la marca de tiempo del cambio correspondientes.
- Valor del sistema de origen: Sustituya [Your SAP system identifier] por el nombre estable del sistema de origen que utiliza su organización.
- Última actualización de datos: Sustituya [Your extraction timestamp] por la marca de tiempo generada al inicio o al final de la ejecución de extracción y utilice el mismo valor en todas las filas de esa ejecución.
- Rendimiento: Indexe o particione las columnas utilizadas en uniones y filtros cuando esté permitido, limite la ventana de extracción, seleccione solo las columnas necesarias, procese los periodos extensos por lotes y materialice las extracciones intermedias de las fuentes cuando las uniones directas entre esquemas sean lentas.
- Requisitos previos: Conectividad con la base de datos, autorización de lectura para todas las tablas de origen configuradas, acceso a los datos pertinentes de Plant Maintenance, Materials Management, Controlling y mediciones, así como autorización para extraer datos operativos. Confirme las restricciones de replicación o licenciamiento de la plataforma de base de datos.
a Consulta de ejemplo sql
WITH
params AS (
SELECT
CAST('[Start date and time]' AS TIMESTAMP) AS start_ts,
CAST('[End date and time]' AS TIMESTAMP) AS end_ts,
CAST('[Your SAP system identifier]' AS VARCHAR(100)) AS source_system,
CAST('[Your extraction timestamp]' AS TIMESTAMP) AS last_data_update
),
order_base AS (
SELECT
a.[Order number field] AS MaintenanceWorkOrder,
a.[Order type field] AS MaintenanceOrderType,
a.[Priority field] AS MaintenancePriority,
a.[Equipment field] AS EquipmentNumber,
a.[Functional location field] AS FunctionalLocation,
a.[Maintenance plant field] AS MaintenancePlant,
a.[Planner group field] AS ResponsiblePlannerGroup,
a.[Main work center field] AS MainWorkCenter,
a.[Notification number field] AS NotificationNumber,
a.[Target finish date field] AS TargetFinishDate,
a.[Created by field] AS CreatedByUser,
a.[System status field] AS SystemStatus,
a.[Creation date field] AS OrderCreationDate,
a.[Creation time field] AS OrderCreationTime
FROM AUFK a
WHERE a.[Order number field] IS NOT NULL
AND a.[Company code field] = '[Your company code filter]'
),
base_events AS (
SELECT
o.MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
CAST(q.[Notification creation timestamp field] AS TIMESTAMP) AS EventTimestamp,
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN QMEL q ON q.[Notification number field] = o.NotificationNumber
CROSS JOIN params p
WHERE q.[Notification creation timestamp field] >= p.start_ts
AND q.[Notification creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Order Created',
CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o CROSS JOIN params p
WHERE CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP) >= p.start_ts
AND CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP) < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Priority Changed',
CAST(c.[Change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, c.[New priority value field], o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN [Your order change document table] h ON h.[Order object identifier field] = o.MaintenanceWorkOrder
JOIN [Your change document item table] c ON c.[Change document number field] = h.[Change document number field]
CROSS JOIN params p
WHERE c.[Changed field name field] = '[Your priority field name]'
AND CAST(c.[Change timestamp field] AS TIMESTAMP) >= p.start_ts
AND CAST(c.[Change timestamp field] AS TIMESTAMP) < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Order Released',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'REL'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'REL'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Material Component Added',
CAST(r.[Reservation creation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN RESB r ON r.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE r.[Reservation line creation timestamp field] >= p.start_ts
AND r.[Reservation line creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Purchase Requisition Created',
CAST(e.[Purchase requisition creation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN EBAN e ON e.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE e.[Purchase requisition creation timestamp field] >= p.start_ts
AND e.[Purchase requisition creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Goods Issue Posted',
CAST(m.[Material document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN MSEG m ON m.[Order number field] = o.MaintenanceWorkOrder
JOIN MKPF k ON k.[Material document number field] = m.[Material document number field]
AND k.[Material document year field] = m.[Material document year field]
CROSS JOIN params p
WHERE m.[Movement type field] IN ('201', '261')
AND k.[Material document timestamp field] >= p.start_ts
AND k.[Material document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Work Order Scheduled',
CAST(v.[Dispatch status timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN AFVC v ON v.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE v.[Dispatch status field] = '[Your dispatch status value]'
AND v.[Dispatch status timestamp field] >= p.start_ts
AND v.[Dispatch status timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Order Operation Confirmed',
CAST(f.[Confirmation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN AFRU f ON f.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE f.[Confirmation timestamp field] >= p.start_ts
AND f.[Confirmation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Measurement Reading Recorded',
CAST(i.[Measurement document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN IMRG i ON i.[Equipment field] = o.EquipmentNumber
CROSS JOIN params p
WHERE i.[Measurement document timestamp field] >= p.start_ts
AND i.[Measurement document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Technical Completion Set',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'TECO'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'TECO'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Technical Completion Reversed',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, s.[Resulting system status field]
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Previous status code field] = 'TECO'
AND s.[Status code field] <> 'TECO'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Order Cost Settled',
CAST(c.[Controlling document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN [Your controlling document table] c ON c.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE c.[Controlling document timestamp field] >= p.start_ts
AND c.[Controlling document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Business Completion Set',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'CLSD'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'CLSD'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
)
SELECT
e.MaintenanceWorkOrder,
e.Activity,
e.EventTimestamp,
p.source_system AS SourceSystem,
p.last_data_update AS LastDataUpdate,
e.MaintenanceOrderType,
e.MaintenancePriority,
e.EquipmentNumber,
e.FunctionalLocation,
e.MaintenancePlant,
e.ResponsiblePlannerGroup,
e.MainWorkCenter,
e.NotificationNumber,
e.TargetFinishDate,
e.CreatedByUser,
e.SystemStatus
FROM base_events e
CROSS JOIN params p
WHERE e.MaintenanceWorkOrder IS NOT NULL
AND e.EventTimestamp IS NOT NULL
AND e.EventTimestamp >= p.start_ts
AND e.EventTimestamp < p.end_ts
ORDER BY e.MaintenanceWorkOrder, e.EventTimestamp, e.Activity; ¿Listo para comenzar?
Utilice estos recursos para comenzar a mapear sus flujos de trabajo de mantenimiento e identificar oportunidades de ahorro. Nuestro marco garantiza que disponga de la estructura de datos adecuada para lograr una transparencia total de sus operaciones.
Elimine hoy los cuellos de botella del mantenimiento de activos en SAP
Reduzca ahora un 30 % el tiempo de su ciclo de mantenimiento
No se requiere tarjeta de crédito... Configuración en 5 minutos