Seu Template de dados de Transportation Management
Seu Template de dados de Transportation Management
- Atributos recomendados para coletar
- Principais atividades a monitorar
- Orientações para extrair dados do SAP Transportation Management
Atributos da gestão de transportes
| Nome | Descrição | ||
|---|---|---|---|
| Horário do evento EventTime | O registro de data e hora que indica quando uma atividade ou evento específico ocorreu. | ||
| Descrição O Horário do evento fornece a data e a hora exatas de cada atividade no processo de transporte. Esses dados temporais são fundamentais para calcular tempos de ciclo, durações e tempos de espera entre diferentes etapas do processo. Na análise, esse atributo é usado para ordenar os eventos corretamente, criar um registro cronológico e realizar toda a análise de performance baseada em tempo. Ele é essencial para identificar atrasos, medir a eficiência do processo e avaliar a performance em relação a cronogramas ou acordos de nível de serviço. Por que isso importa O registro de data e hora é essencial para ordenar os eventos cronologicamente e calcular todas as métricas de performance, como tempos de ciclo e entregas no prazo. Onde obter É obtido das tabelas do manipulador de eventos no SAP TM, como /SAPTRX/EH_EVMSG, que armazenam os registros de data e hora dos eventos reportados. Exemplos 2023-04-15T10:00:00Z2023-04-16T14:30:00Z2023-04-20T09:15:00Z | |||
| Nome da atividade ActivityName | O nome de um evento ou etapa de negócio específico que ocorreu no processo de transporte. | ||
| Descrição O Activity Name descreve uma única tarefa ou marco no ciclo de vida do transporte, como 'Shipment Planned', 'Goods Picked Up' ou 'Goods Delivered'. Essas atividades formam os nós do mapa de processo descoberto. Analisar a sequência e a frequência das atividades ajuda a identificar o fluxo padrão do processo, desvios, gargalos e ciclos de retrabalho. Esse atributo é a base da descoberta de processos e da verificação de conformidade na gestão de transportes. Por que isso importa Este atributo define as etapas do processo de transporte, permitindo visualizar e analisar o fluxo completo do embarque. Onde obter Normalmente, ele é derivado de códigos de eventos ou alterações de status registradas no manipulador de eventos de acompanhamento da execução do SAP TM. A origem pode estar em tabelas que registram alterações de status de objetos de negócio ou mensagens de eventos específicas. Exemplos Transporte planejadoTransportadora atribuídaMercadorias coletadasMercadorias entreguesComprovante de entrega recebido | |||
| Transporte ShipmentId | O identificador exclusivo de um único movimento de mercadorias, que funciona como o caso central da análise. | ||
| Descrição O Shipment ID é a chave primária que agrupa todas as atividades e eventos relacionados ao transporte. Ele representa um único processo de transporte de ponta a ponta, desde a solicitação inicial até o comprovante de entrega final e o pagamento. No Process Mining, esse atributo é essencial para construir a visão do caso, permitindo que os analistas acompanhem a jornada completa de cada transporte. Ele possibilita analisar variantes do processo, tempos de ciclo e resultados associados a transportes individuais, oferecendo uma visão abrangente da performance do transporte. Por que isso importa Este é o identificador fundamental do caso, vinculando todos os eventos e pontos de dados a uma ordem de transporte específica, algo essencial para a análise do processo de ponta a ponta. Onde obter Este identificador é o número da Freight Order ou da Freight Booking no SAP TM. Ele pode ser encontrado em tabelas como /SCMTMS/D_TORROT e /SCMTMS/D_TRQROT. Exemplos 610000432161000056786100009876 | |||
| Custo total do frete TotalFreightCost | O custo total calculado ou faturado do embarque. | ||
| Descrição O Custo total do frete representa o impacto financeiro de um embarque. Ele pode ser o custo calculado pelo sistema de gerenciamento de transporte ou o valor final da fatura da transportadora após a liquidação. Esse atributo permite integrar a dimensão financeira à análise do processo. Os analistas podem identificar as variantes de processo mais caras, calcular o custo de atrasos ou redirecionamentos e comparar a relação custo-benefício de diferentes transportadoras ou modais de transporte. Ele é fundamental para Dashboards focados nos gastos com transporte e na análise do custo de atendimento. Por que isso importa Adiciona uma dimensão financeira ao processo, permitindo analisar os gastos com transporte, o custo por embarque e o impacto financeiro das ineficiências do processo. Onde obter É obtido do Freight Settlement Document no SAP TM após o cálculo das cobranças. Ele pode ser encontrado em tabelas como /SCMTMS/D_SFIRHD. Exemplos 250.751200.005430.50 | |||
| Data de entrega solicitada RequestedDeliveryDate | A data e a hora de entrega solicitadas pelo cliente ou estipuladas no pedido de venda. | ||
| Descrição A Data de entrega solicitada é o prazo-alvo para a atividade 'Mercadorias entregues'. Ela serve como principal referência para medir a performance de entrega no prazo. Essa data é essencial para calcular o KPI 'Taxa de entrega no prazo'. Ao comparar o registro de data e hora da entrega real com essa data solicitada, as organizações conseguem determinar se cumpriram o acordo de nível de serviço. A análise dos desvios ajuda a identificar causas sistêmicas de atrasos, como problemas de performance da transportadora, atrasos no planejamento ou retenções aduaneiras. Por que isso importa É a referência para medir a performance de entrega no prazo, um KPI essencial para a satisfação do cliente e a excelência operacional. Onde obter Essa data normalmente é transferida do pedido de venda ou da ordem de transferência de estoque anterior do SAP ERP. Ela é armazenada nos campos de data e hora do Freight Unit ou Freight Order. Exemplos 2023-05-20T17:00:00Z2023-06-01T12:00:00Z2023-06-15T23:59:59Z | |||
| Entrega no prazo IsOnTimeDelivery | Um indicador booleano que informa se as mercadorias foram entregues na data de entrega solicitada ou antes dela. | ||
| Descrição Este é um atributo calculado que compara o registro de data e hora da atividade 'Mercadorias entregues' com a 'Data de entrega solicitada'. O resultado é true quando a entrega ocorreu no prazo ou antes dele e false quando houve atraso. Esse atributo simplifica a análise de performance ao criar um resultado binário claro para cada embarque. Ele é a base do Dashboard de performance de entrega no prazo e do KPI correspondente. Os analistas podem filtrar facilmente os embarques atrasados e realizar uma análise de causas-raiz para entender os fatores que prejudicam a performance. Por que isso importa Mede diretamente o cumprimento dos compromissos de entrega, simplificando o cálculo e a visualização do KPI essencial de entrega no prazo. Onde obter Este atributo não é armazenado no SAP TM. Ele deve ser calculado durante a transformação dos dados, comparando o registro de data e hora real do evento de entrega com a Data de entrega solicitada. Exemplos truefalse | |||
| Horário de término EndTime | O registro de data e hora que indica quando uma atividade específica foi concluída. | ||
| Descrição Enquanto StartTime indica o início de um evento, EndTime marca sua conclusão. Isso é especialmente útil para atividades que têm duração, como 'Desembaraço aduaneiro' ou 'Carregamento de mercadorias'. A diferença entre EndTime e StartTime representa o tempo de processamento dessa atividade. Na análise de Process Mining, ter o horário de início e de término permite analisar as durações das atividades com mais granularidade, separando o tempo de processamento do tempo de espera. Isso ajuda a identificar exatamente onde estão as ineficiências, seja na execução de uma tarefa ou nas transferências entre tarefas. Por que isso importa Permite calcular com precisão os tempos de processamento das atividades, distinguindo o tempo de trabalho ativo do tempo de espera entre eventos. Onde obter Assim como StartTime, essa informação é obtida das tabelas do manipulador de eventos. Ela pode corresponder a um evento separado de 'concluído' para uma determinada atividade. Exemplos 2023-04-15T11:30:00Z2023-04-16T15:00:00Z2023-04-20T09:45:00Z | |||
| Modal de transporte ModeOfTransport | O método de transporte usado no embarque, como rodoviário, ferroviário, aéreo ou marítimo. | ||
| Descrição Este atributo especifica o modal de transporte. Diferentes modais têm estruturas de custo, tempos de trânsito e complexidades de processo distintos. Por exemplo, um embarque aéreo internacional terá atividades diferentes, como desembaraço aduaneiro, em comparação com um embarque rodoviário doméstico. Analisar os processos por modal de transporte permite criar iniciativas de melhoria específicas. Isso também é essencial para a análise de custos, especialmente para identificar o uso de frete premium, como transporte aéreo expresso, em comparação com modais padrão e mais econômicos. Essa segmentação é fundamental para entender e controlar os gastos com transporte. Por que isso importa Permite analisar custos, tempos e variações do processo com base no modal de transporte, algo essencial para otimizar custos e identificar o uso de frete premium. Onde obter Este é um campo importante do Freight Order ou Freight Booking, geralmente identificado como Transportation Mode ou MOT. Exemplos 01 (Rodoviário)02 (Ferroviário)04 (Aéreo)05 (Marítimo) | |||
| Nome da transportadora CarrierName | O nome da transportadora ou do provedor de serviços logísticos responsável pelo embarque. | ||
| Descrição O Nome da transportadora identifica a empresa responsável pelo transporte físico das mercadorias. Essa é uma dimensão essencial para analisar a performance, pois diferentes transportadoras podem apresentar níveis variados de serviço, custo e confiabilidade. No Process Mining, esse atributo é usado para segmentar e comparar a performance entre diferentes transportadoras. Ele permite criar scorecards de transportadoras, monitorar as taxas de entrega no prazo por transportadora, comparar custos e identificar quais transportadoras estão mais associadas a atrasos ou disputas. Esse insight é essencial para a gestão estratégica de transportadoras e para compras. Por que isso importa Permite comparar a performance entre diferentes transportadoras, algo fundamental para otimizar a seleção de parceiros, os custos e os níveis de serviço. Onde obter Essas informações são armazenadas no documento Freight Order ou Freight Booking. Elas são vinculadas por meio da função de parceiro de negócios da transportadora. Exemplos DHL ExpressFedEx FreightMaersk LineUnion Pacific Railroad | |||
| Data de coleta programada ScheduledPickupDate | A data e a hora planejadas para a transportadora coletar as mercadorias no ponto de expedição. | ||
| Descrição A Data de coleta programada é o horário acordado para o início do transporte físico. Ela é um marco importante na fase de execução do embarque. Esse atributo é essencial para monitorar a pontualidade do primeiro trecho da viagem. Ao comparar o horário de coleta programado com o registro de data e hora do evento real 'Mercadorias coletadas', as empresas conseguem calcular os atrasos na coleta. Isso ajuda a avaliar a performance e a confiabilidade tanto do local de expedição quanto da transportadora. Por que isso importa Serve como referência para medir a pontualidade da coleta, ajudando a identificar atrasos logo no início da jornada física do embarque. Onde obter É uma data e hora planejadas, armazenadas na sequência de paradas do Freight Order no SAP TM. Exemplos 2023-05-18T09:00:00Z2023-05-30T14:00:00Z2023-06-12T10:30:00Z | |||
| Está em disputa IsDisputed | Um indicador booleano que informa se a fatura de frete do embarque resultou em uma disputa. | ||
| Descrição Este indicador calculado identifica os embarques associados a uma disputa de liquidação de frete. O resultado é true quando uma disputa foi criada e false nos demais casos. Ele pode ser derivado da presença de uma atividade 'Disputa de frete criada' ou de um 'Motivo da disputa' preenchido. Esse atributo simplifica a análise do processo de liquidação de frete. Ele permite calcular facilmente o KPI de taxa de divergência no faturamento de frete e ajuda a filtrar todos os embarques em disputa. Os analistas podem então investigar as características comuns desses embarques, como transportadoras, rotas ou tipos de cobrança, para encontrar a causa-raiz dos erros de faturamento. Por que isso importa Simplifica a identificação de liquidações de frete problemáticas, permitindo calcular rapidamente a taxa de disputas e analisar as causas-raiz dos erros de faturamento. Onde obter Este atributo não é armazenado no SAP TM. Ele deve ser calculado com base na existência de um caso de disputa vinculado ao Freight Settlement Document. Exemplos truefalse | |||
| Motivo da disputa DisputeReason | O motivo informado quando uma fatura de frete é contestada. | ||
| Descrição Quando a fatura de uma transportadora não corresponde ao custo esperado calculado no SAP TM, uma disputa é criada. Este atributo registra o motivo da divergência, como 'Tarifa incorreta', 'Fatura duplicada' ou 'Cobrança adicional não aprovada'. Analisar os motivos das disputas é essencial para o Dashboard de erros e disputas de faturas de frete. Isso ajuda a identificar as causas-raiz das imprecisões no faturamento, sejam elas problemas de dados mestres, erros da transportadora ou falhas operacionais. Esse insight permite que a organização tome ações direcionadas para reduzir disputas, acelerando o ciclo de pagamento e diminuindo o trabalho administrativo. Por que isso importa Fornece a causa-raiz dos erros de faturamento de frete, permitindo ações direcionadas para reduzir disputas de faturas e melhorar o processo de liquidação. Onde obter Essas informações são registradas no caso de gerenciamento de disputas associado a um Freight Settlement Document. Exemplos Divergência de tarifaPeso incorretoCobrança de demurrage não aprovadaFatura duplicada | |||
| Motivo do atraso DelayReason | Um código ou texto que explica o motivo de um atraso no embarque. | ||
| Descrição O atributo Motivo do atraso registra a causa de um desvio em relação ao cronograma planejado, como 'Mau tempo', 'Retenção aduaneira' ou 'Atraso da transportadora'. Essas informações geralmente são reportadas manualmente ou por meio de uma mensagem de evento da transportadora. Esse é um atributo poderoso para a análise de causas-raiz. Ele permite que os analistas deixem de apenas saber que um embarque atrasou e passem a entender o motivo. Ao categorizar e quantificar os motivos dos atrasos, as organizações conseguem identificar problemas recorrentes e concentrar os esforços de melhoria nas áreas de maior impacto, como aprimorar a comunicação com as transportadoras ou otimizar rotas para evitar congestionamentos. Por que isso importa Explica o motivo dos atrasos nos embarques, permitindo uma análise poderosa de causas-raiz para reduzir exceções e melhorar a performance de entrega no prazo. Onde obter Pode ser registrado como código e motivo do evento na estrutura de gerenciamento de eventos do SAP TM quando um evento 'Chegada/partida atrasada' é reportado. Exemplos ATRASO_CLIMÁTICOINSPEÇÃO_ADUANEIRACONGESTIONAMENTO_PORTUÁRIOFALHA_MECÂNICA | |||
| Nome do usuário UserName | O ID ou nome do usuário que executou uma atividade. | ||
| Descrição Este atributo identifica o funcionário ou usuário responsável por realizar uma atividade manual, como 'Embarque planejado' ou 'Fatura verificada'. Ele conecta as etapas do processo às pessoas ou equipes que as executaram. Analisar as atividades por usuário ajuda a entender a distribuição da carga de trabalho, identificar necessidades de treinamento e reconhecer os melhores desempenhos. Também é essencial para conformidade e auditoria, pois fornece um registro claro de quem fez o quê e quando. Isso pode revelar variações na forma como diferentes usuários executam a mesma tarefa. Por que isso importa Relaciona etapas manuais do processo a usuários específicos, permitindo analisar a carga de trabalho, a performance individual e as oportunidades de treinamento. Onde obter Normalmente, é encontrado no log de alterações ou nas tabelas de cabeçalho dos documentos de transporte, em campos como 'Criado por' ou 'Alterado por' (por exemplo, ERNAM, AENAM). Exemplos CB998030SMITHJPLANNER_EU | |||
| País de destino DestinationCountry | O país para onde o embarque está sendo entregue. | ||
| Descrição Este atributo identifica o país de destino final do embarque, derivado do endereço do último local de entrega. Assim como o país de origem, analisar os dados por país de destino é essencial para entender os desafios logísticos regionais. Isso pode revelar padrões, como quais destinos estão mais sujeitos a atrasos na entrega ou têm custos maiores na última milha. Esse insight é valioso para otimizar a rede, definir expectativas realistas de entrega e gerenciar a conformidade no comércio internacional. Por que isso importa Permite analisar a performance do processo por destino, destacando problemas em regiões de entrega específicas, autoridades aduaneiras ou transportadoras da última milha. Onde obter Faz parte das informações de endereço do local de destino da parada final do Freight Order. Exemplos FRCAGBJP | |||
| País de origem OriginCountry | O país de onde o embarque se origina. | ||
| Descrição Este atributo identifica o país de origem da jornada de transporte. Ele é derivado do endereço do local inicial de coleta. Analisar o processo por país de origem ajuda a identificar diferenças regionais de performance, custo e complexidade. Isso pode destacar países com tempos maiores de desembaraço aduaneiro, custos mais altos de transporte ou atrasos mais frequentes. Essa segmentação geográfica é essencial para gerenciar uma cadeia de suprimentos global e adaptar as estratégias logísticas a regiões específicas. Por que isso importa Permite analisar a performance dos embarques por região geográfica, ajudando a identificar gargalos regionais, fatores de custo ou variações do processo. Onde obter Faz parte das informações de endereço do local de origem da primeira parada do Freight Order. Exemplos DEUSCNMX | |||
| Sistema de origem SourceSystem | O sistema de onde os dados do evento foram originados. | ||
| Descrição Este atributo identifica o sistema de origem que gerou os dados, como SAP TM, SAP ERP ou um portal externo da transportadora. Ele fornece contexto sobre a origem dos dados e ajuda a entender os pontos de integração. Em um ambiente complexo, saber qual é o sistema de origem é essencial para validar dados, solucionar problemas de integração e entender como diferentes sistemas contribuem para o processo como um todo. Por exemplo, ele pode diferenciar um evento reportado por um sistema interno de outro reportado por um provedor logístico terceirizado. Por que isso importa Identifica a origem dos dados, algo essencial para a governança de dados, a solução de problemas e o entendimento da orquestração do processo entre vários sistemas. Onde obter Essas informações geralmente são armazenadas como parte do log do sistema ou podem ser derivadas com base na interface ou no usuário que criou o registro de dados. Exemplos SAP_TM_P01SAP_ERP_E01CARRIER_PORTAL_XYZ | |||
| Status do embarque ShipmentStatus | O status geral atual do embarque no momento da extração dos dados. | ||
| Descrição O Status do embarque fornece um retrato da etapa em que o embarque se encontra no ciclo de vida, como 'Em planejamento', 'Em execução', 'Entregue' ou 'Cancelado'. Ele representa o último estado conhecido do caso. Esse atributo é útil para filtrar e analisar embarques com base no resultado. Por exemplo, um analista pode se concentrar apenas nos embarques concluídos para medir o tempo de ciclo completo ou analisar somente os embarques cancelados para entender as causas-raiz dos cancelamentos. Ele fornece um contexto importante para interpretar o fluxo do processo. Por que isso importa Fornece o resultado geral de cada embarque, permitindo filtrar e analisar se ele foi concluído, cancelado ou ainda está em trânsito. Onde obter Este é o campo de status geral no cabeçalho do documento Freight Order ou Freight Booking no SAP TM. Exemplos Em planejamentoPronto para transporteEm execuçãoExecutadoCancelado | |||
| Última atualização dos dados LastDataUpdate | O registro de data e hora da extração ou atualização mais recente do conjunto de dados de Process Mining. | ||
| Descrição Este atributo indica o nível de atualização dos dados analisados. Ele mostra a data e a hora em que os dados foram extraídos pela última vez dos sistemas de origem, como o SAP TM, para a ferramenta de Process Mining. Esse é um elemento de metadados essencial para qualquer Dashboard ou análise, pois fornece contexto sobre o quanto os insights estão atualizados. Ele ajuda você a entender se está analisando informações em tempo real ou um retrato de um período anterior, algo fundamental para tomar decisões rápidas e bem fundamentadas. Por que isso importa Fornece um contexto essencial sobre a atualidade dos dados, garantindo que você saiba o quanto a análise está atualizada. Onde obter Normalmente, essa informação é gerada e armazenada pela ferramenta de ETL (Extract, Transform, Load) ou pelo pipeline de dados durante a ingestão dos dados. Exemplos 2023-10-27T08:00:00Z2023-10-26T08:00:00Z | |||
Atividades de gestão de transportes
| Atividade | Descrição | ||
|---|---|---|---|
| Comprovante de entrega recebido | Esta atividade ocorre quando o documento assinado de Proof of Delivery (POD) é recebido da transportadora e registrado no sistema. Isso confirma o recebimento das mercadorias pelo destinatário. | ||
| Por que isso importa Receber o POD é um pré-requisito essencial para faturar o cliente e liquidar as cobranças de frete com a transportadora. Atrasos nessa etapa impactam diretamente o ciclo cash-to-cash. Onde obter Isso normalmente é inferido a partir de uma mudança de status na Freight Order, como a definição do status do POD como 'Received'. A alteração nesse campo de status fornece o registro de data e hora da atividade. Captura Capture o registro de data e hora em que o status de Proof of Delivery na Freight Order é atualizado para 'Received'. Tipo de evento inferred | |||
| Liquidação do frete criada | Esta atividade marca a criação do Freight Settlement Document (FSD), que calcula os custos de transporte a serem pagos à transportadora. Este é o principal documento usado para apropriações e verificação de faturas. | ||
| Por que isso importa Isso inicia a etapa de liquidação financeira do processo de transporte. Analisar o tempo entre a entrega e a criação da liquidação ajuda a identificar gargalos no processamento financeiro. Onde obter Este é um evento explícito, capturado pela criação de um Freight Settlement Document. O registro de data e hora da criação está disponível na tabela de cabeçalho desse documento, /SCMTMS/D_SFIRHD. Captura Use a data e o horário de criação do Freight Settlement Document. Tipo de evento explicit | |||
| Mercadorias coletadas | Esta atividade marca o início do transporte físico das mercadorias. Ela é registrada quando a transportadora informa que as mercadorias foram carregadas e saíram do local do remetente. | ||
| Por que isso importa Este é um marco importante da execução, pois sinaliza o início da etapa de transporte. Ele é essencial para acompanhar a performance no prazo e fornecer visibilidade precisa do transporte. Onde obter Este evento normalmente é registrado no SAP Event Management, integrado ao SAP TM, como um evento de 'Departure' ou 'Loading End'. Ele atualiza o status de execução da Freight Order. Também pode ser registrado diretamente na Freight Order. Captura Use o registro de data e hora do evento de execução 'Departure' informado para o local de origem da Freight Order. Tipo de evento explicit | |||
| Mercadorias entregues | Esta atividade representa a chegada do transporte ao destino final e a conclusão do transporte físico. Ela é registrada quando a transportadora informa que as mercadorias foram descarregadas no local do destinatário. | ||
| Por que isso importa Este é o marco mais importante para medir a performance das entregas no prazo e a satisfação dos clientes. Ele também costuma servir como gatilho para os processos de faturamento e liquidação. Onde obter Isso é registrado como um evento de execução 'Arrival at Destination' ou 'Unloading End' no SAP TM, atualizando o status de execução da Freight Order. Os dados geralmente são recebidos da transportadora. Captura Use o registro de data e hora do evento de execução 'Arrival at Destination' informado para a última parada da Freight Order. Tipo de evento explicit | |||
| Pagamento processado | Esta atividade final confirma que a transportadora foi paga pelos serviços de transporte. O evento normalmente ocorre no sistema ERP conectado, depois que a fatura verificada é recebida do SAP TM. | ||
| Por que isso importa Isso marca o verdadeiro fim do ciclo de vida completo do transporte. É essencial para medir a duração geral do processo e os KPIs de pagamento no prazo. Onde obter Essas informações ficam no sistema ERP, como o S/4HANA Finance. Elas podem ser vinculadas ao Freight Settlement Document pelo número da fatura. Uma atualização de status pode ser enviada de volta ao SAP TM, ou os dados precisam ser obtidos de tabelas do ERP, como BKPF e BSEG. Captura Obtenha a data de compensação do pagamento no sistema ERP e vincule-a ao transporte por meio da referência da fatura. Tipo de evento explicit | |||
| Solicitação de transporte recebida | Esta atividade marca o início do processo de transporte e representa a criação de uma necessidade de transporte. No SAP TM, isso normalmente é registrado com a criação de uma Forwarding Order (FWO) ou de uma Order-based Transportation Requirement (OTR). | ||
| Por que isso importa Este é o principal evento de início do processo de transporte de ponta a ponta. Analisar o tempo entre esta atividade e a conclusão do planejamento é essencial para medir a eficiência do planejamento. Onde obter Este evento é registrado quando uma Forwarding Order (tipo de documento FWO) ou outro documento de necessidade de transporte é criado. O registro de data e hora da criação na tabela de cabeçalho, como /SCMTMS/D_TORROT, serve como horário do evento. Captura Capture a data e o horário de criação da Forwarding Order ou do documento de Transportation Requirement. Tipo de evento explicit | |||
| Transportadora atribuída | Esta atividade indica que um prestador específico de serviços de transporte, ou transportadora, foi selecionado e atribuído ao transporte. Isso pode ocorrer por atribuição manual, planejamento automatizado ou um processo de licitação. | ||
| Por que isso importa Atribuir uma transportadora é uma etapa crítica antes que o transporte possa ser confirmado e executado. Acompanhar essa etapa ajuda a analisar os processos de seleção de transportadoras e garantir o agendamento no prazo. Onde obter Isso é registrado quando o campo da transportadora, a parte com a função 'Carrier', é preenchido na Freight Order ou Freight Booking. No processo de licitação, ocorre quando uma Freight Request for Quotation é adjudicada. Captura Identifique o registro de data e hora em que a função de parceiro da transportadora é preenchida ou confirmada pela primeira vez na Freight Order. Tipo de evento inferred | |||
| Transporte cancelado | Esta atividade representa o cancelamento de um transporte depois que ele foi solicitado ou planejado. Ela funciona como um ponto final para processos que não avançam para a execução. | ||
| Por que isso importa Acompanhar os cancelamentos ajuda a identificar os motivos das falhas no processo, como mudanças na demanda dos clientes ou erros de planejamento. Taxas altas de cancelamento podem indicar problemas subjacentes na gestão de pedidos ou no planejamento. Onde obter Isso é inferido a partir da mudança do status do ciclo de vida da Forwarding Order ou Freight Order para 'Cancelled'. O registro de data e hora dessa mudança de status marca o evento. Captura Capture o registro de data e hora em que o status do ciclo de vida do documento é definido como 'Cancelled'. Tipo de evento inferred | |||
| Transporte planejado | Esta atividade indica que as necessidades de transporte foram consolidadas em um plano de transporte concreto. Ela é registrada quando uma Freight Order, para transporte rodoviário ou ferroviário, ou uma Freight Booking, para transporte marítimo ou aéreo, é criada e salva com a rota e os recursos planejados. | ||
| Por que isso importa Concluir este marco é essencial para iniciar a execução logística. O tempo de ciclo entre a solicitação e esta atividade é um KPI importante para medir a eficiência do planejamento. Onde obter Este evento corresponde à criação de um documento Freight Order ou Freight Booking. Ele também pode ser inferido a partir de uma mudança de status no documento, como a alteração do status de planejamento para 'Planned'. As tabelas relevantes normalmente incluem /SCMTMS/D_TORROT para os dados de cabeçalho. Captura Use o registro de data e hora da criação do documento Freight Order ou Freight Booking. Tipo de evento explicit | |||
| Declaração aduaneira protocolada | Para transportes internacionais, esta atividade representa o envio da documentação aduaneira exigida às autoridades. Ela é um pré-requisito para obter a liberação de exportação ou importação das mercadorias. | ||
| Por que isso importa Protocolar as declarações aduaneiras no prazo é essencial para evitar atrasos nas fronteiras. Esta atividade ajuda a monitorar a eficiência do processo de despacho aduaneiro. Onde obter Este evento pode ser capturado como um evento de execução específico informado por um despachante aduaneiro ou a partir de uma mudança de status em um sistema integrado de gestão aduaneira, como o SAP GTS. A Freight Order é atualizada de acordo. Captura Capture o registro de data e hora do evento de execução 'Customs Declaration Filed' ou de uma mudança de status correspondente. Tipo de evento explicit | |||
| Desembaraço aduaneiro concluído | Esta atividade indica que o transporte foi aprovado pelas autoridades aduaneiras e está liberado para prosseguir. É um marco importante na logística internacional, pois remove um gargalo potencial significativo. | ||
| Por que isso importa O desembaraço aduaneiro costuma ser uma fonte de grandes atrasos nas cadeias de suprimentos globais. Acompanhar a duração e a taxa de sucesso dessa atividade é essencial para melhorar os tempos de trânsito internacional. Onde obter Isso é registrado como um evento de execução 'Customs Clearance', normalmente informado por um despachante aduaneiro ou provedor externo de visibilidade e atualizado no acompanhamento da execução da Freight Order. Captura Use o registro de data e hora do evento de execução 'Customs Clearance' informado e associado à Freight Order. Tipo de evento explicit | |||
| Disputa de frete criada | Este evento indica que foi encontrada uma divergência entre a fatura da transportadora e os custos calculados no Freight Settlement Document. Isso aciona um Workflow de resolução de disputas. | ||
| Por que isso importa Disputas atrasam os pagamentos às transportadoras e exigem esforço administrativo para serem resolvidas. Acompanhar essa atividade ajuda a identificar as causas-raiz das imprecisões no faturamento, como tarifas incorretas ou cobranças adicionais. Onde obter Isso pode ser inferido a partir de uma mudança de status no Freight Settlement Document, com a definição do status 'Dispute'. Também pode envolver a criação de um documento separado para o caso de disputa. Captura Capture o registro de data e hora em que o status de disputa é definido no Freight Settlement Document. Tipo de evento inferred | |||
| Fatura verificada | Esta atividade indica que a fatura da transportadora foi comparada com sucesso ao Freight Settlement Document e aprovada para pagamento. É a etapa final antes do início do processo de pagamento no sistema ERP. | ||
| Por que isso importa Esta atividade conclui o processo de auditoria e verificação dos custos de frete. Atrasos nessa etapa podem levar a pagamentos tardios às transportadoras e prejudicar o relacionamento com elas. Onde obter Isso é inferido a partir de uma mudança de status no Freight Settlement Document, como 'Ready for Accrual' ou 'Transferred for Posting', indicando que ele foi enviado ao sistema ERP para pagamento. Captura Acompanhe o registro de data e hora em que o status do ciclo de vida do FSD muda para indicar que ele está pronto para pagamento ou foi contabilizado. Tipo de evento inferred | |||
| Transporte confirmado pela transportadora | Este evento representa a concordância da transportadora em executar o transporte conforme planejado. A confirmação normalmente é recebida por uma mensagem EDI, uma atualização no portal da transportadora ou um lançamento manual, que atualiza o status da Freight Order. | ||
| Por que isso importa A confirmação da transportadora representa um compromisso com o plano de transporte e reduz a incerteza. Atrasos no recebimento dessa confirmação podem colocar toda a programação do transporte em risco. Onde obter Isso é inferido a partir de uma mudança no campo de status de confirmação da Freight Order ou Freight Booking. Um valor de status específico, como 'Confirmed', será definido no gerenciamento de status do documento. Captura Acompanhe as mudanças nos campos de status de confirmação do documento Freight Order. Tipo de evento inferred | |||
| Transporte redirecionado | Esta atividade indica uma mudança não planejada na rota ou na programação do transporte depois da confirmação. Isso pode ocorrer devido a interrupções, solicitações de clientes ou problemas logísticos. | ||
| Por que isso importa Redirecionamentos costumam gerar aumento de custos e atrasos. Identificar a frequência e os motivos dos redirecionamentos ajuda a melhorar a precisão do planejamento e a estabilidade operacional. Onde obter Este evento é inferido pela detecção de mudanças significativas nas etapas, nos locais ou nas datas de uma Freight Order depois do início da execução. Os documentos de alteração, nas tabelas CDHDR e CDPOS, podem ser analisados para esse fim. Captura Detecte mudanças nos principais campos de roteirização do documento Freight Order depois do evento 'Shipment Confirmed by Carrier'. Tipo de evento inferred | |||
Guias de extração
Etapas
- Identifique e ative as APIs das CDS Views: faça login no seu sistema SAP S/4HANA. Use a transação
/IWFND/MAINT_SERVICEpara verificar se os serviços OData necessários para as CDS Views principais estão ativos. Verifique especialmente os serviços relacionados a I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder e I_FreightSettlementDocument. Se não estiverem ativos, trabalhe com o administrador do SAP para adicioná-los e ativá-los no sistema de back-end. - Estabeleça a conectividade com a API: obtenha com o administrador do SAP a URL raiz dos serviços OData. Configure uma aplicação cliente, como um script Python usando a biblioteca requests, uma ferramenta ETL comercial ou uma ferramenta como o Postman, para se conectar à API. Você precisará configurar a autenticação, normalmente usando Basic Authentication (nome de usuário e senha) ou OAuth 2.0 para uma conexão mais segura.
- Defina o escopo da extração: determine o escopo da extração de dados. Defina um intervalo de datas específico, como os últimos 6 meses. Identifique as unidades organizacionais relevantes para aplicar filtros, como Company Code, ou tipos de documento específicos, como Freight Order Type, para garantir que os dados sejam relevantes para o processo analisado.
- Monte a consulta base de remessas: comece consultando a CDS View I_TransportationOrder. Essa view funciona como o objeto central das remessas, também conhecidas como Freight Orders ou Freight Bookings. Use o parâmetro OData
$selectpara escolher as colunas necessárias, incluindo os atributos recomendados, como CarrierName, ModeOfTransport e RequestedDeliveryDate. Aplique um$filterpara limitar os dados por data e por outros parâmetros do escopo. - Execute a consulta e extraia os eventos de transporte: use a CDS View C_TranspOrdExecutionEvent para extrair os principais eventos logísticos. Filtre essa view por valores específicos de
EventCodecorrespondentes a atividades como 'Goods Picked Up' (DEPARTURE) e 'Goods Delivered' (ARRIVAL_AT_DESTINATION). Relacione esses dados novamente aos dados base das remessas usando o UUID da TransportationOrder. - Consulte os objetos de negócio relacionados: para capturar o processo completo, você precisa consultar outras CDS Views relacionadas. Consulte I_ForwardingOrder para a atividade 'Transportation Request Received' e I_FreightSettlementDocument para atividades financeiras como 'Freight Settlement Created', 'Freight Dispute Created' e 'Invoice Verified'.
- Extraia atividades baseadas em status: muitas atividades não são eventos discretos, mas mudanças de status no documento principal. Para atividades como 'Carrier Assigned', 'Shipment Confirmed By Carrier' e 'Shipment Cancelled', consulte a view I_TransportationOrder e use o
LastChangeDateTimeassociado ao campo de status relevante como horário do evento. Isso exige um mapeamento cuidadoso dos códigos de status para as atividades de negócio. - Una e transforme os dados: consolide os dados extraídos de todas as fontes em uma única estrutura de Event Log. Para cada atividade extraída, crie uma linha contendo as colunas obrigatórias: ShipmentId, ActivityName e EventTime. Garanta que todos os atributos recomendados da consulta base de remessas estejam presentes em cada linha dessa remessa. Conceitualmente, essa etapa equivale a uma operação SQL
UNION ALL. - Trate eventos complexos e externos: para atividades como 'Customs Cleared' ou 'Payment Processed', os dados podem estar em campos específicos ou até mesmo em sistemas externos. A lógica da consulta usa campos padrão como proxy. Talvez seja necessário ajustar a consulta para fazer a junção com CDS Views específicas de alfândega ou correlacioná-la com uma extração separada do ERP para os dados de pagamento, com base no número do Freight Settlement Document.
- Formate para o ProcessMind: salve o conjunto de dados consolidado final como um arquivo CSV. Garanta que os cabeçalhos das colunas correspondam aos requisitos de upload, mapeando, por exemplo, a coluna
ShipmentIdpara o campoCaseIdnas configurações da ferramenta. Verifique se os timestamps estão em um formato consistente, de preferência UTC (YYYY-MM-DDTHH:MM:SSZ).
Configuração
- CDS Views principais: a extração depende principalmente de I_TransportationOrder (para freight orders), C_TranspOrdExecutionEvent (para eventos de execução), I_ForwardingOrder (para solicitações de transporte) e I_FreightSettlementDocument (para liquidação).
- Filtro por intervalo de datas: é fundamental aplicar um filtro de data para controlar o volume de dados. Use
CreationDateTimeem I_TransportationOrder ouActualBusinessDateTimeem C_TranspOrdExecutionEvent. Recomenda-se um intervalo de 3 a 6 meses para a análise inicial. - Filtro por tipo de documento: para concentrar a análise, filtre tipos de documento específicos usando o campo
TransportationOrderType. Isso ajuda a separar diferentes cenários logísticos, como remessas padrão de saída e transferências de estoque. - Filtros organizacionais: quando aplicável, filtre por
PurchasingOrganizationou por outros campos organizacionais para limitar os dados a uma unidade de negócio ou região específica. - Paginação da API: para grandes conjuntos de dados, use os parâmetros OData
$tope$skippara recuperar os dados em páginas menores. Isso evita timeouts da API e reduz o consumo de memória no cliente. Um tamanho de página entre 1.000 e 5.000 linhas costuma funcionar bem. - Pré-requisitos: o usuário ou a conta de serviço que executa a extração precisa de autorizações para os serviços OData subjacentes (objeto de autorização S_SERVICE) e para os dados de negócio nas CDS Views. Os serviços correspondentes devem estar ativados no SAP Gateway (
/IWFND/MAINT_SERVICE).
a Consulta de exemplo 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' Etapas
- Confirme se há acesso direto somente para leitura ao esquema SAP TM HANA por meio de um cliente SQL aprovado, uma visão de banco de dados ou um serviço de extração. Obtenha a string de conexão, as credenciais, o nome do esquema e a autorização necessários para ler as tabelas relevantes do SAP TM. Não consulte diretamente o ambiente de produção sem as aprovações de segurança e de mudança aplicáveis.
- Confirme os nomes físicos das tabelas e colunas no seu sistema. A consulta abaixo usa /SCMTMS/D_TORROT e /SCMTMS/D_TOSTOP como tabelas principais, mas os dados de status, parceiros, datas, custos, alfândega, documentos e pagamentos podem estar armazenados em tabelas ou extensões adicionais, dependendo da versão e da implementação do SAP TM. Substitua apenas os espaços reservados documentados depois de validá-los no catálogo e no modelo de dados do sistema.
- Defina o período de extração usando [Timestamp inicial] e [Timestamp final]. Um período móvel de três a seis meses geralmente é adequado para a análise inicial. Use um período mais amplo somente depois de confirmar a performance da consulta e a retenção do histórico de eventos.
- Identifique a chave do caso da remessa. A consulta usa TOR_ID de /SCMTMS/D_TORROT como identificador da remessa. Se sua implementação usar outro identificador estável, substitua a chave do caso de forma consistente em todos os ramos de atividade e mantenha o identificador original do documento como atributo adicional de auditoria, quando disponível.
- Mapeie cada atividade de negócio para uma condição explícita na origem. O ProcessMind lê o registro de eventos como ele está, portanto a consulta cria uma linha para cada atividade extraída. Ela não infere marcos com base na ordem dos documentos, em timestamps ausentes ou na progressão do status.
- Valide os mapeamentos de status e timestamps com os planejadores de transporte e os responsáveis pelos processos de negócio. Confirme especialmente os valores que representam criação da solicitação, planejamento, atribuição da transportadora, confirmação da transportadora, coleta, registro aduaneiro, desembaraço aduaneiro, redirecionamento, entrega, recebimento do comprovante de entrega, liquidação do frete, contestação, verificação da fatura, cancelamento e pagamento.
- Execute a consulta no cliente SQL aprovado. Revise o resultado para confirmar uma linha por evento, um ShipmentId não nulo, um ActivityName não nulo e um EventTime válido. Verifique se há linhas duplicadas causadas por junções um-para-muitos e ajuste os mapeamentos da origem ou a lógica de agregação quando necessário.
- Enriqueça o resultado com os atributos recomendados quando os campos de origem correspondentes estiverem disponíveis. A consulta inclui espaços reservados profissionais para campos que não podem ser nomeados com segurança sem metadados específicos do sistema. Substitua esses espaços reservados somente por colunas verificadas ou visões aprovadas.
- Aplique as regras finais de qualidade dos dados. Remova linhas sem identificador de caso ou timestamp de evento, normalize os timestamps para um único fuso horário, preserve os timestamps de origem para auditoria e garanta que EndTime não seja anterior a EventTime. Não crie eventos sintéticos para registros ausentes na origem.
- Exporte o resultado como CSV UTF-8 ou outro formato tabular compatível com o ProcessMind. Use exatamente os nomes de coluna obrigatórios ShipmentId, ActivityName e EventTime. Inclua EndTime e os atributos recomendados quando estiverem preenchidos. Carregue o arquivo ou conecte o resultado da consulta aprovada ao ProcessMind e verifique se os campos Shipment, identificador do caso, e Activity Name, nome da atividade, estão mapeados corretamente.
Configuração
- Tabelas de origem principais: use /SCMTMS/D_TORROT para os dados raiz da transportation order ou freight order e /SCMTMS/D_TOSTOP para dados de paradas e marcos. Valide todos os objetos de origem adicionais no sistema SAP TM de destino antes da implantação.
- Identificador do caso: use um identificador estável da remessa ou da freight order. A consulta de exemplo usa TOR_ID como ShipmentId. Confirme se esse identificador permanece estável durante o planejamento, a execução, a liquidação e os registros de pagamento do ERP.
- Mapeamento de atividades: configure condições de origem explícitas para todas as 15 atividades obrigatórias. Cada atividade deve ser emitida como uma linha física do Event Log. O ProcessMind não deriva atividades de outras linhas.
- Intervalo de datas: comece com três a seis meses de histórico. Use predicados de EventTime o mais cedo possível em cada ramificação de origem. Para cargas incrementais, use um watermark controlado e inclua uma pequena janela de sobreposição para capturar atualizações tardias.
- Filtros de negócio: configure filtros de company code, purchasing organization, sales organization, tipo de documento, modo de transporte, transportadora, planta, local e status de acordo com a implementação. Use placeholders como [Company code filter] quando o campo aplicável não tiver sido verificado.
- Tratamento de timestamps: converta os timestamps de origem para um fuso horário consistente. Se uma origem armazenar data e hora em campos separados, combine-os usando a conversão específica do sistema compatível com a versão do HANA. Preserve o timestamp original da origem quando a auditabilidade for necessária.
- Atributos recomendados: preencha CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost e IsOnTimeDelivery usando campos de origem verificados ou calculation views aprovadas. Deixe os valores nulos quando a origem não contiver um valor confiável.
- Performance: restrinja o período, selecione apenas as colunas necessárias, aplique filtros antes das junções, evite varreduras irrestritas de tabelas completas e revise o plano de execução do HANA. Para grandes conjuntos de dados, use predicados compatíveis com particionamento, extração incremental, tabelas de staging ou uma calculation view aprovada.
- Controle de duplicidades: junções um-para-muitos podem gerar várias linhas para uma atividade. Use uma chave de evento verificada, uma chave de documento de origem ou uma regra determinística de agregação. Não use uma deduplicação arbitrária que possa remover eventos repetidos legítimos.
- Pré-requisitos: autorizações de banco de dados necessárias, acesso aos dados do SAP TM, acesso a dados conectados do ERP ou de liquidação, ferramentas de extração aprovadas e confirmação de que os módulos, as integrações e os aprimoramentos personalizados relevantes do SAP TM estão ativos.
- Mapeamento específico do sistema: códigos de status, funções de parceiros, marcos aduaneiros, status de liquidação, status de fatura e status de pagamento variam conforme a versão e a configuração. Mantenha os mapeamentos em um documento de configuração controlado e teste-os após as atualizações.
a Consulta de exemplo 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; Etapas
- Defina os requisitos de dados: comece confirmando a lógica exata para cada uma das 15 atividades obrigatórias e todos os atributos. Isso envolve mapear cada atividade para mudanças de status, eventos de criação ou vínculos de documentos específicos no seu sistema SAP TM. Por exemplo, determine o status de execução exato que representa 'Goods Picked Up'.
- Acesse o ambiente de desenvolvimento ABAP: faça login na SAP GUI e acesse o ABAP Editor usando o código de transação
SE38. Informe um nome para o novo programa, por exemplo,ZTM_PROCESS_EXTRACT, e clique em 'Create'. Forneça um título e defina o tipo do programa como 'Executable Program'. - Crie a tela de seleção: no programa, defina a tela de seleção que os usuários verão. Ela deve incluir parâmetros para filtrar os dados, como um intervalo de datas para a data de criação da freight order (
SO_CREDT), além de select-options para tipos de documento (SO_TYPE) ou transportadoras (SO_CARR). - Defina a estrutura de saída: defina uma estrutura de tabela interna que corresponda ao formato obrigatório do Event Log. Essa estrutura deve incluir os campos
ShipmentId,ActivityName,EventTime,EndTime,CarrierName,RequestedDeliveryDate,ModeOfTransport,TotalFreightCosteIsOnTimeDelivery. - Implemente a lógica de seleção de dados: escreva a lógica ABAP principal para selecionar os dados de cada uma das 15 atividades. Normalmente, isso envolve consultar várias tabelas do SAP TM. Comece selecionando os documentos principais das remessas, como Freight Orders, dentro do intervalo de datas especificado.
- Extraia eventos de planejamento e execução: para cada documento de remessa selecionado, como uma Freight Order, consulte as tabelas e os objetos de negócio relacionados para encontrar os timestamps dos diferentes eventos. Use a tabela
/SCMTMS/D_TORROTpara a criação da Freight Order ('Shipment Planned'), a atribuição da transportadora ('Carrier Assigned') e as mudanças de status de execução correspondentes a 'Goods Picked Up' e 'Goods Delivered'. A criação da Forwarding Order anterior (/SCMTMS/D_TRQROT) pode representar 'Transportation Request Received'. - Extraia a confirmação da transportadora e o redirecionamento: consulte tabelas de status ou documentos de alteração (CDHDR/CDPOS) associados à Freight Order para identificar quando o status
CONFIRMATIONfoi definido, capturando 'Shipment Confirmed By Carrier'. Da mesma forma, procure mudanças relevantes nas informações de rota para capturar 'Shipment Rerouted'. - Extraia eventos aduaneiros: se você usar o SAP Global Trade Services (GTS) ou um módulo semelhante, os eventos aduaneiros ('Customs Declaration Filed', 'Customs Cleared') geralmente são registrados em documentos vinculados. A lógica deve ler o fluxo de documentos (
/SCMTMS/D_TORDOC) da Freight Order para encontrar esses documentos relacionados e os horários de criação ou de mudança de status. - Extraia eventos de liquidação e disputa: consulte a tabela de cabeçalho do Freight Settlement Document (
/SCMTMS/D_SFIRHD) e seus itens e status relacionados para capturar os eventos 'Freight Settlement Created', 'Freight Dispute Created' e 'Invoice Verified'. Relacione-os aoShipmentIdoriginal. - Consolide os dados: para cada evento encontrado, crie um novo registro na tabela interna final. Preencha
ActivityNamecom a atividade correspondente,EventTimecom o timestamp do evento eShipmentIdcom o ID da Freight Order ou Freight Booking. Preencha os demais atributos usando os documentos de origem. - Formate e exporte o arquivo: depois de preencher completamente a tabela interna final, formate os dados em um arquivo simples. Use os comandos
OPEN DATASET,LOOP AT... TRANSFER...eCLOSE DATASETpara gravar o conteúdo da tabela interna em um arquivo CSV ou TXT no servidor de aplicação SAP, acessível pela transação AL11. - Agende e recupere: o programa ABAP pode ser agendado para execução como um job em segundo plano, usando a transação SM36, para extrair os dados automaticamente. Depois, o arquivo gerado pode ser baixado do servidor de aplicação para uma máquina local usando a transação
CG3Ye carregado no ProcessMind.
Configuração
- Intervalo de datas: a tela de seleção deve incluir um intervalo de datas obrigatório para a data de criação do documento de transporte principal, como a Freight Order. Para a análise inicial, recomenda-se um intervalo de 3 a 6 meses, garantindo um conjunto de dados representativo sem causar um tempo de execução excessivo.
- Filtro por tipo de documento: forneça um filtro para o tipo de documento de transporte, como Freight Order ou Freight Booking. Isso é essencial para concentrar a análise em processos específicos, como transporte rodoviário ou marítimo.
- Filtro por transportadora: permita que os usuários filtrem por transportadoras específicas. Isso ajuda a analisar a performance de cada parceiro logístico.
- Filtros organizacionais: inclua filtros para unidades organizacionais relevantes, como Purchasing Organization ou Company Code, para restringir a extração a áreas de negócio específicas.
- Otimização de performance: para grandes conjuntos de dados, garanta que o código ABAP use campos indexados do banco de dados nas cláusulas
WHERE, evite loops aninhados sempre que possível e selecione apenas os campos necessários do banco para reduzir o consumo de memória. - Pré-requisitos: o usuário que executa o relatório precisa de autorização para executar programas ABAP. O desenvolvedor precisa da autorização
S_DEVELOP. O próprio programa precisa de autorizações para acessar o sistema de arquivos no servidor de aplicação (objetoS_DATASET) e acessar as tabelas de banco de dados e os objetos BOPF relevantes do TM.
a Consulta de exemplo 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. Pronto para começar?
Use este Template para iniciar sua jornada rumo a processos de transporte otimizados e entregas mais rápidas e econômicas. Comece a descobrir insights hoje mesmo!
Elimine hoje os gargalos da gestão de transportes
Identifique ineficiências, otimize rotas e reduza o tempo de ciclo em 30%.
Não é necessário cartão de crédito. Configure em poucos minutos.