Su Template de datos de Transportation Management
Su Template de datos de Transportation Management
- Atributos recomendados para recopilar
- Actividades clave que debe supervisar
- Guía de extracción para SAP Transportation Management
Atributos de la gestión del transporte
| Nombre | Descripción | ||
|---|---|---|---|
| Envío ShipmentId | El identificador único de un movimiento individual de mercancías, que sirve como caso central para el análisis. | ||
| Descripción El Shipment ID es la clave principal que agrupa todas las actividades y eventos de transporte relacionados. Representa un único proceso de transporte integral, desde la solicitud inicial hasta el comprobante de entrega final y el pago. En Process Mining, este atributo es esencial para construir la vista del caso, ya que permite a las personas analistas seguir el recorrido completo de cada envío. Permite analizar las variantes del proceso, los tiempos de ciclo y los resultados asociados con cada envío, y proporciona una visión completa del rendimiento del transporte. Por qué es importante Este es el identificador de caso fundamental, que vincula todos los eventos y puntos de datos con una orden de transporte específica, algo esencial para el análisis integral del proceso. Dónde obtenerlo Este identificador es el número de Freight Order o Freight Booking en SAP TM. Puede encontrarse en tablas como /SCMTMS/D_TORROT y /SCMTMS/D_TRQROT. Ejemplos 610000432161000056786100009876 | |||
| Hora del evento EventTime | La marca de tiempo que indica cuándo tuvo lugar una actividad o un evento específico. | ||
| Descripción Event Time proporciona la fecha y hora exactas de cada actividad del proceso de transporte. Estos datos temporales son fundamentales para calcular los tiempos de ciclo, las duraciones y los tiempos de espera entre los distintos pasos del proceso. En el análisis, este atributo se utiliza para ordenar correctamente los eventos, crear un registro cronológico y realizar análisis de rendimiento basados en el tiempo. Es esencial para identificar retrasos, medir la eficiencia del proceso y evaluar el rendimiento con respecto a los calendarios o los acuerdos de nivel de servicio. Por qué es importante La marca de tiempo es esencial para ordenar cronológicamente los eventos y calcular todas las métricas de rendimiento, como los tiempos de ciclo y las entregas a tiempo. Dónde obtenerlo Se obtiene de las tablas del gestor de eventos de SAP TM, como /SAPTRX/EH_EVMSG, que almacenan las marcas de tiempo de los eventos notificados. Ejemplos 2023-04-15T10:00:00Z2023-04-16T14:30:00Z2023-04-20T09:15:00Z | |||
| Nombre de la actividad ActivityName | El nombre de un evento de negocio o paso específico que tuvo lugar dentro del proceso de transporte. | ||
| Descripción El nombre de la actividad describe una tarea o un hito individual del ciclo de vida del envío, como «Shipment Planned», «Goods Picked Up» o «Goods Delivered». Estas actividades forman los nodos del mapa de procesos descubierto. Analizar la secuencia y la frecuencia de las actividades ayuda a identificar el flujo estándar del proceso, las desviaciones, los cuellos de botella y los bucles de retrabajo. Es la base del descubrimiento de procesos y de la comprobación de conformidad en la gestión del transporte. Por qué es importante Este atributo define los pasos del proceso de transporte y permite visualizar y analizar el flujo completo del envío. Dónde obtenerlo Normalmente se obtiene de los códigos de evento o de los cambios de estado registrados en el gestor de eventos de seguimiento de ejecución de SAP TM. Puede proceder de tablas que registran cambios de estado de objetos de negocio o mensajes de eventos específicos. Ejemplos Envío planificadoTransportista asignadoMercancías recogidasMercancías entregadasComprobante de entrega recibido | |||
| ¿La entrega fue puntual? IsOnTimeDelivery | Un indicador booleano que señala si las mercancías se entregaron en la fecha de entrega solicitada o antes. | ||
| Descripción Este atributo calculado compara la marca de tiempo de la actividad «Mercancías entregadas» con Requested Delivery Date. Devuelve true si la entrega se realizó a tiempo o antes, y false si se produjo con retraso. Este atributo simplifica el análisis del rendimiento al crear un resultado binario claro para cada envío. Es la base del Dashboard de rendimiento de entregas a tiempo y del KPI correspondiente. Permite filtrar fácilmente los envíos retrasados y realizar un análisis de causas raíz para comprender los factores que explican el bajo rendimiento. Por qué es importante Mide directamente el cumplimiento de los compromisos de entrega y simplifica el cálculo y la visualización del KPI fundamental de entregas a tiempo. Dónde obtenerlo Este atributo no se almacena en SAP TM. Debe calcularse durante la transformación de datos comparando la marca de tiempo real del evento de entrega con Requested Delivery Date. Ejemplos truefalse | |||
| Coste total del transporte TotalFreightCost | El coste total calculado o facturado del envío. | ||
| Descripción Total Freight Cost representa el impacto financiero de un envío. Puede ser el coste calculado por el sistema de gestión del transporte o el importe final de la factura del transportista después de la liquidación. Este atributo permite integrar la dimensión financiera en el análisis del proceso. Los analistas pueden identificar las variantes de proceso más costosas, calcular el coste de los retrasos o desvíos y comparar la rentabilidad de distintos transportistas o modos de transporte. Es fundamental para los Dashboards centrados en el gasto de transporte y el análisis del coste de servicio. Por qué es importante Añade una dimensión financiera al proceso y permite analizar el gasto en transporte, el coste por envío y el impacto económico de las ineficiencias del proceso. Dónde obtenerlo Se obtiene del documento Freight Settlement Document de SAP TM después de calcular los cargos. Puede encontrarse en tablas como /SCMTMS/D_SFIRHD. Ejemplos 250.751200.005430.50 | |||
| Fecha de entrega solicitada RequestedDeliveryDate | La fecha y hora de entrega solicitadas por el cliente o estipuladas en el pedido de ventas. | ||
| Descripción Requested Delivery Date es la fecha límite objetivo de la actividad «Mercancías entregadas». Sirve como referencia principal para medir el rendimiento de las entregas a tiempo. Esta fecha es fundamental para calcular el KPI «Tasa de entregas a tiempo». Al comparar la marca de tiempo real de la entrega con la fecha solicitada, las organizaciones pueden determinar si cumplieron el acuerdo de nivel de servicio. Analizar las desviaciones ayuda a identificar causas sistémicas de los retrasos, como problemas de rendimiento del transportista, retrasos en la planificación o retenciones aduaneras. Por qué es importante Es la referencia para medir el rendimiento de las entregas a tiempo, un KPI fundamental para la satisfacción del cliente y la excelencia operativa. Dónde obtenerlo Normalmente, esta fecha se transfiere del pedido de ventas o de la orden de transporte de stock precedente de SAP ERP. Se almacena en los campos de fecha y hora de Freight Unit o Freight Order. 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 StartTime indica el inicio de un evento, EndTime marca su conclusión. Esto resulta especialmente útil para actividades con una duración, como «Despacho de aduanas» o «Carga de mercancías». La diferencia entre EndTime y StartTime representa el tiempo de procesamiento de esa actividad. En el análisis de Process Mining, disponer de la hora de inicio y de finalización permite analizar con mayor detalle la duración de las actividades y separar el tiempo de procesamiento del tiempo de espera. Así se puede localizar exactamente dónde se producen las ineficiencias, ya sea durante la ejecución de una tarea o en las transferencias entre tareas. Por qué es importante Permite calcular con precisión los tiempos de procesamiento de las actividades y distinguir el tiempo de trabajo activo del tiempo de espera entre eventos. Dónde obtenerlo Al igual que StartTime, se obtiene de las tablas del gestor de eventos. Puede corresponder a un evento independiente de «completado» para una actividad determinada. Ejemplos 2023-04-15T11:30:00Z2023-04-16T15:00:00Z2023-04-20T09:45:00Z | |||
| Modo de transporte ModeOfTransport | El medio de transporte utilizado para el envío, como carretera, ferrocarril, aire o mar. | ||
| Descripción Este atributo especifica el modo de transporte. Cada modo tiene estructuras de costes, tiempos de tránsito y complejidades de proceso diferentes. Por ejemplo, un envío internacional de carga aérea incluye actividades distintas, como el despacho de aduanas, frente a un envío nacional por camión. Analizar los procesos por modo de transporte permite diseñar iniciativas de mejora específicas. También es fundamental para el análisis de costes, especialmente para identificar el uso de transporte premium, como el transporte aéreo urgente, frente a modos estándar y más económicos. Esta segmentación es clave para comprender y controlar el gasto en transporte. Por qué es importante Permite analizar las variaciones de costes, tiempos y procesos según el modo de transporte, algo fundamental para optimizar costes e identificar el uso de transporte premium. Dónde obtenerlo Es un campo clave de Freight Order o Freight Booking, que suele aparecer como Transportation Mode o MOT. Ejemplos 01 (carretera)02 (ferrocarril)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 Carrier Name identifica a la empresa responsable de transportar físicamente las mercancías. Es una dimensión fundamental para analizar el rendimiento, ya que los distintos transportistas pueden ofrecer diferentes niveles de servicio, costes y fiabilidad. En Process Mining, este atributo se utiliza para segmentar y comparar el rendimiento de varios transportistas. Permite crear cuadros de mando de transportistas, supervisar las tasas de entrega a tiempo por transportista, comparar costes e identificar cuáles se asocian con mayor frecuencia a retrasos o disputas. Esta información es esencial para la gestión estratégica de transportistas y las compras. Por qué es importante Permite comparar el rendimiento de distintos transportistas, un aspecto clave para optimizar su selección, los costes y los niveles de servicio. Dónde obtenerlo Esta información se almacena en el documento Freight Order o Freight Booking. Se vincula mediante la función de socio comercial correspondiente al transportista. Ejemplos DHL ExpressFedEx FreightMaersk LineUnion Pacific Railroad | |||
| ¿Está en disputa? IsDisputed | Un indicador booleano que señala si la factura de transporte del envío dio lugar a una disputa. | ||
| Descripción Este indicador calculado identifica los envíos asociados a una disputa de liquidación del transporte. Devuelve true si se creó una disputa y false en caso contrario. Puede derivarse de la existencia de una actividad «Disputa de transporte creada» o de un campo Dispute Reason no vacío. Este atributo simplifica el análisis del proceso de liquidación del transporte. Permite calcular fácilmente el KPI de tasa de discrepancias de facturación del transporte y filtrar todos los envíos en disputa. Después, los analistas pueden investigar las características comunes de estos envíos, como transportistas, rutas o tipos de cargos, para encontrar la causa raíz de los errores de facturación. Por qué es importante Simplifica la identificación de liquidaciones de transporte problemáticas y permite calcular rápidamente la tasa de disputas y analizar las causas raíz de los errores de facturación. Dónde obtenerlo Este atributo no se almacena en SAP TM. Debe calcularse según exista un caso de disputa vinculado al Freight Settlement Document. 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 Shipment Status ofrece una instantánea de la fase del ciclo de vida en la que se encuentra el envío, como «En planificación», «En ejecución», «Entregado» o «Cancelado». Representa el último estado conocido del caso. Este atributo resulta útil para filtrar y analizar los envíos según su resultado. Por ejemplo, un analista puede centrarse únicamente en los envíos completados para medir el tiempo de ciclo de extremo a extremo, o analizar solo los envíos cancelados para comprender sus causas raíz. Proporciona un contexto importante para interpretar el flujo del proceso. Por qué es importante Proporciona el resultado general de cada envío y permite filtrarlo y analizarlo según esté completado, cancelado o todavía en tránsito. Dónde obtenerlo Es el campo de estado general de la cabecera del documento Freight Order o Freight Booking en SAP TM. Ejemplos En planificaciónListo para el transporteEn ejecuciónEjecutadoCancelado | |||
| Fecha de recogida programada ScheduledPickupDate | La fecha y hora planificadas para que el transportista recoja las mercancías en el punto de expedición. | ||
| Descripción Scheduled Pickup Date es la hora acordada para iniciar el transporte físico. Es un hito clave de la fase de ejecución del envío. Este atributo es esencial para supervisar la puntualidad del primer tramo del trayecto. 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 del punto de expedición como del transportista. Por qué es importante Sirve como referencia para medir la puntualidad de la recogida y ayuda a identificar retrasos desde el inicio del trayecto físico del envío. Dónde obtenerlo Es una fecha y hora planificadas almacenadas en la secuencia de paradas de Freight Order en SAP TM. Ejemplos 2023-05-18T09:00:00Z2023-05-30T14:00:00Z2023-06-12T10:30:00Z | |||
| Motivo de la disputa DisputeReason | El motivo indicado cuando se disputa una factura de transporte. | ||
| Descripción Cuando la factura de un transportista no coincide con el coste previsto calculado en SAP TM, se crea una disputa. Este atributo registra el motivo de la discrepancia, como «Tarifa incorrecta», «Factura duplicada» o «Cargo adicional no aprobado». Analizar los motivos de las disputas es fundamental para el Dashboard de errores y tasa de disputas de facturas de transporte. Ayuda a identificar las causas raíz de las imprecisiones de facturación, ya se deban a problemas de datos maestros, errores del transportista o fallos operativos. Esta información permite tomar medidas específicas para reducir las disputas, acelerar el ciclo de pago y disminuir la carga administrativa. Por qué es importante Proporciona la causa raíz de los errores de facturación del transporte y permite tomar medidas específicas para reducir las disputas de facturas y mejorar el proceso de liquidación. Dónde obtenerlo Esta información se registra en el caso de gestión de disputas asociado a un Freight Settlement Document. Ejemplos Diferencia de tarifaPeso incorrectoCargo por demora no aprobadoFactura duplicada | |||
| Motivo del retraso DelayReason | Un código o texto que explica el motivo del retraso de un envío. | ||
| Descripción El atributo Delay Reason registra la causa de una desviación con respecto al calendario planificado, como «Mal tiempo», «Retención aduanera» o «Retraso del transportista». Esta información suele notificarse manualmente o mediante un mensaje de evento del transportista. Es un atributo muy útil para el análisis de causas raíz. Permite ir más allá de saber simplemente que un envío llegó tarde y comprender por qué. Al categorizar y cuantificar los motivos de los retrasos, las organizaciones pueden identificar problemas recurrentes y centrar sus esfuerzos de mejora en las áreas de mayor impacto, como mejorar la comunicación con los transportistas u optimizar las rutas para evitar la congestión. Por qué es importante Explica el motivo de los retrasos de los envíos y permite realizar un análisis de causas raíz para reducir las excepciones y mejorar el rendimiento de las entregas a tiempo. Dónde obtenerlo Puede registrarse como código y motivo del evento en el marco de gestión de eventos de SAP TM cuando se notifica un evento «Llegada/salida retrasada». Ejemplos RETRASO_POR_CLIMAINSPECCIÓN_ADUANERACONGESTIÓN_PORTUARIAFALLA_MECÁNICA | |||
| Nombre de usuario UserName | El ID o nombre del usuario 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 ejecutaron. Analizar las actividades por usuario ayuda a comprender la distribución de la carga de trabajo, identificar necesidades de formación y reconocer a quienes obtienen mejores resultados. También es fundamental para el cumplimiento y las auditorías, ya que proporciona un registro claro de quién hizo qué y cuándo. Esto puede revelar diferencias en la forma en que distintos usuarios realizan la misma tarea. Por qué es importante Asigna los pasos manuales del proceso a usuarios específicos y permite analizar la carga de trabajo, el rendimiento individual y las oportunidades de formación. Dónde obtenerlo Normalmente se encuentra en el registro de cambios o en las tablas de cabecera de los documentos de transporte, en campos como «Created By» o «Changed By» (por ejemplo, ERNAM, AENAM). Ejemplos CB998030SMITHJPLANNER_EU | |||
| País de destino DestinationCountry | El país al que se entrega el envío. | ||
| Descripción Este atributo identifica el país de destino final del envío y se obtiene de la dirección de la última ubicación de entrega. Al igual que el país de origen, analizar los datos por país de destino es fundamental para comprender los retos logísticos regionales. Puede revelar patrones, como los destinos más propensos a sufrir retrasos en la entrega o con costes de última milla más elevados. Esta información resulta valiosa para optimizar la red, establecer expectativas de entrega realistas y gestionar el cumplimiento del comercio internacional. Por qué es importante Permite analizar el rendimiento del proceso por destino y pone de relieve problemas relacionados con determinadas regiones de entrega, autoridades aduaneras o transportistas de última milla. Dónde obtenerlo Forma parte de la información de dirección de la ubicación de destino de la última parada de Freight Order. 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 del trayecto de transporte. Se obtiene de la dirección del punto de recogida inicial. Analizar el proceso por país de origen ayuda a identificar diferencias regionales de rendimiento, costes y complejidad. Puede poner de manifiesto países con tiempos de despacho de aduanas más largos, costes de transporte más elevados 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 cada región. Por qué es importante Permite analizar geográficamente el rendimiento de los envíos y ayuda a identificar cuellos de botella regionales, factores de coste o variaciones del proceso. Dónde obtenerlo Forma parte de la información de dirección de la ubicación de origen de la primera parada de Freight Order. Ejemplos DEUSCNMX | |||
| Sistema de origen SourceSystem | El sistema del que proceden los datos de eventos. | ||
| Descripción Este atributo identifica el sistema de origen que generó los datos, por ejemplo, SAP TM, SAP ERP o un portal externo del transportista. Proporciona contexto sobre el origen de los datos y ayuda a comprender los puntos de integración. En un entorno complejo, conocer el sistema de origen es fundamental para validar los datos, solucionar problemas de integración y entender cómo contribuyen los distintos sistemas al proceso general. Por ejemplo, permite diferenciar entre un evento notificado por un sistema interno y otro notificado por un proveedor logístico externo. Por qué es importante Identifica el origen de los datos, un aspecto fundamental para la gobernanza de datos, la resolución de problemas y la comprensión de la orquestación del proceso entre varios sistemas. Dónde obtenerlo Esta información suele almacenarse como parte del registro del sistema o puede derivarse de la interfaz o del usuario que creó la entrada de datos. Ejemplos SAP_TM_P01SAP_ERP_E01CARRIER_PORTAL_XYZ | |||
| Última actualización de datos LastDataUpdate | La marca de tiempo de la extracción o actualización más reciente del conjunto de datos de Process Mining. | ||
| Descripción Este atributo indica la actualidad de los datos analizados. Refleja la fecha y hora en que los datos se extrajeron por última vez de los sistemas de origen, como SAP TM, y se incorporaron a la herramienta de Process Mining. Es un elemento de metadatos fundamental para cualquier Dashboard o análisis, ya que proporciona contexto sobre la actualidad de los insights. Ayuda a entender si se está consultando información en tiempo real o una instantánea de un periodo anterior, algo esencial para tomar decisiones oportunas y fundamentadas. Por qué es importante Proporciona un contexto fundamental sobre la actualidad de los datos y permite saber hasta qué punto el análisis refleja la situación actual. Dónde obtenerlo Normalmente, la herramienta ETL (Extract, Transform, Load) o la canalización de datos genera y almacena este dato durante el proceso de ingesta. Ejemplos 2023-10-27T08:00:00Z2023-10-26T08:00:00Z | |||
Actividades de gestión del transporte
| Actividad | Descripción | ||
|---|---|---|---|
| Comprobante de entrega recibido | Esta actividad ocurre cuando se recibe del transportista el documento firmado Proof of Delivery (POD) y se registra en el sistema. Esto confirma que el destinatario ha aceptado las mercancías. | ||
| Por qué es importante Recibir el POD es un requisito previo fundamental para facturar al cliente y liquidar los cargos de transporte con el transportista. Los retrasos en esta etapa afectan directamente al ciclo de conversión de efectivo. Dónde obtenerlo Normalmente se infiere a partir de un cambio de estado en la Freight Order, por ejemplo, cuando el estado del POD pasa a «Received». El cambio de este campo de estado proporciona la marca de tiempo de la actividad. Recopilar Capture la marca de tiempo en la que el estado del Proof of Delivery en la Freight Order se actualiza a «Received». Tipo de evento inferred | |||
| Envío cancelado | Esta actividad representa la cancelación de un envío después de haberlo solicitado o planificado. Sirve como punto final para los procesos que no llegan a ejecutarse. | ||
| Por qué es importante Hacer un seguimiento de las cancelaciones ayuda a identificar los motivos del fallo del proceso, como cambios en la demanda del cliente o errores de planificación. Una tasa elevada de cancelaciones puede indicar problemas subyacentes en la gestión de pedidos o la planificación. Dónde obtenerlo Se infiere a partir de un cambio en el estado del ciclo de vida de la Forwarding Order o Freight Order a «Cancelled». La marca de tiempo de este cambio de estado señala el evento. Recopilar Capture la marca de tiempo en la que el estado del ciclo de vida del documento se establece en «Cancelled». Tipo de evento inferred | |||
| Envío planificado | Esta actividad indica que las necesidades de transporte se han consolidado en un plan de envío concreto. Se registra cuando se crea y guarda una Freight Order (para transporte por carretera o ferrocarril) o una Freight Booking (para transporte marítimo o aéreo), con 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 desde la solicitud hasta esta actividad es un KPI clave para medir la eficiencia de la planificación. Dónde obtenerlo Este evento corresponde a la creación de un documento Freight Order o Freight Booking. También puede inferirse a partir de un cambio de estado del documento, por ejemplo, cuando el estado de planificación pasa a «Planned». Las tablas relevantes suelen ser /SCMTMS/D_TORROT para los datos de cabecera. Recopilar Utilice la marca de tiempo de creación del documento Freight Order o Freight Booking. Tipo de evento explicit | |||
| Liquidación del transporte creada | Esta actividad marca la creación del Freight Settlement Document (FSD), que calcula los costes de transporte que deben pagarse al transportista. Es el documento principal utilizado para las provisiones y la verificación de facturas. | ||
| Por qué es importante Con esta actividad comienza la fase de liquidación financiera del proceso de transporte. Analizar el tiempo transcurrido desde la entrega hasta la creación de la liquidación ayuda a identificar cuellos de botella en el procesamiento financiero. Dónde obtenerlo Este es un evento explícito que se registra al crear un Freight Settlement Document. La marca de tiempo de creación está disponible en la tabla de cabecera de este documento, /SCMTMS/D_SFIRHD. Recopilar Utilice la fecha y hora de creación del Freight Settlement Document. Tipo de evento explicit | |||
| Mercancías entregadas | Esta actividad representa la llegada del envío a su destino final y la finalización del transporte físico. Se registra cuando el transportista informa de que las mercancías se han descargado en las instalaciones del destinatario. | ||
| Por qué es importante Este es el hito más importante para medir el rendimiento de las entregas puntuales y la satisfacción del cliente. También suele activar los procesos de facturación y liquidación. Dónde obtenerlo Se registra como un evento de ejecución «Arrival at Destination» o «Unloading End» en SAP TM, lo que actualiza el estado de ejecución de la Freight Order. Los datos suelen recibirse del transportista. Recopilar Utilice la marca de tiempo del evento de ejecución «Arrival at Destination» notificado para la última parada de la Freight Order. 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 de que las mercancías se han cargado y han salido de las instalaciones del remitente. | ||
| Por qué es importante Este es un hito clave de la ejecución que señala el comienzo de la fase de transporte. Es fundamental para hacer un seguimiento del rendimiento puntual y proporcionar una visibilidad precisa del envío. Dónde obtenerlo Este evento suele registrarse en SAP Event Management, integrado con SAP TM, como un evento «Departure» o «Loading End». Actualiza el estado de ejecución de la Freight Order. También puede registrarse directamente en la Freight Order. Recopilar Utilice la marca de tiempo del evento de ejecución «Departure» notificado para la ubicación de origen de la Freight Order. Tipo de evento explicit | |||
| Pago procesado | Esta actividad final confirma que el transportista ha recibido el pago por los servicios de transporte. Normalmente ocurre en el sistema ERP conectado después de recibir la factura verificada desde SAP TM. | ||
| Por qué es importante Esto marca el verdadero final del ciclo de vida integral del transporte. Es esencial para medir la duración total del proceso y los KPI de puntualidad de los pagos. Dónde obtenerlo Esta información se encuentra en el sistema ERP, por ejemplo, S/4HANA Finance. Puede vincularse al Freight Settlement Document mediante el 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 del ERP como BKPF y BSEG. Recopilar Obtenga la fecha de compensación del pago del sistema ERP y vincúlela al envío mediante la referencia de la factura. Tipo de evento explicit | |||
| Solicitud de transporte recibida | Esta actividad marca el inicio del proceso de transporte y representa la creación de una necesidad de transporte. En SAP TM, normalmente se registra mediante la creación de una Forwarding Order (FWO) o una Order-based Transportation Requirement (OTR). | ||
| Por qué es importante Este es el evento de inicio principal del proceso de envío integral. Analizar el tiempo transcurrido desde esta actividad hasta la finalización de la planificación es fundamental para medir la eficiencia de la planificación. Dónde obtenerlo Este evento se registra cuando se crea una Forwarding Order (tipo de documento FWO) u otro documento de necesidad de transporte. La marca de tiempo de creación en la tabla de cabecera, como /SCMTMS/D_TORROT, sirve como hora del evento. Recopilar Capture la fecha y hora de creación de la Forwarding Order o del documento de necesidad de transporte. Tipo de evento explicit | |||
| Transportista asignado | Esta actividad indica que se ha seleccionado y asignado al envío un proveedor específico de servicios de transporte o transportista. Puede ocurrir mediante una asignación manual, una planificación automatizada o un proceso de licitación. | ||
| Por qué es importante Asignar un transportista es un paso crítico antes de confirmar y ejecutar un envío. Hacer un seguimiento de esta actividad ayuda a analizar los procesos de selección de transportistas y a garantizar una reserva puntual. Dónde obtenerlo Se registra cuando se completa el campo del transportista, es decir, la parte con el rol «Carrier», en la Freight Order o Freight Booking. En un proceso de licitación, corresponde al momento en que se adjudica una Freight Request for Quotation. Recopilar Identifique la marca de tiempo en la que la función de interlocutor del transportista se completa o confirma por primera vez en la Freight Order. Tipo de evento inferred | |||
| Declaración de aduanas presentada | En los 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 de exportación o importación de las mercancías. | ||
| Por qué es importante Presentar las declaraciones de aduanas a tiempo es fundamental para evitar retrasos en las fronteras. Esta actividad ayuda a supervisar la eficiencia del proceso de gestión aduanera. Dónde obtenerlo Este evento puede registrarse como un evento de ejecución específico notificado por un agente de aduanas o a partir de un cambio de estado en un sistema integrado de gestión aduanera, como SAP GTS. La Freight Order se actualiza en consecuencia. Recopilar Capture la marca de tiempo del evento de ejecución «Customs Declaration Filed» o del cambio de estado correspondiente. Tipo de evento explicit | |||
| Despacho de aduanas completado | Esta actividad indica que las autoridades aduaneras han aprobado el envío y que este puede continuar. Es un hito importante para la logística internacional, ya que elimina un posible cuello de botella significativo. | ||
| Por qué es importante El despacho de aduanas suele ser una fuente importante de retrasos en las cadenas de suministro globales. Hacer un seguimiento de la duración y la tasa de éxito de esta actividad es clave para mejorar los tiempos de tránsito internacional. Dónde obtenerlo Se registra como un evento de ejecución «Customs Clearance», normalmente notificado por un agente de aduanas o un proveedor externo de visibilidad y actualizado en el seguimiento de ejecución de la Freight Order. Recopilar Utilice la marca de tiempo del evento de ejecución «Customs Clearance» notificado y asociado con la Freight Order. Tipo de evento explicit | |||
| Disputa de transporte creada | Este evento indica que se ha detectado una discrepancia entre la factura del transportista y los costes calculados en el Freight Settlement Document. Esto activa un Workflow de resolución de disputas. | ||
| Por qué es importante Las disputas retrasan los pagos a los transportistas y requieren esfuerzo administrativo para resolverse. Hacer un 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 obtenerlo Puede inferirse a partir de un cambio de estado en el Freight Settlement Document, cuando se establece el estado «Dispute». También puede implicar la creación de un documento independiente de caso de disputa. Recopilar Capture la marca de tiempo en la que se establece el estado de disputa en el Freight Settlement Document. Tipo de evento inferred | |||
| Envío confirmado por el transportista | Este evento representa el acuerdo del transportista para ejecutar el transporte según lo planificado. La confirmación suele recibirse mediante un mensaje EDI, una actualización en el portal del transportista o una entrada manual que actualiza el estado de la Freight Order. | ||
| Por qué es importante La confirmación del transportista supone un compromiso con el plan de envío y reduce la incertidumbre. Los retrasos en recibir esta confirmación pueden poner en riesgo todo el calendario del envío. Dónde obtenerlo Se infiere a partir de un cambio en el campo de estado de confirmación de la Freight Order o Freight Booking. En la gestión de estados del documento se establecerá un valor específico, como «Confirmed». Recopilar Haga un seguimiento de los cambios en los campos de estado de confirmación del documento Freight Order. Tipo de evento inferred | |||
| Envío desviado | Esta actividad indica un cambio no planificado en la ruta o el calendario del envío después de su confirmación. Puede deberse a interrupciones, solicitudes del cliente o problemas logísticos. | ||
| Por qué es importante Los desvíos suelen generar costes y retrasos adicionales. Identificar la frecuencia y los motivos de los desvíos ayuda a mejorar la precisión de la planificación y la estabilidad operativa. Dónde obtenerlo Este evento se infiere al detectar cambios significativos en las etapas, ubicaciones o fechas de una Freight Order después del inicio de su ejecución. Para ello pueden analizarse los documentos de modificación de las tablas CDHDR y CDPOS. Recopilar Detecte los cambios en los campos clave de enrutamiento del documento Freight Order después del evento «Shipment Confirmed by Carrier». Tipo de evento inferred | |||
| Factura verificada | Esta actividad indica que la factura del transportista se ha cotejado correctamente con el Freight Settlement Document y se ha aprobado para el pago. Es el último paso antes de iniciar 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 costes de transporte. Los retrasos en esta etapa pueden provocar pagos tardíos a los transportistas y perjudicar potencialmente las relaciones con ellos. Dónde obtenerlo Se infiere a partir de un cambio de estado en el Freight Settlement Document, como «Ready for Accrual» o «Transferred for Posting», que indica que se ha enviado al sistema ERP para el pago. Recopilar Haga un seguimiento de la marca de tiempo en la que el estado del ciclo de vida del FSD cambia para indicar que está listo para el pago o que se ha contabilizado. Tipo de evento inferred | |||
Guías de extracción
Pasos
- Identifique y active las API de las 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 principales estén activos. Compruebe, entre otros, los servicios 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 backend. - Establezca la conectividad con la API: Solicite a su administrador de SAP la URL raíz de los servicios OData. Configure una aplicación cliente, como un script de Python que utilice la biblioteca requests, una herramienta ETL comercial o una herramienta como Postman, para conectarse a la API. Deberá configurar la autenticación, normalmente mediante Basic Authentication (nombre de usuario y contraseña) u OAuth 2.0 para una conexión más segura.
- Defina el alcance de la extracción: Determine el alcance de los datos que extraerá. Defina un intervalo de fechas concreto, por ejemplo, los últimos 6 meses. Identifique las unidades organizativas relevantes que utilizará como filtro, como el código de empresa, o tipos de documento específicos, como Freight Order Type, para asegurarse de que los datos sean relevantes para el proceso que analiza.
- Construya la consulta base de envíos: Comience consultando la vista CDS I_TransportationOrder. Esta vista actúa como objeto central de los envíos, también conocidos como Freight Orders o Freight Bookings. Utilice el parámetro OData
$selectpara elegir las columnas que necesita, incluidos los atributos recomendados como CarrierName, ModeOfTransport y RequestedDeliveryDate. Aplique un$filterpara limitar los datos por fecha y otros parámetros del alcance. - Ejecute consultas y extraiga eventos de 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 «Goods Picked Up» (DEPARTURE) y «Goods Delivered» (ARRIVAL_AT_DESTINATION). Vincule estos datos con los datos base de envíos mediante 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 «Transportation Request Received» e I_FreightSettlementDocument para actividades financieras como «Freight Settlement Created», «Freight Dispute Created» e «Invoice Verified».
- Extraiga actividades basadas en estados: Muchas actividades no son eventos independientes, sino cambios de estado en el documento principal. Para actividades como «Carrier Assigned», «Shipment Confirmed By Carrier» y «Shipment Cancelled», consulte la vista I_TransportationOrder y utilice
LastChangeDateTime, asociado al campo de estado correspondiente, como hora del evento. Esto requiere mapear cuidadosamente los códigos de estado con las actividades de negocio. - Unifique 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 con las columnas necesarias: ShipmentId, ActivityName y EventTime. Asegúrese de que todos los atributos recomendados de la consulta base de envíos estén presentes en cada fila de ese envío. Conceptualmente, este paso equivale a una operación SQL
UNION ALL. - Gestione eventos complejos y externos: Para actividades como «Customs Cleared» o «Payment Processed», los datos pueden encontrarse en campos específicos o incluso en sistemas externos. La lógica de consulta proporcionada utiliza campos estándar como aproximación. Es posible que deba adaptar la consulta para combinarla con vistas CDS específicas de aduanas o relacionarla con una extracción independiente del ERP para obtener los datos de pagos a partir del número de Freight Settlement Document.
- Prepare el formato para ProcessMind: Guarde el conjunto de datos consolidado final como archivo CSV. Asegúrese de que los encabezados de columna cumplan los requisitos de carga; por ejemplo, asigne la columna
ShipmentIdal campoCaseIden la configuración de la herramienta. Verifique que las marcas de tiempo utilicen un formato coherente, preferiblemente UTC (YYYY-MM-DDTHH:MM:SSZ).
Configuración
- Vistas CDS principales: La extracción se basa principalmente en I_TransportationOrder (para órdenes de transporte), C_TranspOrdExecutionEvent (para eventos de ejecución), I_ForwardingOrder (para solicitudes de transporte) e I_FreightSettlementDocument (para liquidaciones).
- Filtrado por intervalo de fechas: Es fundamental aplicar un filtro de fecha para controlar el volumen de datos. Utilice
CreationDateTimeen I_TransportationOrder oActualBusinessDateTimeen C_TranspOrdExecutionEvent. Para el análisis inicial, se recomienda un intervalo de 3 a 6 meses. - Filtrado por tipo de documento: Para centrar el análisis, filtre por tipos de documento específicos mediante el campo
TransportationOrderType. Esto ayuda a separar distintos escenarios logísticos, como los envíos estándar de salida y los traslados de stock. - Filtros organizativos: Si corresponde, filtre por
PurchasingOrganizationu otros campos de nivel organizativo para limitar los datos a una unidad de negocio o región concretas. - Paginación de la API: Para conjuntos de datos grandes, utilice los parámetros OData
$topy$skippara recuperar los datos en páginas más pequeñas. Así evitará tiempos de espera de la API y reducirá el consumo de memoria en el cliente. Un tamaño de página de entre 1.000 y 5.000 filas suele ser eficaz. - Requisitos previos: La persona usuaria o la cuenta de servicio que realice la extracción necesita autorizaciones para los servicios OData subyacentes (objeto de autorización S_SERVICE) y para los datos de negocio de las vistas CDS. Los servicios correspondientes deben estar activados 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
- Confirme que dispone de acceso de lectura directa al esquema HANA de SAP TM mediante un cliente SQL, una vista de base de datos o un servicio de extracción aprobados. Obtenga la cadena de conexión, las credenciales, el nombre del esquema y las autorizaciones necesarias para leer las tablas relevantes de SAP TM. No consulte directamente el entorno de producción sin las aprobaciones de seguridad y de cambios correspondientes.
- Confirme los nombres físicos de las tablas y columnas de su sistema. La consulta siguiente utiliza /SCMTMS/D_TORROT y /SCMTMS/D_TOSTOP como tablas principales, pero los datos de estado, interlocutores, fechas, costes, aduanas, documentos y pagos pueden almacenarse en tablas adicionales o extensiones, según la versión y la implementación de SAP TM. Sustituya únicamente los marcadores documentados después de validarlos con el catálogo del sistema y el modelo de datos.
- Defina el periodo de extracción mediante [Start timestamp] y [End timestamp]. Para el análisis inicial, suele ser adecuado un periodo móvil de tres a seis meses. Utilice un periodo más amplio solo después de confirmar el rendimiento de la consulta y la retención del historial de eventos.
- Identifique la clave del caso de envío. La consulta utiliza TOR_ID de /SCMTMS/D_TORROT como identificador del envío. Si su implementación utiliza otro identificador estable, sustituya la clave del caso de forma coherente en cada rama de actividad y conserve el identificador original del documento como atributo de auditoría adicional, si está disponible.
- Asigne cada actividad de negocio a una condición de origen explícita. ProcessMind lee el registro de eventos tal como está, por lo que la consulta crea una fila por cada actividad extraída. No deduce hitos a partir del orden de los documentos, de marcas de tiempo ausentes ni de la progresión de estados.
- Valide las asignaciones de estados y marcas de tiempo con el personal de planificación del transporte y las personas responsables de los procesos de negocio. En particular, confirme los valores que representan la creación de la solicitud, la planificación, la asignación del transportista, la confirmación del transportista, la recogida, la presentación de la declaración aduanera, el despacho de aduanas, el cambio de ruta, la entrega, la recepción del comprobante de entrega, la liquidación del transporte, la disputa, la verificación de la factura, la cancelación y el pago.
- Ejecute la consulta en el cliente SQL aprobado. Revise el resultado para comprobar que haya una fila por evento, un ShipmentId no nulo, un ActivityName no nulo y un EventTime válido. Compruebe si existen filas duplicadas causadas por combinaciones uno a muchos y ajuste las asignaciones de origen o la lógica de agregación cuando sea necesario.
- Enriquezca el resultado con los atributos recomendados cuando estén disponibles los campos de origen correspondientes. La consulta incluye marcadores profesionales para los campos que no pueden nombrarse de forma segura sin metadatos específicos del sistema. Sustituya esos marcadores únicamente por columnas verificadas o vistas aprobadas.
- Aplique las reglas finales de calidad de datos. Elimine las filas sin identificador de caso o marca de tiempo del evento, normalice las marcas de tiempo a una única zona horaria, conserve las marcas de tiempo de origen con fines de auditoría y asegúrese de que EndTime no sea anterior a EventTime. No cree eventos sintéticos para registros de origen ausentes.
- Exporte el resultado como CSV UTF-8 u otro formato tabular compatible con ProcessMind. Utilice exactamente los nombres de columna ShipmentId, ActivityName y EventTime. Incluya EndTime y los atributos recomendados cuando tengan valores. Cargue el archivo o conecte el resultado de la consulta aprobada con ProcessMind y, a continuación, verifique que los campos Shipment case identifier y Activity Name estén asignados correctamente.
Configuración
- Tablas de origen principales: Utilice /SCMTMS/D_TORROT para los datos raíz de la orden de transporte o Freight Order y /SCMTMS/D_TOSTOP para los datos de paradas e hitos. Valide todos los objetos de origen adicionales en el sistema SAP TM de destino antes de la implementación.
- Identificador del caso: Utilice un identificador estable del envío o Freight Order. La consulta de ejemplo utiliza TOR_ID como ShipmentId. Confirme que este identificador se mantenga estable durante la planificación, la ejecución, la liquidación y los registros de pagos del ERP.
- Asignación de actividades: Configure condiciones de origen explícitas para las 15 actividades obligatorias. Cada actividad debe emitirse como una fila física del registro de eventos. ProcessMind no deriva actividades a partir de otras filas.
- Intervalo de fechas: Comience con un historial de tres a seis meses. Utilice predicados de EventTime lo antes posible en cada rama de origen. Para las cargas incrementales, use una marca de agua controlada e incluya una pequeña ventana de solapamiento para capturar actualizaciones tardías.
- Filtros de negocio: Configure los filtros de código de empresa, organización de compras, organización de ventas, tipo de documento, modo de transporte, transportista, centro, ubicación y estado según la implementación. Utilice marcadores como [Company code filter] cuando el campo aplicable no esté verificado.
- Gestión de marcas de tiempo: Convierta las marcas de tiempo de origen a una zona horaria coherente. Si un origen almacena la fecha y la hora en campos separados, combínelos mediante la conversión específica del sistema compatible con la versión de HANA. Conserve la marca de tiempo original de origen cuando sea necesario garantizar la auditabilidad.
- Atributos recomendados: Complete CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost e IsOnTimeDelivery a partir de campos de origen verificados o vistas de cálculo aprobadas. Deje los valores nulos cuando el origen no contenga un valor fiable.
- Rendimiento: Limite el periodo, proyecte únicamente las columnas necesarias, filtre antes de realizar combinaciones, evite los análisis completos de tablas sin restricciones y revise el plan de ejecución de HANA. Para conjuntos de datos grandes, utilice predicados compatibles con particiones, extracción incremental, tablas de preparación o una vista de cálculo aprobada.
- Control de duplicados: Las combinaciones uno a muchos pueden generar varias filas para una misma actividad. Utilice una clave de evento verificada, una clave de documento de origen o una regla de agregación determinista. No aplique una deduplicación arbitraria que pueda eliminar eventos repetidos legítimos.
- Requisitos previos: Se necesitan las autorizaciones de base de datos correspondientes, acceso a los datos de SAP TM, acceso a los datos de cualquier ERP o sistema de liquidación conectado, herramientas de extracción aprobadas y confirmación de que los módulos, integraciones y ampliaciones personalizadas relevantes de SAP TM están activos.
- Asignación específica del sistema: Los códigos de estado, roles de interlocutor, hitos aduaneros, estados de liquidación, estados de factura y estados de pago varían según la versión y la configuración. Mantenga las asignaciones en un documento de configuración controlado y pruébelas después de las actualizaciones.
a Consulta de ejemplo sql
WITH
base_tor AS (
SELECT
r.TOR_ID AS ShipmentId,
r.TOR_ID AS SourceDocumentId,
r.CREATED_AT AS RequestEventTime,
r.CREATED_AT AS PlannedEventTime,
r.CREATED_AT AS CarrierAssignedEventTime,
r.CREATED_AT AS CarrierConfirmedEventTime,
r.CREATED_AT AS PickupEventTime,
r.CREATED_AT AS CustomsFiledEventTime,
r.CREATED_AT AS CustomsClearedEventTime,
r.CREATED_AT AS ReroutedEventTime,
r.CREATED_AT AS DeliveredEventTime,
r.CREATED_AT AS PodReceivedEventTime,
r.CREATED_AT AS SettlementCreatedEventTime,
r.CREATED_AT AS DisputeCreatedEventTime,
r.CREATED_AT AS InvoiceVerifiedEventTime,
r.CREATED_AT AS CancelledEventTime,
r.CREATED_AT AS PaymentProcessedEventTime,
r.CREATED_AT AS EndTime,
CAST(NULL AS NVARCHAR(255)) AS CarrierName,
CAST(NULL AS TIMESTAMP) AS RequestedDeliveryDate,
CAST(NULL AS NVARCHAR(50)) AS ModeOfTransport,
CAST(NULL AS DECIMAL(19, 2)) AS TotalFreightCost,
CAST(NULL AS NVARCHAR(5)) AS IsOnTimeDelivery
FROM "/SCMTMS/D_TORROT" r
WHERE r.CREATED_AT >= TO_TIMESTAMP('[Start timestamp]')
AND r.CREATED_AT < TO_TIMESTAMP('[End timestamp]')
AND ('[Company code filter]' = '[Company code filter]' OR r.TOR_ID IS NOT NULL)
),
stop_data AS (
SELECT
s.TOR_ID AS ShipmentId,
MIN(s.STOP_SEQ) AS FirstStopSequence,
MAX(s.STOP_SEQ) AS LastStopSequence
FROM "/SCMTMS/D_TOSTOP" s
GROUP BY s.TOR_ID
),
source_data AS (
SELECT
b.ShipmentId,
b.SourceDocumentId,
b.RequestEventTime,
b.PlannedEventTime,
b.CarrierAssignedEventTime,
b.CarrierConfirmedEventTime,
b.PickupEventTime,
b.CustomsFiledEventTime,
b.CustomsClearedEventTime,
b.ReroutedEventTime,
b.DeliveredEventTime,
b.PodReceivedEventTime,
b.SettlementCreatedEventTime,
b.DisputeCreatedEventTime,
b.InvoiceVerifiedEventTime,
b.CancelledEventTime,
b.PaymentProcessedEventTime,
b.EndTime,
b.CarrierName,
b.RequestedDeliveryDate,
b.ModeOfTransport,
b.TotalFreightCost,
CASE
WHEN b.DeliveredEventTime IS NOT NULL
AND b.RequestedDeliveryDate IS NOT NULL
AND b.DeliveredEventTime <= b.RequestedDeliveryDate THEN 'true'
WHEN b.DeliveredEventTime IS NOT NULL
AND b.RequestedDeliveryDate IS NOT NULL THEN 'false'
ELSE NULL
END AS IsOnTimeDelivery
FROM base_tor b
LEFT JOIN stop_data s
ON s.ShipmentId = b.ShipmentId
),
event_log AS (
SELECT ShipmentId, 'Transportation Request Received' AS ActivityName, RequestEventTime AS EventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE RequestEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Planned', PlannedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PlannedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Carrier Assigned', CarrierAssignedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CarrierAssignedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Confirmed By Carrier', CarrierConfirmedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CarrierConfirmedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Goods Picked Up', PickupEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PickupEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Customs Declaration Filed', CustomsFiledEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CustomsFiledEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Customs Cleared', CustomsClearedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CustomsClearedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Rerouted', ReroutedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE ReroutedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Goods Delivered', DeliveredEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE DeliveredEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Proof Of Delivery Received', PodReceivedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PodReceivedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Freight Settlement Created', SettlementCreatedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE SettlementCreatedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Freight Dispute Created', DisputeCreatedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE DisputeCreatedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Invoice Verified', InvoiceVerifiedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE InvoiceVerifiedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Cancelled', CancelledEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CancelledEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Payment Processed', PaymentProcessedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PaymentProcessedEventTime IS NOT NULL
)
SELECT
ShipmentId,
ActivityName,
EventTime,
EndTime,
CarrierName,
RequestedDeliveryDate,
ModeOfTransport,
TotalFreightCost,
IsOnTimeDelivery,
SourceDocumentId
FROM event_log
WHERE ShipmentId IS NOT NULL
AND EventTime IS NOT NULL
ORDER BY ShipmentId, EventTime, ActivityName; Pasos
- Defina los requisitos de datos: Comience por confirmar la lógica exacta de cada una de las 15 actividades obligatorias y de todos los atributos. Esto implica asignar cada actividad a cambios de estado, eventos de creación o vínculos entre documentos específicos de su sistema SAP TM. Por ejemplo, determine el estado de ejecución exacto que representa «Goods Picked Up».
- Acceda al entorno de desarrollo ABAP: Inicie sesión en SAP GUI y abra el ABAP Editor mediante el código de transacción
SE38. Introduzca un nombre para el programa nuevo, por ejemplo,ZTM_PROCESS_EXTRACT, y haga clic en «Create». Proporcione un título y establezca el tipo de programa como «Executable Program». - Cree la pantalla de selección: En el programa, defina la pantalla de selección que verán las personas usuarias. Debe incluir parámetros para filtrar los datos, como un intervalo de fechas para la fecha de creación de la Freight Order (
SO_CREDT), y select-options 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 requerido del registro de eventos. Debe incluir los campos
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 los datos de cada una de las 15 actividades. Normalmente, esto implica consultar varias tablas de SAP TM. Comience seleccionando los documentos principales de envío, como las Freight Orders, dentro del intervalo de fechas especificado.
- Extraiga eventos de planificación y ejecución: Para cada documento de envío seleccionado, por ejemplo, una Freight Order, consulte las tablas y los objetos de negocio relacionados para encontrar las marcas de tiempo de los distintos eventos. Utilice la tabla
/SCMTMS/D_TORROTpara la creación de la Freight Order («Shipment Planned»), la asignación del transportista («Carrier Assigned») y los cambios de estado de ejecución correspondientes a «Goods Picked Up» y «Goods Delivered». La creación de la Forwarding Order anterior (/SCMTMS/D_TRQROT) puede representar «Transportation Request Received». - Extraiga la confirmación del transportista y los cambios de ruta: Consulte las tablas de estado o los documentos de modificación (CDHDR/CDPOS) asociados a la Freight Order para identificar cuándo se estableció el estado
CONFIRMATION, que registra «Shipment Confirmed By Carrier». Del mismo modo, busque cambios relevantes en la información de ruta para registrar «Shipment Rerouted». - Extraiga eventos aduaneros: Si utiliza SAP Global Trade Services (GTS) o un módulo similar, los eventos aduaneros («Customs Declaration Filed», «Customs Cleared») suelen registrarse mediante documentos vinculados. La lógica debe leer el flujo de documentos (
/SCMTMS/D_TORDOC) de la Freight Order para encontrar estos documentos relacionados y sus horas de creación o de cambio de estado. - Extraiga eventos de liquidación y disputa: Consulte la tabla de cabecera del Freight Settlement Document (
/SCMTMS/D_SFIRHD) y sus posiciones y estados relacionados para capturar los eventos «Freight Settlement Created», «Freight Dispute Created» e «Invoice Verified». Vincúlelos con elShipmentIdoriginal. - Consolide los datos: Por cada evento encontrado, cree un registro nuevo en la tabla interna final. Complete
ActivityNamecon la actividad correspondiente,EventTimecon la marca de tiempo del evento yShipmentIdcon el ID de la Freight Order o Freight Booking. Complete los demás atributos a partir de los documentos de origen. - Dé formato y exporte el archivo: Cuando la tabla interna final esté completa, dé formato a los datos como 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 del servidor de aplicaciones SAP, accesible mediante la transacción AL11. - Programe y recupere el archivo: El programa ABAP puede programarse como job en segundo plano (transacción SM36) para extraer los datos automáticamente. Después, puede descargar el archivo generado del servidor de aplicaciones a un equipo local mediante la transacción
CG3Ypara cargarlo en ProcessMind.
Configuración
- Intervalo de fechas: La pantalla de selección debe incluir un intervalo de fechas obligatorio para la fecha de creación del documento de transporte principal, por ejemplo, una Freight Order. Para el análisis inicial, se recomienda un intervalo de 3 a 6 meses que garantice un conjunto de datos representativo sin provocar un tiempo de ejecución excesivo.
- Filtro por tipo de documento: Incluya un filtro para el tipo de documento de transporte, por ejemplo, Freight Order o Freight Booking. Esto es fundamental para centrar el análisis en procesos específicos, como el transporte por carretera frente al transporte marítimo.
- Filtro por transportista: Permita filtrar por transportistas concretos. Esto ayuda a analizar el rendimiento de cada socio logístico.
- Filtros organizativos: Incluya filtros para las unidades organizativas relevantes, como Purchasing Organization o Company Code, con el fin de limitar la extracción a áreas de negocio específicas.
- Optimización del rendimiento: Para conjuntos de datos grandes, asegúrese de que el código ABAP utilice campos indexados de la base de datos en las cláusulas
WHERE, evite los bucles anidados siempre que sea posible y seleccione únicamente los campos necesarios para reducir el consumo de memoria. - Requisitos previos: La persona que ejecute el informe necesita autorización para ejecutar programas ABAP. La persona desarrolladora necesita la autorización
S_DEVELOP. El programa requiere autorizaciones para acceder al sistema de archivos del servidor de aplicaciones (objetoS_DATASET) y a las tablas de base de datos y objetos BOPF relevantes de TM.
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. ¿Listo para empezar?
Aproveche esta plantilla para iniciar su camino hacia unos procesos de transporte optimizados y conseguir entregas más rápidas y económicas. ¡Empiece hoy mismo a descubrir nuevos insights!
Elimine hoy los cuellos de botella de Transportation Management
Identifique ineficiencias, optimice las rutas y reduzca el tiempo de ciclo en un 30 %.
No necesita tarjeta de crédito. Configuración en minutos.