Su Plantilla de Datos de Gestión de Almacenes
Su Plantilla de Datos de Gestión de Almacenes
- Atributos recomendados para un análisis integral
- Actividades clave a rastrear en su proceso
- Guía para la extracción de datos de SAP EWM
Atributos de Gestión de Almacenes
| Nombre | Descripción | ||
|---|---|---|---|
| Orden de Almacén WarehouseOrder | El identificador único para una orden de almacén, que agrupa un conjunto de tareas de almacén a ser realizadas por un recurso. | ||
| Descripción La Orden de Almacén sirve como identificador principal de caso para el seguimiento del proceso de extremo a extremo de la manipulación de mercancías dentro del almacén. Representa un paquete de trabajo, como la recogida de artículos para una entrega saliente o la ubicación de mercancías recibidas. Cada Orden de Almacén contiene una o más tareas de almacén.\n\nEn el process mining, el análisis por Orden de Almacén permite una vista completa de todo el ciclo de vida de un paquete de trabajo específico. Esto ayuda a identificar cuellos de botella, medir los tiempos de ciclo generales desde la creación hasta la finalización y comprender el flujo completo de actividades asociadas con una única instrucción logística. Por qué es importante Este es el identificador central que conecta todas las actividades de almacén relacionadas, permitiendo el análisis de procesos de extremo a extremo y la medición del tiempo de ciclo para una única unidad de trabajo. Dónde obtener Este identificador se encuentra típicamente en la tabla de cabecera de la orden de almacén de SAP EWM, como /SCWM/WHO. Ejemplos 200000145200000146200000147 | |||
| Hora de Inicio EventTime | El timestamp que indica cuándo comenzó la actividad o el evento. | ||
| Descripción Este atributo registra la fecha y hora exactas en que ocurrió una actividad específica del almacén. Es el elemento temporal primario utilizado para ordenar eventos y calcular las duraciones entre ellos.\n\nEn el process mining, el Tiempo de Inicio es esencial para construir la secuencia cronológica de eventos para cada caso. Se utiliza para calcular los tiempos de ciclo, los tiempos de espera y los tiempos de procesamiento, que son críticos para el análisis del rendimiento, la identificación de cuellos de botella y la supervisión de los SLA. Por qué es importante Este timestamp es crítico para ordenar los eventos cronológicamente y calcular todas las métricas de rendimiento basadas en el tiempo, como los tiempos de ciclo y las duraciones. Dónde obtener Se encuentra típicamente en tablas de eventos o confirmaciones como /SCWM/ORDIM_C (ej. campo CONF_TIMESTAMP) o en registros de cambios de estado asociados a órdenes y tareas de almacén. Ejemplos 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| Nombre de la Actividad ActivityName | El nombre de la actividad o evento específico de gestión de almacenes que ocurrió, como 'Tarea de Picking Creada' o 'Salida de Mercancías Contabilizada'. | ||
| Descripción Este atributo describe un solo paso o evento dentro del proceso de gestión de almacenes. Estas actividades son los bloques de construcción del mapa de procesos, representando tareas como la creación, confirmación, empaque, carga y movimientos de mercancías.\n\nAnalizar la secuencia y frecuencia de estas actividades es fundamental para el process mining. Ayuda a visualizar el flujo del proceso, identificar rutas comunes y raras, detectar desviaciones del procedimiento estándar y señalar pasos específicos que están causando retrasos o retrabajos. Por qué es importante Define los pasos del proceso, formando la base del mapa de procesos y permitiendo el análisis del flujo de procesos, las desviaciones y los cuellos de botella. Dónde obtener Derivado de cambios de estado, mensajes de eventos o registros de transacciones relacionados con órdenes y tareas de almacén en tablas como /SCWM/ORDIM_C (Confirmaciones) o interpretando campos de estado en /SCWM/WHO y /SCWM/ORDIM_O. Ejemplos Tarea de Picking ConfirmadaTarea de Ubicación CreadaEntrada de Mercancías RegistradaOrden de Almacén Completada | |||
| Source System SourceSystem | Identifica el sistema de origen del que se extrajeron los datos, por ejemplo, la instancia de producción de SAP EWM. | ||
| Descripción Este atributo especifica el sistema de registro de donde provienen los datos de gestión de almacenes. En un entorno empresarial con múltiples sistemas, es crucial etiquetar el origen de los datos para la trazabilidad y el contexto.\n\nPara el análisis, esto ayuda a diferenciar procesos que pueden abarcar múltiples sistemas o permite comparar procesos de diferentes instancias, como sistemas separados para diferentes regiones. Asegura que el linaje de los datos sea claro y auditable. Por qué es importante Proporciona trazabilidad y contexto, especialmente en entornos con múltiples instancias SAP o sistemas integrados, asegurando que el linaje de los datos sea claro. Dónde obtener Este es típicamente un valor estático añadido durante el proceso de extracción, transformación y carga de datos (ETL), identificando la instancia específica de SAP S/4HANA o EWM. Ejemplos SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| Última actualización de datos LastDataUpdate | El timestamp que indica la última vez que los datos de este registro se actualizaron desde el sistema de origen. | ||
| Descripción Este atributo registra cuándo se extrajeron los datos por última vez del sistema de origen. Proporciona un contexto crucial sobre la frescura de los datos que se están analizando.\n\nEn cualquier análisis o dashboard, conocer la actualidad de los datos es esencial para tomar decisiones informadas. Este timestamp ayuda a los usuarios a comprender si están viendo información en tiempo real o una instantánea de un momento específico, gestionando las expectativas sobre la vigencia de los datos. Por qué es importante Indica la frescura de los datos, lo cual es crítico para que los usuarios comprendan cuán actual es su análisis de procesos. Dónde obtener Este es un campo de metadatos típicamente generado y añadido durante el proceso de extracción de datos (ETL). Refleja el timestamp de la carga de datos. Ejemplos 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Estado de la Orden de Almacén WarehouseOrderStatus | El estado actual o final de la orden de almacén, como 'Completada' o 'Cancelada'. | ||
| Descripción Este atributo indica el resultado final de una orden de almacén. Comprender si una orden se completó con éxito o se canceló es crucial para analizar las tasas de éxito del proceso e identificar las razones de la no finalización.\n\nEste es un filtro clave para muchos análisis. Por ejemplo, al calcular el Tiempo de Ciclo de Almacén de Extremo a Extremo, el análisis se realiza típicamente solo en órdenes completadas. También ayuda a identificar e investigar la frecuencia y las causas de las órdenes canceladas. Por qué es importante Indica el resultado de un caso, permitiendo el filtrado de órdenes completadas versus canceladas, lo cual es crucial para un análisis preciso del tiempo de ciclo y el rendimiento. Dónde obtener El campo de estado se encuentra típicamente en la tabla de cabecera de la orden de almacén, /SCWM/WHO. Ejemplos CompletadoEn ProcesoCancelado | |||
| Hora de Finalización EventEndTime | La marca de tiempo que indica cuándo se completó una actividad o evento. | ||
| Descripción Este atributo registra la fecha y hora en que finalizó una actividad específica del almacén. A menudo es el mismo que el Tiempo de Inicio para eventos atómicos, pero puede diferir para actividades con una duración medible, como el empaque o la carga.\n\nDisponer de un Tiempo de Fin distinto permite el cálculo preciso del tiempo de procesamiento para actividades individuales. Esto es crucial para los dashboards de rendimiento que analizan la duración de pasos específicos, como 'Eficiencia de Picking y Empaque', ayudando a identificar qué tareas están consumiendo más tiempo. Por qué es importante Permite el cálculo preciso de la duración de las actividades individuales, lo cual es clave para identificar pasos que consumen mucho tiempo y tareas que requieren muchos recursos. Dónde obtener A menudo es igual a la marca de tiempo de inicio para eventos discretos. Para tareas de larga duración, puede ser un campo separado en tablas como /SCWM/ORDIM_C o derivado de un cambio de estado subsiguiente. Ejemplos 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| ID de Usuario User | El identificador del operario o usuario de almacén que confirmó o ejecutó la actividad. | ||
| Descripción Este atributo captura el ID de usuario de la persona responsable de realizar una tarea de almacén. Podría ser el picker que confirmó una recogida, el empaquetador en una estación de empaque o el operador de la carretilla elevadora que confirmó una ubicación.\n\nEstos datos son vitales para el dashboard 'Utilización de Recursos y Equipos'. Permite analizar el rendimiento individual o del equipo, ayuda a identificar necesidades de capacitación y puede utilizarse para equilibrar las cargas de trabajo de manera más efectiva entre el personal del almacén. Por qué es importante Atribuye el trabajo a una persona específica, lo que permite el análisis de rendimiento por usuario o equipo y apoya la gestión de recursos y el equilibrio de la carga de trabajo. Dónde obtener Se encuentra típicamente en los datos de confirmación de una tarea de almacén, por ejemplo en la tabla /SCWM/ORDIM_C, campo UNAME. Ejemplos JSMITHARODRIGUEZOPERATOR_05 | |||
| Número de Material MaterialNumber | El identificador único para el producto o material que se manipula en la tarea de almacén. | ||
| Descripción Este atributo especifica el material que se está moviendo, recogiendo, empaquetando o recibiendo. Es una dimensión crítica para segmentar y analizar el rendimiento del almacén basándose en las características del producto.\n\nEl análisis por Número de Material ayuda a responder preguntas como qué productos tienen los tiempos de ubicación más largos, cuáles están más frecuentemente involucrados en errores de picking o cuáles requieren inspecciones de calidad. Esto es esencial para los dashboards de 'Rendimiento de Recepción y Ubicación de Mercancías' y 'Tiempo de Entrega de Inspección de Calidad'. Por qué es importante Permite filtrar y segmentar los datos del proceso por producto, lo cual es crucial para identificar problemas específicos del producto en la manipulación, el almacenamiento o el control de calidad. Dónde obtener Esta información suele estar disponible en tablas de tareas de almacén como /SCWM/ORDIM_O, vinculadas a los datos maestros de materiales. Ejemplos FIN-1001RAW-2050SFIN-300-A | |||
| Prioridad Priority | El nivel de prioridad asignado a la orden de almacén, indicando su urgencia (ej., Alta, Media, Baja). | ||
| Descripción Este atributo clasifica las órdenes de almacén según su importancia o urgencia para el negocio. Las órdenes de alta prioridad, por ejemplo, pueden ser para envíos express o suministro crítico de producción y requieren un manejo expedito.\n\nLa prioridad es una dimensión clave para el dashboard y KPI 'Adherencia al Cumplimiento de Órdenes Prioritarias'. Permite filtrar y segmentar el rendimiento para asegurar que las órdenes más críticas se procesen dentro de sus plazos esperados, alineando las operaciones del almacén con los objetivos de negocio. Por qué es importante Permite priorizar el análisis y la monitorización para asegurar que las órdenes de alta urgencia cumplan sus niveles de servicio, impactando directamente en la satisfacción del cliente. Dónde obtener La prioridad se puede establecer en el documento de entrega subyacente y transferir a la orden de almacén. Se puede encontrar en tablas como /SCWM/WHO. Ejemplos AltoMedioBajo | |||
| Tiempo de Procesamiento ProcessingTime | La duración del tiempo dedicado activamente a una `actividad` específica. | ||
| Descripción El tiempo de procesamiento mide el 'tiempo de ejecución' real de una actividad, calculado como la diferencia entre sus timestamps de inicio y fin. Esto es distinto del tiempo de ciclo, que incluye los periodos de espera entre actividades.\n\nEsta métrica es fundamental para el análisis de rendimiento, especialmente para dashboards como 'Eficiencia de Picking y Empaque'. Ayuda a identificar qué tareas específicas consumen más tiempo, permitiendo a los gerentes enfocar los esfuerzos de mejora en actividades con los tiempos de procesamiento más largos, mejorando así el rendimiento general. Por qué es importante Mide la duración del trabajo activo de una actividad, ayudando a identificar las tareas que consumen más tiempo y formando una base para el análisis de la capacidad de recursos. Dónde obtener Esta es una métrica calculada, derivada de la resta del EventTime del EventEndTime para cada actividad. Ejemplos 3009150 | |||
| Tipo de Orden de Almacén WarehouseOrderType | Clasifica la orden de almacén por su propósito, como Ubicación, Picking o Reabastecimiento Interno. | ||
| Descripción El Tipo de Orden de Almacén clasifica las órdenes en función de la función logística que cumplen. Esta distinción es fundamental porque diferentes tipos de órdenes siguen diferentes rutas de proceso y tienen diferentes expectativas de rendimiento.\n\nEn el análisis, este atributo es una dimensión primaria para filtrar y comparar. Por ejemplo, el dashboard 'Rendimiento y Volumen de Órdenes de Almacén' se basa en esto para segmentar el rendimiento de los procesos de entrada (Ubicación) frente a los de salida (Picking), proporcionando una visión más significativa de las operaciones del almacén. Por qué es importante Permite la segmentación del análisis basada en la categoría del proceso (ej. entrante vs. saliente), posibilitando comparaciones e información más relevantes. Dónde obtener Esto se determina por el tipo de proceso de almacén, a menudo encontrado en la tabla de cabecera de la orden de almacén /SCWM/WHO. Ejemplos PICKPUTWREPLSTGE | |||
| A Tiempo IsOnTime | Un indicador booleano que señala si una orden de almacén se completó antes de su fecha de finalización solicitada. | ||
| Descripción Este indicador proporciona un resultado simple y binario para el cumplimiento del SLA. Evalúa si el evento de finalización final de una orden de almacén ocurrió en o antes de la Fecha de Finalización Solicitada especificada.\n\nEste atributo es esencial para el dashboard 'Adherencia al Cumplimiento de Órdenes Prioritarias'. Simplifica la creación de KPIs y visualizaciones al permitir un fácil recuento y filtrado de órdenes a tiempo versus órdenes tardías. Esto ayuda a evaluar rápidamente el rendimiento frente a los objetivos de nivel de servicio sin necesidad de cálculos de fechas complejos en la capa de análisis. Por qué es importante Simplifica el análisis del rendimiento del SLA al proporcionar un indicador binario claro de cumplimiento a tiempo o tardío para cada pedido. Dónde obtener Este es un atributo calculado. La lógica compara el timestamp de la actividad 'Orden de Almacén Completada' con el atributo 'RequestedCompletionDate'. Ejemplos truefalse | |||
| Cantidad Planificada PlannedQuantity | La cantidad esperada de un material para una tarea de almacén determinada. | ||
| Descripción Este atributo representa la cantidad objetivo de un material que debe ser movida, recogida o recibida según la instrucción de la tarea de almacén. Es la línea base contra la cual se compara la cantidad real ejecutada.\n\nLa Cantidad Planificada es esencial para el dashboard 'Análisis de Discrepancias de Inventario' y el KPI 'Tasa de Precisión de Inventario'. Al compararla con la Cantidad Real, el sistema puede identificar discrepancias que pueden apuntar a errores de picking, errores de recepción o problemas de entrada de datos, helping to improve inventory accuracy. Por qué es importante Sirve como base para calcular la precisión del inventario e identificar discrepancias, lo cual es fundamental para mantener niveles de stock correctos. Dónde obtener Se encuentra en los datos de la tarea de almacén, por ejemplo, en la tabla /SCWM/ORDIM_O, a menudo en un campo como NISTA (Cantidad objetivo). Ejemplos 10050250 | |||
| Cantidad Real ActualQuantity | La cantidad real de un material confirmada por el usuario para una tarea de almacén. | ||
| Descripción Este atributo es la cantidad que fue físicamente manipulada y confirmada por el operario del almacén. Podría ser la cantidad recogida de un puesto, la cantidad ubicada o la cantidad contada durante una recepción de mercancías.\n\nComparar la Cantidad Real con la Cantidad Planificada es fundamental para el 'Análisis de Discrepancias de Inventario'. Una varianza entre los dos valores destaca directamente una excepción de proceso que requiere investigación. Esta es una medida directa de la precisión operativa y una entrada clave para los KPIs de 'Tasa de Precisión de Inventario' y 'Tasa de Errores de Picking'. Por qué es importante Esta es la verdad fundamental de lo que se manejó físicamente. Compararlo con la cantidad planificada mide directamente la precisión operativa e identifica errores. Dónde obtener Se encuentra en los datos de confirmación de la tarea de almacén, por ejemplo, en la tabla /SCWM/ORDIM_C, a menudo en un campo como NDIFF (Cantidad de diferencia) o derivado de cantidades confirmadas. Ejemplos 10049250 | |||
| Equipo utilizado EquipmentUsed | El identificador del equipo, como una carretilla elevadora o un transpaleta, utilizado para realizar la tarea de almacén. | ||
| Descripción Este atributo especifica el equipo de manipulación de materiales asignado o utilizado para una tarea de almacén. Podría ser una carretilla elevadora específica, un vehículo guiado automatizado (AGV) o un tipo particular de carro.\n\nEstos datos son la base para el dashboard 'Utilización de Recursos y Equipos' y el KPI 'Tasa de Utilización de Equipos'. Al rastrear qué equipo se utiliza para qué tareas y durante cuánto tiempo, los gerentes pueden analizar los patrones de utilización, programar el mantenimiento y tomar decisiones informadas sobre el tamaño y la composición de la flota. Por qué es importante Permite el análisis de la utilización y eficiencia del equipo, ayudando a optimizar la gestión de la flota e identificar las limitaciones de recursos. Dónde obtener Esta información puede almacenarse en los detalles de la tarea u orden de almacén si la gestión de recursos está configurada en SAP EWM. Consulte la documentación de SAP Extended Warehouse Management. Ejemplos FORKLIFT-07AGV-02CART-15 | |||
| Fecha de Finalización Requerida RequestedCompletionDate | La fecha en la que se solicita la finalización de una orden de almacén de alta prioridad. | ||
| Descripción Este atributo define el acuerdo de nivel de servicio (SLA) o la fecha objetivo de finalización para una orden de almacén. Es la fecha límite contra la cual se mide el tiempo de finalización real para determinar si el pedido se cumplió a tiempo.\n\nEsta fecha es esencial para calcular el KPI de 'Tasa de Cumplimiento de Órdenes Prioritarias'. Al comparar el timestamp de finalización real con esta fecha solicitada, el análisis puede cuantificar la adhesión a los niveles de servicio y destacar las órdenes que corren el riesgo de retrasarse o que ya están demoradas. Por qué es importante Define el SLA para una orden, sirviendo como punto de referencia para medir el rendimiento de cumplimiento a tiempo, especialmente para artículos de alta prioridad. Dónde obtener Esta fecha a menudo se deriva de la fecha de salida de mercancías planificada o la fecha de entrega en la orden de entrega saliente que activó la orden de almacén. Consulte la documentación de SAP Extended Warehouse Management. Ejemplos 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| Hora de Salida Planificada PlannedDepartureTime | La hora programada en que el envío está previsto que salga del almacén. | ||
| Descripción Este atributo representa el tiempo objetivo para despachar un envío después de que todas las actividades de picking, empaque y carga estén completas. Sirve como referencia para medir el rendimiento a tiempo de la etapa final del proceso de salida.\n\nEste timestamp es crítico para el dashboard 'Rendimiento de Despacho de Envíos a Tiempo'. Al comparar el tiempo de despacho real con este tiempo planificado, el análisis puede identificar retrasos en la carga, la coordinación con el transportista o la documentación, proporcionando insights sobre la eficiencia de la planificación logística y del transporte. Por qué es importante Proporciona la base para medir el rendimiento del despacho a tiempo, lo cual es clave para la planificación logística y el cumplimiento de los horarios de los transportistas. Dónde obtener Esta información suele formar parte del documento de transporte o envío vinculado a las órdenes de almacén. Consulte la documentación de SAP Extended Warehouse Management. Ejemplos 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| Tarea de Almacén WarehouseTask | El identificador único para una sola tarea de almacén, que es un componente de una orden de almacén. | ||
| Descripción Una tarea de almacén es la instrucción para ejecutar un movimiento de mercancías específico, como mover un producto de un puesto de almacenamiento a una estación de embalaje. Una orden de almacén agrupa una o más de estas tareas. Analizar a nivel de tarea proporciona una visión más granular de las operaciones del almacén. Ayuda a comprender el rendimiento de los recursos para movimientos específicos, identificar puestos de almacenamiento de difícil acceso o analizar la eficiencia de las actividades individuales de picking o ubicación. Por qué es importante Proporciona un nivel de detalle granular para el análisis, permitiendo examinar movimientos y pasos individuales dentro de una orden de almacén más grande. Dónde obtener Se encuentra en tablas de tareas de almacén como /SCWM/ORDIM_O (Datos de Tarea) y /SCWM/ORDIM_C (Datos de Confirmación). Ejemplos 300000451300000452300000453 | |||
| Tiempo de Ciclo de Extremo a Extremo EndToEndCycleTime | El tiempo total transcurrido desde la creación de la orden de almacén hasta su finalización final. | ||
| Descripción Este KPI mide la duración completa del ciclo de vida de una orden de almacén. Es un indicador crítico de alto nivel de la eficiencia y velocidad general de las operaciones del almacén.\n\nEsta métrica es la piedra angular del dashboard 'Tiempo de Ciclo de Almacén de Extremo a Extremo'. El seguimiento de este KPI a lo largo del tiempo, y su segmentación por dimensiones como el tipo de orden o el material, ayuda a identificar ineficiencias sistémicas y a medir el impacto de las iniciativas de mejora de procesos en toda la operación. Por qué es importante Este es un KPI primario para medir la eficiencia general del proceso de almacén, proporcionando una vista de alto nivel del rendimiento operativo. Dónde obtener Calculado a nivel de caso restando la marca de tiempo del primer evento ('Warehouse Order Created') de la marca de tiempo del último evento ('Warehouse Order Completed'). Ejemplos 8640017280043200 | |||
| Ubicación de Almacenamiento StorageLocation | La ubicación específica dentro del almacén, como un puesto de almacenamiento, donde las mercancías se mueven o desde donde se mueven. | ||
| Descripción Este atributo identifica la ubicación física involucrada en una tarea de almacén, por ejemplo, el puesto de origen para el picking o el puesto de destino para la ubicación. Esto puede variar desde un área amplia hasta una coordenada de estante específica.\n\nEl análisis por ubicación de almacenamiento puede revelar insights operativos, como la identificación de 'zonas doradas' con altas tasas de picking o áreas problemáticas con frecuentes retrasos o errores. También puede utilizarse en el análisis de 'Adherencia a la Ruta de Picking' para comprender los movimientos del picker a través del almacén. Por qué es importante Proporciona contexto geográfico dentro del almacén, permitiendo el análisis de la eficiencia del movimiento, la accesibilidad de las ubicaciones y la optimización de las rutas de picking. Dónde obtener Se encuentra típicamente en tablas de tareas de almacén como /SCWM/ORDIM_O, que contienen información del puesto de origen (VLPLA) y destino (NLPLA). Ejemplos 01-02-03PACK-STATION-01GI-ZONE-A | |||
| Variación de Cantidad QuantityVariance | La diferencia entre la cantidad planificada y la cantidad real confirmada para una tarea. | ||
| Descripción Esta métrica calculada cuantifica la discrepancia encontrada durante una tarea de almacén. Un valor distinto de cero indica que la realidad física no coincidió con el registro del sistema, lo que señala un problema potencial como un error de picking, un error de recepción o un artículo dañado.\n\nEste atributo apoya directamente el dashboard de 'Análisis de Discrepancias de Inventario' al resaltar la magnitud de los errores. Analizar la frecuencia y el tamaño de estas variaciones ayuda a identificar problemas sistémicos en la gestión de inventario y la ejecución operativa, guiando los esfuerzos para mejorar la precisión. Por qué es importante Cuantifica directamente las imprecisiones de inventario y operativas, facilitando la detección y el análisis de la magnitud de las discrepancias. Dónde obtener Calculado restando la Cantidad Planificada de la Cantidad Real para cada tarea relevante. Ejemplos 0-15 | |||
Actividades de Gestión de Almacenes
| Actividad | Descripción | ||
|---|---|---|---|
| Empaque completado | Esta actividad significa que todos los artículos de un envío han sido empaquetados en una unidad de manipulación, que ahora está cerrada y etiquetada. Las mercancías empaquetadas están listas para la siguiente etapa, como la consolidación o la carga. | ||
| Por qué es importante Este hito concluye la etapa de empaque. Es un requisito previo para la consolidación y el envío, por lo que cualquier retraso aquí impacta directamente en el tiempo de entrega general y en el KPI de Tiempo de Entrega de Empaque y Consolidación. Dónde obtener Puede capturarse cuando el estado de la unidad de manipulación (HU) se establece en 'Cerrado' o cuando se confirma la última tarea de almacén relacionada con el embalaje para la WO. La tabla /SCWM/HUHDR contiene información de estado de HU. Capturar Identifique la marca de tiempo cuando la unidad de manipulación de envío final asociada con la orden se cierra o se completa. Tipo de evento inferred | |||
| Orden de Almacén Completada | El estado de la Orden de Almacén se establece como 'Completada' después de que todas sus tareas de almacén asociadas hayan sido confirmadas. Esto cierra el paquete de trabajo desde una perspectiva de ejecución. | ||
| Por qué es importante Este es el evento de fin de éxito principal para el proceso. Es esencial para calcular el Tiempo de Ciclo de Almacén de Extremo a Extremo y medir el rendimiento general. Dónde obtener Capturado al rastrear el cambio en el campo de estado (STAT) a 'Completado' en la tabla de cabecera de la Orden de Almacén, /SCWM/WHO. Se puede utilizar el registro de cambios para esta tabla (DBTABLOG) o un campo de marca de tiempo dedicado. Capturar Identifique la marca de tiempo cuando el estado en /SCWM/WHO se establece en 'C' (Completado). Tipo de evento inferred | |||
| Orden de Almacén Creada | Esta actividad marca la creación de una Orden de Almacén (WO), que es un paquete de trabajo que consta de múltiples tareas de almacén. El sistema genera una WO para agrupar y organizar el trabajo de los empleados del almacén, basándose en criterios como el área de actividad, la cola o el producto. | ||
| Por qué es importante Este es el evento de inicio primario para el proceso de ejecución del almacén. Analizar el tiempo desde la creación hasta la primera acción ayuda a identificar retrasos en la asignación de trabajo y recursos. Dónde obtener Este evento se captura del timestamp de creación (campo CREATED_AT) en la tabla de cabecera de la Orden de Almacén, /SCWM/WHO. Capturar Extraiga la marca de tiempo de creación de la tabla /SCWM/WHO para cada número de Orden de Almacén (WHO). Tipo de evento explicit | |||
| Salida de Mercancías Contabilizada | Este es el último paso logístico y financiero en el sistema que formalmente elimina las mercancías del inventario del almacén. Significa que la propiedad legal ha sido transferida y el envío ha partido oficialmente. | ||
| Por qué es importante Un punto final crucial para el flujo de salida, que activa la facturación y las actualizaciones de inventario. Es un componente clave para medir el envío a tiempo y el KPI de Tiempo de Carga y Despacho del Envío. Dónde obtener Inferido de la contabilización de un documento de Entrega Saliente asociado con la orden de almacén. Verifique el flujo de documentos o los campos de estado (ej. DGI_STAT) en la tabla /SCDL/DB_PROCH_O. Capturar Identifique la marca de tiempo cuando el estado de Salida de Mercancías se establece en 'Completado' para la Entrega de Salida asociada. Tipo de evento explicit | |||
| Tarea de Picking Confirmada | Un operario de almacén confirma la finalización de una tarea de almacén de picking, indicando que las mercancías han sido físicamente retiradas de su ubicación de almacenamiento. Esto se realiza típicamente mediante un escáner RF. | ||
| Por qué es importante Este es un hito crítico en el cumplimiento de pedidos, que impacta directamente el tiempo de ciclo del pedido al envío. Analizar esta actividad ayuda a medir la productividad del picker y a identificar los cuellos de botella del picking. Dónde obtener Capturado de la marca de tiempo de confirmación (campo CONFIRMED_AT) en la tabla de Tareas de Almacén, /SCWM/WT. El estado de la tarea (STAT) se actualiza a 'Confirmado'. Capturar Utilice el timestamp de confirmación de la tabla /SCWM/WT para las tareas de picking asociadas a la Orden de Almacén. Tipo de evento explicit | |||
| Tarea de Ubicación Confirmada | Un operario de almacén confirma que la tarea de almacén de ubicación se ha completado, lo que significa que las mercancías han sido colocadas físicamente en el puesto de almacenamiento designado. Esta confirmación actualiza la ubicación del inventario en tiempo real. | ||
| Por qué es importante Esta actividad es un hito clave para el procesamiento de entrada, confirmando que el stock está disponible para picking. Los retrasos aquí impactan directamente el KPI de Tiempo de Ciclo de Recepción de Mercancías a Ubicación. Dónde obtener Capturado de la marca de tiempo de confirmación (campo CONFIRMED_AT) en la tabla de Tareas de Almacén, /SCWM/WT. El estado de la tarea (STAT) también cambia a 'Confirmado'. Capturar Utilice el timestamp de confirmación de la tabla /SCWM/WT para las tareas de ubicación asociadas a la Orden de Almacén. Tipo de evento explicit | |||
| Carga Completada | Significa que todas las mercancías de un envío han sido cargadas físicamente en la unidad de transporte. Esto es un requisito previo para registrar la salida de mercancías y despachar el vehículo. | ||
| Por qué es importante Un hito clave antes del envío final. Los retrasos entre la finalización de la carga y la salida de mercancías pueden indicar problemas de documentación o del sistema que demoran a los transportistas. Dónde obtener Inferido del cambio de estado de la Unidad de Transporte (TU) o de la Orden de Entrega Saliente asociada a 'Carga Completada'. Los estados en las tablas /SCWM/TU y /SCDL/DB_PROCH_O son relevantes. Capturar Capture la marca de tiempo cuando el estado de la Unidad de Transporte (TU) o de la Orden de Entrega se actualiza para reflejar la finalización de la carga. Tipo de evento inferred | |||
| Carga Iniciada | Esta actividad marca el inicio de la carga física de mercancías desde el área de consolidación a un camión o unidad de transporte. A menudo, se inicia mediante una acción del usuario en el sistema. | ||
| Por qué es importante El inicio del último paso físico en el almacén. Analizar la duración de la carga ayuda a optimizar la utilización de las puertas de muelle y el tiempo de respuesta del transportista. Dónde obtener Inferido del cambio de estado de la Unidad de Transporte (TU) o de la Orden de Entrega Saliente asociada a 'Carga Iniciada'. Se puede verificar la tabla /SCWM/TU_STATUS. Capturar Capture la marca de tiempo cuando el estado de la Unidad de Transporte (TU) o de la Orden de Entrega se actualiza para reflejar el inicio de la carga. Tipo de evento inferred | |||
| Empaque Iniciado | Representa el inicio de las actividades de empaque, donde los artículos recogidos se consolidan y se colocan en contenedores de envío o unidades de manipulación. Este suele ser el primer paso en un centro de trabajo de empaque. | ||
| Por qué es importante Marca el comienzo de la fase de servicios de valor añadido. Medir la duración del embalaje ayuda a optimizar el diseño del centro de trabajo, el personal y los materiales. Dónde obtener Puede que este evento necesite ser inferido. Se puede derivar del primer escaneo de un artículo o unidad de manipulación en una estación de empaque, a menudo capturado en los registros del centro de trabajo o de la unidad de manipulación. Tablas como /SCWM/PACKSPEC y los registros de ejecución relacionados pueden ser una fuente. Capturar Utilice el timestamp de la primera confirmación de la Tarea de Almacén relacionada con el empaque para la entrega, o el tiempo de creación de la HU de envío final. Tipo de evento inferred | |||
| Entrada de Mercancías Registrada | Marca la aceptación formal de las mercancías en el inventario del almacén de un proveedor externo o de producción. Esta es una contabilización financiera y de inventario clave que hace que el stock sea visible y esté disponible para procesos posteriores como la ubicación. | ||
| Por qué es importante Este es un hito crítico en el proceso de entrada. El tiempo entre la llegada de las mercancías y este registro puede indicar retrasos en el área de recepción, afectando la disponibilidad del stock. Dónde obtener Inferido de la contabilización de un documento de Entrega Entrante asociado con la orden de almacén. Verifique el flujo de documentos o los campos de estado (ej. DGRSTAT) en la tabla /SCDL/DB_PROCH_I. Capturar Identifique la marca de tiempo cuando el estado de Recepción de Mercancías se establece en 'Completado' para la Entrega Entrante asociada. Tipo de evento inferred | |||
| Orden de Almacén Cancelada | La Orden de Almacén se cancela antes de que se completen todas las tareas, impidiendo una ejecución posterior. Esto puede ocurrir debido a la falta de stock, cambios en los pedidos de los clientes u otras excepciones. | ||
| Por qué es importante Representa una ruta de fallo o excepción. Analizar la frecuencia y las razones de las cancelaciones ayuda a identificar problemas anteriores en la planificación, la precisión del inventario o la gestión de pedidos. Dónde obtener Capturado al rastrear el cambio en el campo de estado (STAT) a 'Cancelado' en la tabla de cabecera de la Orden de Almacén, /SCWM/WHO. Capturar Identifique la marca de tiempo cuando el estado en /SCWM/WHO se establece en un valor de estado de cancelación. Tipo de evento inferred | |||
| Tarea de Consolidación Confirmada | Un operario de almacén confirma el movimiento de una unidad de manipulación embalada desde una estación de embalaje o área de consolidación a un área de preparación de envío designada. Las mercancías ahora están posicionadas para la carga. | ||
| Por qué es importante Esto marca la transición del procesamiento interno a la logística de salida. Los retrasos en la consolidación pueden llevar a muelles de carga desorganizados y a la pérdida de los tiempos de recogida del transportista. Dónde obtener Capturado de la marca de tiempo de confirmación (campo CONFIRMED_AT) de una Tarea de Almacén (/SCWM/WT) con un tipo de proceso para movimientos de preparación. Capturar Identifique la marca de tiempo de confirmación para la tarea de almacén de preparación asociada con la unidad de manipulación o entrega. Tipo de evento explicit | |||
| Tarea de Picking Creada | El sistema genera una Tarea de Almacén (WT) para recoger mercancías de un puesto de almacenamiento para cumplir una orden de entrega saliente. Esto representa la instrucción del sistema para que un operario recupere un producto. | ||
| Por qué es importante El inicio del proceso físico de salida. El lapso de tiempo entre la creación y la confirmación de las tareas de picking es crucial para analizar la eficiencia del picking y la disponibilidad de recursos. Dónde obtener Capturado de la marca de tiempo de creación (campo CREATED_AT) de la Tarea de Almacén relevante en la tabla /SCWM/WT, donde el tipo de proceso indica picking. Capturar Filtre por tareas de almacén con un tipo de proceso de picking vinculado a la Orden de Almacén y utilice su marca de tiempo de creación. Tipo de evento explicit | |||
| Tarea de Ubicación Creada | El sistema genera una instrucción específica, una Tarea de Almacén (WT), para mover las mercancías recibidas de un área de recepción a un puesto de almacenamiento final. Esta actividad representa la disposición del sistema para ejecutar el movimiento de ubicación. | ||
| Por qué es importante El seguimiento del tiempo entre la creación y la confirmación de la tarea revela cuánto tiempo tardan las instrucciones de ubicación en ser recogidas y ejecutadas por los operarios del almacén, destacando posibles deficiencias de mano de obra o equipos. Dónde obtener Capturado de la marca de tiempo de creación (campo CREATED_AT) de la Tarea de Almacén relevante en la tabla /SCWM/WT, donde el tipo de proceso indica ubicación. Capturar Filtre por tareas de almacén con un tipo de proceso de ubicación vinculado a la Orden de Almacén y utilice su marca de tiempo de creación. Tipo de evento explicit | |||
Guías de Extracción
Pasos
- Requisito: Identificar o crear vistas CDS: Las fuentes de datos principales son las vistas CDS estándar de SAP S/4HANA para la Gestión de Almacenes. Las vistas clave son
I_WarehouseOrderpara eventos a nivel de orden yI_WarehouseTaskpara eventos a nivel de tarea. Se necesitan otras vistas comoI_OutboundDeliveryItem,I_InboundDeliveryItemeI_EWMTransportationUnitpara eventos logísticos relacionados. Asegúrese de que estas vistas estén activas en su sistema. - Crear una vista CDS personalizada: Para combinar datos de múltiples fuentes en un formato de registro de eventos único, debe crear una vista CDS personalizada. Utilice ABAP Development Tools (ADT) en Eclipse para crear una nueva Definición de Datos. Esta vista personalizada utilizará
UNION ALLpara fusionar registros de diferentes fuentes, cada una representando una actividad comercial distinta. - Definir la estructura del registro de eventos: En su vista CDS personalizada, defina los campos que formarán las columnas de su registro de eventos. Esto debe incluir
WarehouseOrder,ActivityName,EventTimey otros atributos requeridos y recomendados. Mapee estos campos desde las vistas CDS estándar subyacentes. - Modelar eventos de orden de almacén: Añada las primeras sentencias
SELECTa su unión. Seleccione deI_WarehouseOrderpara generar el evento 'Warehouse Order Created' utilizando la marca de tiempo de creación. Añada sentenciasSELECTposteriores para los eventos 'Warehouse Order Completed' y 'Warehouse Order Canceled' filtrando por el estado de la orden y utilizando las marcas de tiempo de confirmación o cambio apropiadas. - Modelar eventos de tarea de almacén: Añada sentencias
SELECTdeI_WarehouseTask. Genere los eventos 'Putaway Task Created' y 'Putaway Task Confirmed' filtrando por categorías de proceso de almacén relacionadas con la ubicación. De manera similar, cree los eventos 'Picking Task Created', 'Picking Task Confirmed' y 'Staging Task Confirmed' basándose en sus respectivas categorías de proceso y utilice las marcas de tiempo de creación y confirmación. - Modelar eventos de movimiento de mercancías: Una las vistas relacionadas con la entrega a las tareas de almacén para capturar los movimientos de mercancías. Para 'Goods Receipt Posted', seleccione de
I_InboundDeliveryItemutilizando elActualGoodsMovementDateTime. Para 'Goods Issue Posted', utilice el mismo campo deI_OutboundDeliveryItem, vinculando de nuevo a la orden o tarea de almacén relevante. - Modelar eventos de carga y embalaje: Seleccione de
I_EWMTransportationUnitpara capturar los eventos 'Loading Started' y 'Loading Completed' utilizando sus marcas de tiempo dedicadas. Para el embalaje, que puede ser complejo, use un proxy seleccionando de una vista de Unidad de Manipulación, donde el tiempo de creación puede representar 'Packing Started' y un tiempo de cambio de estado puede representar 'Packing Completed'. Este paso puede requerir ajustes basados en su proceso de embalaje específico. - Añadir anotaciones para exponer la vista CDS: Añada la anotación
@OData.publish: truea la definición de su vista CDS personalizada. Esto instruye a SAP para generar automáticamente un servicio OData basado en la estructura de la vista. - Activar la vista CDS y el servicio OData: Active la nueva Definición de Datos en ADT. Luego, navegue al sistema central de SAP Gateway y utilice la transacción
/IWFND/MAINT_SERVICEpara encontrar y activar el servicio OData recién generado. Esto hace que los datos sean accesibles a través de un endpoint de API REST. - Extraer los datos: Utilice su plataforma de datos objetivo o herramienta ETL para conectarse al endpoint del servicio OData activado. Aplique filtros directamente en la URI de OData, como filtrar por
EventTimepara limitar el alcance de los datos (por ejemplo,?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Formato para Process Mining: Asegúrese de que los datos extraídos se guarden en un formato de archivo plano, como un CSV, con los encabezados de columna que coincidan con los atributos requeridos para ProcessMind (
WarehouseOrder,ActivityName,EventTime, etc.). Cargue el archivo final en la herramienta de Process Mining.
Configuración
- Vista CDS personalizada: Debe crearse una vista CDS dedicada, por ejemplo
Z_C_EWM_EVENTLOG_CDS, para unificar los datos de eventos. Este es el objeto central para la extracción. - Servicio OData: El servicio OData generado a partir de la vista CDS personalizada debe activarse. El nombre del servicio suele ser el nombre de la vista CDS con el sufijo
_CDS. - Filtrado por rango de fechas: Es fundamental aplicar un filtro de fechas en el campo
EventTimeal llamar a la API OData. Un rango típico para un análisis inicial es de 3 a 6 meses de datos. Sin un filtro, la consulta podría exceder el tiempo de espera o causar problemas de rendimiento. - Filtrado por entidad: Para limitar aún más el alcance de los datos, considere aplicar filtros en atributos como Número de Almacén (
Warehouse), Tipo de Orden de Almacén (WarehouseOrderType) o materiales específicos (MaterialNumber). - Autorizaciones del sistema: El usuario que crea la vista CDS requiere acceso de desarrollador de SAP en ADT. El usuario o la cuenta de servicio que llama a la API OData requiere autorizaciones para acceder a los datos subyacentes de gestión de almacenes.
a Consulta de ejemplo sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate Pasos
- Requisito: Identificar o crear vistas CDS: Las fuentes de datos principales son las vistas CDS estándar de SAP S/4HANA para la Gestión de Almacenes. Las vistas clave son
I_WarehouseOrderpara eventos a nivel de orden yI_WarehouseTaskpara eventos a nivel de tarea. Se necesitan otras vistas comoI_OutboundDeliveryItem,I_InboundDeliveryItemeI_EWMTransportationUnitpara eventos logísticos relacionados. Asegúrese de que estas vistas estén activas en su sistema. - Crear una vista CDS personalizada: Para combinar datos de múltiples fuentes en un formato de registro de eventos único, debe crear una vista CDS personalizada. Utilice ABAP Development Tools (ADT) en Eclipse para crear una nueva Definición de Datos. Esta vista personalizada utilizará
UNION ALLpara fusionar registros de diferentes fuentes, cada una representando una actividad comercial distinta. - Definir la estructura del registro de eventos: En su vista CDS personalizada, defina los campos que formarán las columnas de su registro de eventos. Esto debe incluir
WarehouseOrder,ActivityName,EventTimey otros atributos requeridos y recomendados. Mapee estos campos desde las vistas CDS estándar subyacentes. - Modelar eventos de orden de almacén: Añada las primeras sentencias
SELECTa su unión. Seleccione deI_WarehouseOrderpara generar el evento 'Warehouse Order Created' utilizando la marca de tiempo de creación. Añada sentenciasSELECTposteriores para los eventos 'Warehouse Order Completed' y 'Warehouse Order Canceled' filtrando por el estado de la orden y utilizando las marcas de tiempo de confirmación o cambio apropiadas. - Modelar eventos de tarea de almacén: Añada sentencias
SELECTdeI_WarehouseTask. Genere los eventos 'Putaway Task Created' y 'Putaway Task Confirmed' filtrando por categorías de proceso de almacén relacionadas con la ubicación. De manera similar, cree los eventos 'Picking Task Created', 'Picking Task Confirmed' y 'Staging Task Confirmed' basándose en sus respectivas categorías de proceso y utilice las marcas de tiempo de creación y confirmación. - Modelar eventos de movimiento de mercancías: Una las vistas relacionadas con la entrega a las tareas de almacén para capturar los movimientos de mercancías. Para 'Goods Receipt Posted', seleccione de
I_InboundDeliveryItemutilizando elActualGoodsMovementDateTime. Para 'Goods Issue Posted', utilice el mismo campo deI_OutboundDeliveryItem, vinculando de nuevo a la orden o tarea de almacén relevante. - Modelar eventos de carga y embalaje: Seleccione de
I_EWMTransportationUnitpara capturar los eventos 'Loading Started' y 'Loading Completed' utilizando sus marcas de tiempo dedicadas. Para el embalaje, que puede ser complejo, use un proxy seleccionando de una vista de Unidad de Manipulación, donde el tiempo de creación puede representar 'Packing Started' y un tiempo de cambio de estado puede representar 'Packing Completed'. Este paso puede requerir ajustes basados en su proceso de embalaje específico. - Añadir anotaciones para exponer la vista CDS: Añada la anotación
@OData.publish: truea la definición de su vista CDS personalizada. Esto instruye a SAP para generar automáticamente un servicio OData basado en la estructura de la vista. - Activar la vista CDS y el servicio OData: Active la nueva Definición de Datos en ADT. Luego, navegue al sistema central de SAP Gateway y utilice la transacción
/IWFND/MAINT_SERVICEpara encontrar y activar el servicio OData recién generado. Esto hace que los datos sean accesibles a través de un endpoint de API REST. - Extraer los datos: Utilice su plataforma de datos objetivo o herramienta ETL para conectarse al endpoint del servicio OData activado. Aplique filtros directamente en la URI de OData, como filtrar por
EventTimepara limitar el alcance de los datos (por ejemplo,?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Formato para Process Mining: Asegúrese de que los datos extraídos se guarden en un formato de archivo plano, como un CSV, con los encabezados de columna que coincidan con los atributos requeridos para ProcessMind (
WarehouseOrder,ActivityName,EventTime, etc.). Cargue el archivo final en la herramienta de Process Mining.
Configuración
- Vista CDS personalizada: Debe crearse una vista CDS dedicada, por ejemplo
Z_C_EWM_EVENTLOG_CDS, para unificar los datos de eventos. Este es el objeto central para la extracción. - Servicio OData: El servicio OData generado a partir de la vista CDS personalizada debe activarse. El nombre del servicio suele ser el nombre de la vista CDS con el sufijo
_CDS. - Filtrado por rango de fechas: Es fundamental aplicar un filtro de fechas en el campo
EventTimeal llamar a la API OData. Un rango típico para un análisis inicial es de 3 a 6 meses de datos. Sin un filtro, la consulta podría exceder el tiempo de espera o causar problemas de rendimiento. - Filtrado por entidad: Para limitar aún más el alcance de los datos, considere aplicar filtros en atributos como Número de Almacén (
Warehouse), Tipo de Orden de Almacén (WarehouseOrderType) o materiales específicos (MaterialNumber). - Autorizaciones del sistema: El usuario que crea la vista CDS requiere acceso de desarrollador de SAP en ADT. El usuario o la cuenta de servicio que llama a la API OData requiere autorizaciones para acceder a los datos subyacentes de gestión de almacenes.
a Consulta de ejemplo sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate