Su Template de datos para la planificación de producción
Su Template de datos para la planificación de producción
- Atributos recomendados para analizar la planificación de producción
- Actividades clave de planificación de producción que conviene seguir
- Guía detallada para extraer datos de SAP S/4HANA
Atributos de planificación de producción
| Nombre | Descripción | ||
|---|---|---|---|
| Actividad Activity | Nombre del evento o la tarea específica que tuvo lugar en un momento determinado del proceso de planificación de la producción. | ||
| Descripción Este atributo registra los distintos pasos e hitos del ciclo de vida de la orden de producción. Algunos ejemplos son «Orden de producción creada», «Disponibilidad de materiales comprobada», «Producción iniciada» y «Orden cerrada financieramente». Cada actividad representa una acción específica o un cambio de estado registrado en el sistema. Analizar la secuencia y la frecuencia de estas actividades es fundamental en Process Mining. Permite visualizar el flujo del proceso, detectar desviaciones respecto del procedimiento estándar e identificar las actividades que provocan retrasos o requieren repetir tareas con frecuencia, como «Plan de producción ajustado». Por qué es importante Define los pasos del proceso y permite descubrir y visualizar el flujo de trabajo real de producción y sus variaciones. Dónde obtenerlo Se obtiene a partir de cambios de estado en tablas como JEST y JCDS, de los códigos de transacción utilizados (por ejemplo, CO01 para crear) o de registros de confirmación específicos en AFRU. Ejemplos Orden de producción creadaOrden de producción liberadaProducción iniciadaConfirmación final registradaEntrada de mercancías registrada | |||
| Hora de inicio StartTime | Marca de tiempo que indica cuándo comenzó una actividad o un evento específico. | ||
| Descripción Este atributo proporciona la fecha y la hora de cada evento registrado en el proceso de producción. Es la base temporal de todos los análisis de procesos basados en el tiempo. La hora de inicio es fundamental para calcular la duración entre actividades, medir el tiempo de ciclo total de una orden de producción y comprender cuándo ocurren los eventos. Permite analizar cuellos de botella, tiempos de espera y cumplimiento del cronograma al comparar las marcas de tiempo reales con las fechas planificadas. Por qué es importante Aporta el contexto cronológico de todos los eventos y permite analizar el rendimiento del proceso, las duraciones y los cuellos de botella. Dónde obtenerlo Esta información suele encontrarse en las tablas de documentos de modificación (CDHDR/CDPOS) para los cambios de estado, en las tablas de confirmación (AFRU) para los pasos de ejecución y en las tablas de cabecera (AFKO) para las fechas de creación. Ejemplos 2023-10-26T09:00:00Z2023-10-26T14:30:00Z2023-10-27T08:15:00Z | |||
| Orden de producción ProductionOrder | Identificador único de una orden de producción, que sirve como identificador principal del caso en el proceso de planificación de la producción. | ||
| Descripción El número de orden de producción es una clave única que genera SAP S/4HANA para gestionar y hacer seguimiento de todas las actividades relacionadas con la fabricación de una cantidad específica de un producto. Vincula todos los eventos relacionados, desde la planificación y la liberación hasta la ejecución y la liquidación final. En Process Mining, este atributo es esencial para agrupar todos los eventos relacionados en una única instancia de proceso de principio a fin. El análisis por orden de producción permite medir KPI clave, como el tiempo de ciclo y el cumplimiento del cronograma, e identificar cuellos de botella que afectan a determinadas series de producción. Por qué es importante Es el atributo fundamental que conecta todos los pasos del proceso y permite analizar cada caso de producción de principio a fin. Dónde obtenerlo Es el número de orden de producción, que suele encontrarse en tablas de SAP como AFKO (campo AUFNR) y AFPO. Ejemplos 100056710008341001299 | |||
| Sistema de origen SourceSystem | Sistema del que se extrajeron los datos de planificación de la producción. | ||
| Descripción Este atributo identifica el origen de los datos, algo esencial en entornos con varios sistemas integrados. En este proceso, normalmente corresponde a una instancia específica de SAP S/4HANA. En un contexto más amplio de análisis de datos, conocer el sistema de origen ayuda a garantizar la integridad de los datos y aporta el contexto necesario al combinar datos de distintas fuentes. Es un metadato fundamental para la gobernanza de datos y la trazabilidad. Por qué es importante Aporta metadatos esenciales para la gobernanza de datos y permite conocer con claridad el origen y el contexto de los datos del proceso. Dónde obtenerlo Suele ser un valor estático que se añade durante la extracción de datos para identificar el cliente y el ID del sistema (SID) de SAP S/4HANA. Ejemplos S4P_100S4H_PRD_200S4Q_300 | |||
| Última actualización de datos LastDataUpdate | Marca de tiempo que indica cuándo se actualizaron o extrajeron por última vez los datos del sistema de origen. | ||
| Descripción Este atributo registra la fecha y la hora de la extracción de datos más reciente. Es un metadato fundamental que informa sobre la actualidad de los datos analizados. Conocer la hora de la última actualización es esencial para interpretar correctamente el análisis. Permite saber si se está consultando información en tiempo real o una instantánea de un momento concreto, lo que influye en la relevancia de los hallazgos y de las decisiones basadas en los datos. Por qué es importante Permite saber si los datos están actualizados, algo fundamental para tomar decisiones empresariales precisas y pertinentes. Dónde obtenerlo Esta marca de tiempo se genera y se añade durante el proceso de extracción, transformación y carga de datos (ETL). Ejemplos 2024-05-21T02:00:00Z2024-05-22T02:00:00Z2024-05-23T02:00:00Z | |||
| Centro Plant | Instalación o ubicación donde se ejecuta la orden de producción. | ||
| Descripción El centro es una unidad organizativa de SAP que representa una planta o instalación de producción. Cada orden de producción se asigna a un centro específico donde se llevan a cabo las actividades de fabricación. Este atributo es fundamental para comparar distintas ubicaciones de fabricación. Al segmentar los datos del proceso por centro, las organizaciones pueden comparar el rendimiento, detectar problemas o buenas prácticas específicos de cada planta y comprender las diferencias regionales en eficiencia, capacidad o cumplimiento de los estándares. Por qué es importante Permite comparar el rendimiento de distintos centros de producción, detectar y compartir buenas prácticas o abordar problemas específicos de cada ubicación. Dónde obtenerlo Se encuentra en la tabla de cabecera de la orden de producción AFKO (campo DWERK). Ejemplos 100017102000 | |||
| Centro de trabajo WorkCenter | Máquina, grupo de máquinas o área de montaje específica responsable de una operación. | ||
| Descripción Un centro de trabajo representa una unidad operativa específica dentro de un centro donde se realiza un paso de producción. Puede ser una máquina, una línea de producción o un grupo de personas. Analizar los datos del proceso por centro de trabajo es clave para detectar cuellos de botella de capacidad y optimizar la asignación de recursos. Permite saber qué centros de trabajo están sobrecargados o infrautilizados y dónde se producen retrasos con mayor frecuencia durante la ejecución de la producción. Esta información es fundamental para el Dashboard de identificación de cuellos de botella de capacidad. Por qué es importante Ayuda a identificar las máquinas o líneas de producción que actúan como cuellos de botella y permite mejorar de forma específica la capacidad y el uso de los recursos. Dónde obtenerlo Se encuentra en los datos de operaciones de una orden de producción, en la tabla AFVC (campo ARBPL). Ejemplos WC-ASSEMBLY-01WC-MILLING-05WC-PACKING | |||
| Estado de la orden OrderStatus | Estado actual de procesamiento de la orden de producción, como creada, liberada o completada técnicamente. | ||
| Descripción El estado de la orden indica la etapa general en la que se encuentra la orden de producción dentro de su ciclo de vida. Resume los distintos estados del sistema y de usuario asignados a la orden. Entre los estados habituales se encuentran CRTD (creada), REL (liberada), CNF (confirmada), TECO (completada técnicamente) y CLSD (cerrada). Analizar el estado actual de las órdenes ayuda a comprender el trabajo en curso. En Process Mining, el seguimiento de las transiciones entre estos estados a lo largo del tiempo genera el registro de actividades y permite ver en detalle el flujo del proceso y el tiempo transcurrido en cada etapa. Por qué es importante Ofrece una visión general de la etapa del ciclo de vida de una orden y es fundamental para obtener la secuencia de actividades en Process Mining. Dónde obtenerlo Se obtiene del estado del sistema almacenado en la tabla JEST, vinculado mediante el número de objeto de AFKO (campo OBJNR). Ejemplos CRTDRELTECOCLSD | |||
| Fecha de finalización planificada PlannedEndDate | Fecha prevista para completar la orden de producción según el plan inicial. | ||
| Descripción La fecha de finalización planificada es la fecha límite prevista para completar todas las actividades de producción de una orden. Se determina durante la fase de programación de la planificación de la producción. Este atributo es esencial para medir el cumplimiento del cronograma. Al comparar la fecha de finalización planificada con la marca de tiempo real de finalización, las organizaciones pueden calcular el KPI de tasa de cumplimiento del cronograma de producción e identificar las órdenes que se retrasan. Este análisis es fundamental para mejorar la precisión de la planificación y la satisfacción del cliente. Por qué es importante Sirve como referencia para medir el cumplimiento del cronograma y evaluar la precisión de la planificación y la eficiencia de la ejecución. Dónde obtenerlo Se encuentra en la tabla de cabecera de la orden de producción AFKO (campo GLTRP). Ejemplos 2023-11-152023-12-012024-01-20 | |||
| Número de material MaterialNumber | Identificador único del producto que se fabrica en la orden de producción. | ||
| Descripción El número de material especifica el artículo que se debe fabricar según la orden de producción. Vincula el proceso de producción con los datos maestros del material, incluida su lista de materiales (BOM) y la información de la hoja de ruta. Analizar el proceso por número de material ayuda a detectar si ciertos productos son más propensos a sufrir retrasos, retrabajos o escasez de materiales. Esto permite optimizar el proceso para cada producto, por ejemplo, ajustando los parámetros de planificación o mejorando la cadena de suministro de componentes específicos. Por qué es importante Permite filtrar y analizar los datos según el producto fabricado para detectar ineficiencias o cuellos de botella específicos de cada producto. Dónde obtenerlo Se encuentra en la tabla de posiciones de la orden de producción AFPO (campo MATNR). Ejemplos RM-1001FG-2050SA-3100-B | |||
| A tiempo IsOnTime | Indicador que señala si la orden de producción se completó en la fecha de finalización planificada o antes. | ||
| Descripción Este atributo booleano calculado mide directamente el cumplimiento del cronograma al comparar la fecha real de finalización con la fecha de finalización planificada. Ofrece un resultado claro, de sí o no, sobre la puntualidad de cada orden de producción. Este atributo es la base del KPI de tasa de cumplimiento del cronograma de producción. Facilita el análisis al permitir segmentar las órdenes entre puntuales y retrasadas, y ayuda a identificar las características o las rutas del proceso que suelen asociarse con los retrasos. Por qué es importante Ofrece una medida clara y sencilla del cumplimiento del cronograma de cada orden y facilita el análisis de las causas raíz de los retrasos. Dónde obtenerlo Campo calculado. Se establece en verdadero si la marca de tiempo de la actividad «Orden completada técnicamente» es anterior o igual a la fecha de finalización planificada. Ejemplos truefalse | |||
| Cantidad confirmada TotalConfirmedQuantity | Cantidad total del material cuya producción se ha confirmado para la orden. | ||
| Descripción Este atributo representa la cantidad acumulada de productos terminados o semielaborados registrada mediante confirmaciones de producción. Permite hacer seguimiento del avance de la orden respecto de la cantidad prevista. Comparar la cantidad confirmada con la cantidad planificada ayuda a supervisar el avance de la producción y detectar problemas de rendimiento o discrepancias. Es una medida fundamental de la producción obtenida y se utiliza en distintos cálculos de rendimiento, como las tasas de desechos y de eficiencia. Por qué es importante Registra la producción real de la orden, algo esencial para supervisar el avance, calcular el rendimiento e identificar discrepancias. Dónde obtenerlo Se obtiene de los registros de confirmación de AFRU (campo LMNGA para la cantidad producida). Ejemplos 9801000501200 | |||
| Es retrabajo IsRework | Indicador que señala si la orden de producción requirió retrabajo o ajustes importantes del plan después de su inicio. | ||
| Descripción Este atributo booleano identifica las órdenes de producción que requirieron acciones correctivas o cambios en el plan una vez iniciada la producción. Puede activarse por una actividad explícita de retrabajo o por un evento «Plan de producción ajustado» posterior a «Producción iniciada». Este indicador es fundamental para calcular el KPI de tasa de retrabajo de producción y para el Dashboard de retrabajos y revisiones de producción. Permite filtrar y analizar fácilmente los casos problemáticos, lo que ayuda a descubrir las causas raíz de los problemas de calidad o las desviaciones del proceso que generan retrabajos costosos. Por qué es importante Aísla los casos con retrabajo para analizar de forma específica cómo reducir los problemas de calidad, las desviaciones del proceso y los costes asociados. Dónde obtenerlo Campo calculado. Se establece en verdadero si, dentro del mismo caso, la actividad «Plan de producción ajustado» ocurre después de «Producción iniciada» o si se utiliza un tipo de orden específico para retrabajo. Ejemplos truefalse | |||
| Estado de disponibilidad de materiales MaterialAvailabilityStatus | Indica si están disponibles todos los materiales necesarios para la orden de producción. | ||
| Descripción Este estado refleja el resultado de la comprobación de disponibilidad de materiales de una orden de producción. Puede indicar que todos los materiales están disponibles, que faltan algunos o que no se ha realizado la comprobación. El estado «escasez» es una señal clave de posibles retrasos. Este atributo es fundamental para el Dashboard de análisis del impacto de la escasez de materiales. Permite cuantificar los retrasos causados por la falta de materiales al relacionar el estado de escasez con el tiempo transcurrido entre la liberación de la orden y el inicio de la producción. Mejorar este indicador es clave para que la producción fluya mejor. Por qué es importante Explica directamente los retrasos entre la liberación de la orden y el inicio de la producción, y ayuda a cuantificar el impacto de los problemas de la cadena de suministro en la fabricación. Dónde obtenerlo Es un estado que suele derivarse del estado colectivo de los componentes materiales. Puede encontrarse en el estado del sistema (JEST), con estados como «MSPT» (escasez de material). Ejemplos DisponibleEscasezSin comprobar | |||
| Fecha de inicio planificada PlannedStartDate | Fecha prevista para iniciar la orden de producción según el plan inicial. | ||
| Descripción La fecha de inicio planificada es la fecha prevista para comenzar las actividades de producción de una orden. Es uno de los resultados clave del proceso de programación. Este atributo sirve como referencia inicial para analizar el cumplimiento del cronograma. Comparar la fecha de inicio planificada con la hora de inicio real ayuda a comprender los retrasos iniciales, como los causados por la preparación de materiales o la liberación de la orden, que pueden repercutir en todo el calendario de producción. Por qué es importante Sirve como referencia para medir el cumplimiento de la hora de inicio y detectar retrasos en las etapas previas a la producción, como la liberación de la orden y la disponibilidad de materiales. Dónde obtenerlo Se encuentra en la tabla de cabecera de la orden de producción AFKO (campo GSTRP). Ejemplos 2023-11-102023-11-252024-01-15 | |||
| Hora de finalización EndTime | Marca de tiempo que indica cuándo terminó una actividad o un evento específico. | ||
| Descripción Este atributo proporciona la fecha y la hora de finalización de cada evento registrado. Junto con la hora de inicio, permite determinar la duración de las actividades. La hora de finalización es fundamental para calcular el tiempo de procesamiento exacto de cada actividad, un dato clave para analizar la capacidad y el uso de los recursos. Ayuda a distinguir el tiempo de trabajo activo del tiempo inactivo o de espera y permite identificar cuellos de botella con mayor precisión. Por qué es importante Permite calcular la duración exacta de las actividades, algo esencial para analizar la eficiencia de los recursos e identificar cuellos de botella en el proceso. Dónde obtenerlo Se encuentra en las tablas de confirmación (AFRU) para los pasos de ejecución. En otros eventos, puede coincidir con la hora de inicio si el evento es instantáneo. Ejemplos 2023-10-26T09:45:00Z2023-10-26T15:00:00Z2023-10-27T10:30:00Z | |||
| Prioridad de producción ProductionPriority | Código o valor asignado a una orden de producción para indicar su urgencia o importancia. | ||
| Descripción Los planificadores utilizan la prioridad de producción para ordenar y priorizar las órdenes, especialmente cuando los recursos son limitados. En principio, las órdenes de mayor prioridad deben procesarse antes que las de menor prioridad. Analizar este atributo ayuda a comprobar si se respetan las prioridades asignadas en la planta de producción. El Dashboard de coherencia en la priorización de la producción compara la secuencia de procesamiento con la prioridad asignada para detectar incoherencias. Esto puede mejorar la disciplina de programación y la coordinación entre la planificación y la ejecución. Por qué es importante Ayuda a determinar si la programación de la producción respeta las prioridades empresariales y si las órdenes críticas se aceleran según lo previsto. Dónde obtenerlo A menudo es un campo personalizado o se basa en otros parámetros de la orden. La ubicación específica depende de la configuración. Ejemplos AltaMediaBaja15 | |||
| Tipo de orden OrderType | Clasificación de la orden de producción que define su propósito y controla su procesamiento. | ||
| Descripción El tipo de orden es un elemento clave de configuración en SAP PP que determina cómo procesa el sistema una orden de producción. Controla los rangos de números, la selección de datos maestros, los parámetros de cálculo de costes y las reglas de liquidación. Algunos ejemplos son las órdenes de producción estándar, las órdenes de retrabajo y las órdenes de prototipos. Analizar el proceso por tipo de orden permite comparar el rendimiento y el flujo de distintos tipos de procesos de producción. Esto puede revelar si las órdenes de retrabajo tardan mucho más o si ciertos tipos de orden requieren más ajustes de planificación, y aportar información útil para mejorar procesos específicos. Por qué es importante Permite segmentar el análisis según el propósito empresarial de la orden y comparar la producción estándar con el retrabajo y otros procesos. Dónde obtenerlo Se encuentra en la tabla de cabecera de la orden de producción AFKO (campo AUART). Ejemplos PP01PP03ZP01 | |||
| Usuario User | ID del sistema del usuario que creó, modificó o confirmó un evento de la orden de producción. | ||
| Descripción Este atributo registra el ID de usuario de SAP asociado a una transacción o un cambio de estado específico, como liberar una orden o registrar una confirmación. Permite rastrear las acciones realizadas en el sistema. Analizar las actividades por usuario ayuda a comprender cómo se distribuye la carga de trabajo, detectar necesidades de formación y garantizar el cumplimiento de los procedimientos. Por ejemplo, permite identificar si ciertos usuarios participan con frecuencia en ajustes del plan o si determinados equipos están relacionados con retrasos. Por qué es importante Permite asignar responsabilidades y analizar la carga de trabajo, el comportamiento de cada usuario y las posibles necesidades de formación. Dónde obtenerlo Suele encontrarse en las cabeceras de los documentos de modificación (CDHDR, campo UNAME) o en los registros de confirmación (AFRU, campo PERNR para el número de personal). Ejemplos CB9980000021JSMITHPLANNER01 | |||
Actividades de planificación de producción
| Actividad | Descripción | ||
|---|---|---|---|
| Confirmación final registrada | Esta actividad registra la confirmación de la última operación de la ruta de fabricación de la orden de producción. Indica que se han completado en planta todos los pasos de fabricación previstos. | ||
| Por qué es importante La confirmación final es un hito clave que indica el fin del trabajo de producción física. Suele utilizarse como punto final más preciso para medir el tiempo de ciclo en planta antes de la recepción final de mercancías. Dónde obtenerlo Se deduce de los datos de confirmación de la tabla AFRU. Se identifica como el registro de confirmación de la última secuencia de operaciones (AFVC-VPLNR) que tiene activado el indicador de 'confirmación final' (AFRUD-AUERU). Capturar Busque en AFRU la última confirmación de operación que tenga activado el indicador de confirmación final. Tipo de evento inferred | |||
| Entrada de mercancías registrada | Este evento registra la recepción del producto terminado de la línea de producción en el inventario. Aumenta oficialmente el nivel de existencias del material producido. | ||
| Por qué es importante Este hito clave representa la finalización de la producción. Suele considerarse el final del ciclo de producción para medir las entregas a tiempo y el tiempo de entrega total. Dónde obtenerlo Se trata de un registro contable explícito que se guarda en las tablas de documentos de material MSEG (nivel de posición) y MKPF (nivel de cabecera), normalmente con la clase de movimiento 101. Estos documentos están vinculados a la orden de producción. Capturar Busque en MSEG el documento de material vinculado a la orden con la clase de movimiento 101. Tipo de evento explicit | |||
| Orden completada técnicamente | Este paso administrativo de cierre impide realizar más cambios logísticos en la orden, como movimientos de mercancías o confirmaciones. Desde el punto de vista logístico, la orden se considera completa. | ||
| Por qué es importante TECO es el punto final definitivo del proceso de producción y resulta esencial para calcular el tiempo de ciclo total de la orden. Indica que todas las actividades logísticas han finalizado y que la orden está lista para la liquidación financiera. Dónde obtenerlo Este evento se activa cuando un usuario asigna a la orden el estado TECO (completada técnicamente). Se registra como un cambio de estado en la tabla JCDS con la marca de tiempo correspondiente. Capturar Marca de tiempo del cambio de estado a 'TECO' en la tabla JCDS. Tipo de evento inferred | |||
| Orden de producción creada | Este evento corresponde a la creación inicial de la orden de producción en el sistema, que constituye la solicitud formal para fabricar una cantidad determinada de un producto. Se registra explícitamente cuando un usuario guarda una orden nueva y establece su estado inicial como CRTD (Created). | ||
| Por qué es importante Marca el inicio del ciclo de vida de la orden de producción. Analizar el tiempo transcurrido entre su creación y liberación ayuda a detectar retrasos administrativos o de planificación antes de programar formalmente la producción. Dónde obtenerlo Este evento se registra en la tabla AUFK (datos maestros de órdenes) con la fecha de creación (ERDAT). El estado de creación (CRTD) se registra en las tablas JEST y JCDS, vinculadas mediante el número de objeto de la orden (OBJNR). Capturar Marca de tiempo de AUFK-ERDAT o del registro de cambio de estado a 'CRTD' en JCDS. Tipo de evento explicit | |||
| Orden de producción liberada | Este hito clave indica que la orden de producción se ha aprobado y está disponible para su ejecución en la planta. La liberación permite iniciar las salidas de mercancías, las confirmaciones y otros pasos de ejecución. | ||
| Por qué es importante Este evento marca el inicio oficial del proceso de producción ejecutable y es un punto clave para medir los tiempos de entrega. El tiempo entre la creación y la liberación es un KPI importante de la eficiencia previa a la producción. Dónde obtenerlo La liberación la activa explícitamente un usuario o un proceso del sistema, lo que genera el estado REL. Este cambio de estado se registra con una marca de tiempo en la tabla JCDS. La fecha de liberación también suele almacenarse en AFKO-FTRMI. Capturar Marca de tiempo del cambio de estado a 'REL' en la tabla JCDS. Tipo de evento inferred | |||
| Plan de producción ajustado | Representa un cambio importante en la orden de producción después de su liberación, como una modificación de la cantidad, las fechas o la lista de materiales. Se detecta mediante el análisis de los documentos de modificación. | ||
| Por qué es importante Los ajustes frecuentes pueden indicar inestabilidad en la planificación o una demanda volátil. Esta actividad sirve de base para el KPI de tasa de revisión del plan de producción y ayuda a identificar las fuentes de variabilidad del proceso. Dónde obtenerlo Se deduce de los registros de cambios de las tablas CDHDR (cabecera del documento de modificación) y CDPOS (posiciones del documento de modificación) para el objeto de la orden de producción (AUFK o AFPO). Los cambios realizados después de la fecha de liberación se consideran ajustes. Capturar Identifique los cambios en CDHDR/CDPOS de campos clave, como la cantidad y las fechas, posteriores al evento de liberación. Tipo de evento inferred | |||
| Producción iniciada | Indica el inicio de las actividades de producción física de la orden. Suele deducirse de la primera confirmación de planta o de la primera salida de mercancías de componentes para la orden. | ||
| Por qué es importante Esta actividad marca la transición de la planificación a la ejecución. Es esencial para hacer un seguimiento del cumplimiento del programa mediante la comparación de la fecha real de inicio con la fecha prevista. Dónde obtenerlo Este evento se deduce de otros datos. Suele obtenerse de la marca de tiempo más antigua de un registro de movimiento de mercancías (tabla MSEG, clase de movimiento 261) o de una confirmación de tiempo (tabla AFRU) asociada a la orden. Capturar Marca de tiempo más antigua de AFRU (confirmaciones) o MSEG (movimientos de mercancías) para la orden. Tipo de evento inferred | |||
| Confirmación de producción registrada | Representa el registro del avance de una operación concreta de la orden de producción. Incluye el registro de las cantidades producidas, los desechos y el tiempo empleado en un centro de trabajo. | ||
| Por qué es importante Las confirmaciones ofrecen visibilidad en tiempo real del avance en planta y son esenciales para hacer un seguimiento del estado de la producción. Analizar su frecuencia y momento ayuda a supervisar el flujo e identificar retrasos entre operaciones. Dónde obtenerlo Cada confirmación se registra explícitamente como una entrada en la tabla AFRU (confirmaciones de finalización de órdenes), con una marca de tiempo (BUDAT, UZEIT) y detalles de la operación. Capturar Registrada como documento en la tabla AFRU. Tipo de evento explicit | |||
| Disponibilidad de materiales comprobada | Representa la acción del sistema o del usuario de comprobar si todos los componentes necesarios para la orden de producción están disponibles en las cantidades requeridas y a tiempo. Suele ser una comprobación automática al crear o liberar la orden, o una comprobación manual que actualiza su estado. | ||
| Por qué es importante Detectar pronto la falta de materiales es fundamental para planificar de forma proactiva. El seguimiento de esta actividad ayuda a comprender cómo afecta la disponibilidad de materiales a la posibilidad de liberar las órdenes e iniciar la producción a tiempo. Dónde obtenerlo Se deduce del estado de la orden. Un estado como MACM (Material committed) o un cambio en la fecha de disponibilidad de materiales (AFKO-MSERF) indica que se ha realizado una comprobación. La ausencia del estado de falta de materiales (MSPT) también puede indicar que hay disponibilidad. Capturar Se deduce de los cambios de estado relacionados con la asignación de materiales o de la ejecución de la transacción COMAC. Tipo de evento inferred | |||
| Falta de materiales detectada | Este evento indica que el proceso de producción se vio afectado o detenido por la falta de uno o varios componentes necesarios. El sistema asigna un estado específico a la orden para reflejarlo. | ||
| Por qué es importante El seguimiento de la falta de materiales es fundamental para analizar su impacto. Ayuda a cuantificar los retrasos causados por problemas en la cadena de suministro y a mejorar la planificación de materiales. Dónde obtenerlo Se deduce de la activación del estado 'MSPT' (falta de materiales) para la orden de producción. La marca de tiempo de este cambio de estado se encuentra en la tabla JCDS. Capturar Marca de tiempo del cambio de estado a 'MSPT' en la tabla JCDS. Tipo de evento inferred | |||
| Necesidades de capacidad planificadas | Esta actividad consiste en programar las operaciones de la orden de producción y comprobar la disponibilidad de capacidad en los centros de trabajo necesarios. El sistema evalúa la carga de capacidad de los centros de trabajo y, si está configurado, la nivela para determinar las fechas de producción. | ||
| Por qué es importante Este paso es fundamental para garantizar que el programa de producción sea viable. Analizar su duración y sus resultados ayuda a detectar cuellos de botella de capacidad y a mejorar la precisión de la planificación de recursos. Dónde obtenerlo Por lo general, se deduce del estado del sistema que indica que la orden se ha programado, como SETC (Scheduling carried out). La presencia de las fechas de inicio y fin programadas (AUFK-GSTRP, AUFK-GLTRP) también indica que la actividad ha finalizado. Capturar Se deduce de la presencia de fechas programadas en AUFK/AFKO o de un estado relacionado con la programación en JEST. Tipo de evento inferred | |||
| Orden cerrada financieramente | Es el paso final de cierre, en el que se liquida la orden y ya no se pueden realizar más registros financieros. Marca el fin del ciclo de vida de la orden desde el punto de vista del control de gestión y la contabilidad. | ||
| Por qué es importante Aunque suele quedar fuera del alcance del análisis de producción propiamente dicho, esta actividad ofrece una visión completa de principio a fin. Puede ayudar a analizar el tiempo transcurrido entre la finalización logística (TECO) y el cierre financiero. Dónde obtenerlo Este evento se activa cuando un usuario asigna a la orden el estado CLSD (cerrada). Se registra como un cambio de estado en la tabla JCDS con la marca de tiempo correspondiente. Capturar Marca de tiempo del cambio de estado a 'CLSD' en la tabla JCDS. Tipo de evento inferred | |||
| Orden de producción cancelada | Representa la cancelación de una orden de producción antes de que finalice. Es un estado final alternativo en el que el proceso no se completa correctamente. | ||
| Por qué es importante Analizar las órdenes canceladas puede revelar problemas en la planificación de la demanda, los datos maestros o el proceso de ventas. Un alto índice de cancelaciones puede indicar problemas sistémicos que deben resolverse. Dónde obtenerlo Se deduce de la asignación del estado del sistema CACL (cancelación) en la tabla JCDS. También puede indicar una cancelación la marca de borrado (AUFK-LOEKZ). Capturar Marca de tiempo del cambio de estado a 'CACL' en JCDS o de la asignación de la marca de borrado en AUFK. Tipo de evento inferred | |||
| Parada imprevista detectada | Este evento calculado representa un periodo de inactividad significativo durante la fase de ejecución de la producción. No es un evento explícito del sistema, sino que se deduce al detectar intervalos prolongados entre confirmaciones de producción consecutivas. | ||
| Por qué es importante Ayuda a supervisar interrupciones imprevistas, como averías de máquinas o problemas de calidad. Detectar paradas frecuentes o prolongadas es clave para mejorar la estabilidad y el rendimiento de la planta. Dónde obtenerlo Se calcula analizando las marcas de tiempo de actividades consecutivas de 'Confirmación de producción registrada' en la tabla AFRU. Si el intervalo supera un umbral predefinido, se registra como una parada imprevista. Capturar Calcule la diferencia de tiempo entre las marcas de tiempo de confirmaciones consecutivas (AFRU-BUDAT/UZEIT). Tipo de evento calculated | |||
Guías de extracción
Pasos
- Verificación de requisitos previos: Asegúrese de tener un usuario de SAP S/4HANA con las autorizaciones adecuadas para acceder a las vistas Core Data Services (CDS) necesarias. Entre ellas se incluyen
I_ProductionOrder,I_ProdOrdConfirmation,I_MaterialDocumentItem,I_ObjectStatusyI_ChangeDocument. También necesita acceso a un entorno de ejecución SQL conectado a la base de datos SAP HANA, como SAP HANA Studio, DBeaver o una herramienta ETL externa. - Identifique los detalles del sistema: Anote el identificador del sistema de origen que utilizará para el atributo
SourceSystem. Se trata de un nombre lógico que usted define para identificar el origen de los datos, por ejemplo,S4H_PROD. - Defina los parámetros de extracción: Antes de ejecutar la consulta, defina los parámetros principales. Estos incluyen las fechas de inicio y fin del período de extracción y los filtros específicos, como
PlantoProductionOrderType, para limitar el alcance de los datos. - Prepare la consulta SQL: Copie la consulta SQL completa de la sección
queryen el cliente SQL o la herramienta de extracción de datos que haya elegido. - Configure los marcadores de posición: Sustituya los valores de marcador de posición de la consulta por sus parámetros. Estos incluyen
_StartDate,_EndDatey el identificador del sistema de origen. Ajuste el umbral del eventoUnplanned Halt Occurred(por ejemplo,'24:00:00') según el contexto de su empresa. - Ejecute la consulta de extracción: Ejecute el script SQL configurado en la base de datos del sistema SAP S/4HANA. Si el conjunto de datos abarca un período extenso, considere extraerlo en bloques más pequeños, por ejemplo, mes a mes, para evitar problemas de rendimiento.
- Revise los datos iniciales: Cuando termine la consulta, revise rápidamente los resultados. Compruebe el número de filas, confirme que estén todas las columnas y verifique que la columna
Actividadcontenga distintos eventos esperados. - Valide los datos: Siga los pasos de la sección
validationStepspara realizar una validación más exhaustiva. Compare algunas órdenes de producción con sus detalles en SAP mediante la transacciónCO03para confirmar que el Registro de eventos extraído sea correcto. - Exporte a CSV: Exporte el conjunto final de resultados a un archivo CSV. Asegúrese de que la codificación sea UTF-8 para evitar problemas con los caracteres.
- Prepare la carga: Confirme que los encabezados de las columnas del archivo CSV coincidan con los nombres de atributos requeridos:
ProductionOrder,Activity,StartTime,SourceSystemyLastDataUpdate. Antes de cargar el archivo en la herramienta de Process Mining, compruebe que la columnaStartTimeuse un formato de marca de tiempo estándar, como ISO 8601 (YYYY-MM-DDTHH:MM:SS).
Configuración
- Vistas CDS principales: La extracción se basa principalmente en un conjunto de vistas CDS estándar que presentan las tablas SAP subyacentes de forma estructurada y orientada al negocio. Entre las vistas principales se incluyen:
I_ProductionOrder: para los datos de cabecera y los eventos de creación.I_ProdOrdConfirmation: para todas las confirmaciones de operaciones.I_MaterialDocumentItem: para movimientos de mercancías, como salidas y entradas.I_ObjectStatus: para consultar los cambios de estado de la orden de producción.I_ChangeDocumenty las vistas asociadas: para registrar cambios en campos clave de la orden.
- Filtrado por intervalo de fechas: Es fundamental aplicar un filtro por intervalo de fechas para controlar el volumen de datos. La consulta proporcionada utiliza
CreationDatede la orden de producción. Para un análisis inicial, suele bastar con datos de 3 a 6 meses. - Filtros de negocio clave: Para delimitar aún más el conjunto de datos, aplique filtros basados en atributos organizativos o datos maestros clave. Algunos filtros habituales son:
Plant: para analizar una planta de fabricación específica.ProductionOrderType: para centrarse en la producción estándar, el reproceso u otros tipos de orden.CompanyCode: para limitar los datos a una entidad jurídica específica.
- Umbral de parada no planificada: La consulta incluye lógica para obtener eventos
Unplanned Halt Occurred. Esta lógica requiere un umbral de tiempo para definir qué se considera una interrupción significativa entre operaciones. Configure este valor según los tiempos de ciclo habituales de producción y las reglas de negocio. - Requisitos de autorización: El usuario de SAP que ejecute la consulta debe tener autorización de visualización para todas las vistas CDS y sus tablas subyacentes. Si faltan autorizaciones, el resultado estará vacío o incompleto.
Consulta de ejemplo sql
WITH BaseOrders AS (
SELECT
ProductionOrder,
Material AS MaterialNumber,
ProductionPlant AS Plant,
CreationDate,
CreationTime,
BasicEndDate AS PlannedEndDate,
TechnicalCompletionDate,
LastChangeDateTime
FROM I_ProductionOrder
-- P_CreationDateFrom and P_CreationDateTo are placeholders for your date range
WHERE CreationDate BETWEEN '[_StartDate]' AND '[_EndDate]'
-- Add other filters as needed, for example:
-- AND ProductionPlant IN ('[Your_Plant_1]', '[Your_Plant_2]')
-- AND ProductionOrderType = '[Your_Order_Type]'
)
SELECT
bo.ProductionOrder,
'Production Order Created' AS Activity,
TO_TIMESTAMP(bo.CreationDate || ' ' || LPAD(bo.CreationTime, 6, '0'), 'YYYYMMDD HH24MISS') AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
'CRTD' AS OrderStatus
FROM BaseOrders bo
UNION ALL
-- System status changes like Released, Technically Completed, Closed, Cancelled, Material Shortage
SELECT
os.ObjectInternalID AS ProductionOrder,
CASE os.SystemStatus
WHEN 'I0002' THEN 'Production Order Released'
WHEN 'I0043' THEN 'Material Availability Checked' -- Status: MACM (Material committed)
WHEN 'I0045' THEN 'Order Technically Completed'
WHEN 'I0046' THEN 'Order Financially Closed'
WHEN 'I0047' THEN 'Production Order Cancelled'
WHEN 'I0010' THEN 'Material Shortage Occurred' -- Status: MSPT (Material shortage)
END AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus IN ('I0002', 'I0043', 'I0045', 'I0046', 'I0047', 'I0010') AND os.StatusIsInactive = ''
UNION ALL
-- Production Started, inferred from the first goods issue or first confirmation
SELECT
s.ProductionOrder,
'Production Started' AS Activity,
s.StartEventTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
s.MaterialNumber,
s.Plant,
NULL AS WorkCenter,
s.PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
bo.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime)) AS StartEventTime,
ROW_NUMBER() OVER(PARTITION BY bo.ProductionOrder ORDER BY MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime))) as rn
FROM BaseOrders bo
LEFT JOIN I_MaterialDocumentItem gm ON bo.ProductionOrder = gm.ProductionOrder AND gm.GoodsMovementType IN ('261', '262') -- Goods Issue
LEFT JOIN I_ProdOrdConfirmation cf ON bo.ProductionOrder = cf.ProductionOrder
WHERE gm.ProductionOrder IS NOT NULL OR cf.ProductionOrder IS NOT NULL
GROUP BY bo.ProductionOrder, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate
) s
WHERE s.rn = 1
UNION ALL
-- Production Confirmation Entered (for each confirmation)
SELECT
cf.ProductionOrder,
'Production Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
UNION ALL
-- Final Confirmation Entered
SELECT
cf.ProductionOrder,
'Final Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
WHERE cf.IsFinalConfirmation = 'X'
UNION ALL
-- Unplanned Halt Occurred (derived from gaps between confirmations)
SELECT
ProductionOrder,
'Unplanned Halt Occurred' AS Activity,
PreviousConfirmationTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
MaterialNumber,
Plant,
WorkCenter,
PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
cf.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
cf.WorkCenter,
cf.ConfirmationDateTime,
LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime) AS PreviousConfirmationTime,
(SECONDS_BETWEEN(LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime), cf.ConfirmationDateTime) / 3600.0) as HoursDiff
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
) AS gaps
WHERE gaps.HoursDiff > 24 -- Configurable threshold in hours, e.g. 24 hours
UNION ALL
-- Goods Receipt Posted
SELECT
gm.ProductionOrder,
'Goods Receipt Posted' AS Activity,
gm.PostingTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_MaterialDocumentItem gm
JOIN BaseOrders bo ON gm.ProductionOrder = bo.ProductionOrder
WHERE gm.GoodsMovementType = '101'
UNION ALL
-- Capacity Requirements Planned (using Release event as a proxy)
SELECT
os.ObjectInternalID AS ProductionOrder,
'Capacity Requirements Planned' AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus = 'I0002' AND os.StatusIsInactive = '' -- Status 'REL' (Released)
UNION ALL
-- Production Plan Adjusted
SELECT
ch.ObjectValue AS ProductionOrder,
'Production Plan Adjusted' AS Activity,
ch.CreationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL as WorkCenter,
bo.PlannedEndDate,
NULL as OrderStatus
FROM I_ChangeDocument AS ch
JOIN BaseOrders bo ON ch.ObjectValue = bo.ProductionOrder
WHERE ch.ChangeDocumentObject = 'PRODORDER'
-- Monitoring changes in key fields like Total Quantity (GAMNG) or Basic Finish Date (GLTRP)
AND ch.FieldName IN ('GAMNG', 'GLTRP')
GROUP BY ch.ObjectValue, ch.CreationDateTime, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate Pasos
- Confirme que dispone de acceso directo de lectura al esquema SAP HANA que contiene los datos de las órdenes de producción. Identifique también al propietario del esquema, la gestión del cliente, las convenciones de marca de tiempo y el modelo de autorización. Utilice SAP HANA Database Explorer o un cliente SQL aprobado. Antes de finalizar la consulta, valide la versión de SAP S/4HANA y el alcance de planificación de producción activado.
- Configure la cadena de conexión, las credenciales, el nombre del esquema, el valor del cliente, las fechas de inicio y fin de la extracción y los filtros específicos de la empresa. La consulta siguiente utiliza AUFK, AFPO, JEST y JCDS, y también hace referencia a AFKO, AFVC, AFRU, RESB, MSEG, CDHDR y CDPOS. Antes de ejecutarla, confirme que estos objetos estén disponibles en su sistema y revise sus definiciones de campos, ya que puede haber extensiones, vistas de compatibilidad y diferencias entre versiones.
- Ejecute la consulta en SAP HANA Database Explorer o en la herramienta de ejecución SQL aprobada. La consulta crea una fila por cada actividad extraída explícitamente y combina las filas de actividades con UNION ALL. ProcessMind no infiere los eventos.
- Revise los datos de origen y adapte las expresiones marcadas que dependan del sistema, según sea necesario. En particular, confirme los códigos de estado utilizados para la disponibilidad de materiales, la planificación de capacidad, el cierre técnico, el cierre financiero y la cancelación. Confirme también los nombres de objeto y campo del documento de modificación que se utilizan para identificar los ajustes del plan de producción.
- Valide la conversión de marcas de tiempo y el filtrado por cliente. Los sistemas SAP pueden almacenar las fechas y horas en campos separados; además, algunas instalaciones utilizan UTC y otras, la hora local de la planta o del sistema. Asegúrese de que los valores resultantes de StartTime utilicen una única zona horaria coherente y de que se excluyan las fechas SAP no válidas o iniciales.
- Exporte el resultado como un archivo plano compatible con ProcessMind, preferiblemente CSV o texto delimitado con codificación UTF-8. Mantenga exactamente los nombres de columna de salida ProductionOrder, Activity, StartTime, SourceSystem, LastDataUpdate, MaterialNumber, Plant, WorkCenter, PlannedEndDate y OrderStatus.
- Ordene las filas exportadas por ProductionOrder y StartTime. Si el proceso de carga lo permite, defina un orden secundario determinista para las marcas de tiempo iguales. Mantenga una fila por evento, incluidas las confirmaciones y los cambios de estado repetidos cuando correspondan a registros de origen distintos.
- Cargue el archivo en ProcessMind y asigne ProductionOrder como identificador del caso, Activity como actividad y StartTime como marca de tiempo del evento. Asigne las columnas restantes como atributos del evento o del caso, según la configuración de importación de ProcessMind. Confirme que se conserven exactamente las 14 etiquetas de actividad generadas por la consulta.
Configuración
- Intervalo de fechas: Comience con un período móvil de tres a seis meses. Utilice un período más corto para las pruebas iniciales y amplíelo solo después de validar el número de filas y el rendimiento de la consulta.
- Parámetros de extracción: Sustituya [Your schema name], [Your client], [Extraction start date], [Extraction end date] y [Your source system name] por los valores de su entorno. Aplique filtros específicos de la empresa solo después de confirmar los campos y valores organizativos pertinentes.
- Configuración de estados: Verifique los códigos de estado SAP exactos y los identificadores de objeto de estado que utiliza su sistema para CRTD, liberación, disponibilidad de materiales, planificación de capacidad, cierre técnico, cierre financiero y cancelación. Los perfiles de estado y las ampliaciones personalizadas pueden modificar los códigos disponibles.
- Documentos de modificación: Confirme el objeto de documento de modificación de la orden de producción, los nombres de tablas y campos y los formatos de valores utilizados para los cambios de cantidad, fechas, lista de materiales y hoja de ruta. La consulta considera los registros coincidentes de CDHDR y CDPOS como evidencia de ajustes del plan.
- Gestión de marcas de tiempo: Estandarice todas las marcas de tiempo de origen en una sola zona horaria. Confirme si los campos de fecha y hora se almacenan por separado, si las marcas de tiempo son locales o UTC y cómo se representan las fechas iniciales.
- Rendimiento: Limite la extracción por fecha de creación de la orden o por otra fecha indexada de la orden de producción, filtre por cliente, seleccione solo las columnas necesarias y ejecute la consulta durante un período adecuado para la generación de informes. En conjuntos de datos grandes, extraiga los datos por mes o por intervalo de órdenes de producción y guarde los resultados de forma incremental.
- Objetos de base de datos: Confirme que AUFK, AFPO, JEST, JCDS, AFKO, AFVC, AFRU, RESB, MSEG, CDHDR y CDPOS estén disponibles y se puedan leer en el esquema seleccionado. Si una vista o un campo difiere en su versión, sustitúyalo por el objeto correspondiente aprobado o publicado.
- Autorizaciones: Se requiere acceso de lectura al esquema y los objetos seleccionados de SAP HANA, además de permiso para ejecutar SQL. Es posible que su proceso de gobernanza también requiera autorizaciones de la aplicación SAP.
- Alcance funcional: Los datos de planificación y ejecución de producción, movimientos de inventario, historial de estados y documentos de modificación deben conservarse durante el período seleccionado. No se devolverán los registros archivados o eliminados.
- Asignación en ProcessMind: Configure ProductionOrder como identificador del caso, Activity como actividad y StartTime como marca de tiempo del evento. No espere que ProcessMind deduzca actividades que falten a partir de los atributos.
Consulta de ejemplo sql
WITH
params AS (
SELECT
'[Your client]' AS mandt,
TO_DATE('[Extraction start date]', 'YYYY-MM-DD') AS date_from,
TO_DATE('[Extraction end date]', 'YYYY-MM-DD') AS date_to,
'[Your source system name]' AS source_system,
CURRENT_UTCTIMESTAMP AS last_data_update
FROM DUMMY
),
orders AS (
SELECT
a.mandt,
LTRIM(a.aufnr, '0') AS production_order,
a.aufnr AS production_order_raw,
a.erdat AS order_created_date,
a.erfzeit AS order_created_time,
a.auart AS order_type,
a.werks AS plant,
a.objnr AS object_number,
a.ktext AS order_text,
p.matnr AS material_number,
p.psmng AS planned_quantity,
p.wemng AS delivered_quantity,
k.gstrp AS planned_start_date,
k.gltrp AS planned_end_date,
k.ftrmi AS release_date,
k.ftrmp AS release_time,
k.gamng AS total_order_quantity,
k.plnbez AS header_material_number,
k.plnty AS task_list_type,
k.plnnr AS task_list_group,
k.plnal AS task_list_group_counter
FROM [Your schema name].AUFK a
LEFT JOIN [Your schema name].AFPO p
ON p.mandt = a.mandt
AND p.aufnr = a.aufnr
LEFT JOIN [Your schema name].AFKO k
ON k.mandt = a.mandt
AND k.aufnr = a.aufnr
CROSS JOIN params x
WHERE a.mandt = x.mandt
AND a.erdat >= x.date_from
AND a.erdat < ADD_DAYS(x.date_to, 1)
),
status_history AS (
SELECT
o.*,
j.stat,
j.inact,
j.chgnr,
j.udate AS status_date,
j.utime AS status_time,
c.usnam AS status_user,
c.chind AS status_change_indicator
FROM orders o
INNER JOIN [Your schema name].JEST j
ON j.mandt = o.mandt
AND j.objnr = o.object_number
LEFT JOIN [Your schema name].JCDS c
ON c.mandt = j.mandt
AND c.objnr = j.objnr
AND c.stat = j.stat
AND c.chgnr = j.chgnr
WHERE COALESCE(j.inact, '') <> 'X'
),
operations AS (
SELECT
o.production_order,
o.mandt,
v.vornr,
v.arbid,
v.steus,
v.ltxa1,
v.aufpl,
v.aplzl,
cr.name1 AS work_center
FROM orders o
LEFT JOIN [Your schema name].AFVC v
ON v.mandt = o.mandt
AND v.aufpl = (SELECT MAX(k2.aufpl) FROM [Your schema name].AFKO k2 WHERE k2.mandt = o.mandt AND k2.aufnr = o.production_order_raw)
LEFT JOIN [Your schema name].CRHD cr
ON cr.mandt = v.mandt
AND cr.objty = 'A'
AND cr.objid = v.arbid
),
confirmations AS (
SELECT
o.production_order,
o.mandt,
r.rmzhl,
r.vornr,
r.budat AS confirmation_date,
r.ersda AS entry_date,
r.erzet AS entry_time,
r.ism01,
r.ism02,
r.ism03,
r.ism04,
r.ism05,
r.ism06,
r.xmnga,
r.stzhl,
r.stzhl AS reversal_counter,
r.lmnga AS confirmed_quantity,
r.xmnge AS scrap_quantity,
r.aufpl,
r.aplzl,
op.work_center
FROM orders o
INNER JOIN [Your schema name].AFRU r
ON r.mandt = o.mandt
AND r.aufnr = o.production_order_raw
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.mandt = r.mandt
AND op.vornr = r.vornr
),
first_confirmation AS (
SELECT production_order, MIN(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM confirmations
GROUP BY production_order
),
last_confirmation AS (
SELECT production_order, MAX(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS final_time
FROM confirmations
GROUP BY production_order
),
first_goods_issue AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('261', '262')
GROUP BY o.production_order
),
first_receipt AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS receipt_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('101', '102')
GROUP BY o.production_order
),
plan_changes AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(h.udate, 'YYYYMMDD') || LPAD(TO_VARCHAR(h.utime), 6, '0'), 'YYYYMMDDHH24MISS')) AS adjustment_time
FROM orders o
INNER JOIN [Your schema name].CDHDR h
ON h.mandant = o.mandt
AND h.objectid = o.production_order_raw
INNER JOIN [Your schema name].CDPOS p
ON p.mandant = h.mandant
AND p.objectclas = h.objectclas
AND p.objectid = h.objectid
AND p.changenr = h.changenr
WHERE h.objectclas IN ('ORDER', 'PP_ORDER')
AND p.tabname IN ('AFKO', 'AFPO', 'AFVC', 'RESB')
AND p.fname IN ('GAMNG', 'PSMNG', 'GSTRP', 'GLTRP', 'MATNR', 'BDMNG', 'VORNR')
GROUP BY o.production_order
),
status_times AS (
SELECT
production_order,
MIN(CASE WHEN stat IN ('I0001', 'CRTD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS created_status_time,
MIN(CASE WHEN stat IN ('I0002', 'REL') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS released_time,
MIN(CASE WHEN stat IN ('I0003', 'MATC', 'MANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS material_available_time,
MIN(CASE WHEN stat IN ('I0004', 'CAPC', 'CAPA') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS capacity_planned_time,
MIN(CASE WHEN stat IN ('I0045', 'TECO') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS technically_completed_time,
MIN(CASE WHEN stat IN ('I0046', 'CLSD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS financially_closed_time,
MIN(CASE WHEN stat IN ('I0076', 'DLFL', 'CANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS cancelled_time
FROM status_history
GROUP BY production_order
),
material_shortages AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(j.status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(j.status_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS shortage_time
FROM status_history j
INNER JOIN orders o
ON o.production_order = j.production_order
WHERE j.stat IN ('I0042', 'MANC', 'MSHT')
GROUP BY o.production_order
),
capacity_times AS (
SELECT
production_order,
MIN(COALESCE(released_time, created_status_time)) AS capacity_time
FROM status_times
GROUP BY production_order
),
base_attributes AS (
SELECT
o.production_order,
o.material_number,
o.plant,
COALESCE(op.work_center, '') AS work_center,
o.planned_end_date,
COALESCE(st.stat, '') AS current_status
FROM orders o
LEFT JOIN status_history st
ON st.production_order = o.production_order
AND st.inact = ''
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.vornr = (SELECT MIN(op2.vornr) FROM operations op2 WHERE op2.production_order = o.production_order)
),
events AS (
SELECT o.production_order, 'Production Order Created' AS activity, COALESCE(st.created_status_time, TO_TIMESTAMP(TO_VARCHAR(o.order_created_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(o.order_created_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time FROM orders o LEFT JOIN status_times st ON st.production_order = o.production_order
UNION ALL
SELECT production_order, 'Material Availability Checked', material_available_time FROM status_times WHERE material_available_time IS NOT NULL
UNION ALL
SELECT production_order, 'Capacity Requirements Planned', capacity_time FROM capacity_times WHERE capacity_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Released', released_time FROM status_times WHERE released_time IS NOT NULL
UNION ALL
SELECT o.production_order, 'Production Started', LEAST(COALESCE(fc.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS')), COALESCE(fg.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS'))) FROM orders o LEFT JOIN first_confirmation fc ON fc.production_order = o.production_order LEFT JOIN first_goods_issue fg ON fg.production_order = o.production_order WHERE fc.start_time IS NOT NULL OR fg.start_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Confirmation Entered', TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') FROM confirmations
UNION ALL
SELECT production_order, 'Material Shortage Occurred', shortage_time FROM material_shortages WHERE shortage_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Plan Adjusted', adjustment_time FROM plan_changes WHERE adjustment_time IS NOT NULL
UNION ALL
SELECT c.production_order, 'Unplanned Halt Occurred', ADD_SECONDS(c.confirmation_time, 1) FROM (SELECT production_order, TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') AS confirmation_time, LEAD(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) OVER (PARTITION BY production_order ORDER BY entry_date, entry_time, rmzhl) AS next_confirmation_time FROM confirmations) c WHERE c.next_confirmation_time IS NOT NULL AND SECONDS_BETWEEN(c.confirmation_time, c.next_confirmation_time) >= 86400
UNION ALL
SELECT production_order, 'Final Confirmation Entered', final_time FROM last_confirmation WHERE final_time IS NOT NULL
UNION ALL
SELECT production_order, 'Goods Receipt Posted', receipt_time FROM first_receipt WHERE receipt_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Technically Completed', technically_completed_time FROM status_times WHERE technically_completed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Financially Closed', financially_closed_time FROM status_times WHERE financially_closed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Cancelled', cancelled_time FROM status_times WHERE cancelled_time IS NOT NULL
)
SELECT
e.production_order AS "ProductionOrder",
e.activity AS "Activity",
e.start_time AS "StartTime",
p.source_system AS "SourceSystem",
p.last_data_update AS "LastDataUpdate",
b.material_number AS "MaterialNumber",
b.plant AS "Plant",
NULLIF(b.work_center, '') AS "WorkCenter",
b.planned_end_date AS "PlannedEndDate",
b.current_status AS "OrderStatus"
FROM events e
INNER JOIN base_attributes b
ON b.production_order = e.production_order
CROSS JOIN params p
WHERE e.start_time IS NOT NULL
ORDER BY e.production_order, e.start_time, e.activity; ¿Listo para comenzar?
Dé el primer paso para mejorar la eficiencia de la planificación de producción. Prepare sus datos con este Template y obtenga información útil para optimizar el proceso.
Comience hoy a optimizar la planificación de producción
Identifique y elimine cuellos de botella para reducir un 30 % el tiempo de ciclo de producción.
No se requiere tarjeta de crédito