Su Plantilla de Datos de Gestión del Transporte
Su Plantilla de Datos de Gestión del Transporte
- Atributos recomendados para recopilar
- Actividades clave para el seguimiento
- Guía de extracción para SAP Transportation Management
Atributos de Gestión de Transporte
| Nombre | Descripción | ||
|---|---|---|---|
| Envío ShipmentId | El identificador único para un solo movimiento de mercancías, que sirve como caso central para el análisis. | ||
| Descripción El ID de Envío es la clave principal que agrupa todas las actividades y eventos de transporte relacionados. Representa un único proceso de transporte de principio a fin, desde la solicitud inicial hasta la prueba de entrega final y el pago. En Process Mining, este atributo es esencial para construir la vista de caso, permitiendo a los analistas rastrear el recorrido completo de cada envío. Permite el análisis de variantes de proceso, tiempos de ciclo y resultados asociados con envíos individuales, proporcionando una vista integral del rendimiento del transporte. Por qué es importante Este es el identificador fundamental del caso, que vincula todos los eventos y puntos de datos a una orden de transporte específica, lo cual es crucial para el análisis de procesos de principio a fin. Dónde obtener Este identificador es el número de Orden de Flete o número de Reserva de Flete en SAP TM. Se puede encontrar en tablas como /SCMTMS/D_TORROT y /SCMTMS/D_TRQROT. Ejemplos 610000432161000056786100009876 | |||
| Hora del Evento EventTime | El timestamp que indica cuándo ocurrió una actividad o evento específico. | ||
| Descripción El Event Time (Tiempo de Evento) proporciona la fecha y hora precisas para cada actividad en el proceso de transporte. Estos datos temporales son fundamentales para calcular los tiempos de ciclo, las duraciones y los tiempos de espera entre los diferentes pasos del proceso. En el análisis, este atributo se utiliza para secuenciar correctamente los eventos, construir un registro cronológico y realizar todos los análisis de rendimiento basados en el tiempo. Es crítico para identificar retrasos, medir la eficiencia del proceso y evaluar el rendimiento en comparación con los cronogramas o acuerdos de nivel de servicio. Por qué es importante La marca de tiempo es esencial para ordenar los eventos cronológicamente y calcular todas las métricas de rendimiento, como los tiempos de ciclo y la entrega a tiempo. Dónde obtener Obtenido de las tablas de manejadores de eventos en SAP TM, como /SAPTRX/EH_EVMSG, que almacenan marcas de tiempo para los eventos reportados. Ejemplos 2023-04-15T10:00:00Z2023-04-16T14:30:00Z2023-04-20T09:15:00Z | |||
| Nombre de la Actividad ActivityName | El nombre de un evento o paso de negocio específico que ocurrió dentro del proceso de transporte. | ||
| Descripción El Nombre de la Actividad describe una tarea o hito único en el ciclo de vida del envío, como 'Envío Planificado', 'Mercancías Recogidas' o 'Mercancías Entregadas'. Estas actividades forman los nodos en el mapa de proceso descubierto. Analizar la secuencia y frecuencia de las actividades ayuda a identificar el flujo de proceso estándar, las desviaciones, los cuellos de botella y los bucles de retrabajo. Es la columna vertebral del descubrimiento de procesos y la verificación de conformidad en la gestión del transporte. Por qué es importante Este atributo define los pasos en el proceso de transporte, permitiendo la visualización y el análisis del flujo de envío de principio a fin. Dónde obtener Esto se deriva típicamente de códigos de eventos o cambios de estado registrados en el manejador de eventos de seguimiento de ejecución de SAP TM. Puede obtenerse de tablas que registran cambios de estado de objetos de negocio o mensajes de eventos específicos. Ejemplos Envío PlanificadoTransportista AsignadoMercancías RecogidasMercancía EntregadaPrueba de Entrega Recibida | |||
| Costo Total de Flete TotalFreightCost | El costo total calculado o facturado para el envío. | ||
| Descripción El Costo Total de Flete representa el impacto financiero de un envío. Puede ser el costo calculado por el sistema de gestión de transporte o el monto final de la factura del transportista después de la liquidación. Este atributo permite integrar la dimensión financiera en el análisis de procesos. Los analistas pueden identificar las variantes de proceso más costosas, calcular el costo de los retrasos o los cambios de ruta, y comparar la rentabilidad de diferentes transportistas o modos de transporte. Es fundamental para los dashboards centrados en el gasto de transporte y el análisis de costo por servicio. Por qué es importante Añade una dimensión financiera al proceso, permitiendo el análisis del gasto en transporte, el coste por envío y el impacto financiero de las ineficiencias del proceso. Dónde obtener Obtenido del Documento de Liquidación de Flete en SAP TM después de haberse realizado el cálculo de cargos. Se puede encontrar en tablas como /SCMTMS/D_SFIRHD. Ejemplos 250.751200.005430.50 | |||
| Es Entrega a Tiempo IsOnTimeDelivery | Un indicador booleano que señala si las mercancías fueron entregadas en o antes de la fecha de entrega solicitada. | ||
| Descripción Este es un atributo calculado que compara la marca de tiempo de la actividad 'Mercancías Entregadas' con la 'Fecha de Entrega Solicitada'. Se evalúa como verdadero si la entrega fue a tiempo o temprana, y falso si fue tardía. Este atributo simplifica el análisis de rendimiento al crear un resultado binario claro para cada envío. Es la base para el Tablero de Rendimiento de Entrega a Tiempo y el KPI correspondiente. Permite a los analistas filtrar fácilmente los envíos tardíos y realizar un análisis de la causa raíz para comprender los impulsores del bajo rendimiento. Por qué es importante Mide directamente la adhesión a los compromisos de entrega, simplificando el cálculo y la visualización del KPI crítico de entrega a tiempo. Dónde obtener Este atributo no se almacena en SAP TM. Debe calcularse durante la transformación de datos comparando la marca de tiempo del evento de entrega real con la Fecha de Entrega Solicitada. Ejemplos truefalse | |||
| Fecha de Entrega Solicitada RequestedDeliveryDate | La fecha y hora de entrega solicitada por el cliente o estipulada en la orden de venta. | ||
| Descripción La Fecha de Entrega Solicitada es la fecha límite objetivo para la actividad 'Mercancías Entregadas'. Sirve como el principal punto de referencia para medir el rendimiento de la entrega a tiempo. Esta fecha es crucial para calcular el KPI de 'Tasa de Entrega a Tiempo'. Al comparar la marca de tiempo de entrega real con esta fecha solicitada, las organizaciones pueden determinar si cumplieron con su acuerdo de nivel de servicio. El análisis de las desviaciones ayuda a identificar las causas sistémicas de los retrasos, como problemas de rendimiento del transportista, retrasos en la planificación o retenciones aduaneras. Por qué es importante Esta es la Dónde obtener Esta fecha se transfiere típicamente de la orden de venta precedente o de la orden de transporte de stock de SAP ERP. Se almacena en los campos de fecha/hora de la Unidad de Flete o la Orden de Flete. Ejemplos 2023-05-20T17:00:00Z2023-06-01T12:00:00Z2023-06-15T23:59:59Z | |||
| Hora de Finalización EndTime | La marca de tiempo que indica cuándo se completó una actividad específica. | ||
| Descripción Mientras que En el análisis de Process Mining, tener tanto una hora de inicio como una de finalización permite un análisis más granular de las duraciones de las actividades, posibilitando la separación del tiempo de procesamiento del tiempo de espera. Esto ayuda a identificar con precisión dónde residen las ineficiencias, ya sea en la ejecución de una tarea o en las transferencias entre tareas. Por qué es importante Permite el cálculo preciso de los tiempos de procesamiento de las actividades, distinguiendo el tiempo de trabajo activo del tiempo de espera entre eventos. Dónde obtener Al igual que StartTime, esto se obtiene de las tablas de manejadores de eventos. Puede corresponder a un evento 'completado' separado para una actividad dada. Ejemplos 2023-04-15T11:30:00Z2023-04-16T15:00:00Z2023-04-20T09:45:00Z | |||
| Modo de Transporte ModeOfTransport | El método de transporte utilizado para el envío, como carretera, ferrocarril, aire o mar. | ||
| Descripción Este atributo especifica el modo de transporte. Los diferentes modos tienen estructuras de costos, tiempos de tránsito y complejidades de proceso distintas. Por ejemplo, un envío de carga aérea internacional tendrá diferentes actividades, como el despacho de aduanas, en comparación con un envío de camión nacional. El análisis de procesos por modo de transporte permite iniciativas de mejora personalizadas. También es crítico para el análisis de costos, especialmente para identificar el uso de flete premium (por ejemplo, aéreo expedito) frente a modos estándar más económicos. Esta segmentación es clave para comprender y controlar el gasto en transporte. Por qué es importante Permite el análisis de variaciones de costes, tiempo y proceso basadas en el modo de transporte, lo cual es crucial para la optimización de costes e identificación del uso de flete premium. Dónde obtener Este es un campo clave en la Orden de Flete o Reserva de Flete, a menudo etiquetado como Modo de Transporte o MOT. Ejemplos 01 (Terrestre)02 (Ferroviario)04 (Aéreo)05 (Marítimo) | |||
| Nombre del Transportista CarrierName | El nombre del transportista o proveedor de servicios logísticos asignado al envío. | ||
| Descripción El Nombre del Transportista identifica a la empresa responsable del movimiento físico de las mercancías. Esta es una dimensión crítica para el análisis de rendimiento, ya que diferentes transportistas pueden tener distintos niveles de servicio, costo y fiabilidad. En Process Mining, este atributo se utiliza para segmentar y comparar el rendimiento entre varios transportistas. Permite la creación de cuadros de mando de transportistas, el monitoreo de las tasas de entrega a tiempo por transportista, la comparación de costos y la identificación de qué transportistas están más frecuentemente asociados con retrasos o disputas. Esta información es vital para la gestión estratégica de transportistas y la adquisición. Por qué es importante Permite la comparación del rendimiento entre diferentes transportistas, lo cual es clave para optimizar la selección de transportistas, el coste y los niveles de servicio. Dónde obtener Esta información se almacena en el documento de Orden de Flete o Reserva de Flete. Se vincula a través de la función de socio comercial para el transportista. Ejemplos DHL ExpressFedEx FreightMaersk LineUnion Pacific Railroad | |||
| Está en Disputa IsDisputed | Un indicador booleano que señala si la factura de flete para el envío resultó en una disputa. | ||
| Descripción Esta bandera calculada identifica los envíos que tienen una disputa de liquidación de flete asociada. Se evalúa como verdadera si se creó una disputa, y falsa en caso contrario. Puede derivarse de la presencia de una actividad de 'Disputa de Flete Creada' o de un 'Motivo de Disputa' no vacío. Este atributo simplifica el análisis del proceso de liquidación de fletes. Permite un cálculo fácil del KPI de Tasa de Discrepancia de Facturación de Fletes y ayuda a filtrar todos los envíos disputados. Los analistas pueden entonces investigar las características comunes de estos envíos, como transportistas, rutas o tipos de cargo, para encontrar la causa raíz de los errores de facturación. Por qué es importante Simplifica la identificación de liquidaciones de flete problemáticas, permitiendo un cálculo rápido de la tasa de disputa y un análisis de la causa raíz de los errores de facturación. Dónde obtener Este atributo no se almacena en SAP TM. Debe calcularse basándose en la existencia de un caso de disputa vinculado al Documento de Liquidación de Flete. Ejemplos truefalse | |||
| Estado del Envío ShipmentStatus | El estado general actual del envío en el momento de la extracción de datos. | ||
| Descripción El Estado del Envío proporciona una instantánea de dónde se encuentra el envío en su ciclo de vida, como 'En Planificación', 'En Ejecución', 'Entregado' o 'Cancelado'. Representa el último estado conocido del caso. Este atributo es útil para filtrar y analizar envíos en función de su resultado. Por ejemplo, un analista puede centrarse solo en los envíos completados para medir el tiempo de ciclo de principio a fin o analizar solo los envíos cancelados para comprender las causas raíz de las cancelaciones. Proporciona un contexto importante para interpretar el flujo del proceso. Por qué es importante Proporciona un resultado de alto nivel para cada envío, permitiendo filtrar y analizar según si un envío fue completado, cancelado o aún está en tránsito. Dónde obtener Este es el campo de estado general en la cabecera del documento de Orden de Flete o Reserva de Flete en SAP TM. Ejemplos En PlanificaciónListo para TransporteEn EjecuciónEjecutadoCancelada | |||
| Fecha de Recogida Programada ScheduledPickupDate | La fecha y hora planificada para que el transportista recoja las mercancías desde el punto de envío. | ||
| Descripción La Fecha de Recogida Programada es el momento acordado para el inicio del transporte físico. Es un hito clave en la fase de ejecución del envío. Este atributo es esencial para monitorear la puntualidad del primer tramo del viaje. Al comparar la hora de recogida programada con la marca de tiempo real del evento 'Mercancías Recogidas', las empresas pueden calcular los retrasos en la recogida. Esto ayuda a evaluar el rendimiento y la fiabilidad tanto de la ubicación de envío como del transportista. Por qué es importante Sirve como línea base para medir la puntualidad de la recogida, ayudando a identificar retrasos al inicio del viaje físico del envío. Dónde obtener Esta es una fecha/hora planificada almacenada en la secuencia de parada de la Orden de Flete en SAP TM. Ejemplos 2023-05-18T09:00:00Z2023-05-30T14:00:00Z2023-06-12T10:30:00Z | |||
| Motivo del Retraso DelayReason | Un código o texto que explica el motivo de un retraso en el envío. | ||
| Descripción El atributo Motivo de Retraso captura la causa de una desviación del programa planificado, como 'Mal Tiempo', 'Retención Aduanera' o 'Retraso del Transportista'. Esta información a menudo se reporta manualmente o mediante un mensaje de evento del transportista. Este es un atributo poderoso para el análisis de la causa raíz. Permite a los analistas ir más allá de simplemente saber que un envío se retrasó para entender por qué. Al categorizar y cuantificar los motivos de retraso, las organizaciones pueden identificar problemas recurrentes y centrar sus esfuerzos de mejora en las áreas de mayor impacto, como mejorar la comunicación con el transportista u optimizar las rutas para evitar la congestión. Por qué es importante Explica el 'porqué' de los retrasos en los envíos, permitiendo un potente análisis de causa raíz para reducir las excepciones y mejorar el rendimiento a tiempo. Dónde obtener Esto puede capturarse como un código de evento y un motivo en el marco de gestión de eventos de SAP TM cuando se informa un evento de 'Llegada/Salida Retrasada'. Ejemplos WEATHER_DELAYCUSTOMS_INSPECTIONCONGESTIÓN_PUERTOFALLO_MECÁNICO | |||
| Nombre de Usuario UserName | El ID de usuario o nombre de la persona que ejecutó una actividad. | ||
| Descripción Este atributo identifica al empleado o usuario responsable de realizar una actividad manual, como 'Envío Planificado' o 'Factura Verificada'. Vincula los pasos del proceso con las personas o equipos que los realizaron. El análisis de las actividades por usuario ayuda a comprender la distribución de la carga de trabajo, identificar necesidades de capacitación y reconocer a los empleados de alto rendimiento. También es crucial para fines de cumplimiento y auditoría, proporcionando un registro claro de quién hizo qué y cuándo. Esto puede revelar variaciones en cómo diferentes usuarios realizan la misma tarea. Por qué es importante Atribuye los pasos de proceso manuales a usuarios específicos, permitiendo el análisis de la carga de trabajo, el rendimiento individual y las oportunidades de formación. Dónde obtener Generalmente se encuentra en el registro de cambios o en las tablas de encabezado de documentos para documentos de transporte, como los campos 'Creado por' o 'Modificado por' (p. ej., ERNAM, AENAM). Ejemplos CB998030SMITHJPLANIFICADOR_UE | |||
| País de Destino DestinationCountry | El país donde se entrega el envío. | ||
| Descripción Este atributo identifica el país de destino final para el envío, derivado de la dirección de la última ubicación de entrega. Similar al país de origen, el análisis por país de destino es crucial para comprender los desafíos logísticos regionales. Puede revelar patrones como qué destinos son más propensos a retrasos en la entrega o tienen costos de entrega de última milla más altos. Esta información es valiosa para la optimización de la red, el establecimiento de expectativas de entrega realistas y la gestión del cumplimiento del comercio internacional. Por qué es importante Permite el análisis del rendimiento del proceso por destino, destacando problemas con regiones de entrega específicas, autoridades aduaneras o transportistas de última milla. Dónde obtener Esto es parte de la información de dirección para la ubicación de destino de la última parada en la Orden de Flete. Ejemplos FRCAGBJP | |||
| País de Origen OriginCountry | El país desde el que se origina el envío. | ||
| Descripción Este atributo identifica el país de inicio para el viaje de transporte. Se deriva de la dirección de la ubicación de recogida inicial. Analizar el proceso por país de origen ayuda a identificar diferencias regionales en rendimiento, costo y complejidad. Puede resaltar países con tiempos de despacho de aduanas más largos, costos de transportista más altos o retrasos más frecuentes. Esta segmentación geográfica es esencial para gestionar una cadena de suministro global y adaptar las estrategias logísticas a regiones específicas. Por qué es importante Permite un análisis geográfico del rendimiento de los envíos, ayudando a identificar cuellos de botella regionales, factores de coste o variaciones de proceso. Dónde obtener Esto es parte de la información de dirección para la ubicación de origen de la primera parada en la Orden de Flete. Ejemplos DEUSCNMX | |||
| Razón de Disputa DisputeReason | El motivo proporcionado cuando se disputa una factura de flete. | ||
| Descripción Cuando la factura de un transportista no coincide con el costo esperado calculado en SAP TM, se crea una disputa. Este atributo captura el motivo de esa discrepancia, como 'Tarifa Incorrecta', 'Factura Duplicada' o 'Cargo Adicional No Aprobado'. Analizar los motivos de disputa es fundamental para el dashboard de Tasa de Error y Disputa de Facturas de Flete. Ayuda a identificar las causas raíz de las imprecisiones de facturación, ya sean problemas de datos maestros, errores del transportista o fallas operativas. Esta información permite a la organización tomar acciones específicas para reducir las disputas, lo que a su vez acelera el ciclo de pago y disminuye la carga administrativa. Por qué es importante Proporciona la causa raíz de los errores de facturación de fletes, permitiendo acciones específicas para reducir las disputas de facturas y mejorar el proceso de liquidación. Dónde obtener Esta información se captura en el caso de gestión de disputas asociado a un Documento de Liquidación de Flete. Ejemplos Discrepancia de TarifaPeso IncorrectoCargo por Demora No AprobadoFactura Duplicada | |||
| Source System SourceSystem | El sistema desde el cual se originaron los datos del evento. | ||
| Descripción Este atributo identifica el sistema fuente que generó los datos, por ejemplo, SAP TM, SAP ERP o un portal de transportista externo. Proporciona contexto sobre el origen de los datos y ayuda a comprender los puntos de integración de datos. En un entorno complejo, conocer el sistema fuente es crucial para la validación de datos, la resolución de problemas de integración y la comprensión de cómo los diferentes sistemas contribuyen al proceso general. Por ejemplo, puede diferenciar entre un evento reportado por un sistema interno y uno reportado por un proveedor de logística externo. Por qué es importante Identifica el origen de los datos, algo crucial para la gobernanza de datos, la resolución de problemas y la comprensión de la orquestación de procesos en múltiples sistemas. Dónde obtener Esta información a menudo se almacena como parte del registro del sistema o puede derivarse basándose en la interfaz o el usuario que creó la entrada de datos. Ejemplos SAP_TM_P01SAP_ERP_E01CARRIER_PORTAL_XYZ | |||
| Tiempo de Ciclo del Envío ShipmentCycleTime | La duración total del envío desde la solicitud inicial hasta la prueba de entrega final. | ||
| Descripción Esta es una métrica calculada que representa el tiempo de ciclo de principio a fin para un envío. Típicamente se calcula como la diferencia entre la marca de tiempo de 'Prueba de Entrega Recibida' y 'Solicitud de Transporte Recibida'. El Tiempo de Ciclo del Envío es un KPI primario para medir la eficiencia general del proceso de transporte. Proporciona una vista de alto nivel del rendimiento y, cuando se analiza a lo largo del tiempo o a través de diferentes dimensiones como transportista o ruta, puede revelar tendencias y cuellos de botella importantes. Es esencial para el tablero de Tiempo de Ciclo de Envío de principio a fin. Por qué es importante Mide la duración total de principio a fin del proceso de transporte, proporcionando un indicador clave de la velocidad y eficiencia general del proceso. Dónde obtener Esta es una métrica calculada, derivada de la resta del tiempo de inicio del primer evento del tiempo de finalización del último evento para cada caso. Ejemplos 5 días 4 horas12 días 8 horas22 horas 30 minutos | |||
| Última actualización de datos LastDataUpdate | La marca de tiempo de la extracción o actualización de datos más reciente para el conjunto de datos de Process Mining. | ||
| Descripción Este atributo indica la actualidad de los datos que se están analizando. Refleja la fecha y hora en que los datos fueron extraídos por última vez de los sistemas de origen, como SAP TM, a la herramienta de Process Mining. Este es un elemento de metadatos crítico para cualquier tablero o análisis, ya que proporciona contexto sobre cuán actuales son los conocimientos. Ayuda a los usuarios a comprender si están viendo información en tiempo real o una instantánea de un período anterior, lo cual es esencial para tomar decisiones oportunas e informadas. Por qué es importante Proporciona un contexto crucial sobre la puntualidad de los datos, asegurando que los usuarios sepan cuán actual es el análisis. Dónde obtener Esto es típicamente generado y almacenado por la herramienta ETL (Extracción, Transformación, Carga) o el pipeline de datos durante el proceso de ingestión de datos. Ejemplos 2023-10-27T08:00:00Z2023-10-26T08:00:00Z | |||
Actividades de Gestión de Transporte
| Actividad | Descripción | ||
|---|---|---|---|
| Envío Cancelado | Esta actividad representa la cancelación de un envío después de haber sido solicitado o planificado. Sirve como punto final para los procesos que no proceden a la ejecución. | ||
| Por qué es importante El seguimiento de las cancelaciones ayuda a identificar las razones de fallos en el proceso, como cambios en la demanda del cliente o errores de planificación. Las altas tasas de cancelación pueden indicar problemas subyacentes en la gestión de pedidos o la planificación. Dónde obtener Esto se infiere de un cambio en el estado del ciclo de vida de la Orden de Expedición o la Orden de Flete a 'Cancelado'. La marca de tiempo de este cambio de estado marca el evento. Capturar Capture la marca de tiempo cuando el estado del ciclo de vida del documento se establece en 'Cancelado'. Tipo de evento inferred | |||
| Envío Planificado | Esta actividad significa que los requisitos de transporte se han consolidado en un plan de envío concreto. Se registra cuando se crea y guarda una Orden de Flete (para carretera/ferrocarril) o una Reserva de Flete (para mar/aire), conteniendo la ruta y los recursos planificados. | ||
| Por qué es importante Completar este hito es esencial para iniciar la ejecución logística. El tiempo de ciclo de esta actividad desde la solicitud es un KPI clave para medir la eficiencia de la planificación. Dónde obtener Este evento corresponde a la creación de un documento de Orden de Flete o Reserva de Flete. También puede inferirse de un cambio de estado en el documento, como el estado de planificación pasando a 'Planificado'. Las tablas relevantes son típicamente /SCMTMS/D_TORROT para datos de cabecera. Capturar Utilice la marca de tiempo de creación del documento de Orden de Flete o Reserva de Flete. Tipo de evento explicit | |||
| Liquidación de Flete Creada | Esta actividad marca la creación del Documento de Liquidación de Flete (FSD), que calcula los costos de transporte a pagar al transportista. Este es el documento principal utilizado para las provisiones y la verificación de facturas. | ||
| Por qué es importante Esto da inicio a la fase de liquidación financiera del proceso de transporte. Analizar el tiempo desde la entrega hasta la creación de la liquidación ayuda a identificar cuellos de botella en el procesamiento financiero. Dónde obtener Este es un evento explícito capturado por la creación de un Documento de Liquidación de Flete. La marca de tiempo de creación está disponible en la tabla de cabecera de este documento, /SCMTMS/D_SFIRHD. Capturar Utilice la fecha y hora de creación del Documento de Liquidación de Flete. Tipo de evento explicit | |||
| Mercancía Entregada | Esta actividad representa la llegada del envío al destino final y la finalización del transporte físico. Se registra cuando el transportista informa que las mercancías han sido descargadas en la ubicación del consignatario. | ||
| Por qué es importante Este es el hito más importante para medir el rendimiento de entrega a tiempo y la satisfacción del cliente. También sirve típicamente como disparador para los procesos de facturación y liquidación. Dónde obtener Esto se registra como un evento de ejecución de 'Llegada a Destino' o 'Fin de Descarga' en SAP TM, actualizando el estado de ejecución de la Orden de Flete. Los datos a menudo se reciben del transportista. Capturar Utilice la marca de tiempo del evento de ejecución 'Llegada a Destino' reportado para la última parada de la Orden de Flete. Tipo de evento explicit | |||
| Mercancías Recogidas | Esta actividad marca el inicio del transporte físico de las mercancías. Se registra cuando el transportista informa que las mercancías han sido cargadas y han salido de la ubicación del remitente. | ||
| Por qué es importante Este es un hito clave de ejecución que marca el inicio de la fase en tránsito. Es fundamental para el seguimiento del rendimiento a tiempo y para proporcionar una visibilidad precisa del envío. Dónde obtener Este evento se registra típicamente en SAP Event Management, que está integrado con SAP TM, como un evento de 'Salida' o 'Fin de Carga'. Actualiza el estado de ejecución de la Orden de Flete. También puede registrarse directamente en la Orden de Flete. Capturar Utilice la marca de tiempo del evento de ejecución 'Salida' reportado para la ubicación de origen de la Orden de Flete. Tipo de evento explicit | |||
| Pago Procesado | Esta actividad final confirma que el transportista ha sido pagado por los servicios de transporte. Este evento ocurre típicamente en el sistema ERP conectado después de que la factura verificada se recibe de SAP TM. | ||
| Por qué es importante Esto marca el verdadero fin del ciclo de vida del transporte de principio a fin. Es esencial para medir la duración total del proceso y los KPIs de pago a tiempo. Dónde obtener Esta información reside en el sistema ERP (por ejemplo, S/4HANA Finance). Puede vincularse de nuevo al Documento de Liquidación de Flete a través del número de factura. Es posible que se envíe una actualización de estado a SAP TM, o que los datos deban obtenerse de tablas de ERP como BKPF y BSEG. Capturar Obtenga la fecha de compensación de pago del sistema ERP, vinculándola al envío a través de la referencia de la factura. Tipo de evento explicit | |||
| Prueba de Entrega Recibida | Esta actividad ocurre cuando el documento de Prueba de Entrega (POD) firmado es recibido del transportista y registrado en el sistema. Esto confirma la aceptación de las mercancías por parte del destinatario. | ||
| Por qué es importante La recepción del POD es un requisito previo crítico para facturar al cliente y liquidar los cargos de flete con el transportista. Los retrasos aquí impactan directamente el ciclo de efectivo a efectivo. Dónde obtener Esto se infiere típicamente de un cambio de estado en la Orden de Flete, como cuando el estado POD se establece en 'Recibido'. El cambio en este campo de estado proporciona la marca de tiempo para la actividad. Capturar Capture la marca de tiempo cuando el estado de la Prueba de Entrega en la Orden de Flete se actualiza a 'Recibida'. Tipo de evento inferred | |||
| Solicitud de Transporte Recibida | Esta actividad marca el inicio del proceso de transporte, representando la creación de un requisito de transporte. En SAP TM, esto se captura típicamente mediante la creación de una Orden de Expedición (FWO) o un Requisito de Transporte Basado en Pedido (OTR). | ||
| Por qué es importante Este es el evento de inicio principal para el proceso de envío de principio a fin. Analizar el tiempo desde esta actividad hasta la finalización de la planificación es crucial para medir la eficiencia de la planificación. Dónde obtener Este evento se registra al crear una Orden de Expedición (tipo de documento FWO) u otros documentos de requisito de transporte. La marca de tiempo de creación en la tabla de cabecera, como /SCMTMS/D_TORROT, sirve como hora del evento. Capturar Capture la fecha y hora de creación del documento de Orden de Reexpedición o Requerimiento de Transporte. Tipo de evento explicit | |||
| Transportista Asignado | Esta actividad indica que un proveedor de servicios de transporte específico, o transportista, ha sido seleccionado y asignado al envío. Esto puede ocurrir mediante asignación manual, planificación automatizada o un proceso de licitación. | ||
| Por qué es importante Asignar un transportista es un paso crítico antes de que un envío pueda ser confirmado y ejecutado. El seguimiento de esto ayuda a analizar los procesos de selección de transportistas y a asegurar una reserva a tiempo. Dónde obtener Esto se captura cuando el campo del transportista (parte con el rol 'Transportista') se completa en la Orden de Flete o Reserva de Flete. Para la licitación, es cuando se adjudica una Solicitud de Oferta de Flete. Capturar Identifique la marca de tiempo cuando la función de socio transportista se completa o confirma por primera vez en la Orden de Flete. Tipo de evento inferred | |||
| Declaración de Aduanas Presentada | Para envíos internacionales, esta actividad representa la presentación de la documentación aduanera requerida a las autoridades. Es un requisito previo para obtener el despacho para exportar o importar mercancías. | ||
| Por qué es importante La presentación oportuna de las declaraciones aduaneras es crucial para evitar retrasos en las fronteras. Esta actividad ayuda a monitorear la eficiencia del proceso de despacho de aduanas. Dónde obtener Este evento puede capturarse como un evento de ejecución específico informado por un agente de aduanas o de un cambio de estado en un sistema integrado de gestión aduanera, como SAP GTS. La Orden de Flete se actualiza en consecuencia. Capturar Capture la marca de tiempo del evento de ejecución 'Declaración de Aduanas Presentada' o un cambio de estado correspondiente. Tipo de evento explicit | |||
| Despacho de Aduanas Realizado | Esta actividad indica que el envío ha sido aprobado por las autoridades aduaneras y está listo para proceder. Este evento es un hito importante para la logística internacional, ya que elimina un cuello de botella potencial significativo. | ||
| Por qué es importante El despacho de aduanas es a menudo una fuente de grandes retrasos en las cadenas de suministro globales. El seguimiento de la duración y la tasa de éxito de esta actividad es clave para mejorar los tiempos de tránsito internacionales. Dónde obtener Esto se captura como un evento de ejecución de 'Despacho de Aduanas', típicamente informado por un agente de aduanas o un proveedor de visibilidad externo y actualizado en el seguimiento de ejecución de la Orden de Flete. Capturar Utilice la marca de tiempo del evento de ejecución 'Despacho de Aduanas' reportado asociado con la Orden de Flete. Tipo de evento explicit | |||
| Disputa de Flete Creada | Este evento indica que se ha encontrado una discrepancia entre la factura del transportista y los costos calculados en el Documento de Liquidación de Flete. Esto desencadena un flujo de trabajo de resolución de disputas. | ||
| Por qué es importante Las disputas retrasan los pagos a los transportistas y requieren esfuerzo administrativo para resolverse. El seguimiento de esta actividad ayuda a identificar las causas raíz de las imprecisiones de facturación, como tarifas incorrectas o cargos adicionales. Dónde obtener Esto puede inferirse de un cambio de estado en el Documento de Liquidación de Flete, donde se establece un estado de 'Disputa'. También puede implicar la creación de un documento de caso de disputa separado. Capturar Capture la marca de tiempo cuando se establece el estado de disputa en el Documento de Liquidación de Flete. Tipo de evento inferred | |||
| Envío Confirmado por Transportista | Este evento representa el acuerdo del transportista para ejecutar el transporte según lo planificado. La confirmación se recibe típicamente a través de un mensaje EDI, una actualización del portal del transportista o entrada manual, lo que actualiza el estado de la Orden de Flete. | ||
| Por qué es importante La confirmación del transportista proporciona un compromiso con el plan de envío, reduciendo la incertidumbre. Los retrasos en la recepción de esta confirmación pueden poner en riesgo todo el cronograma del envío. Dónde obtener Esto se infiere de un cambio en el campo de estado de confirmación de la Orden de Flete o Reserva de Flete. Un valor de estado específico, como 'Confirmado', se establecerá en la gestión de estado del documento. Capturar Rastree los cambios en los campos de estado de confirmación dentro del documento de la Orden de Flete. Tipo de evento inferred | |||
| Envío Redireccionado | Esta actividad significa un cambio no planificado en la ruta o el cronograma del envío después de que ha sido confirmado. Esto podría deberse a interrupciones, solicitudes de clientes o problemas logísticos. | ||
| Por qué es importante Los redireccionamientos a menudo conllevan mayores costos y retrasos. Identificar la frecuencia y las razones de los redireccionamientos ayuda a mejorar la precisión de la planificación y la estabilidad operativa. Dónde obtener Este evento se infiere detectando cambios significativos en las etapas, ubicaciones o fechas de una Orden de Flete después de que su ejecución haya comenzado. Los documentos de cambio (tablas CDHDR y CDPOS) pueden analizarse para este propósito. Capturar Detecta cambios en los campos clave de enrutamiento en el documento de Orden de Flete después del evento 'Envío Confirmado por Transportista'. Tipo de evento inferred | |||
| Factura Verificada | Esta actividad significa que la factura del transportista ha sido cotejada con éxito con el Documento de Liquidación de Flete y está aprobada para el pago. Es el paso final antes de que se inicie el proceso de pago en el sistema ERP. | ||
| Por qué es importante Esta actividad completa el proceso de auditoría y verificación de los costos de flete. Los retrasos en esta etapa pueden llevar a pagos tardíos a los transportistas, lo que podría dañar las relaciones. Dónde obtener Esto se infiere de un cambio de estado en el Documento de Liquidación de Flete, como 'Listo para Devengo' o 'Transferido para Contabilización', indicando que ha sido enviado al sistema ERP para pago. Capturar Rastree la marca de tiempo cuando el estado del ciclo de vida del FSD cambia para indicar que está listo para el pago o ha sido contabilizado. Tipo de evento inferred | |||
Guías de Extracción
Pasos
- Identifique y Active las APIs de Vistas CDS: Inicie sesión en su sistema SAP S/4HANA. Utilice la transacción
/IWFND/MAINT_SERVICEpara verificar que los servicios OData necesarios para las vistas CDS centrales estén activos. Los servicios clave a verificar incluyen los relacionados con I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder e I_FreightSettlementDocument. Si no están activos, trabaje con su administrador de SAP para añadirlos y activarlos desde el sistema de backend. - Establezca la Conectividad con la API: Obtenga la URL raíz para los servicios OData de su administrador de SAP. Configure una aplicación cliente, como un script de Python usando la librería requests, una herramienta ETL comercial o una herramienta como Postman, para conectarse a la API. Deberá configurar la autenticación, típicamente usando autenticación Básica (nombre de usuario y contraseña) o OAuth 2.0 para una conexión más segura.
- Defina el Alcance de la Extracción: Determine el alcance de su extracción de datos. Defina un rango de fechas específico, por ejemplo, los últimos 6 meses. Identifique las unidades organizacionales relevantes para filtrar, como Sociedad (Company Code), o tipos de documento específicos como Tipo de Orden de Flete, para asegurar que los datos sean relevantes para el proceso que está analizando.
- Construya la Consulta Base de Envíos: Comience consultando la vista CDS I_TransportationOrder. Esta vista sirve como objeto central para los envíos, también conocidos como Órdenes de Flete o Reservas de Flete. Utilice el parámetro OData
$selectpara elegir las columnas que necesita, incluyendo los atributos recomendados comoCarrierName,ModeOfTransportyRequestedDeliveryDate. Aplique un$filterpara limitar los datos por fecha y otros parámetros de alcance. - Consulte Eventos de Ejecución y Transporte: Utilice la vista CDS C_TranspOrdExecutionEvent para extraer eventos logísticos clave. Filtre esta vista por valores específicos de
EventCodeque correspondan a actividades como 'Mercancías Recogidas' (DEPARTURE) y 'Mercancías Entregadas' (ARRIVAL_AT_DESTINATION). Una estos datos de vuelta a sus datos de envío base usando el UUID de TransportationOrder. - Consulte Objetos de Negocio Relacionados: Para capturar el proceso completo, debe consultar otras vistas CDS relacionadas. Consulte I_ForwardingOrder para la actividad 'Solicitud de Transporte Recibida', e I_FreightSettlementDocument para actividades financieras como 'Liquidación de Flete Creada', 'Disputa de Flete Creada' y 'Factura Verificada'.
- Extraiga Actividades Basadas en el Estado: Muchas actividades no son eventos discretos, sino cambios de estado en el documento principal. Para actividades como 'Transportista Asignado', 'Envío Confirmado por Transportista', y 'Envío Cancelado', consultará la vista I_TransportationOrder y utilizará
LastChangeDateTimeasociado con el campo de estado relevante como el tiempo del evento. Esto requiere un mapeo cuidadoso de los códigos de estado a las actividades de negocio. - Una y Transforme los Datos: Consolide los datos extraídos de todas las fuentes en una única estructura de registro de eventos. Para cada actividad extraída, cree una fila que contenga las columnas requeridas:
ShipmentId,ActivityNameyEventTime. Asegúrese de que todos los atributos recomendados de la consulta de envío base estén presentes en cada fila para ese envío. Este paso es conceptualmente equivalente a una operaciónUNION ALLde SQL. - Maneje Eventos Complejos y Externos: Para actividades como 'Despacho de Aduanas Realizado' o 'Pago Procesado', los datos pueden residir en campos específicos o incluso en sistemas externos. La lógica de consulta proporcionada utiliza campos estándar como un proxy. Es posible que necesite ajustar la consulta para unirse con vistas CDS específicas de aduanas o correlacionar con una extracción ERP separada para datos de pago basada en el número de Documento de Liquidación de Flete.
- Formato para ProcessMind: Guarde el conjunto de datos consolidado final como un archivo CSV. Asegúrese de que los encabezados de las columnas coincidan con los requisitos para la carga, por ejemplo, mapeando su columna
ShipmentIdal campoCaseIden la configuración de la herramienta. Verifique que las marcas de tiempo estén en un formato consistente, preferiblemente UTC (YYYY-MM-DDTHH:MM:SSZ).
Configuración
- Vistas CDS Centrales: La extracción se basa principalmente en I_TransportationOrder (para órdenes de flete), C_TranspOrdExecutionEvent (para eventos de ejecución), I_ForwardingOrder (para solicitudes de transporte) e I_FreightSettlementDocument (para liquidación).
- Filtrado por Rango de Fechas: Es fundamental aplicar un filtro de fechas para gestionar el volumen de datos. Utilice
CreationDateTimeen I_TransportationOrder oActualBusinessDateTimeen C_TranspOrdExecutionEvent. Se recomienda un rango de 3 a 6 meses para un análisis inicial. - Filtrado por Tipo de Documento: Para centrar el análisis, filtre por tipos de documento específicos utilizando el campo
TransportationOrderType. Esto ayuda a separar diferentes escenarios logísticos, como envíos estándar de salida frente a traslados de stock. - Filtros Organizacionales: Si aplica, filtre por
PurchasingOrganizationu otros campos a nivel organizacional para limitar los datos a una unidad de negocio o región específica. - Paginación de la API: Para grandes conjuntos de datos, utilice los parámetros OData
$topy$skippara recuperar los datos en páginas más pequeñas. Esto evita los tiempos de espera (timeouts) de la API y reduce el consumo de memoria en el lado del cliente. Un tamaño de página de 1000 a 5000 filas suele ser efectivo. - Requisitos Previos: El usuario o la cuenta de servicio que realiza la extracción requiere autorizaciones para los servicios OData subyacentes (objeto de autorización S_SERVICE) y los datos de negocio dentro de las vistas CDS. Los servicios correspondientes deben activarse en SAP Gateway (
/IWFND/MAINT_SERVICE).
a Consulta de ejemplo sql
WITH Shipments AS (
SELECT
TransportationOrder AS ShipmentId,
CarrierName,
TranspOrdExecutionBlockRsnCode,
TransportationMode AS ModeOfTransport,
ShippingType AS ShipmentType,
CreationDateTime AS ShipmentCreationTime,
LastChangeDateTime,
LifeCycleStatus,
ConfirmationStatus,
OverallExecutionStatus,
DeliveryOverallStatus,
PlannedDepDateTimeReqByCust AS RequestedDeliveryDate,
TotalChargesAmountInTransacCrcy AS TotalFreightCost
FROM I_TransportationOrder
WHERE
CreationDateTime >= '[START_DATE]' AND CreationDateTime <= '[END_DATE]'
-- AND TransportationOrderType IN ('[Your_Type_1]', '[Your_Type_2]')
)
SELECT
fwo.PurchasingDocument AS ShipmentId,
'Transportation Request Received' AS ActivityName,
fwo.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM I_ForwardingOrder AS fwo
LEFT JOIN Shipments s ON fwo.PurchasingDocument = s.ShipmentId
WHERE fwo.CreationDateTime >= '[START_DATE]' AND fwo.CreationDateTime <= '[END_DATE]'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Planned' AS ActivityName,
s.ShipmentCreationTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
UNION ALL
SELECT
s.ShipmentId,
'Carrier Assigned' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CarrierName IS NOT NULL
UNION ALL
SELECT
s.ShipmentId,
'Shipment Confirmed By Carrier' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.ConfirmationStatus = 'C' -- 'Confirmed'
UNION ALL
SELECT
s.ShipmentId,
'Goods Picked Up' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'DEPARTURE'
UNION ALL
SELECT
s.ShipmentId,
'Customs Declaration Filed' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsRelevance IS NOT NULL -- This is a proxy, system config dependent
UNION ALL
SELECT
s.ShipmentId,
'Customs Cleared' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsOverallStatus = '4' -- 'Customs Cleared'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Rerouted' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.TranspOrdExecutionBlockRsnCode = '[Your Rerouting Reason Code]'
UNION ALL
SELECT
s.ShipmentId,
'Goods Delivered' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'ARRIVAL_AT_DESTINATION'
UNION ALL
SELECT
s.ShipmentId,
'Proof Of Delivery Received' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.DeliveryOverallStatus = 'C' -- 'POD Received'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Settlement Created' AS ActivityName,
fsd.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Dispute Created' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.DisputeStatus = '1' -- 'In Dispute'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Invoice Verified' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.OverallLifeCycleStatus = '06' -- 'Posted for Accruals'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Cancelled' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.LifeCycleStatus = 'X' -- 'Cancelled'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Payment Processed' AS ActivityName,
fsd.LastChangeDateTime AS EventTime, -- Approximation, actual payment is in ERP
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.InvoiceProcessingStatus = 'C' -- 'Completely Invoiced' Pasos
- Identifique y Active las APIs de Vistas CDS: Inicie sesión en su sistema SAP S/4HANA. Utilice la transacción
/IWFND/MAINT_SERVICEpara verificar que los servicios OData necesarios para las vistas CDS centrales estén activos. Los servicios clave a verificar incluyen los relacionados con I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder e I_FreightSettlementDocument. Si no están activos, trabaje con su administrador de SAP para añadirlos y activarlos desde el sistema de backend. - Establezca la Conectividad con la API: Obtenga la URL raíz para los servicios OData de su administrador de SAP. Configure una aplicación cliente, como un script de Python usando la librería requests, una herramienta ETL comercial o una herramienta como Postman, para conectarse a la API. Deberá configurar la autenticación, típicamente usando autenticación Básica (nombre de usuario y contraseña) o OAuth 2.0 para una conexión más segura.
- Defina el Alcance de la Extracción: Determine el alcance de su extracción de datos. Defina un rango de fechas específico, por ejemplo, los últimos 6 meses. Identifique las unidades organizacionales relevantes para filtrar, como Sociedad (Company Code), o tipos de documento específicos como Tipo de Orden de Flete, para asegurar que los datos sean relevantes para el proceso que está analizando.
- Construya la Consulta Base de Envíos: Comience consultando la vista CDS I_TransportationOrder. Esta vista sirve como objeto central para los envíos, también conocidos como Órdenes de Flete o Reservas de Flete. Utilice el parámetro OData
$selectpara elegir las columnas que necesita, incluyendo los atributos recomendados comoCarrierName,ModeOfTransportyRequestedDeliveryDate. Aplique un$filterpara limitar los datos por fecha y otros parámetros de alcance. - Consulte Eventos de Ejecución y Transporte: Utilice la vista CDS C_TranspOrdExecutionEvent para extraer eventos logísticos clave. Filtre esta vista por valores específicos de
EventCodeque correspondan a actividades como 'Mercancías Recogidas' (DEPARTURE) y 'Mercancías Entregadas' (ARRIVAL_AT_DESTINATION). Una estos datos de vuelta a sus datos de envío base usando el UUID de TransportationOrder. - Consulte Objetos de Negocio Relacionados: Para capturar el proceso completo, debe consultar otras vistas CDS relacionadas. Consulte I_ForwardingOrder para la actividad 'Solicitud de Transporte Recibida', e I_FreightSettlementDocument para actividades financieras como 'Liquidación de Flete Creada', 'Disputa de Flete Creada' y 'Factura Verificada'.
- Extraiga Actividades Basadas en el Estado: Muchas actividades no son eventos discretos, sino cambios de estado en el documento principal. Para actividades como 'Transportista Asignado', 'Envío Confirmado por Transportista', y 'Envío Cancelado', consultará la vista I_TransportationOrder y utilizará
LastChangeDateTimeasociado con el campo de estado relevante como el tiempo del evento. Esto requiere un mapeo cuidadoso de los códigos de estado a las actividades de negocio. - Una y Transforme los Datos: Consolide los datos extraídos de todas las fuentes en una única estructura de registro de eventos. Para cada actividad extraída, cree una fila que contenga las columnas requeridas:
ShipmentId,ActivityNameyEventTime. Asegúrese de que todos los atributos recomendados de la consulta de envío base estén presentes en cada fila para ese envío. Este paso es conceptualmente equivalente a una operaciónUNION ALLde SQL. - Maneje Eventos Complejos y Externos: Para actividades como 'Despacho de Aduanas Realizado' o 'Pago Procesado', los datos pueden residir en campos específicos o incluso en sistemas externos. La lógica de consulta proporcionada utiliza campos estándar como un proxy. Es posible que necesite ajustar la consulta para unirse con vistas CDS específicas de aduanas o correlacionar con una extracción ERP separada para datos de pago basada en el número de Documento de Liquidación de Flete.
- Formato para ProcessMind: Guarde el conjunto de datos consolidado final como un archivo CSV. Asegúrese de que los encabezados de las columnas coincidan con los requisitos para la carga, por ejemplo, mapeando su columna
ShipmentIdal campoCaseIden la configuración de la herramienta. Verifique que las marcas de tiempo estén en un formato consistente, preferiblemente UTC (YYYY-MM-DDTHH:MM:SSZ).
Configuración
- Vistas CDS Centrales: La extracción se basa principalmente en I_TransportationOrder (para órdenes de flete), C_TranspOrdExecutionEvent (para eventos de ejecución), I_ForwardingOrder (para solicitudes de transporte) e I_FreightSettlementDocument (para liquidación).
- Filtrado por Rango de Fechas: Es fundamental aplicar un filtro de fechas para gestionar el volumen de datos. Utilice
CreationDateTimeen I_TransportationOrder oActualBusinessDateTimeen C_TranspOrdExecutionEvent. Se recomienda un rango de 3 a 6 meses para un análisis inicial. - Filtrado por Tipo de Documento: Para centrar el análisis, filtre por tipos de documento específicos utilizando el campo
TransportationOrderType. Esto ayuda a separar diferentes escenarios logísticos, como envíos estándar de salida frente a traslados de stock. - Filtros Organizacionales: Si aplica, filtre por
PurchasingOrganizationu otros campos a nivel organizacional para limitar los datos a una unidad de negocio o región específica. - Paginación de la API: Para grandes conjuntos de datos, utilice los parámetros OData
$topy$skippara recuperar los datos en páginas más pequeñas. Esto evita los tiempos de espera (timeouts) de la API y reduce el consumo de memoria en el lado del cliente. Un tamaño de página de 1000 a 5000 filas suele ser efectivo. - Requisitos Previos: El usuario o la cuenta de servicio que realiza la extracción requiere autorizaciones para los servicios OData subyacentes (objeto de autorización S_SERVICE) y los datos de negocio dentro de las vistas CDS. Los servicios correspondientes deben activarse en SAP Gateway (
/IWFND/MAINT_SERVICE).
a Consulta de ejemplo sql
WITH Shipments AS (
SELECT
TransportationOrder AS ShipmentId,
CarrierName,
TranspOrdExecutionBlockRsnCode,
TransportationMode AS ModeOfTransport,
ShippingType AS ShipmentType,
CreationDateTime AS ShipmentCreationTime,
LastChangeDateTime,
LifeCycleStatus,
ConfirmationStatus,
OverallExecutionStatus,
DeliveryOverallStatus,
PlannedDepDateTimeReqByCust AS RequestedDeliveryDate,
TotalChargesAmountInTransacCrcy AS TotalFreightCost
FROM I_TransportationOrder
WHERE
CreationDateTime >= '[START_DATE]' AND CreationDateTime <= '[END_DATE]'
-- AND TransportationOrderType IN ('[Your_Type_1]', '[Your_Type_2]')
)
SELECT
fwo.PurchasingDocument AS ShipmentId,
'Transportation Request Received' AS ActivityName,
fwo.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM I_ForwardingOrder AS fwo
LEFT JOIN Shipments s ON fwo.PurchasingDocument = s.ShipmentId
WHERE fwo.CreationDateTime >= '[START_DATE]' AND fwo.CreationDateTime <= '[END_DATE]'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Planned' AS ActivityName,
s.ShipmentCreationTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
UNION ALL
SELECT
s.ShipmentId,
'Carrier Assigned' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CarrierName IS NOT NULL
UNION ALL
SELECT
s.ShipmentId,
'Shipment Confirmed By Carrier' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.ConfirmationStatus = 'C' -- 'Confirmed'
UNION ALL
SELECT
s.ShipmentId,
'Goods Picked Up' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'DEPARTURE'
UNION ALL
SELECT
s.ShipmentId,
'Customs Declaration Filed' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsRelevance IS NOT NULL -- This is a proxy, system config dependent
UNION ALL
SELECT
s.ShipmentId,
'Customs Cleared' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsOverallStatus = '4' -- 'Customs Cleared'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Rerouted' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.TranspOrdExecutionBlockRsnCode = '[Your Rerouting Reason Code]'
UNION ALL
SELECT
s.ShipmentId,
'Goods Delivered' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'ARRIVAL_AT_DESTINATION'
UNION ALL
SELECT
s.ShipmentId,
'Proof Of Delivery Received' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.DeliveryOverallStatus = 'C' -- 'POD Received'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Settlement Created' AS ActivityName,
fsd.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Dispute Created' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.DisputeStatus = '1' -- 'In Dispute'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Invoice Verified' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.OverallLifeCycleStatus = '06' -- 'Posted for Accruals'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Cancelled' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.LifeCycleStatus = 'X' -- 'Cancelled'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Payment Processed' AS ActivityName,
fsd.LastChangeDateTime AS EventTime, -- Approximation, actual payment is in ERP
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.InvoiceProcessingStatus = 'C' -- 'Completely Invoiced' Pasos
- Defina los Requisitos de Datos: Comience confirmando la lógica exacta para cada una de las 15 actividades requeridas y todos los atributos. Esto implica mapear cada actividad a cambios de estado específicos, eventos de creación o enlaces de documentos dentro de su sistema SAP TM. Por ejemplo, determine el estado de ejecución exacto que significa 'Mercancías Recogidas'.
- Acceda al Entorno de Desarrollo ABAP: Inicie sesión en SAP GUI y vaya al Editor ABAP usando el código de transacción
SE38. Ingrese un nombre para su nuevo programa, por ejemplo,ZTM_PROCESS_EXTRACT, y haga clic en 'Crear'. Proporcione un título y configure el tipo de programa como 'Programa Ejecutable'. - Cree la Pantalla de Selección: En el programa, defina la pantalla de selección que verán los usuarios. Esta debe incluir parámetros para filtrar los datos, como un rango de fechas para la fecha de creación de la orden de flete (
SO_CREDT), y opciones de selección para tipos de documento (SO_TYPE) o transportistas (SO_CARR). - Defina la Estructura de Salida: Defina una estructura de tabla interna que coincida con el formato de registro de eventos requerido. Esta estructura debe incluir campos para
ShipmentId,ActivityName,EventTime,EndTime,CarrierName,RequestedDeliveryDate,ModeOfTransport,TotalFreightCosteIsOnTimeDelivery. - Implemente la Lógica de Selección de Datos: Escriba la lógica ABAP principal para seleccionar datos para cada una de las 15 actividades. Esto típicamente implica consultar múltiples tablas de SAP TM. Comience seleccionando los documentos de envío primarios, como las Órdenes de Flete, dentro del rango de fechas especificado.
- Extraiga Eventos de Planificación y Ejecución: Para cada documento de envío seleccionado (por ejemplo, Orden de Flete), consulte las tablas relacionadas y los objetos de negocio para encontrar marcas de tiempo para diferentes eventos. Use la tabla
/SCMTMS/D_TORROTpara la creación de la Orden de Flete ('Envío Planificado'), la asignación de transportista ('Transportista Asignado') y los cambios de estado de ejecución que corresponden a 'Mercancías Recogidas' y 'Mercancías Entregadas'. La creación de la Orden de Reexpedición precedente (/SCMTMS/D_TRQROT) puede significar 'Solicitud de Transporte Recibida'. - Extraiga la Confirmación y Re-ruteo del Transportista: Consulte las tablas de estado o los documentos de cambio (CDHDR/CDPOS) asociados con la Orden de Flete para identificar cuándo se estableció el estado
CONFIRMATION, que captura 'Envío Confirmado por Transportista'. De manera similar, busque cambios significativos en la información de enrutamiento para capturar 'Envío Re-ruteado'. - Extraiga Eventos de Aduanas: Si utiliza SAP Global Trade Services (GTS) o un módulo similar, los eventos de aduanas ('Declaración de Aduanas Presentada', 'Despacho de Aduanas Realizado') a menudo se rastrean a través de documentos vinculados. La lógica debe leer el flujo de documentos (
/SCMTMS/D_TORDOC) de la Orden de Flete para encontrar estos documentos relacionados y sus tiempos de creación o cambio de estado. - Extraiga Eventos de Liquidación y Disputa: Consulte la tabla de cabecera del Documento de Liquidación de Flete (
/SCMTMS/D_SFIRHD) y sus elementos y estados relacionados para capturar los eventos 'Liquidación de Flete Creada', 'Disputa de Flete Creada' y 'Factura Verificada'. Vincúlelos alShipmentIdoriginal. - Consolide los Datos: Para cada evento encontrado, cree un nuevo registro en su tabla interna final. Rellene
ActivityNamecon la actividad correspondiente,EventTimecon la marca de tiempo del evento yShipmentIdcon el ID de la Orden de Flete o Reserva de Flete. Rellene los demás atributos de los documentos de origen. - Formatee y Exporte el Archivo: Una vez que la tabla interna final esté completamente poblada, formatee los datos en un archivo plano. Utilice los comandos
OPEN DATASET,LOOP AT... TRANSFER...yCLOSE DATASETpara escribir el contenido de la tabla interna en un archivo CSV o TXT en el servidor de aplicaciones SAP (accesible a través de la transacción AL11). - Programe y Recupere: El programa ABAP puede programarse para ejecutarse como un job en segundo plano (transacción SM36) para extraer datos automáticamente. El archivo generado se puede descargar luego del servidor de aplicaciones a una máquina local usando la transacción
CG3Ypara su carga en ProcessMind.
Configuración
- Rango de Fechas: La pantalla de selección debe incluir un rango de fechas obligatorio para la fecha de creación del documento de transporte principal (por ejemplo, Orden de Flete). Para un análisis inicial, se recomienda un rango de 3 a 6 meses para asegurar un conjunto de datos representativo sin causar un tiempo de ejecución excesivo.
- Filtro por Tipo de Documento: Proporcione un filtro para el Tipo de Documento de Transporte (por ejemplo, Orden de Flete, Reserva de Flete). Esto es crucial para centrar el análisis en procesos específicos como el transporte terrestre frente al marítimo.
- Filtro por Transportista: Permita a los usuarios filtrar por transportistas específicos. Esto ayuda a analizar el rendimiento de los socios logísticos individuales.
- Filtros Organizacionales: Incluya filtros para unidades organizativas relevantes, como Organización de Compras o Sociedad, para reducir la extracción a áreas de negocio específicas.
- Optimización del Rendimiento: Para grandes conjuntos de datos, asegúrese de que el código ABAP utilice campos de base de datos indexados en las cláusulas
WHERE, evite bucles anidados siempre que sea posible y seleccione solo los campos necesarios de la base de datos para minimizar el consumo de memoria. - Requisitos Previos: El usuario que ejecuta el informe necesita autorización para ejecutar programas ABAP. El desarrollador requiere la autorización
S_DEVELOP. El programa en sí requiere autorizaciones para el acceso al sistema de archivos en el servidor de aplicaciones (objetoS_DATASET) y acceso a las tablas de base de datos de TM relevantes y objetos BOPF.
a Consulta de ejemplo abap
REPORT ztm_process_extract.
*&---------------------------------------------------------------------*
*& Data Structures
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_s_event_log,
shipmentid TYPE /scmtms/tor_id,
activityname TYPE string,
eventtime TYPE timestamp,
endtime TYPE timestamp,
carriername TYPE string,
requesteddeliverydate TYPE timestamp,
modeoftransport TYPE /scmtms/mot,
totalfreightcost TYPE /scmtms/chargeable_weight,
isontimedelivery TYPE abap_bool,
END OF ty_s_event_log.
DATA: lt_event_log TYPE TABLE OF ty_s_event_log.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: so_credt FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: so_torid FOR /scmtms/d_torrot-tor_id.
SELECT-OPTIONS: so_carr FOR /scmtms/d_torrot-lsp_id.
*&---------------------------------------------------------------------*
*& Main Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
DATA: ls_event_log TYPE ty_s_event_log.
" Select base data: Freight Orders (Shipments)
SELECT tor_id, tor_cat, lsp_id, mot_code, cretd_tst, btd_tstmp_end
FROM /scmtms/d_torrot
INTO TABLE @DATA(lt_tor_root)
WHERE CAST( cretd_tst AS DATS ) IN @so_credt
AND tor_id IN @so_torid
AND lsp_id IN @so_carr.
IF lt_tor_root IS INITIAL.
MESSAGE 'No data found for the given selection.' TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
" Loop through each shipment to build the event log
LOOP AT lt_tor_root INTO DATA(ls_tor_root).
" 1. Transportation Request Received (Approximation from FWO creation)
SELECT SINGLE created_at_utc FROM /scmtms/d_trqrot
WHERE db_key IN ( SELECT trq_root_key FROM /scmtms/d_tordoc
WHERE parent_key = @ls_tor_root-db_key AND bo_node_cat = 'TRQ_ROOT' )
INTO @DATA(lv_trq_created_ts).
IF sy-subrc = 0.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Transportation Request Received'.
ls_event_log-eventtime = lv_trq_created_ts.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 2. Shipment Planned
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Planned'.
ls_event_log-eventtime = ls_tor_root-cretd_tst.
APPEND ls_event_log TO lt_event_log.
" 3. Carrier Assigned
IF ls_tor_root-lsp_id IS NOT INITIAL.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Carrier Assigned'.
ls_event_log-eventtime = ls_tor_root-cretd_tst. " Approximated with creation time
APPEND ls_event_log TO lt_event_log.
ENDIF.
" Get statuses from /SCMTMS/D_TORSTA
SELECT status, tstmp FROM /scmtms/d_torsta
INTO TABLE @DATA(lt_statuses)
WHERE parent_key = @ls_tor_root-db_key.
" 4. Shipment Confirmed By Carrier
READ TABLE lt_statuses WITH KEY status = 'CONFIRMED' INTO DATA(ls_conf_status).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Confirmed By Carrier'.
ls_event_log-eventtime = ls_conf_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 5. Goods Picked Up
READ TABLE lt_statuses WITH KEY status = 'LOADING_END' INTO DATA(ls_pickup_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Goods Picked Up'.
ls_event_log-eventtime = ls_pickup_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 6. Customs Declaration Filed (Placeholder logic)
" 7. Customs Cleared (Placeholder logic)
" 8. Shipment Rerouted (Placeholder logic, needs change documents)
" 9. Goods Delivered
READ TABLE lt_statuses WITH KEY status = 'UNLOADING_END' INTO DATA(ls_delivery_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Goods Delivered'.
ls_event_log-eventtime = ls_delivery_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 10. Proof Of Delivery Received
READ TABLE lt_statuses WITH KEY status = 'POD_RECEIVED' INTO DATA(ls_pod_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Proof Of Delivery Received'.
ls_event_log-eventtime = ls_pod_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 11. Freight Settlement Created
SELECT SINGLE created_at_utc FROM /scmtms/d_sfirhd
WHERE db_key IN ( SELECT sfir_root_key FROM /scmtms/d_tordoc
WHERE parent_key = @ls_tor_root-db_key AND bo_node_cat = 'SFIR_ROOT' )
INTO @DATA(lv_fsd_created_ts).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Freight Settlement Created'.
ls_event_log-eventtime = lv_fsd_created_ts.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 12. Freight Dispute Created (Needs logic based on dispute status in SFIR)
" 13. Invoice Verified (Needs logic based on invoice status in SFIR)
" 14. Shipment Cancelled
READ TABLE lt_statuses WITH KEY status = 'CANCELLED' INTO DATA(ls_cancel_status).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Cancelled'.
ls_event_log-eventtime = ls_cancel_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 15. Payment Processed (Data is typically in the ERP system, not TM)
ENDLOOP.
" Final step: Write lt_event_log to a file on the application server
DATA(lv_filepath) = '/usr/sap/trans/[YourInstance]/[YourFileName].csv'.
OPEN DATASET lv_filepath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
" Write header
DATA(lv_header) = 'ShipmentId,ActivityName,EventTime'.
TRANSFER lv_header TO lv_filepath.
" Write data
LOOP AT lt_event_log INTO ls_event_log.
DATA(lv_line) = |{ ls_event_log-shipmentid },{ ls_event_log-activityname },{ ls_event_log-eventtime }|.
TRANSFER lv_line TO lv_filepath.
ENDLOOP.
CLOSE DATASET lv_filepath.
ELSE.
MESSAGE 'Error opening file on application server.' TYPE 'E'.
ENDIF.
ENDFOR.