Seu Template de dados de gestão de transportes
Seu Template de dados de gestão de transportes
- Atributos recomendados para coleta
- Principais atividades para acompanhar
- Orientações para extrair dados do SAP Transportation Management
Atributos de gestão de transportes
| Nome | Descrição | ||
|---|---|---|---|
| Data e hora do evento EventTime | Data e hora que indicam quando uma atividade ou um evento específico ocorreu. | ||
| Descrição A data e hora do evento registram o momento exato 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 as diferentes etapas do processo. Na análise, este atributo é usado para ordenar os eventos corretamente, criar um registro cronológico e realizar análises de performance baseadas no tempo. Ele é essencial para identificar atrasos, medir a eficiência do processo e avaliar a performance em relação aos cronogramas ou aos acordos de nível de serviço. Por que isso importa A data e hora são essenciais para ordenar os eventos cronologicamente e calcular métricas de performance, como tempos de ciclo e entregas no prazo. Onde encontrar Obtidas de tabelas do gerenciador de eventos do SAP TM, como /SAPTRX/EH_EVMSG, que armazenam as datas e horas dos eventos informados. Exemplos 2023-04-15T10:00:00Z2023-04-16T14:30:00Z2023-04-20T09:15:00Z | |||
| Embarque ShipmentId | Identificador único de um transporte de mercadorias, usado como caso central da análise. | ||
| Descrição O ID do embarque é a chave principal que agrupa todas as atividades e os eventos de transporte relacionados. Ele representa um único processo de transporte de ponta a ponta, da solicitação inicial ao comprovante de entrega e ao pagamento. No Process Mining, este atributo é essencial para montar a visão do caso e permitir que analistas acompanhem toda a trajetória de cada embarque. Com ele, é possível analisar as variantes do processo, os tempos de ciclo e os resultados de cada embarque, obtendo uma visão abrangente da performance do transporte. Por que isso importa Este é o identificador fundamental do caso, que vincula todos os eventos e pontos de dados a uma ordem de transporte específica. Ele é essencial para analisar o processo de ponta a ponta. Onde encontrar Este identificador corresponde ao 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 | |||
| Nome da atividade ActivityName | Nome de um evento ou etapa de negócio específico que ocorreu no processo de transporte. | ||
| Descrição O nome da atividade descreve uma tarefa ou etapa específica do ciclo de vida do embarque, como 'Shipment Planned', 'Goods Picked Up' ou 'Goods Delivered'. Essas atividades formam os nós do mapa de processos descoberto. Analisar a sequência e a frequência das atividades ajuda a identificar o fluxo padrão do processo, os desvios, os gargalos e os 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 e permite visualizar e analisar o fluxo do embarque de ponta a ponta. Onde encontrar Em geral, este atributo é derivado de códigos de eventos ou mudanças de status registrados no gerenciador de eventos de acompanhamento da execução do SAP TM. Os dados podem vir de tabelas que registram mudanças de status de objetos de negócio ou mensagens de eventos específicos. Exemplos Embarque planejadoTransportadora atribuídaMercadorias coletadasMercadorias entreguesComprovante de entrega recebido | |||
| Custo total do frete TotalFreightCost | Custo total calculado ou faturado da remessa. | ||
| Descrição O custo total do frete representa o impacto financeiro de uma remessa. Pode ser o custo calculado pelo sistema de gestão de transportes ou o valor final da fatura da transportadora após a liquidação. Esse atributo permite incluir a dimensão financeira na 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 que acompanham os gastos com transporte e analisam o custo de atendimento. Por que isso importa Acrescenta uma dimensão financeira ao processo e permite analisar os gastos com transporte, o custo por remessa e o impacto financeiro das ineficiências do processo. Onde encontrar Obtido do documento Freight Settlement no SAP TM, após o cálculo das tarifas. Pode ser encontrado em tabelas como /SCMTMS/D_SFIRHD. Exemplos 250.751200.005430.50 | |||
| Data de entrega solicitada RequestedDeliveryDate | Data e hora de entrega solicitadas pelo cliente ou definidas no pedido de venda. | ||
| Descrição A data de entrega solicitada é o prazo previsto para a atividade 'Mercadorias entregues'. Ela é a 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 a data e hora reais da entrega com a data solicitada, a organização pode verificar se cumpriu o nível de serviço acordado. A análise dos desvios ajuda a identificar causas recorrentes de atrasos, como problemas de performance da transportadora, atrasos no planejamento ou retenções alfandegárias. 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 encontrar Essa data geralmente é transferida do pedido de venda ou da ordem de transferência de estoque anterior, no SAP ERP. Ela fica armazenada nos campos de data e hora da Freight Unit ou da Freight Order. Exemplos 2023-05-20T17:00:00Z2023-06-01T12:00:00Z2023-06-15T23:59:59Z | |||
| Data e hora de término EndTime | Data e hora que indicam 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 com duração, como 'Customs Clearance' ou 'Goods Loading'. A diferença entre EndTime e StartTime corresponde ao tempo de processamento da atividade. No Process Mining, ter as datas e horas de início e término permite analisar a duração das atividades com mais precisão e separar o tempo de processamento do tempo de espera. Assim, fica mais fácil identificar onde estão as ineficiências, seja na execução de uma tarefa ou na transferência entre tarefas. Por que isso importa Permite calcular com precisão o tempo de processamento das atividades e distinguir o tempo de trabalho efetivo do tempo de espera entre eventos. Onde encontrar Assim como StartTime, este dado vem de tabelas do gerenciador de eventos. Ele pode corresponder a um evento separado de conclusão de uma atividade. Exemplos 2023-04-15T11:30:00Z2023-04-16T15:00:00Z2023-04-20T09:45:00Z | |||
| Entrega no prazo IsOnTimeDelivery | Indicador booleano que informa se as mercadorias foram entregues até a data de entrega solicitada. | ||
| Descrição Esse atributo calculado compara a data e hora da atividade 'Mercadorias entregues' com a 'Data de entrega solicitada'. O resultado é verdadeiro quando a entrega ocorre no prazo ou antes dele, e falso quando ocorre com atraso. Esse atributo simplifica a análise de performance ao indicar claramente o resultado de cada remessa. Ele é a base do Dashboard de performance de entrega no prazo e do KPI correspondente. Os analistas podem filtrar facilmente as remessas atrasadas e fazer uma análise de causa raiz para entender os fatores que prejudicam a performance. Por que isso importa Mede diretamente o cumprimento dos prazos de entrega e simplifica o cálculo e a visualização do KPI essencial de entregas no prazo. Onde encontrar Esse atributo não fica armazenado no SAP TM. Ele precisa ser calculado durante a transformação dos dados, comparando a data e hora do evento de entrega real com a data de entrega solicitada. Exemplos truefalse | |||
| Modal de transporte ModeOfTransport | Meio de transporte usado na remessa, como rodoviário, ferroviário, aéreo ou marítimo. | ||
| Descrição Esse atributo especifica o modal de transporte. Cada modal tem estruturas de custo, tempos de trânsito e complexidades de processo diferentes. Por exemplo, uma remessa aérea internacional exige atividades como o desembaraço alfandegário, que não se aplicam a uma carga rodoviária doméstica. Analisar os processos por modal de transporte permite definir iniciativas de melhoria específicas. Essa análise também é essencial para avaliar custos, especialmente para identificar o uso de frete premium, como o transporte aéreo expresso, em comparação com modais padrão mais econômicos. Essa segmentação é fundamental para entender e controlar os gastos com transporte. Por que isso importa Permite analisar custos, prazos e variações de processo por modal de transporte, o que é essencial para otimizar custos e identificar o uso de frete premium. Onde encontrar Esse é um campo importante da Freight Order ou do 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 | Nome da transportadora ou do prestador de serviços logísticos responsável pelo transporte da remessa. | ||
| Descrição O nome da transportadora identifica a empresa responsável pelo transporte físico das mercadorias. Essa dimensão é essencial para analisar a performance, já que as transportadoras podem apresentar diferentes níveis de serviço, custo e confiabilidade. No Process Mining, esse atributo permite segmentar e comparar a performance entre transportadoras. Com ele, você pode criar avaliações de transportadoras, acompanhar as taxas de entrega no prazo de cada uma, comparar custos e identificar quais estão mais associadas a atrasos ou contestações. Esse insight é fundamental para a gestão estratégica de transportadoras e para as decisões de contratação. Por que isso importa Permite comparar a performance entre transportadoras, um fator importante para otimizar a escolha da transportadora, os custos e os níveis de serviço. Onde encontrar Essa informação fica armazenada no documento Freight Order ou Freight Booking e é vinculada pela função de parceiro de negócios da transportadora. Exemplos DHL ExpressFedEx FreightMaersk LineUnion Pacific Railroad | |||
| Contestada IsDisputed | Indicador booleano que informa se a fatura de frete da remessa gerou uma contestação. | ||
| Descrição Esse indicador calculado identifica remessas associadas a uma contestação de liquidação de frete. O resultado é verdadeiro quando uma contestação é aberta e falso nos demais casos. Ele pode ser calculado com base na atividade 'Contestação de frete criada' ou em um 'Motivo da contestação' preenchido. Esse atributo simplifica a análise do processo de liquidação de frete. Ele facilita o cálculo do KPI de taxa de divergência no faturamento do frete e a filtragem de todas as remessas contestadas. Em seguida, os analistas podem investigar características comuns dessas remessas, como transportadoras, rotas ou tipos de cobrança, para encontrar a causa raiz dos erros de faturamento. Por que isso importa Facilita a identificação de problemas nas liquidações de frete, agilizando o cálculo da taxa de contestação e a análise de causa raiz dos erros de faturamento. Onde encontrar Esse atributo não fica armazenado no SAP TM. Ele precisa ser calculado com base na existência de um caso de contestação vinculado ao documento Freight Settlement. Exemplos truefalse | |||
| Data programada para coleta ScheduledPickupDate | Data e hora planejadas para a transportadora coletar as mercadorias no ponto de expedição. | ||
| Descrição A data programada para coleta é o horário acordado para o início do transporte físico. Ela é um marco importante na etapa de execução da remessa. Esse atributo é essencial para acompanhar a pontualidade do primeiro trecho do percurso. Ao comparar o horário programado para a coleta com a data e hora reais do evento 'Mercadorias coletadas', as empresas podem 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 de referência para medir a pontualidade da coleta e ajuda a identificar atrasos logo no início do transporte físico da remessa. Onde encontrar Essa data e hora planejadas ficam armazenadas na sequência de paradas da Freight Order no SAP TM. Exemplos 2023-05-18T09:00:00Z2023-05-30T14:00:00Z2023-06-12T10:30:00Z | |||
| Motivo da contestação DisputeReason | 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, é aberta uma contestação. Esse atributo registra o motivo da divergência, como 'Tarifa incorreta', 'Fatura duplicada' ou 'Taxa adicional não aprovada'. Analisar os motivos das contestações é essencial para o Dashboard de erros e contestações de faturas de frete. Essa análise ajuda a identificar as causas raiz das imprecisões no faturamento, sejam elas problemas nos dados mestres, erros da transportadora ou falhas operacionais. Com esse insight, a organização pode tomar medidas direcionadas para reduzir as contestações, acelerar o ciclo de pagamento e diminuir o trabalho administrativo. Por que isso importa Mostra a causa raiz dos erros no faturamento do frete e permite tomar medidas direcionadas para reduzir contestações de faturas e melhorar o processo de liquidação. Onde encontrar Essa informação é registrada no caso de gestão de contestações associado a um documento Freight Settlement. Exemplos Divergência de tarifaPeso incorretoTaxa de sobre-estadia não aprovadaFatura duplicada | |||
| Motivo do atraso DelayReason | Código ou texto que explica o motivo do atraso da remessa. | ||
| Descrição O atributo Motivo do atraso registra a causa de um desvio em relação ao cronograma planejado, como 'Mau tempo', 'Retenção alfandegária' ou 'Atraso da transportadora'. Essa informação costuma ser relatada manualmente ou por meio de uma mensagem de evento enviada pela transportadora. Esse atributo é essencial para a análise de causa raiz. Ele permite que os analistas entendam por que uma remessa atrasou, em vez de apenas constatar o atraso. Ao categorizar e quantificar os motivos, a organização pode 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 os motivos dos atrasos nas remessas e permite fazer uma análise de causa raiz para reduzir exceções e melhorar a performance de entrega no prazo. Onde encontrar Essa informação pode ser registrada como código e motivo de evento na estrutura de gestão de eventos do SAP TM quando um evento 'Chegada/partida atrasada' é informado. Exemplos WEATHER_DELAYCUSTOMS_INSPECTIONPORT_CONGESTIONMECHANICAL_FAILURE | |||
| Nome do usuário UserName | ID ou nome da pessoa que executou uma atividade. | ||
| Descrição Este atributo identifica o funcionário ou usuário responsável por uma atividade manual, como 'Shipment Planned' ou 'Invoice Verified'. Ele vincula 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 quem tem melhor performance. Isso também é essencial para a conformidade e as auditorias, pois registra claramente quem fez o quê e quando. A análise pode revelar diferenças na forma como cada usuário executa a mesma tarefa. Por que isso importa Vincula as etapas manuais do processo a usuários específicos e permite analisar a carga de trabalho, a performance individual e as oportunidades de treinamento. Onde encontrar Geralmente encontrado no log de alterações ou nas tabelas de cabeçalho de documentos de transporte, em campos como 'Criado por' ou 'Alterado por' (por exemplo, ERNAM, AENAM). Exemplos CB998030SMITHJPLANNER_EU | |||
| País de destino DestinationCountry | País para onde a remessa será entregue. | ||
| Descrição Esse atributo identifica o país de destino final da remessa, com base no endereço do último local de entrega. Assim como o país de origem, o país de destino é importante para entender os desafios logísticos de cada região. A análise pode revelar, por exemplo, quais destinos têm mais atrasos na entrega ou custos mais altos na última milha. Esse insight é útil para otimizar a rede, definir expectativas de entrega realistas e gerenciar a conformidade no comércio internacional. Por que isso importa Permite analisar a performance do processo por destino e identificar problemas em regiões de entrega específicas, autoridades alfandegárias ou transportadoras da última milha. Onde encontrar Essa informação faz parte do endereço do local de destino da última parada da Freight Order. Exemplos FRCAGBJP | |||
| País de origem OriginCountry | País de origem da remessa. | ||
| Descrição Esse atributo identifica o país onde começa o transporte. Ele é obtido do endereço do local de coleta inicial. Analisar o processo por país de origem ajuda a identificar diferenças regionais de performance, custo e complexidade. A análise pode revelar países com prazos maiores para o desembaraço alfandegário, custos mais altos com transportadoras 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 cada região. Por que isso importa Permite analisar geograficamente a performance das remessas e identificar gargalos regionais, fatores que elevam os custos ou variações no processo. Onde encontrar Essa informação faz parte do endereço do local de origem da primeira parada da Freight Order. Exemplos DEUSCNMX | |||
| Sistema de origem SourceSystem | Sistema de onde vieram os dados do evento. | ||
| Descrição Este atributo identifica o sistema de origem dos dados, como SAP TM, SAP ERP ou o portal de uma transportadora externa. Ele informa a procedência dos dados e ajuda a entender os pontos de integração. Em um panorama complexo, conhecer 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, é possível distinguir um evento informado por um sistema interno de outro informado por um provedor de logística 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 encontrar Essas informações costumam ser armazenadas no registro do sistema ou podem ser deduzidas pela interface ou pelo usuário que criou o registro de dados. Exemplos SAP_TM_P01SAP_ERP_E01CARRIER_PORTAL_XYZ | |||
| Status da remessa ShipmentStatus | Status geral da remessa no momento da extração dos dados. | ||
| Descrição O status da remessa mostra em que etapa do ciclo de vida ela está, por exemplo, 'Em planejamento', 'Em execução', 'Entregue' ou 'Cancelada'. Ele representa o último estado conhecido do caso. Esse atributo ajuda a filtrar e analisar as remessas de acordo com o resultado. Por exemplo, um analista pode considerar apenas as remessas concluídas para medir o tempo de ciclo de ponta a ponta ou analisar somente as canceladas para entender as causas raiz dos cancelamentos. Essas informações dão contexto importante para interpretar o fluxo do processo. Por que isso importa Mostra o resultado geral de cada remessa e permite filtrar e analisar se ela foi concluída, cancelada ou ainda está em trânsito. Onde encontrar Esse é o campo de status geral no cabeçalho do documento Freight Order ou Freight Booking no SAP TM. Exemplos Em planejamentoPronta para transporteEm execuçãoExecutadaCancelada | |||
| Última atualização dos dados LastDataUpdate | 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, e carregados na ferramenta de Process Mining. Este metadado é essencial para qualquer Dashboard ou análise, pois informa o quanto os insights estão atualizados. Ele ajuda a entender se você está vendo informações em tempo real ou um retrato de um período anterior, algo importante para tomar decisões fundamentadas e no momento certo. Por que isso importa Fornece contexto essencial sobre a atualidade dos dados e ajuda a entender o quanto a análise está atualizada. Onde encontrar Em geral, esta informação é gerada e armazenada pela ferramenta 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 comprovante de entrega (POD) assinado é recebido da transportadora e registrado no sistema. Isso confirma que o destinatário aceitou as mercadorias. | ||
| Por que isso importa Receber o POD é um requisito essencial para faturar o cliente e liquidar os custos de frete com a transportadora. Atrasos nesta etapa afetam diretamente o ciclo de conversão de caixa. Onde encontrar Este evento costuma ser identificado por uma mudança de status na Freight Order, como a alteração do status do POD para 'Received'. A data e hora da mudança nesse campo indicam quando a atividade ocorreu. Coleta Registre a data e hora em que o status do comprovante de entrega na Freight Order é atualizado para 'Received'. Tipo de evento inferred | |||
| Documento de liquidação de frete criado | Esta atividade marca a criação do Freight Settlement Document (FSD), que calcula os custos de transporte a pagar à transportadora. Este é o principal documento usado para apropriações e conferência de faturas. | ||
| Por que isso importa Esta atividade dá início à etapa de liquidação financeira do processo de transporte. Analisar o tempo entre a entrega e a criação do documento de liquidação ajuda a identificar gargalos no processamento financeiro. Onde encontrar Este evento é registrado explicitamente quando um Freight Settlement Document é criado. A data e hora de criação estão disponíveis na tabela de cabeçalho desse documento, /SCMTMS/D_SFIRHD. Coleta Use a data e a hora de criação do Freight Settlement Document. Tipo de evento explicit | |||
| Embarque cancelado | Esta atividade representa o cancelamento de um embarque após a solicitação ou o planejamento. Ela encerra os processos que não chegam à etapa de execução. | ||
| Por que isso importa Acompanhar os cancelamentos ajuda a identificar motivos para falhas no processo, como mudanças na demanda do cliente ou erros de planejamento. Uma taxa alta de cancelamentos pode indicar problemas subjacentes na gestão de pedidos ou no planejamento. Onde encontrar Este evento é identificado pela mudança do status do ciclo de vida da Forwarding Order ou da Freight Order para 'Cancelled'. A data e hora dessa mudança marcam o evento. Coleta Registre a data e hora em que o status do ciclo de vida do documento é definido como 'Cancelled'. Tipo de evento inferred | |||
| Embarque planejado | Esta atividade indica que as necessidades de transporte foram consolidadas em um plano de embarque 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 esta etapa é 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 encontrar Este evento corresponde à criação de uma Freight Order ou Freight Booking. Também pode ser identificado por uma mudança de status no documento, como a alteração do status de planejamento para 'Planned'. As tabelas relevantes costumam incluir /SCMTMS/D_TORROT, que contém os dados do cabeçalho. Coleta Use a data e hora de criação do documento Freight Order ou Freight Booking. 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 Esta é uma etapa importante da execução, que marca o início do transporte. Acompanhar esse evento é essencial para medir a performance de entrega no prazo e oferecer visibilidade precisa do embarque. Onde encontrar Este evento costuma ser 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. O registro também pode ser feito diretamente na Freight Order. Coleta Use a 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 embarque 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 Esta é a etapa mais importante para medir a performance de entrega no prazo e a satisfação dos clientes. Em geral, também dá início aos processos de faturamento e liquidação. Onde encontrar Este evento é registrado no SAP TM como um evento de execução 'Arrival at Destination' ou 'Unloading End' e atualiza o status de execução da Freight Order. Muitas vezes, os dados são recebidos da transportadora. Coleta Use a data e hora do evento de execução 'Arrival at Destination' informado para a parada final da Freight Order. Tipo de evento explicit | |||
| Pagamento processado | Esta atividade final confirma que a transportadora recebeu o pagamento pelos serviços de transporte. Em geral, o evento ocorre no sistema ERP conectado, após o recebimento da fatura verificada do SAP TM. | ||
| Por que isso importa Esta atividade marca o fim efetivo do ciclo de vida do transporte de ponta a ponta. Ela é essencial para medir a duração total do processo e os KPIs de pagamento no prazo. Onde encontrar Essas informações ficam no sistema ERP, como o S/4HANA Finance. É possível vinculá-las ao Freight Settlement Document pelo número da fatura. Uma atualização de status pode ser enviada de volta ao SAP TM; caso contrário, os dados devem ser obtidos de tabelas do ERP, como BKPF e BSEG. Coleta Obtenha a data de compensação do pagamento no sistema ERP e vincule-a ao embarque pela referência da fatura. Tipo de evento explicit | |||
| Solicitação de transporte recebida | Esta atividade marca o início do processo de transporte, com a criação de uma necessidade de transporte. No SAP TM, isso costuma ser registrado pela criação de uma Forwarding Order (FWO) ou de um Order-based Transportation Requirement (OTR). | ||
| Por que isso importa Este é o principal evento de início do processo de embarque 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 encontrar Este evento é registrado quando uma Forwarding Order (tipo de documento FWO) ou outro documento de necessidade de transporte é criado. A data e hora de criação no cabeçalho da tabela, como /SCMTMS/D_TORROT, servem como data e hora do evento. Coleta Registre a data e a hora de criação da Forwarding Order ou do documento de necessidade de transporte. Tipo de evento explicit | |||
| Transportadora atribuída | Esta atividade indica que uma transportadora específica foi selecionada e atribuída ao embarque. Isso pode ocorrer por atribuição manual, planejamento automatizado ou processo de cotação. | ||
| Por que isso importa Atribuir uma transportadora é uma etapa crítica antes da confirmação e execução do embarque. Acompanhar essa atividade ajuda a analisar o processo de seleção de transportadoras e garantir que a reserva seja feita no prazo. Onde encontrar O evento é registrado quando o campo da transportadora (parceiro com a função 'Carrier') é preenchido na Freight Order ou Freight Booking. No processo de cotação, ele ocorre quando uma solicitação de cotação de frete é adjudicada. Coleta Identifique a 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 | |||
| Declaração aduaneira enviada | Em embarques internacionais, esta atividade representa o envio às autoridades da documentação aduaneira exigida. Esse envio é necessário para obter a liberação de exportação ou importação das mercadorias. | ||
| Por que isso importa Enviar as declarações aduaneiras no prazo é essencial para evitar atrasos nas fronteiras. Acompanhar esta atividade ajuda a avaliar a eficiência do processo de despacho aduaneiro. Onde encontrar Este evento pode ser registrado como um evento de execução específico informado pelo despachante aduaneiro ou identificado por uma mudança de status em um sistema integrado de gestão aduaneira, como o SAP GTS. A Freight Order é atualizada de acordo. Coleta Registre a data e hora do evento de execução 'Customs Declaration Filed' ou da mudança de status correspondente. Tipo de evento explicit | |||
| Desembaraço aduaneiro concluído | Esta atividade indica que as autoridades aduaneiras aprovaram o embarque e que ele pode seguir viagem. É uma etapa importante da logística internacional, pois elimina um possível gargalo significativo. | ||
| Por que isso importa O desembaraço aduaneiro costuma causar atrasos importantes nas cadeias de suprimentos globais. Acompanhar a duração e a taxa de sucesso desta atividade é essencial para reduzir o tempo de transporte internacional. Onde encontrar Este evento é registrado como um evento de execução 'Customs Clearance', geralmente informado pelo despachante aduaneiro ou por um provedor externo de visibilidade e atualizado no acompanhamento da execução da Freight Order. Coleta Use a data e hora do evento de execução 'Customs Clearance' informado e associado à Freight Order. Tipo de evento explicit | |||
| Disputa de frete aberta | Este evento indica uma divergência entre a fatura da transportadora e os custos calculados no Freight Settlement Document. Isso dá início a um fluxo de trabalho para resolver a disputa. | ||
| Por que isso importa As disputas atrasam os pagamentos às transportadoras e exigem trabalho administrativo para serem resolvidas. Acompanhar esta atividade ajuda a identificar as causas raiz das imprecisões no faturamento, como tarifas incorretas ou cobranças adicionais. Onde encontrar Este evento pode ser identificado por uma mudança de status no Freight Settlement Document, quando o status 'Dispute' é definido. Também pode envolver a criação de um documento separado para registrar a disputa. Coleta Registre a data e hora em que o status de disputa é definido no Freight Settlement Document. Tipo de evento inferred | |||
| Embarque confirmado pela transportadora | Este evento representa a concordância da transportadora em realizar o transporte conforme o planejado. A confirmação costuma chegar por mensagem EDI, atualização no portal da transportadora ou registro manual, que atualiza o status da Freight Order. | ||
| Por que isso importa A confirmação da transportadora representa um compromisso com o plano de embarque e reduz as incertezas. A demora para receber essa confirmação pode colocar todo o cronograma do embarque em risco. Onde encontrar Este evento é identificado por uma mudança no campo de status de confirmação da Freight Order ou Freight Booking. Um valor de status específico, como 'Confirmed', é definido no gerenciamento de status do documento. Coleta Acompanhe as mudanças nos campos de status de confirmação do documento Freight Order. Tipo de evento inferred | |||
| Fatura verificada | Esta atividade indica que a fatura da transportadora foi conciliada com sucesso com o 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 a auditoria e a verificação dos custos de frete. Atrasos nesta etapa podem levar a pagamentos tardios às transportadoras e prejudicar o relacionamento com elas. Onde encontrar Este evento é identificado por uma mudança de status no Freight Settlement Document, como 'Ready for Accrual' ou 'Transferred for Posting', indicando que o documento foi enviado ao sistema ERP para pagamento. Coleta Acompanhe a 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 | |||
| Rota do embarque alterada | Esta atividade indica uma mudança não planejada na rota ou no cronograma do embarque após a confirmação. A mudança pode ocorrer por causa de interrupções, solicitações de clientes ou problemas logísticos. | ||
| Por que isso importa Alterações de rota costumam aumentar os custos e causar atrasos. Identificar a frequência e os motivos dessas mudanças ajuda a melhorar a precisão do planejamento e a estabilidade operacional. Onde encontrar Este evento é identificado pela detecção de mudanças significativas nas etapas, nos locais ou nas datas de uma Freight Order após o início da execução. Para isso, é possível analisar os documentos de alteração (tabelas CDHDR e CDPOS). Coleta Detecte mudanças nos principais campos de rota do documento Freight Order após o evento 'Shipment Confirmed by Carrier'. Tipo de evento inferred | |||
Guias de extração
Etapas
- Identifique e ative as APIs das visões CDS: Acesse seu sistema SAP S/4HANA. Use a transação
/IWFND/MAINT_SERVICEpara verificar se os serviços OData necessários para as principais visões CDS estão ativos. Confira especialmente os serviços relacionados a I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder e I_FreightSettlementDocument. Se algum estiver inativo, peça ao administrador do SAP para adicioná-lo e ativá-lo no sistema de backend. - Configure a conexão com a API: Peça ao administrador do SAP a URL raiz dos serviços OData. Configure um aplicativo cliente para se conectar à API, como um script Python que use a biblioteca requests, uma ferramenta comercial de ETL ou o Postman. Configure a autenticação, geralmente com 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 quais dados serão extraídos. Defina um período específico, como os últimos 6 meses. Identifique as unidades organizacionais relevantes para aplicar filtros, como o código da empresa, ou tipos de documento específicos, como o tipo de ordem de frete. Assim, os dados serão pertinentes ao processo analisado.
- Monte a consulta principal de remessas: Comece consultando a visão CDS I_TransportationOrder. Ela é o objeto central das remessas, também chamadas de ordens de frete ou reservas de frete. 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 pelos demais parâmetros do escopo. - Consulte eventos de execução e transporte: Use a visão CDS C_TranspOrdExecutionEvent para extrair eventos logísticos importantes. Filtre essa visão por valores específicos de
EventCodeque correspondam a atividades como 'Mercadoria coletada' (DEPARTURE) e 'Mercadoria entregue' (ARRIVAL_AT_DESTINATION). Relacione esses dados aos dados principais das remessas usando o UUID de TransportationOrder. - Consulte objetos de negócio relacionados: Para capturar o processo completo, consulte outras visões CDS relacionadas. Use I_ForwardingOrder para a atividade 'Solicitação de transporte recebida' e I_FreightSettlementDocument para atividades financeiras, como 'Liquidação de frete criada', 'Contestação de frete criada' e 'Fatura verificada'.
- Extraia atividades com base no status: Muitas atividades não são eventos isolados, mas mudanças de status no documento principal. Para atividades como 'Transportadora atribuída', 'Remessa confirmada pela transportadora' e 'Remessa cancelada', consulte a visão I_TransportationOrder e use o
LastChangeDateTimeassociado ao campo de status relevante como horário do evento. Isso exige mapear cuidadosamente os 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 com as colunas obrigatórias: ShipmentId, ActivityName e EventTime. Inclua em todas as linhas da remessa os atributos recomendados da consulta principal. Conceitualmente, essa etapa equivale a uma operação SQL
UNION ALL. - Trate eventos complexos e externos: Para atividades como 'Desembaraço aduaneiro concluído' ou 'Pagamento processado', os dados podem estar em campos específicos ou até em sistemas externos. A lógica de consulta fornecida usa campos padrão como aproximação. Talvez seja necessário ajustar a consulta para relacionar visões CDS específicas de alfândega ou cruzar os dados com uma extração separada do ERP para obter informações de pagamento com base no número do documento de liquidação de frete.
- Formate os dados para o ProcessMind: Salve o conjunto de dados consolidado final como arquivo CSV. Confira se os cabeçalhos das colunas correspondem aos requisitos de importação. Por exemplo, mapeie a coluna
ShipmentIdpara o campo `CaseId nas configurações da ferramenta. Verifique se os registros de data e hora usam um formato consistente, de preferência UTC (YYYY-MM-DDTHH:MM:SSZ).
Configuração
- Principais visões CDS: A extração usa principalmente I_TransportationOrder (para ordens de frete), C_TranspOrdExecutionEvent (para eventos de execução), I_ForwardingOrder (para solicitações de transporte) e I_FreightSettlementDocument (para liquidação).
- Filtro por período: É essencial aplicar um filtro de data para controlar o volume de dados. Use
CreationDateTimeem I_TransportationOrder ouActualBusinessDateTimeem C_TranspOrdExecutionEvent. Para a análise inicial, recomenda-se um período de 3 a 6 meses. - Filtro por tipo de documento: Para direcionar a análise, filtre tipos específicos de documento 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: Se aplicável, filtre por
PurchasingOrganizationou outros campos organizacionais para limitar os dados a uma unidade de negócio ou região específica. - Paginação da API: Para conjuntos de dados grandes, use os parâmetros OData
$tope$skippara recuperar os dados em páginas menores. Isso evita tempos limite da API e reduz o consumo de memória no cliente. Em geral, páginas de 1.000 a 5.000 linhas funcionam bem. - Pré-requisitos: O usuário ou a conta de serviço que fizer a extração precisa de autorização para acessar os serviços OData subjacentes (objeto de autorização S_SERVICE) e os dados de negócio nas visões CDS. Os serviços correspondentes precisam estar ativados no SAP Gateway (
/IWFND/MAINT_SERVICE).
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 o acesso direto de leitura ao esquema SAP TM HANA está disponível 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 as autorizações necessárias 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 dados de status, parceiros, datas, custos, alfândega, documentos e pagamentos podem estar em tabelas ou extensões adicionais, dependendo da versão e da implementação do SAP TM. Substitua apenas os marcadores documentados, depois de validá-los no catálogo do sistema e no modelo de dados.
- Defina o período de extração usando [Start timestamp] e [End timestamp]. Para a análise inicial, em geral, um período móvel de três a seis meses é adequado. Use um período maior somente depois de confirmar o desempenho da consulta e o tempo de 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 cada ramo de atividade e mantenha o identificador original do documento como atributo adicional de auditoria, se disponível.
- Mapeie cada atividade de negócio para uma condição explícita na fonte. O ProcessMind lê o Event Log como está, então a consulta cria uma linha para cada atividade extraída. Ela não deduz marcos com base na ordem dos documentos, em registros de data e hora ausentes ou na progressão de status.
- Valide os mapeamentos de status e de registros de data e hora com os planejadores de transporte e os responsáveis pelos processos de negócio. Em especial, confirme os valores que representam criação da solicitação, planejamento, atribuição da transportadora, confirmação da transportadora, coleta, registro na alfândega, desembaraço aduaneiro, redirecionamento, entrega, recebimento do comprovante de entrega (POD), liquidação de frete, contestação, verificação da fatura, cancelamento e pagamento.
- Execute a consulta no cliente SQL aprovado. Confira se o resultado tem uma linha por evento, um ShipmentId preenchido, um ActivityName preenchido e um EventTime válido. Verifique se há linhas duplicadas causadas por relacionamentos um para muitos e ajuste os mapeamentos de origem ou a lógica de agregação, se necessário.
- Enriqueça o resultado com os atributos recomendados quando os campos correspondentes estiverem disponíveis na fonte. A consulta inclui marcadores genéricos para campos cujos nomes não podem ser definidos com segurança sem metadados específicos do sistema. Substitua esses marcadores somente por colunas verificadas ou visões aprovadas.
- Aplique as regras finais de qualidade dos dados. Remova linhas sem identificador de caso ou registro de data e hora do evento, normalize os registros de data e hora para um único fuso horário, preserve os registros originais para auditoria e confirme que EndTime não é anterior a EventTime. Não crie eventos sintéticos para registros ausentes na fonte.
- Exporte o resultado como CSV UTF-8 ou em 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. Importe o arquivo ou conecte ao resultado da consulta aprovada no ProcessMind e, em seguida, confirme se os campos de identificador do caso da remessa e nome da atividade estão mapeados corretamente.
Configuração
- Tabelas principais de origem: Use /SCMTMS/D_TORROT para os dados principais da ordem de transporte ou ordem de frete 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 de remessa ou ordem de frete. 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 explícitas na fonte para todas as 15 atividades obrigatórias. Cada atividade precisa gerar uma linha física no Event Log. O ProcessMind não deriva atividades de outras linhas.
- Período: Comece com três a seis meses de histórico. Aplique filtros de EventTime o mais cedo possível em cada ramo da fonte. Para cargas incrementais, use um marco de controle e inclua uma pequena janela de sobreposição para capturar atualizações tardias.
- Filtros de negócio: Configure filtros de código da empresa, organização de compras, organização de vendas, tipo de documento, modalidade de transporte, transportadora, centro, local e status conforme a implementação. Use marcadores como [Company code filter] quando o campo aplicável ainda não tiver sido verificado.
- Tratamento de registros de data e hora: Converta os registros de data e hora da fonte para um único fuso horário. Se a fonte 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 registro original quando a auditabilidade for necessária.
- Atributos recomendados: Preencha CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost e IsOnTimeDelivery com campos de origem verificados ou visões de cálculo aprovadas. Deixe os valores nulos quando a fonte não tiver um valor confiável.
- Desempenho: Restrinja o período, selecione apenas as colunas necessárias, aplique filtros antes dos relacionamentos, evite varreduras irrestritas de tabelas completas e revise o plano de execução do HANA. Para conjuntos de dados grandes, use filtros compatíveis com partições, extração incremental, tabelas de preparação ou uma visão de cálculo aprovada.
- Controle de duplicatas: Relacionamentos 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 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 de ERP ou liquidação conectados, ferramentas de extração aprovadas e confirmação de que os módulos relevantes do SAP TM, as integrações e as extensões personalizadas estão ativos.
- Mapeamento específico do sistema: Os códigos de status, as funções de parceiro, os marcos alfandegários e os status de liquidação, fatura e 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.
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 entre documentos específicos do seu sistema SAP TM. Por exemplo, determine o status de execução exato que indica 'Mercadoria coletada'.
- Acesse o ambiente de desenvolvimento ABAP: Acesse a SAP GUI e abra o Editor ABAP usando o código de transação
SE38. Informe um nome para o novo programa, por exemplo,ZTM_PROCESS_EXTRACT, e clique em 'Criar'. Informe um título e defina o tipo de programa como 'Programa executável'. - Crie a tela de seleção: No programa, defina a tela de seleção que os usuários verão. Inclua parâmetros para filtrar os dados, como um período para a data de criação da ordem de frete (
SO_CREDT), e opções de seleção 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 exigido para o Event Log. Ela 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 das 15 atividades. Em geral, isso envolve consultar várias tabelas do SAP TM. Comece selecionando os documentos principais das remessas, como ordens de frete, dentro do período especificado.
- Extraia eventos de planejamento e execução: Para cada documento de remessa selecionado, como uma ordem de frete, consulte tabelas e objetos de negócio relacionados para encontrar os registros de data e hora dos diferentes eventos. Use a tabela
/SCMTMS/D_TORROTpara a criação da ordem de frete ('Remessa planejada'), a atribuição da transportadora ('Transportadora atribuída') e as mudanças de status de execução correspondentes a 'Mercadoria coletada' e 'Mercadoria entregue'. A criação da ordem de encaminhamento anterior (/SCMTMS/D_TRQROT) pode indicar a atividade 'Solicitação de transporte recebida'. - Extraia a confirmação da transportadora e o redirecionamento: Consulte tabelas de status ou documentos de alteração (CDHDR/CDPOS) associados à ordem de frete para identificar quando o status
CONFIRMATIONfoi definido, registrando assim 'Remessa confirmada pela transportadora'. Da mesma forma, procure mudanças importantes nas informações de rota para registrar 'Remessa redirecionada'. - Extraia eventos alfandegários: Se você usa o SAP Global Trade Services (GTS) ou um módulo semelhante, os eventos alfandegários ('Declaração aduaneira registrada', 'Desembaraço aduaneiro concluído') costumam ser acompanhados por meio de documentos vinculados. A lógica precisa ler o fluxo de documentos (
/SCMTMS/D_TORDOC) da ordem de frete para encontrar esses documentos relacionados e os horários de criação ou mudança de status. - Extraia eventos de liquidação e contestação: Consulte a tabela de cabeçalho do documento de liquidação de frete (
/SCMTMS/D_SFIRHD) e os itens e status relacionados para registrar os eventos 'Liquidação de frete criada', 'Contestação de frete criada' e 'Fatura verificada'. Vincule esses eventos aoShipmentIdoriginal. - Consolide os dados: Para cada evento encontrado, crie um novo registro na tabela interna final. Preencha
ActivityNamecom a atividade correspondente,EventTimecom o registro de data e hora do evento eShipmentIdcom o ID da ordem de frete ou da reserva de frete. Preencha os demais atributos com dados dos documentos de origem. - Formate e exporte o arquivo: Depois de preencher 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 a execução e recupere o arquivo: Você pode agendar o programa ABAP como um job em segundo plano (transação SM36) para extrair os dados automaticamente. Depois, baixe o arquivo gerado do servidor de aplicação para uma máquina local usando a transação
CG3Ye importe-o no ProcessMind.
Configuração
- Período: A tela de seleção deve incluir um período obrigatório para a data de criação do documento principal de transporte, como uma ordem de frete. Para a análise inicial, recomenda-se um período de 3 a 6 meses, suficiente para obter um conjunto de dados representativo sem aumentar demais o tempo de execução.
- Filtro por tipo de documento: Inclua um filtro para o tipo de documento de transporte, como ordem de frete ou reserva de frete. Isso é essencial para direcionar a análise a 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 organização de compras ou código da empresa, para limitar a extração a áreas de negócio específicas.
- Otimização de desempenho: Para conjuntos de dados grandes, verifique se o código ABAP usa campos indexados do banco de dados nas cláusulas
WHERE, evita loops aninhados sempre que possível e seleciona apenas os campos necessários para reduzir o consumo de memória. - Pré-requisitos: O usuário que executar o relatório precisa ter autorização para executar programas ABAP. O desenvolvedor precisa da autorização
S_DEVELOP. O programa precisa de autorizações para acessar o sistema de arquivos do servidor de aplicação (objetoS_DATASET) e as tabelas de banco de dados e os objetos BOPF relevantes do TM.
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 dar os primeiros passos rumo a processos de transporte mais eficientes e entregas mais rápidas e econômicas. Comece a descobrir insights hoje mesmo!
Elimine hoje os gargalos na gestão de transportes
Identifique ineficiências, otimize rotas e reduza o tempo de ciclo em 30%.
Não é necessário informar cartão de crédito. Configure em poucos minutos.