Seu Template de Dados de Gestão de Transportes
Seu Template de Dados de Gestão de Transportes
- Atributos recomendados para coletar
- Atividades-chave a monitorizar
- Guia de extração para o SAP Transportation Management
Atributos de Gestão de Transporte
| Nome | Descrição | ||
|---|---|---|---|
| Nome da Atividade ActivityName | O nome de um evento de negócio ou etapa do processo de transporte. | ||
| Descrição O Nome da Atividade descreve uma tarefa no ciclo da remessa, como 'Remessa Planejada' ou 'Mercadorias Entregues'. Essas atividades são os nós no mapa do processo. Analisar a sequência e frequência das atividades ajuda a identificar o fluxo padrão, desvios, gargalos e retrabalhos. É a base da descoberta de processos e conformidade na gestão de transportes. Por que é importante Define as etapas do processo, permitindo visualizar e analisar o fluxo da remessa de ponta a ponta. Onde obter Derivado de códigos de eventos ou mudanças de status no SAP TM. Pode vir de tabelas de log de status ou mensagens específicas. Exemplos Remessa PlanejadaTransportadora AtribuídaMercadoria ColetadaMercadorias entreguesComprovante de entrega recebido | |||
| Remessa ShipmentId | O identificador único para um movimento de carga, que serve como caso central da análise. | ||
| Descrição O ID da Remessa é a chave primária que agrupa todos os eventos relacionados. Ele representa o processo de transporte de ponta a ponta. No Process Mining, é essencial para criar a visão do caso, permitindo rastrear a jornada completa. Com ele, analisa-se variantes, tempos de ciclo e resultados de cada remessa, oferecendo uma visão integral do desempenho logístico. Por que é importante Identificador base que vincula eventos a uma ordem de transporte, essencial para a análise de ponta a ponta. Onde obter Número da Ordem de Frete ou Reserva de Frete no SAP TM (tabelas /SCMTMS/D_TORROT e /SCMTMS/D_TRQROT). Exemplos 610000432161000056786100009876 | |||
| Tempo do Evento EventTime | O timestamp que indica quando uma atividade ou evento específico ocorreu. | ||
| Descrição O 'Tempo do Evento' fornece a data e hora exatas de cada atividade no processo de transporte. Esse dado temporal é fundamental para calcular tempos de ciclo, durações e períodos de espera entre as etapas. Na análise, este atributo é usado para sequenciar os eventos corretamente, construir um log cronológico e realizar análises de desempenho temporal. É 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 (SLAs). Por que é importante O timestamp é essencial para a ordem cronológica e para o cálculo de métricas como tempo de ciclo e pontualidade. Onde obter Extraído das tabelas de manipulador de eventos do SAP TM, como /SAPTRX/EH_EVMSG, que registram timestamps de eventos. Exemplos 2023-04-15T10:00:00Z2023-04-16T14:30:00Z2023-04-20T09:15:00Z | |||
| Custo Total do Frete TotalFreightCost | O 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 transporte ou o valor final da fatura da transportadora após a liquidação. Este atributo permite que a dimensão financeira seja integrada à análise do processo. Os analistas podem identificar as variantes de processo mais caras, calcular o custo de atrasos ou desvios de rota e comparar a relação custo-benefício de diferentes transportadoras ou modos de transporte. É fundamental para dashboards focados em gastos de transporte e análise de custo de servir. Por que é importante Adiciona uma dimensão financeira ao processo, permitindo a análise de gastos com transporte, custo por remessa e o impacto financeiro das ineficiências processuais. Onde obter Extraído do Documento de Liquidação de Frete no SAP TM após o cálculo de encargos. Localizado em tabelas como /SCMTMS/D_SFIRHD. Exemplos 250.751200.005430.50 | |||
| Data de entrega solicitada RequestedDeliveryDate | A data e hora de entrega solicitadas pelo cliente ou definidas na ordem de venda. | ||
| Descrição A Data de Entrega Solicitada é o prazo para a entrega final e o parâmetro para medir a pontualidade. Ela é vital para o KPI 'Taxa de Entrega no Prazo'. Ao comparar o timestamp real com esta data, as empresas avaliam o cumprimento de acordos de nível de serviço (SLAs). Analisar desvios ajuda a identificar causas sistêmicas, como falhas de transportadoras ou retenções alfandegárias. Por que é importante É a base para medir a performance de entrega no prazo, um KPI crítico para satisfação do cliente e excelência operacional. Onde obter Geralmente transferida da ordem de venda ou transferência de estoque do ERP. Fica nos campos de data da Unidade de Frete. Exemplos 2023-05-20T17:00:00Z2023-06-01T12:00:00Z2023-06-15T23:59:59Z | |||
| End Time EndTime | O carimbo de data/hora (timestamp) que indica quando uma atividade específica foi concluída. | ||
| Descrição Enquanto o StartTime indica o início de um evento, o EndTime marca sua conclusão. Isso é particularmente útil para atividades que possuem uma duração, como "Despacho Aduaneiro" ou "Carregamento de Mercadorias". A diferença entre o EndTime e o StartTime representa o tempo de processamento dessa atividade. Na análise de Process Mining, ter tanto o horário de início quanto o de término permite uma análise mais granular das durações das atividades, possibilitando a separação do 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 passagens de bastão entre tarefas. Por que é importante Permite o cálculo preciso dos tempos de processamento das atividades, distinguindo o tempo de trabalho ativo do tempo de espera entre eventos. Onde obter Assim como o StartTime, isso é extraído de tabelas de manipulador de eventos. Pode corresponder a um evento de 'concluído' separado para uma determinada atividade. Exemplos 2023-04-15T11:30:00Z2023-04-16T15:00:00Z2023-04-20T09:45:00Z | |||
| Entrega no prazo IsOnTimeDelivery | Um sinalizador booleano que indica se as mercadorias foram entregues na data de entrega solicitada ou antes dela. | ||
| Descrição Atributo que compara a entrega real com a data solicitada. É verdadeiro se no prazo e falso se atrasada. Simplifica a análise ao criar um resultado binário para cada remessa, sendo a base do Dashboard de Desempenho e do KPI de OTD. Permite filtrar atrasos e realizar a análise de causa raiz para entender as falhas de desempenho. Por que é importante Mede diretamente a adesão aos compromissos de entrega, simplificando o cálculo e a visualização do KPI crítico de entrega no prazo. Onde obter Atributo não armazenado no SAP TM; deve ser calculado comparando a entrega real com a data solicitada. Exemplos verdadeirofalse | |||
| Modo de Transporte ModeOfTransport | O modal de transporte usado, como rodoviário, ferroviário, aéreo ou marítimo. | ||
| Descrição Especifica o modal de transporte. Cada modal tem custos e tempos distintos: um frete aéreo internacional exige desembaraço aduaneiro, diferente de um frete rodoviário nacional. Analisar por modal permite melhorias direcionadas e é vital para identificar o uso de frete premium versus econômico, auxiliando no controle total dos gastos logísticos. Por que é importante Permite a análise de variações de custo, tempo e processo com base no modal de transporte, o que é crucial para a otimização de custos e identificação do uso de fretes especiais. Onde obter Campo chave na Ordem de Frete ou Reserva de Frete, como Modo de Transporte ou MOT. Exemplos 01 (Rodoviário)02 (Ferroviário)04 (Aéreo)05 (Marítimo) | |||
| Nome da Transportadora CarrierName | O nome da transportadora ou operador logístico atribuído à remessa. | ||
| Descrição O Nome da Transportadora identifica a empresa que move a carga. É crucial para analisar níveis de serviço, custos e confiabilidade. No Process Mining, permite comparar o desempenho entre transportadoras, criar scorecards, monitorar pontualidade e identificar quais parceiros geram mais atrasos ou disputas. Este insight é essencial para a gestão estratégica de compras e transportes. Por que é importante Permite comparar o desempenho entre diferentes transportadoras, o que é fundamental para otimizar a seleção, o custo e os níveis de serviço. Onde obter Armazenada na Ordem de Frete ou Reserva de Frete, vinculada pela função de parceiro da transportadora. Exemplos DHL ExpressFedEx FreightMaersk LineUnion Pacific Railroad | |||
| Data de Coleta Agendada ScheduledPickupDate | A data e hora planejadas para a coleta no ponto de expedição. | ||
| Descrição A Data de Coleta Agendada é o horário definido para o início do transporte, um marco da execução. Este atributo permite monitorar a pontualidade da primeira etapa da jornada. Ao comparar o agendamento com o evento real de coleta, as empresas calculam atrasos e avaliam a confiabilidade tanto do local de expedição quanto da transportadora. Por que é importante Serve como linha de base para medir a pontualidade da coleta, ajudando a identificar atrasos logo no início da jornada da remessa. Onde obter Data/hora planejada na sequência de paradas da Ordem de Frete no SAP TM. Exemplos 2023-05-18T09:00:00Z2023-05-30T14:00:00Z2023-06-12T10:30:00Z | |||
| Em Disputa IsDisputed | Um sinalizador booleano que indica se a fatura de frete da remessa resultou em uma disputa. | ||
| Descrição Flag que identifica remessas com disputa de frete. É verdadeiro se houver disputa e falso caso contrário. Simplifica o cálculo do KPI de Divergência de Faturamento e permite filtrar remessas com problemas. Analistas podem investigar transportadoras ou rotas comuns para achar a causa raiz dos erros. Por que é importante Simplifica a identificação de liquidações de frete problemáticas, permitindo calcular a taxa de disputa e analisar a causa raiz de erros de faturamento rapidamente. Onde obter Atributo não armazenado no SAP TM; deve ser calculado via caso de disputa vinculado ao Documento de Liquidação de Frete. Exemplos verdadeirofalse | |||
| Motivo da Disputa DisputeReason | O motivo fornecido 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 captura o motivo dessa discrepância, como "Tarifa Incorreta", "Fatura Duplicada" ou "Taxa Adicional não Aprovada". Analisar os motivos das disputas é fundamental para o dashboard de Taxa de Erros e Disputas de Faturas de Frete. Isso ajuda a identificar as causas raiz das imprecisões de faturamento, sejam elas decorrentes de problemas em dados mestres, erros da transportadora ou falhas operacionais. Esse insight permite que a organização tome medidas direcionadas para reduzir as disputas, o que por sua vez acelera o ciclo de pagamento e reduz a carga administrativa. Por que é importante Identifica a causa raiz de erros no faturamento de frete, permitindo ações para reduzir disputas de faturas e melhorar a liquidação. Onde obter Informação capturada no caso de disputa do Documento de Liquidação de Frete. 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 na remessa. | ||
| Descrição O Motivo do Atraso explica desvios no cronograma, como 'Mau Tempo' ou 'Retenção Aduaneira'. É fundamental para a análise de causa raiz, permitindo entender por que as remessas atrasam. Ao categorizar esses motivos, as empresas podem focar nos problemas mais impactantes, como melhorar a comunicação com transportadoras ou otimizar rotas para evitar tráfego intenso. Por que é importante Explica o 'porquê' dos atrasos nas remessas, permitindo uma análise poderosa de causa raiz para reduzir exceções e melhorar a pontualidade. Onde obter Pode ser capturado como código e motivo de evento no SAP TM quando um atraso de chegada ou partida é relatado. Exemplos WEATHER_DELAYCUSTOMS_INSPECTIONCONGESTIONAMENTO_NO_PORTOFALHA_MECÂNICA | |||
| Nome do Utilizador UserName | O ID ou nome do usuário que executou a atividade. | ||
| Descrição Identifica o colaborador que executou atividades manuais como 'Remessa Planejada', vinculando etapas a pessoas ou equipes. Analisar por usuário ajuda a entender a carga de trabalho, identificar necessidades de treinamento e reconhecer destaques. É vital para conformidade e auditoria, revelando quem fez o quê e as variações na execução de tarefas. Por que é importante Atribui etapas manuais a usuários específicos, permitindo analisar a carga de trabalho, o desempenho individual e oportunidades de treinamento. Onde obter Geralmente encontrado no log de alterações ou nas tabelas de cabeçalho de documentos de transporte, como nos campos 'Criado por' ou 'Alterado por' (ex: ERNAM, AENAM). Exemplos CB998030SMITHJPLANNER_EU | |||
| País de Destino DestinationCountry | O país onde a remessa está sendo entregue. | ||
| Descrição Identifica o país de destino final da remessa. Analisar por destino revela desafios logísticos regionais, como locais propensos a atrasos ou com custos de 'last-mile' elevados. É valioso para otimizar a rede, definir prazos realistas e gerir a conformidade comercial internacional. Por que é importante Permite analisar o desempenho do processo por destino, destacando problemas em regiões de entrega específicas, autoridades alfandegárias ou transportadoras de last-mile. Onde obter Dados de endereço do local de destino da última parada na Ordem de Frete. Exemplos FRCAGBJP | |||
| País de Origem OriginCountry | O país de onde a remessa se origina. | ||
| Descrição Identifica o país de origem da jornada. Analisar por país de origem destaca diferenças de desempenho, custo e complexidade regionais, como locais com desembaraço lento ou custos altos. Essa segmentação é essencial para gerir cadeias de suprimentos globais. Por que é importante Permite a análise geográfica do desempenho das remessas, ajudando a identificar gargalos regionais, fatores de custo ou variações de processo. Onde obter Dados de endereço do local de origem da primeira parada na Ordem de Frete. Exemplos DEEUACNMX | |||
| Sistema de Origem SourceSystem | O sistema de origem dos dados do evento. | ||
| Descrição Identifica se o dado veio do SAP TM, ERP ou portal externo, ajudando a entender as integrações. Em cenários complexos, isso é vital para validar dados e resolver problemas de integração, diferenciando eventos internos de informações enviadas por parceiros logísticos. Por que é importante Identifica a origem dos dados, o que é fundamental para a governança de dados, resolução de problemas e compreensão da orquestração de processos em múltiplos sistemas. Onde obter Geralmente no log do sistema ou derivada do usuário/interface que criou o registro. Exemplos SAP_TM_P01SAP_ERP_E01CARRIER_PORTAL_XYZ | |||
| Status da Remessa ShipmentStatus | O status geral da remessa no momento da extração dos dados. | ||
| Descrição O Status da Remessa fornece um panorama de onde a remessa está em seu ciclo de vida, como 'Em Planejamento', 'Em Execução', 'Entregue' ou 'Cancelada'. Representa o último estado conhecido do caso. Este atributo é útil para filtrar e analisar remessas pelo resultado. Por exemplo, pode-se focar apenas em remessas concluídas para medir o tempo de ciclo ou analisar cancelamentos para entender suas causas raiz. Ele oferece um contexto essencial para interpretar o fluxo do processo. Por que é importante Fornece um resultado de alto nível para cada remessa, permitindo filtrar e analisar se ela foi concluída, cancelada ou se ainda está em trânsito. Onde obter Campo de status geral no cabeçalho da Ordem de Frete ou Reserva de Frete no SAP TM. Exemplos Em PlanejamentoPronto para TransporteEm ExecuçãoExecutadoCancelado | |||
| Tempo de Ciclo da Remessa ShipmentCycleTime | A duração total da remessa, da solicitação ao comprovante de entrega. | ||
| Descrição Métrica de tempo de ciclo de ponta a ponta, calculada entre a solicitação e o recebimento do POD. É um KPI primordial para medir a eficiência logística. Oferece uma visão de desempenho que, analisada por transportadora ou rota, revela tendências e gargalos principais. Essencial para o dashboard de Tempo de Ciclo de Remessa. Por que é importante Mede a duração total de ponta a ponta do processo de transporte, fornecendo um indicador fundamental da velocidade e eficiência geral. Onde obter Métrica calculada subtraindo o início do primeiro evento pelo fim do último em cada caso. Exemplos 5 dias e 4 horas12 dias e 8 horas22 horas e 30 minutos | |||
| Última Atualização de Dados LastDataUpdate | O timestamp da extração ou atualização mais recente do conjunto de dados. | ||
| Descrição Indica a atualidade dos dados, refletindo quando foram extraídos do SAP TM para a ferramenta. É um metadado crítico para entender se a análise mostra dados em tempo real ou um panorama anterior, permitindo tomar decisões baseadas em informações recentes. Por que é importante Fornece um contexto crucial sobre a atualidade dos dados, garantindo que os usuários saibam quão recente é a análise. Onde obter Normalmente gerado pela ferramenta de ETL ou pipeline durante a ingestão dos dados. Exemplos 2023-10-27T08:00:00Z2023-10-26T08:00:00Z | |||
Atividades de Gestão de Transporte
| Atividade | Descrição | ||
|---|---|---|---|
| Comprovante de entrega recebido | Esta atividade ocorre quando o POD assinado é recebido e registrado, confirmando o aceite da carga pelo destinatário. | ||
| Por que é importante O recebimento do POD é fundamental para faturar o cliente e liquidar os fretes com a transportadora. Atrasos nesta etapa impactam diretamente o ciclo financeiro. Onde obter Inferido pela mudança de status para 'Recebido' no campo de POD da Ordem de Frete. Captura Captura o registro de data e hora quando o status do Comprovante de Entrega na Ordem de Frete é atualizado para 'Recebido'. Tipo de evento inferred | |||
| Liquidação de Frete Criada | Esta atividade marca a criação do Documento de Liquidação de Frete (FSD), que calcula os custos devidos à transportadora. É o documento base para provisões e verificação de faturas. | ||
| Por que é importante Inicia a liquidação financeira. Analisar o tempo da entrega até a liquidação ajuda a achar gargalos no financeiro. Onde obter Evento capturado na criação do Documento de Liquidação de Frete. Timestamp disponível na tabela /SCMTMS/D_SFIRHD. Captura Use a data e a hora de criação do Documento de Liquidação de Frete (FSD). Tipo de evento explicit | |||
| Mercadoria Coletada | Esta atividade marca o início do transporte físico. É registrada quando a transportadora informa que a carga foi carregada e partiu do remetente. | ||
| Por que é importante Marco de execução que inicia a fase em trânsito. Vital para monitorar a pontualidade e visibilidade real da carga. Onde obter Registrado no SAP Event Management como 'Partida' ou 'Fim do Carregamento', atualizando o status da Ordem de Frete. Captura Use o timestamp do evento de execução 'Partida' relatado para o local de origem da Ordem de Frete. Tipo de evento explicit | |||
| Mercadorias entregues | Esta atividade representa a chegada ao destino e o fim do transporte físico, registrada quando a transportadora informa o descarregamento no cliente. | ||
| Por que é importante Marco principal para medir a pontualidade e satisfação do cliente. Dispara o faturamento e a liquidação. Onde obter Registrado como 'Chegada ao Destino' no SAP TM, atualizando a Ordem de Frete com dados da transportadora. Captura Use o timestamp do evento de execução 'Chegada ao Destino' relatado para a parada final da Ordem de Frete. Tipo de evento explicit | |||
| Pagamento Processado | Confirma o pagamento à transportadora. Ocorre no ERP após o recebimento da fatura verificada do SAP TM. | ||
| Por que é importante Isso marca o fim real do ciclo de vida de transporte de ponta a ponta. É essencial para medir a duração total do processo e os KPIs de pagamento pontual. Onde obter Fica no ERP (ex: S/4HANA Finance). Vinculada ao FSD pelo número da fatura. Dados extraídos das tabelas BKPF e BSEG. Captura Obtenha a data de compensação do pagamento no ERP, vinculando-a à remessa pela referência da fatura. Tipo de evento explicit | |||
| Remessa Cancelada | Esta atividade representa o cancelamento de uma remessa planejada, servindo como ponto final para processos que não foram executados. | ||
| Por que é importante O rastreamento de cancelamentos ajuda a identificar os motivos de falhas no processo, como mudanças na demanda do cliente ou erros de planejamento. Altas taxas de cancelamento podem indicar problemas subjacentes na gestão de pedidos ou no planejamento. Onde obter Inferido quando o status da FWO ou Ordem de Frete muda para 'Cancelado'. Captura Captura o registro de data e hora quando o status do ciclo de vida do documento é definido como 'Cancelado'. Tipo de evento inferred | |||
| Remessa Planejada | Significa que as necessidades foram consolidadas em um plano. Ocorre quando uma Ordem de Frete ou Reserva de Frete é criada com a rota e recursos. | ||
| Por que é importante Concluir este marco é essencial para iniciar a execução logística. O tempo de ciclo entre a solicitação e esta atividade é um KPI fundamental para medir a eficiência do planejamento. Onde obter Corresponde à criação da Ordem de Frete ou Reserva de Frete, ou mudança para status 'Planejado'. Dados na tabela /SCMTMS/D_TORROT. Captura Use o timestamp de criação do documento de Ordem de Frete ou Reserva de Frete. Tipo de evento explicit | |||
| Solicitação de Transporte Recebida | Esta atividade inicia o processo, representando a criação da necessidade de transporte. No SAP TM, isso ocorre via FWO ou OTR. | ||
| Por que é importante Evento inicial do processo. Analisar o tempo até o fim do planejamento é vital para medir a eficiência operacional. Onde obter Registrado na criação de uma FWO. O timestamp na tabela /SCMTMS/D_TORROT define o horário do evento. Captura Captura a data e hora de criação da Ordem de Redespacho ou do documento de Necessidade de Transporte. Tipo de evento explicit | |||
| Transportadora Atribuída | Esta atividade indica que uma transportadora foi selecionada e atribuída à remessa, seja via atribuição manual, planejamento automático ou licitação (tendering). | ||
| Por que é importante A atribuição de uma transportadora é uma etapa crítica antes que a remessa possa ser confirmada e executada. O rastreio dessa fase ajuda a analisar os processos de seleção e garante reservas tempestivas. Onde obter Capturado ao preencher o campo 'Transportadora' na Ordem de Frete. Em licitações, ocorre na adjudicação da cotação. Captura Identifique o timestamp de quando a função do parceiro transportador é preenchida ou confirmada pela primeira vez na Ordem de Frete. Tipo de evento inferred | |||
| Declaração Alfandegária Registrada | Para remessas internacionais, esta atividade representa o envio da documentação alfandegária obrigatória às autoridades. É um pré-requisito para obter a liberação de exportação ou importação. | ||
| Por que é importante O envio pontual das declarações aduaneiras é crucial para evitar atrasos nas fronteiras. Esta atividade ajuda a monitorar a eficiência do processo de despacho aduaneiro. Onde obter Capturado como evento de execução via despachante ou mudança de status no SAP GTS, atualizando a Ordem de Frete. Captura Captura o registro de data e hora do evento de execução 'Declaração Alfandegária Registrada' ou mudança de status correspondente. Tipo de evento explicit | |||
| Desembaraço Concluído | Esta atividade indica que a remessa foi aprovada pela alfândega. É um marco da logística internacional, pois remove um dos principais gargalos potenciais. | ||
| Por que é importante O desembaraço aduaneiro é frequentemente uma fonte de grandes atrasos em cadeias globais. Rastrear a duração e a taxa de sucesso desta atividade é fundamental para melhorar os tempos de trânsito internacional. Onde obter Capturado como 'Desembaraço Aduaneiro', via despachante ou parceiro de visibilidade, atualizando a Ordem de Frete. Captura Use o timestamp do evento de execução 'Despacho Aduaneiro' relatado associado à Ordem de Frete. Tipo de evento explicit | |||
| Disputa de Frete Criada | Indica divergência entre a fatura e os custos no FSD, acionando o workflow de resolução de disputas. | ||
| Por que é importante Disputas atrasam o pagamento das transportadoras e exigem esforço administrativo. Rastrear essa atividade ajuda a identificar causas raiz de faturamentos incorretos, como tarifas erradas ou taxas acessórias. Onde obter Pode ser inferido pela mudança de status para 'Disputa' no Documento de Liquidação de Frete ou criação de um caso de disputa. Captura Captura o registro de data e hora quando o status de disputa é definido no Documento de Liquidação de Frete. Tipo de evento inferred | |||
| Fatura Verificada | Indica que a fatura da transportadora foi conferida com o FSD e aprovada para pagamento. É a etapa final antes do pagamento no ERP. | ||
| Por que é importante Esta atividade conclui a auditoria e verificação dos custos de frete. Atrasos aqui geram pagamentos tardios, o que pode prejudicar a relação com transportadoras. Onde obter Inferido por status como 'Pronto para Apropriação', indicando envio ao ERP para pagamento. Captura Rastreie o timestamp de quando o status do ciclo de vida do FSD muda para indicar que ele está pronto para pagamento ou que foi lançado. Tipo de evento inferred | |||
| Remessa Confirmada pela Transportadora | Representa o aceite da transportadora via EDI, portal ou manual, atualizando o status da Ordem de Frete. | ||
| Por que é importante A confirmação da transportadora garante o compromisso com o plano de remessa, reduzindo incertezas. Atrasos nesse retorno podem colocar todo o cronograma em risco. Onde obter Inferido pela mudança no status de confirmação para 'Confirmado' na gestão do documento. Captura Acompanhe as alterações nos campos de status de confirmação dentro do documento de Ordem de Frete. Tipo de evento inferred | |||
| Remessa Redirecionada | Esta atividade indica uma mudança imprevista na rota ou cronograma após a confirmação, por interrupções, pedidos de clientes ou problemas logísticos. | ||
| Por que é importante Redirecionamentos causam custos e atrasos. Identificar sua frequência e motivos ajuda a melhorar a precisão do planejamento e a estabilidade operacional. Onde obter Inferido por mudanças em etapas ou locais na Ordem de Frete após o início. Tabelas CDHDR e CDPOS podem ser usadas. Captura Detecta alterações em campos-chave de roteamento no documento da Ordem de Frete após o evento 'Confirmação da Transportadora'. Tipo de evento inferred | |||
Guias de Extração
Etapas
- Identifique e Ative as APIs de CDS Views: Acesse seu sistema SAP S/4HANA. Use a transação
/IWFND/MAINT_SERVICEpara verificar se os serviços OData necessários para as views CDS principais estão ativos. Verifique serviços relacionados a I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder e I_FreightSettlementDocument. Se não estiverem ativos, peça ao administrador SAP para adicioná-los e ativá-los. - Estabeleça a Conectividade da API: Obtenha a URL raiz dos serviços OData com seu administrador SAP. Configure um aplicativo cliente (como um script Python usando a biblioteca requests, uma ferramenta de ETL ou Postman) para conectar à API. Configure a autenticação, geralmente via Basic Authentication ou OAuth 2.0.
- Defina o Escopo da Extração: Determine a abrangência dos dados. Defina um intervalo de datas (ex: últimos 6 meses). Identifique as unidades organizacionais para filtrar, como Empresa, ou tipos de documentos específicos, como Tipo de Ordem de Frete, para garantir que os dados sejam relevantes para o processo analisado.
- Construa a Consulta de Remessa Base: Comece consultando a view CDS I_TransportationOrder. Esta view é o objeto central para remessas (Ordens ou Reservas de Frete). Use o parâmetro OData
$selectpara escolher as colunas necessárias, como CarrierName, ModeOfTransport e RequestedDeliveryDate. Aplique um$filterpara limitar os dados por data e outros parâmetros. - Consulte Eventos de Execução e Transporte: Use a view CDS C_TranspOrdExecutionEvent para extrair eventos logísticos-chave. Filtre por valores de
EventCodeque correspondam a atividades como 'Goods Picked Up' (DEPARTURE) e 'Goods Delivered' (ARRIVAL_AT_DESTINATION). Una esses dados aos seus dados de remessa base usando o UUID da TransportationOrder. - Consulte Objetos de Negócio Relacionados: Para capturar o processo completo, consulte outras views CDS. Use 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 são mudanças de status no documento principal. Para 'Carrier Assigned', 'Shipment Confirmed By Carrier' e 'Shipment Cancelled', consulte a view I_TransportationOrder e use o
LastChangeDateTimeassociado ao campo de status relevante como o tempo do evento. Isso exige um mapeamento cuidadoso dos códigos de status. - Una e Transforme os Dados: Consolide os dados extraídos de todas as fontes em uma única estrutura de log de eventos. Para cada atividade, crie uma linha com as colunas: ShipmentId, ActivityName e EventTime. Garanta que todos os atributos recomendados da consulta base estejam presentes em cada linha daquela remessa. Esta etapa equivale a uma operação SQL
UNION ALL. - Trate Eventos Externos e Complexos: Para atividades como 'Customs Cleared' ou 'Payment Processed', os dados podem estar em campos específicos ou sistemas externos. A lógica sugerida usa campos padrão como proxy. Você pode precisar ajustar a consulta para unir views CDS específicas de alfândega ou correlacionar com uma extração de ERP para dados de pagamento.
- Formate para o ProcessMind: Salve o conjunto de dados final consolidado como um arquivo CSV. Verifique se os cabeçalhos das colunas atendem aos requisitos de upload (ex: mapeando
ShipmentIdpara o campoCaseIdnas configurações da ferramenta). Garanta que os timestamps estejam em formato consistente, preferencialmente UTC (YYYY-MM-DDTHH:MM:SSZ).
Configuração
- Views CDS Principais: A extração depende principalmente das views 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).
- Filtragem por Intervalo de Datas: É fundamental aplicar um filtro de data para gerenciar o volume de dados. Use o
CreationDateTimena I_TransportationOrder ou oActualBusinessDateTimena C_TranspOrdExecutionEvent. Recomendamos um intervalo de 3 a 6 meses para uma análise inicial. - Filtragem por Tipo de Documento: Para focar a análise, filtre tipos de documentos específicos usando o campo
TransportationOrderType. Isso ajuda a separar diferentes cenários logísticos, como remessas de saída padrão versus transferências de estoque. - Filtros Organizacionais: Se aplicável, filtre por
PurchasingOrganizationou outros campos de nível organizacional para limitar os dados a uma unidade de negócio ou região específica. - Paginação de API: Para grandes conjuntos de dados, use os parâmetros OData
$tope$skippara recuperar os dados em páginas menores. Isso evita timeouts de API e reduz o consumo de memória no lado do cliente. Um tamanho de página de 1000 a 5000 linhas costuma ser eficaz. - Pré-requisitos: O usuário ou conta de serviço que realiza 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 views CDS. Os serviços correspondentes devem estar ativos 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
- Identifique e Ative as APIs de CDS Views: Acesse seu sistema SAP S/4HANA. Use a transação
/IWFND/MAINT_SERVICEpara verificar se os serviços OData necessários para as views CDS principais estão ativos. Verifique serviços relacionados a I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder e I_FreightSettlementDocument. Se não estiverem ativos, peça ao administrador SAP para adicioná-los e ativá-los. - Estabeleça a Conectividade da API: Obtenha a URL raiz dos serviços OData com seu administrador SAP. Configure um aplicativo cliente (como um script Python usando a biblioteca requests, uma ferramenta de ETL ou Postman) para conectar à API. Configure a autenticação, geralmente via Basic Authentication ou OAuth 2.0.
- Defina o Escopo da Extração: Determine a abrangência dos dados. Defina um intervalo de datas (ex: últimos 6 meses). Identifique as unidades organizacionais para filtrar, como Empresa, ou tipos de documentos específicos, como Tipo de Ordem de Frete, para garantir que os dados sejam relevantes para o processo analisado.
- Construa a Consulta de Remessa Base: Comece consultando a view CDS I_TransportationOrder. Esta view é o objeto central para remessas (Ordens ou Reservas de Frete). Use o parâmetro OData
$selectpara escolher as colunas necessárias, como CarrierName, ModeOfTransport e RequestedDeliveryDate. Aplique um$filterpara limitar os dados por data e outros parâmetros. - Consulte Eventos de Execução e Transporte: Use a view CDS C_TranspOrdExecutionEvent para extrair eventos logísticos-chave. Filtre por valores de
EventCodeque correspondam a atividades como 'Goods Picked Up' (DEPARTURE) e 'Goods Delivered' (ARRIVAL_AT_DESTINATION). Una esses dados aos seus dados de remessa base usando o UUID da TransportationOrder. - Consulte Objetos de Negócio Relacionados: Para capturar o processo completo, consulte outras views CDS. Use 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 são mudanças de status no documento principal. Para 'Carrier Assigned', 'Shipment Confirmed By Carrier' e 'Shipment Cancelled', consulte a view I_TransportationOrder e use o
LastChangeDateTimeassociado ao campo de status relevante como o tempo do evento. Isso exige um mapeamento cuidadoso dos códigos de status. - Una e Transforme os Dados: Consolide os dados extraídos de todas as fontes em uma única estrutura de log de eventos. Para cada atividade, crie uma linha com as colunas: ShipmentId, ActivityName e EventTime. Garanta que todos os atributos recomendados da consulta base estejam presentes em cada linha daquela remessa. Esta etapa equivale a uma operação SQL
UNION ALL. - Trate Eventos Externos e Complexos: Para atividades como 'Customs Cleared' ou 'Payment Processed', os dados podem estar em campos específicos ou sistemas externos. A lógica sugerida usa campos padrão como proxy. Você pode precisar ajustar a consulta para unir views CDS específicas de alfândega ou correlacionar com uma extração de ERP para dados de pagamento.
- Formate para o ProcessMind: Salve o conjunto de dados final consolidado como um arquivo CSV. Verifique se os cabeçalhos das colunas atendem aos requisitos de upload (ex: mapeando
ShipmentIdpara o campoCaseIdnas configurações da ferramenta). Garanta que os timestamps estejam em formato consistente, preferencialmente UTC (YYYY-MM-DDTHH:MM:SSZ).
Configuração
- Views CDS Principais: A extração depende principalmente das views 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).
- Filtragem por Intervalo de Datas: É fundamental aplicar um filtro de data para gerenciar o volume de dados. Use o
CreationDateTimena I_TransportationOrder ou oActualBusinessDateTimena C_TranspOrdExecutionEvent. Recomendamos um intervalo de 3 a 6 meses para uma análise inicial. - Filtragem por Tipo de Documento: Para focar a análise, filtre tipos de documentos específicos usando o campo
TransportationOrderType. Isso ajuda a separar diferentes cenários logísticos, como remessas de saída padrão versus transferências de estoque. - Filtros Organizacionais: Se aplicável, filtre por
PurchasingOrganizationou outros campos de nível organizacional para limitar os dados a uma unidade de negócio ou região específica. - Paginação de API: Para grandes conjuntos de dados, use os parâmetros OData
$tope$skippara recuperar os dados em páginas menores. Isso evita timeouts de API e reduz o consumo de memória no lado do cliente. Um tamanho de página de 1000 a 5000 linhas costuma ser eficaz. - Pré-requisitos: O usuário ou conta de serviço que realiza 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 views CDS. Os serviços correspondentes devem estar ativos 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
- 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 específicas, eventos de criação ou vínculos de documentos no seu sistema SAP TM. Por exemplo, determine o status de execução exato que indica 'Goods Picked Up' (Coleta realizada).
- Acesse o Ambiente de Desenvolvimento ABAP: Entre no SAP GUI e vá para o Editor ABAP usando a transação
SE38. Digite um nome para o seu 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. Ela deve incluir parâmetros para filtrar os dados, como um intervalo de datas para a criação da ordem de frete (
SO_CREDT) e opções de seleção para tipos de documentos (SO_TYPE) ou transportadoras (SO_CARR). - Defina a Estrutura de Saída: Defina uma estrutura de tabela interna que corresponda ao formato de log de eventos exigido. Essa estrutura deve incluir campos como
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. Isso geralmente envolve consultar várias tabelas do SAP TM. Comece selecionando os documentos de remessa principais, como Ordens de Frete, dentro do intervalo de datas especificado.
- Extraia Eventos de Planejamento e Execução: Para cada documento selecionado, consulte tabelas relacionadas e objetos de negócio para encontrar os timestamps dos eventos. Use a tabela
/SCMTMS/D_TORROTpara a criação da Ordem de Frete ('Shipment Planned'), atribuição de transportadora ('Carrier Assigned') e mudanças de status de execução correspondentes a 'Goods Picked Up' e 'Goods Delivered'. A criação da Ordem de Redespacho/Transporte anterior (/SCMTMS/D_TRQROT) pode significar 'Transportation Request Received'. - Extraia Confirmação da Transportadora e Redirecionamento: Consulte tabelas de status ou documentos de alteração (CDHDR/CDPOS) associados à Ordem de Frete para identificar quando o status
CONFIRMATIONfoi definido, capturando o evento 'Shipment Confirmed By Carrier'. Da mesma forma, busque alterações significativas nas informações de rota para capturar 'Shipment Rerouted'. - Extraia Eventos Alfandegários: Se estiver usando o SAP Global Trade Services (GTS) ou módulo similar, os eventos de alfândega ('Customs Declaration Filed', 'Customs Cleared') costumam ser rastreados via documentos vinculados. A lógica deve ler o fluxo de documentos (
/SCMTMS/D_TORDOC) da Ordem de Frete para encontrar esses registros e seus horários de criação ou alteração. - Extraia Eventos de Liquidação e Disputa: Consulte a tabela de cabeçalho do Documento de Liquidação de Frete (
/SCMTMS/D_SFIRHD) e seus itens e status relacionados para capturar os eventos 'Freight Settlement Created', 'Freight Dispute Created' e 'Invoice Verified'. Vincule-os de volta aoShipmentIdoriginal. - Consolide os Dados: Para cada evento encontrado, crie um novo registro na sua tabela interna final. Preencha
ActivityNamecom a atividade correspondente,EventTimecom o timestamp do evento eShipmentIdcom o ID da Ordem ou Reserva de Frete. Preencha os demais atributos a partir dos documentos de origem. - Formate e Exporte o Arquivo: Com a tabela interna preenchida, formate os dados em um arquivo plano. Use os comandos
OPEN DATASET,LOOP AT... TRANSFER...eCLOSE DATASETpara gravar o conteúdo em um arquivo CSV ou TXT no servidor de aplicação SAP (acessível via transação AL11). - Agende e Recupere: O programa ABAP pode ser agendado como um job de background (transação SM36) para extrair dados automaticamente. O arquivo gerado pode ser baixado do servidor de aplicação para sua máquina local usando a transação
CG3Ypara posterior upload no ProcessMind.
Configuração
- Intervalo de Datas: A tela de seleção deve incluir um intervalo de datas obrigatório para a criação do documento de transporte principal (ex: Ordem de Frete). Para a análise inicial, recomendamos de 3 a 6 meses para garantir um conjunto de dados representativo sem comprometer o tempo de execução.
- Filtro de Tipo de Documento: Ofereça um filtro para o Tipo de Documento de Transporte (ex: Ordem de Frete, Reserva de Frete). Isso é essencial para focar a análise em processos específicos, como frete rodoviário versus marítimo.
- Filtro de Transportadora: Permita que os usuários filtrem por transportadoras específicas. Isso ajuda a analisar o desempenho de parceiros logísticos individuais.
- Filtros Organizacionais: Inclua filtros para unidades organizacionais relevantes, como Organização de Compras ou Empresa, para restringir a extração a áreas de negócio específicas.
- Otimização de Performance: Para grandes volumes de dados, garanta que o código ABAP use campos indexados nas cláusulas
WHERE, evite loops aninhados sempre que possível e selecione apenas os campos necessários do banco de dados para minimizar o consumo de memória. - Pré-requisitos: O usuário que executa o relatório precisa de autorização para rodar programas ABAP. O desenvolvedor precisa da autorização
S_DEVELOP. O programa em si exige autorizações para acesso ao sistema de arquivos no servidor de aplicação (objetoS_DATASET) e acesso às tabelas de banco de dados TM e objetos BOPF relevantes.
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.