Seu Template de Dados para Gestão de Armazém
Seu Template de Dados para Gestão de Armazém
- Atributos recomendados para análise abrangente
- Atividades principais para rastrear no seu processo
- Orientações para extração de dados do SAP EWM
Atributos de Gestão de Armazém
| Nome | Descrição | ||
|---|---|---|---|
| Ordem de Armazém WarehouseOrder | O identificador exclusivo de uma ordem de armazém, que agrupa um conjunto de tarefas de armazém a serem executadas por um recurso. | ||
| Descrição A Ordem de Armazém serve como o principal identificador de caso para rastrear o processo de ponta a ponta da movimentação de mercadorias no armazém. Ela representa um pacote de trabalho, como a separação de itens para uma remessa de saída ou a armazenagem de produtos recebidos. Cada Ordem de Armazém contém uma ou mais tarefas de armazém. No Process Mining, analisar por Ordem de Armazém permite uma visão abrangente de todo o ciclo de vida de um pacote de trabalho específico. Isso ajuda a identificar gargalos, medir tempos de ciclo totais da criação à conclusão e entender o fluxo completo de atividades associadas a uma única instrução logística. Por que é importante Este é o identificador central que conecta todas as atividades de armazém relacionadas, permitindo a análise do processo de ponta a ponta e a medição do tempo de ciclo para uma única unidade de trabalho. Onde obter Este identificador é normalmente encontrado na tabela de cabeçalho da ordem de armazém do SAP EWM, como a /SCWM/WHO. Exemplos 200000145200000146200000147 | |||
| Hora de Início EventTime | O timestamp que indica quando a atividade ou evento começou. | ||
| Descrição Este atributo registra a data e a hora exata em que ocorreu uma atividade específica de armazém. É o principal elemento temporal usado para ordenar eventos e calcular as durações entre eles. No Process Mining, o Horário de Início é essencial para construir a sequência cronológica de eventos de cada caso. Ele é usado para calcular tempos de ciclo, tempos de espera e tempos de processamento, que são críticos para análise de desempenho, identificação de gargalos e monitoramento de SLA. Por que é importante Este timestamp é fundamental para ordenar os eventos cronologicamente e calcular todas as métricas de desempenho baseadas em tempo, como tempos de ciclo e durações. Onde obter Geralmente encontrado em tabelas de eventos ou confirmação, como a /SCWM/ORDIM_C (ex: campo CONF_TIMESTAMP), ou em logs de alteração de status associados a ordens e tarefas de armazém. Exemplos 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| Nome da Atividade ActivityName | O nome da atividade ou evento específico de gestão de armazém ocorrido, como "Tarefa de Picking Criada" ou "Saída de Mercadorias Lançada". | ||
| Descrição Este atributo descreve uma única etapa ou evento dentro do processo de gestão de armazém. Essas atividades são a base do mapa do processo, representando tarefas como criação, confirmação, embalagem, carregamento e movimentos de mercadorias. Analisar a sequência e a frequência dessas atividades é fundamental para o Process Mining. Isso ajuda a visualizar o fluxo do processo, identificar caminhos comuns e raros, detectar desvios do procedimento padrão e apontar etapas específicas que estão causando atrasos ou retrabalho. Por que é importante Define as etapas do processo, formando a base do mapa de processos e permitindo a análise do fluxo, desvios e gargalos. Onde obter Derivado de alterações de status, mensagens de eventos ou logs de transações relacionados a ordens e tarefas de depósito em tabelas como /SCWM/ORDIM_C (Confirmações) ou interpretando campos de status em /SCWM/WHO e /SCWM/ORDIM_O. Exemplos Tarefa de Picking ConfirmadaTarefa de Putaway CriadaEntrada de mercadorias lançadaOrdem de Armazém Concluída | |||
| Sistema de Origem SourceSystem | Identifica o sistema de origem de onde os dados foram extraídos, por exemplo, a instância de produção do SAP EWM. | ||
| Descrição Este atributo especifica o sistema de registro de onde se originam os dados de gestão do armazém. Em um ambiente empresarial com múltiplos sistemas, é crucial rotular a origem dos dados para fins de rastreabilidade e contexto. Para a análise, isso ajuda a diferenciar processos que podem abranger vários sistemas ou permite comparar processos de diferentes instâncias, como sistemas separados para diferentes regiões. Isso garante que a linhagem dos dados seja clara e auditável. Por que é importante Fornece rastreabilidade e contexto, especialmente em ambientes com múltiplas instâncias SAP ou sistemas integrados, garantindo que a linhagem dos dados seja clara. Onde obter Este é geralmente um valor estático adicionado durante o processo de extração, transformação e carregamento (ETL), identificando a instância específica do SAP S/4HANA ou EWM. Exemplos SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| Última Atualização de Dados LastDataUpdate | O carimbo de data e hora que indica a última vez que os dados deste registro foram atualizados a partir do sistema de origem. | ||
| Descrição Este atributo registra quando os dados foram extraídos pela última vez do sistema de origem. Ele fornece um contexto crucial sobre o quão atuais são os dados analisados. Em qualquer análise ou dashboard, saber a recência dos dados é essencial para tomar decisões informadas. Este timestamp ajuda os usuários a entenderem se estão vendo informações em tempo real ou uma imagem de um momento específico, gerenciando as expectativas sobre a atualidade dos dados. Por que é importante Indica o quão recentes são os dados, o que é crítico para os usuários entenderem a atualidade da sua análise de processo. Onde obter Este é um campo de metadados normalmente gerado e adicionado durante o processo de extração de dados (ETL). Ele reflete o timestamp do carregamento dos dados. Exemplos 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| End Time EventEndTime | O timestamp que indica quando uma atividade ou evento foi concluído. | ||
| Descrição Este atributo registra a data e a hora em que uma atividade específica de armazém foi finalizada. Muitas vezes é o mesmo que o Horário de Início para eventos atômicos, mas pode ser diferente para atividades com duração mensurável, como embalagem ou carregamento. Ter um Horário de Término distinto permite o cálculo preciso do tempo de processamento para atividades individuais. Isso é crucial para dashboards de desempenho que analisam a duração de etapas específicas, como "Eficiência de Picking e Embalagem", ajudando a identificar quais tarefas consomem mais tempo. Por que é importante Permite o cálculo preciso da duração de atividades individuais, o que é fundamental para identificar etapas demoradas e tarefas que consomem muitos recursos. Onde obter Muitas vezes o mesmo que o timestamp de início para eventos discretos. Para tarefas de longa duração, pode ser um campo separado em tabelas como /SCWM/ORDIM_C ou derivado de uma alteração de status subsequente. Exemplos 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| ID do usuário User | O identificador do operador de armazém ou usuário que confirmou ou executou a atividade. | ||
| Descrição Este atributo captura o ID do usuário responsável por executar uma tarefa de armazém. Pode ser o separador que confirmou um picking, o embalador em uma estação de embalagem ou o operador de empilhadeira confirmando uma armazenagem. Estes dados são vitais para o dashboard "Utilização de Recursos e Equipamentos". Eles permitem a análise do desempenho individual ou da equipe, ajudam a identificar necessidades de treinamento e podem ser usados para equilibrar a carga de trabalho de forma mais eficaz entre os funcionários do armazém. Por que é importante Atribui o trabalho a uma pessoa específica, permitindo a análise de desempenho por usuário ou equipe e apoiando a gestão de recursos e o equilíbrio da carga de trabalho. Onde obter Geralmente encontrado nos dados de confirmação de uma tarefa de armazém, por exemplo, na tabela /SCWM/ORDIM_C, campo UNAME. Exemplos JSMITHARODRIGUEZOPERADOR_05 | |||
| Número do Material MaterialNumber | O identificador exclusivo do produto ou material manipulado na tarefa de armazém. | ||
| Descrição Este atributo especifica o material que está sendo movido, separado, embalado ou recebido. É uma dimensão crítica para segmentar e analisar o desempenho do armazém com base nas características do produto. Analisar pelo Número do Material ajuda a responder perguntas como quais produtos têm os tempos de armazenagem mais longos, quais estão envolvidos com mais frequência em erros de separação ou quais exigem inspeções de qualidade. Isso é essencial para os dashboards de "Desempenho de Recebimento e Armazenagem" e "Lead Time de Inspeção de Qualidade". Por que é importante Permite filtrar e segmentar dados do processo por produto, o que é crucial para identificar problemas específicos do produto no manuseio, armazenamento ou controle de qualidade. Onde obter Esta informação está normalmente disponível em tabelas de tarefas de armazém, como a /SCWM/ORDIM_O, vinculada aos dados mestres do material. Exemplos FIN-1001RAW-2050SFIN-300-A | |||
| Prioridade Priority | O nível de prioridade atribuído à ordem de armazém, indicando sua urgência (ex: Alta, Média, Baixa). | ||
| Descrição Este atributo classifica as ordens de armazém com base na sua importância de negócio ou urgência. Pedidos de alta prioridade, por exemplo, podem ser para remessas expressas ou suprimento crítico de produção e exigem manuseio agilizado. A prioridade é uma dimensão fundamental para o dashboard e o KPI de "Adesão ao Atendimento de Pedidos Prioritários". Ela permite filtrar e segmentar o desempenho para garantir que as ordens mais críticas sejam processadas dentro dos prazos esperados, alinhando as operações do armazém com as metas de negócio. Por que é importante Permite priorizar a análise e o monitoramento para garantir que ordens de alta urgência cumpram seus níveis de serviço, impactando diretamente a satisfação do cliente. Onde obter A prioridade pode ser definida no documento de entrega subjacente e transferida para a ordem de armazém. Pode ser encontrada em tabelas como a /SCWM/WHO. Exemplos AltoMédioBaixo | |||
| Status da Ordem de Armazém WarehouseOrderStatus | O status atual ou final da ordem de armazém, como "Concluída" ou "Cancelada". | ||
| Descrição Este atributo indica o resultado final de uma ordem de armazém. Entender se uma ordem foi concluída com sucesso ou cancelada é crucial para analisar as taxas de sucesso do processo e identificar os motivos da não conclusão. Este é um filtro fundamental para muitas análises. Por exemplo, ao calcular o Tempo de Ciclo de Ponta a Ponta do Armazém, a análise é normalmente realizada apenas em pedidos concluídos. Também ajuda na identificação e investigação da frequência e das causas de cancelamento de pedidos. Por que é importante Indica o resultado de um caso, permitindo filtrar ordens concluídas versus canceladas, o que é crucial para uma análise precisa de tempo de ciclo e throughput. Onde obter O campo de status geralmente está localizado na tabela de cabeçalho da ordem de armazém, /SCWM/WHO. Exemplos ConcluídoEm ProcessamentoCancelado | |||
| Tempo de Processamento ProcessingTime | Duração do trabalho efetivo em uma atividade específica. | ||
| Descrição O tempo de processamento mede o "tempo de toque" real de uma atividade, calculado como a diferença entre os seus timestamps de início e fim. Isso é diferente do tempo de ciclo, que inclui períodos de espera entre as atividades. Essa métrica é fundamental para a análise de desempenho, especialmente para dashboards como "Eficiência de Picking e Embalagem". Ela ajuda a identificar quais tarefas específicas consomem mais tempo, permitindo que os gestores foquem os esforços de melhoria nas atividades com os tempos de processamento mais longos, aumentando assim a produtividade geral. Por que é importante Mede a duração do trabalho ativo de uma atividade, ajudando a identificar as tarefas mais demoradas e formando a base para a análise da capacidade de recursos. Onde obter Esta é uma métrica calculada, derivada da subtração do EventTime pelo EventEndTime de cada atividade. Exemplos 3009150 | |||
| Tipo de Ordem de Armazém WarehouseOrderType | Classifica a ordem de depósito pelo seu propósito, como Putaway, Picking ou Reabastecimento Interno. | ||
| Descrição O Tipo de Ordem de Armazém categoriza as ordens com base na função logística que desempenham. Essa distinção é fundamental porque diferentes tipos de ordens seguem caminhos de processo distintos e possuem expectativas de desempenho diferentes. Na análise, esse atributo é uma dimensão primária para filtragem e comparação. Por exemplo, o dashboard "Volume e Capacidade da Ordem de Armazém" utiliza isso para segmentar o desempenho entre processos de entrada (Putaway) e processos de saída (Picking), proporcionando uma visão mais significativa das operações do armazém. Por que é importante Permite a segmentação da análise com base na categoria do processo (ex: entrada vs. saída), possibilitando comparações e insights mais relevantes. Onde obter Isso é determinado pelo tipo de processo de armazém, frequentemente encontrado na tabela de cabeçalho da ordem de armazém /SCWM/WHO. Exemplos PICKPUTWREPLSTGE | |||
| Data de Conclusão Solicitada RequestedCompletionDate | A data em que se solicita a conclusão de uma ordem de armazém de alta prioridade. | ||
| Descrição Este atributo define o acordo de nível de serviço (SLA) ou a data de conclusão almejada para uma ordem de armazém. É o prazo final em relação ao qual o tempo de conclusão real é medido para determinar se o pedido foi atendido no prazo. Esta data é essencial para calcular o KPI "Taxa de Atendimento de Pedidos Prioritários". Ao comparar o timestamp de conclusão real com esta data solicitada, a análise pode quantificar a adesão aos níveis de serviço e destacar pedidos que correm o risco de atrasar ou que já estão atrasados. Por que é importante Define o SLA para uma ordem, servindo como referência para medir o desempenho de atendimento pontual, especialmente para itens de alta prioridade. Onde obter Esta data geralmente é derivada da data planejada de saída de mercadorias ou da data de entrega no pedido de entrega de saída que gerou a ordem de armazém. Consulte a documentação do SAP Extended Warehouse Management. Exemplos 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| Depósito StorageLocation | A localização específica dentro do armazém, como uma posição de armazenamento (bin), para onde as mercadorias são movidas ou de onde são retiradas. | ||
| Descrição Este atributo identifica o local físico envolvido em uma tarefa de armazém, por exemplo, a posição de origem para o picking ou a posição de destino para a armazenagem. Pode variar de uma área ampla a uma coordenada específica de prateleira. A análise por local de armazenamento pode revelar insights operacionais, como a identificação de "zonas de ouro" com altas taxas de separação ou áreas problemáticas com atrasos ou erros frequentes. Também pode ser usada na análise de "Adesão à Rota de Picking" para entender os movimentos dos separadores pelo armazém. Por que é importante Fornece contexto geográfico dentro do armazém, permitindo a análise da eficiência da movimentação, acessibilidade das posições e otimização das rotas de separação. Onde obter Geralmente encontrado em tabelas de tarefas de armazém, como a /SCWM/ORDIM_O, contendo informações de posição de origem (VLPLA) e destino (NLPLA). Exemplos 01-02-03PACK-STATION-01GI-ZONE-A | |||
| Equipamento Utilizado EquipmentUsed | O identificador do equipamento, como uma empilhadeira ou transpaleteira, utilizado para realizar a tarefa de armazém. | ||
| Descrição Este atributo especifica o equipamento de movimentação de materiais atribuído ou usado para uma tarefa de armazém. Pode ser uma empilhadeira específica, um veículo guiado automatizado (AGV) ou um tipo específico de carrinho. Estes dados são a base do dashboard "Utilização de Recursos e Equipamentos" e do KPI "Taxa de Utilização de Equipamentos". Ao rastrear qual equipamento é usado para quais tarefas e por quanto tempo, os gestores podem analisar padrões de uso, agendar manutenções e tomar decisões informadas sobre o tamanho e a composição da frota. Por que é importante Permite a análise da utilização e eficiência dos equipamentos, ajudando a otimizar a gestão da frota e identificar restrições de recursos. Onde obter Esta informação pode estar armazenada nos detalhes da tarefa ou ordem de armazém se a gestão de recursos estiver configurada no SAP EWM. Consulte a documentação do SAP Extended Warehouse Management. Exemplos FORKLIFT-07AGV-02CART-15 | |||
| Está no prazo IsOnTime | Um marcador booleano que indica se uma ordem de depósito foi concluída até a data de conclusão solicitada. | ||
| Descrição Esta flag fornece um resultado binário simples para a adesão ao SLA. Ela avalia se o evento de conclusão final de uma ordem de armazém ocorreu na data de conclusão solicitada ou antes dela. Este atributo é essencial para o dashboard "Adesão ao Atendimento de Pedidos Prioritários". Ele simplifica a criação de KPIs e visualizações, permitindo a contagem e filtragem fácil de pedidos no prazo versus pedidos atrasados. Isso ajuda a avaliar rapidamente o desempenho em relação às metas de nível de serviço sem a necessidade de cálculos de data complexos na camada de análise. Por que é importante Simplifica a análise de desempenho de SLA ao fornecer um indicador binário claro de atendimento no prazo ou com atraso para cada pedido. Onde obter Este é um atributo calculado. A lógica compara o timestamp da atividade "Ordem de Armazém Concluída" com o atributo "RequestedCompletionDate". Exemplos verdadeirofalse | |||
| Horário de Partida Planejado PlannedDepartureTime | O horário agendado em que a remessa está planejada para sair do armazém. | ||
| Descrição Este atributo representa o horário planejado para despachar uma remessa após a conclusão de todas as atividades de picking, embalagem e carregamento. Ele serve como referência para medir o desempenho de pontualidade na etapa final do processo de saída. Este timestamp é crítico para o dashboard "Desempenho de Pontualidade no Despacho de Remessas". Ao comparar o horário real de despacho com este horário planejado, a análise pode identificar atrasos no carregamento, na coordenação da transportadora ou na documentação, fornecendo insights sobre a eficiência do planejamento logístico e de transportes. Por que é importante Fornece a base para medir o desempenho de expedição no prazo, o que é fundamental para o planejamento logístico e o cumprimento dos horários das transportadoras. Onde obter Esta informação geralmente faz parte do documento de transporte ou remessa vinculado às ordens de armazém. Consulte a documentação do SAP Extended Warehouse Management. Exemplos 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| Quantidade Planejada PlannedQuantity | A quantidade esperada de um material para uma determinada tarefa de armazém. | ||
| Descrição Este atributo representa a quantidade almejada de um material que deve ser movido, separado ou recebido conforme a instrução da tarefa de armazém. É a base de comparação para a quantidade real executada. A Quantidade Planejada é essencial para o dashboard "Análise de Discrepância de Inventário" e para o KPI "Taxa de Acuracidade de Inventário". Ao compará-la com a Quantidade Real, o sistema pode identificar divergências que podem apontar para erros de separação, erros de recebimento ou problemas de entrada de dados, ajudando a melhorar a precisão do estoque. Por que é importante Serve como base para calcular a acuracidade do inventário e identificar discrepâncias, o que é fundamental para manter os níveis de estoque corretos. Onde obter Encontrado nos dados da tarefa de depósito, por exemplo, na tabela /SCWM/ORDIM_O, muitas vezes em um campo como NISTA (Quantidade Alvo). Exemplos 10050250 | |||
| Quantidade Real ActualQuantity | A quantidade real de um material confirmada pelo usuário para uma tarefa de armazém. | ||
| Descrição Este atributo é a quantidade fisicamente manuseada e confirmada pelo operador do armazém. Pode ser a quantidade retirada de uma posição, a quantidade armazenada ou a quantidade contada durante o recebimento de mercadorias. Comparar a Quantidade Real com a Quantidade Planejada é fundamental para a "Análise de Discrepância de Inventário". Uma variação entre os dois valores destaca diretamente uma exceção de processo que exige investigação. Esta é uma medida direta de acuracidade operacional e um dado essencial para os KPIs "Taxa de Acuracidade de Inventário" e "Taxa de Erro de Separação". Por que é importante Esta é a verdade absoluta sobre o que foi fisicamente manuseado. Compará-la com a quantidade planejada mede diretamente a acuracidade operacional e identifica erros. Onde obter Encontrado nos dados de confirmação da tarefa de depósito, por exemplo, na tabela /SCWM/ORDIM_C, muitas vezes em um campo como NDIFF (Quantidade de Diferença) ou derivado de quantidades confirmadas. Exemplos 10049250 | |||
| Tarefa de Armazém WarehouseTask | O identificador exclusivo de uma única tarefa de armazém, que faz parte de uma ordem de armazém. | ||
| Descrição Uma tarefa de depósito é a instrução para executar um movimento de mercadorias específico, como mover um produto de um escaninho de armazenamento para uma estação de embalagem. Uma ordem de depósito agrupa uma ou mais dessas tarefas. Analisar no nível da tarefa oferece uma visão mais granular das operações do depósito. Isso ajuda a entender o desempenho dos recursos em movimentos específicos, identificar compartimentos de armazenamento de difícil acesso ou analisar a eficiência das atividades individuais de picking ou putaway. Por que é importante Fornece um nível granular de detalhes para análise, permitindo o exame de movimentos e etapas individuais dentro de uma ordem de armazém maior. Onde obter Encontrado em tabelas de tarefas de depósito como /SCWM/ORDIM_O (Dados da Tarefa) e /SCWM/ORDIM_C (Dados de Confirmação). Exemplos 300000451300000452300000453 | |||
| Tempo de Ciclo Ponta a Ponta EndToEndCycleTime | O tempo total decorrido desde a criação da ordem de armazém até a sua conclusão final. | ||
| Descrição Este KPI mede a duração total do ciclo de vida de uma ordem de armazém. É um indicador crítico de alto nível da eficiência e velocidade geral das operações do armazém. Esta métrica é a base do dashboard "Tempo de Ciclo de Ponta a Ponta do Armazém". O acompanhamento desse KPI ao longo do tempo, e a sua segmentação por dimensões como tipo de pedido ou material, ajuda a identificar ineficiências sistêmicas e medir o impacto de iniciativas de melhoria de processos em toda a operação. Por que é importante Este é um KPI primário para medir a eficiência geral do processo de armazém, fornecendo uma visão de alto nível do desempenho operacional. Onde obter Calculado no nível do caso, subtraindo o timestamp do primeiro evento ('Ordem de Depósito Criada') do timestamp do último evento ('Ordem de Depósito Concluída'). Exemplos 8640017280043200 | |||
| Variação de Quantidade QuantityVariance | A diferença entre a quantidade planejada e a quantidade real confirmada para uma tarefa. | ||
| Descrição Esta métrica calculada quantifica a discrepância encontrada durante uma tarefa de armazém. Um valor diferente de zero indica que a realidade física não correspondeu ao registro do sistema, sinalizando um problema potencial como um erro de separação, erro de recebimento ou item danificado. Este atributo apoia diretamente o dashboard "Análise de Discrepância de Inventário", destacando a magnitude dos erros. Analisar a frequência e o tamanho dessas variações ajuda a identificar problemas sistêmicos na gestão de inventário e na execução operacional, orientando os esforços para melhorar a acuracidade. Por que é importante Quantifica diretamente as imprecisões operacionais e de estoque, facilitando a identificação e a análise da magnitude das discrepâncias. Onde obter Calculado subtraindo a PlannedQuantity da ActualQuantity para cada tarefa relevante. Exemplos 0-15 | |||
Atividades de Gestão de Armazém
| Atividade | Descrição | ||
|---|---|---|---|
| Embalagem concluída | Esta atividade indica que todos os itens de uma remessa foram embalados em uma unidade de manipulação (HU), que agora está fechada e etiquetada. As mercadorias embaladas estão prontas para a próxima fase, como staging ou carregamento. | ||
| Por que é importante Este marco encerra a fase de embalagem. É um pré-requisito para o staging e a remessa, portanto, quaisquer atrasos aqui impactam diretamente o lead time geral e o KPI de Lead Time de Embalagem e Staging. Onde obter Pode ser capturado quando o status da unidade de manuseio (HU) é definido como 'Fechado' ou quando a última tarefa de depósito relacionada à embalagem para a OD é confirmada. A tabela /SCWM/HUHDR contém informações de status da HU. Captura Identifique o timestamp quando a unidade de manuseio de remessa final associada à ordem é fechada ou concluída. Tipo de evento inferred | |||
| Ordem de Armazém Concluída | O status da Ordem de Armazém é definido como "Concluída" após a confirmação de todas as tarefas de armazém associadas. Isso encerra o pacote de trabalho sob a perspectiva da execução. | ||
| Por que é importante Este é o principal evento de término com sucesso para o processo. É essencial para calcular o Tempo de Ciclo de Ponta a Ponta do Armazém e medir a produtividade geral. Onde obter Capturado ao rastrear a alteração no campo de status (STAT) para 'Concluído' na tabela de cabeçalho da Ordem de Depósito, /SCWM/WHO. O log de alterações para esta tabela (DBTABLOG) ou um campo de timestamp dedicado pode ser usado. Captura Identifique o timestamp quando o status em /SCWM/WHO é definido como 'C' (Concluído). Tipo de evento inferred | |||
| Ordem de Armazém Criada | Esta atividade marca a criação de uma Ordem de Armazém (WO), que é um pacote de trabalho composto por várias tarefas de armazém. O sistema gera uma WO para agrupar e organizar o trabalho dos funcionários, com base em critérios como área de atividade, fila ou produto. | ||
| Por que é importante Este é o principal evento de início para o processo de execução de armazém. Analisar o tempo desde a criação até a primeira ação ajuda a identificar atrasos na atribuição de trabalho e alocação de recursos. Onde obter Este evento é capturado do timestamp de criação (campo CREATED_AT) na tabela de cabeçalho da Ordem de Armazém, /SCWM/WHO. Captura Extrai o timestamp de criação da tabela /SCWM/WHO para cada número de Ordem de Depósito (WHO). Tipo de evento explicit | |||
| Saída de mercadorias contabilizada | Esta é a etapa logística e financeira final no sistema que remove formalmente as mercadorias do inventário do armazém. Significa que a propriedade legal foi transferida e que a remessa partiu oficialmente. | ||
| Por que é importante Um ponto final crucial para o fluxo de saída, acionando o faturamento e as atualizações de estoque. É um componente chave para medir o envio pontual e o KPI de Tempo de Carregamento e Despacho de Remessa. Onde obter Inferido a partir do lançamento de um documento de Entrega de Saída associado à ordem de depósito. Verifique o fluxo de documentos ou campos de status (ex: DGI_STAT) na tabela /SCDL/DB_PROCH_O. Captura Identifique o timestamp quando o status de Saída de Mercadorias é definido como 'Concluído' para a Entrega de Saída associada. Tipo de evento explicit | |||
| Tarefa de Picking Confirmada | Um operador de depósito confirma a conclusão de uma Tarefa de Depósito de picking, indicando que as mercadorias foram fisicamente retiradas do seu local de armazenamento. Isso é feito tipicamente via coletor de RF. | ||
| Por que é importante Este é um marco crítico no atendimento de pedidos, impactando diretamente o tempo de ciclo do pedido ao envio. Analisar esta atividade ajuda a medir a produtividade dos separadores e a identificar gargalos no picking. Onde obter Capturado a partir do timestamp de confirmação (campo CONFIRMED_AT) na tabela de Tarefa de Depósito, /SCWM/WT. O status da tarefa (STAT) é atualizado para 'Confirmado'. Captura Utilize o timestamp de confirmação da tabela /SCWM/WT para tarefas de picking associadas à Ordem de Armazém. Tipo de evento explicit | |||
| Tarefa de Putaway Confirmada | Um operador de depósito confirma que a Tarefa de Depósito de putaway foi concluída, o que significa que as mercadorias foram fisicamente colocadas no compartimento de armazenamento designado. Esta confirmação atualiza o local do estoque em tempo real. | ||
| Por que é importante Esta atividade é um marco importante para o processamento de entrada, confirmando que o estoque está disponível para picking. Atrasos aqui impactam diretamente o KPI de Tempo de Ciclo do Recebimento à Armazenagem. Onde obter Capturado a partir do timestamp de confirmação (campo CONFIRMED_AT) na tabela de Tarefa de Depósito, /SCWM/WT. O status da tarefa (STAT) também muda para 'Confirmado'. Captura Utilize o timestamp de confirmação da tabela /SCWM/WT para tarefas de putaway associadas à Ordem de Armazém. Tipo de evento explicit | |||
| Carregamento Começado | Esta atividade marca o início do carregamento físico das mercadorias da área de staging para um caminhão ou unidade de transporte. Geralmente é iniciada por uma ação do usuário no sistema. | ||
| Por que é importante O início da etapa física final no armazém. Analisar a duração do carregamento ajuda a otimizar a utilização das docas e o tempo de permanência das transportadoras. Onde obter Inferido a partir da mudança de status da Unidade de Transporte (TU) associada ou Ordem de Entrega de Saída para 'Carregamento Iniciado'. A tabela /SCWM/TU_STATUS pode ser consultada. Captura Captura o timestamp quando o status da TU ou da Ordem de Entrega é atualizado para refletir o início do carregamento. Tipo de evento inferred | |||
| Carregamento Finalizado | Indica que todas as mercadorias de uma remessa foram fisicamente carregadas na unidade de transporte. Este é um pré-requisito para lançar a saída de mercadorias e despachar o veículo. | ||
| Por que é importante Um marco fundamental antes do envio final. Atrasos entre a conclusão do carregamento e a saída de mercadorias podem indicar problemas de documentação ou de sistema que retêm as transportadoras. Onde obter Inferido a partir da mudança de status da Unidade de Transporte (TU) associada ou Ordem de Entrega de Saída para 'Carregamento Concluído'. Os status nas tabelas /SCWM/TU e /SCDL/DB_PROCH_O são relevantes. Captura Captura o timestamp quando o status da TU ou da Ordem de Entrega é atualizado para refletir a conclusão do carregamento. Tipo de evento inferred | |||
| Embalagem Iniciada | Representa o início das atividades de embalagem, onde os itens separados são consolidados e colocados em recipientes de remessa ou unidades de manipulação. Geralmente é a primeira etapa em um centro de trabalho de embalagem. | ||
| Por que é importante Marca o início da fase de serviços de valor agregado. Medir a duração da embalagem ajuda a otimizar o layout do centro de trabalho, a equipe e os materiais. Onde obter Este evento pode precisar ser inferido. Ele pode ser derivado do primeiro scan de um item ou unidade de manipulação em uma estação de embalagem, geralmente capturado em logs de centro de trabalho ou de unidade de manipulação. Tabelas como /SCWM/PACKSPEC e logs de execução relacionados podem ser uma fonte. Captura Utilize o timestamp da primeira confirmação de Tarefa de Armazém relacionada à embalagem para a entrega, ou o horário de criação da HU de remessa final. Tipo de evento inferred | |||
| Entrada de mercadorias lançada | Marca a aceitação formal de mercadorias no inventário do depósito vindo de um fornecedor externo ou da produção. Este é um lançamento financeiro e de estoque chave que torna o estoque visível e disponível para processos subsequentes como o putaway. | ||
| Por que é importante Este é um marco crítico no processo de entrada. O tempo entre a chegada das mercadorias e este lançamento pode indicar acúmulos na área de recebimento, impactando a disponibilidade de estoque. Onde obter Inferido a partir do lançamento de um documento de Entrega de Entrada associado à ordem de depósito. Verifique o fluxo de documentos ou campos de status (ex: DGRSTAT) na tabela /SCDL/DB_PROCH_I. Captura Identifique o timestamp quando o status de Recebimento de Mercadorias é definido como 'Concluído' para a Entrega de Entrada associada. Tipo de evento inferred | |||
| Ordem de Armazém Cancelada | A Ordem de Armazém é cancelada antes que todas as tarefas sejam concluídas, impedindo a execução posterior. Isso pode ocorrer por falta de estoque, alterações nos pedidos dos clientes ou outras exceções. | ||
| Por que é importante Representa uma falha ou caminho de exceção. Analisar a frequência e os motivos dos cancelamentos ajuda a identificar problemas anteriores no planejamento, na acuracidade do inventário ou na gestão de pedidos. Onde obter Capturado ao rastrear a alteração no campo de status (STAT) para 'Cancelado' na tabela de cabeçalho da Ordem de Depósito, /SCWM/WHO. Captura Identifique o timestamp quando o status em /SCWM/WHO é definido como um valor de status de cancelamento. Tipo de evento inferred | |||
| Tarefa de picking criada | O sistema gera uma Tarefa de Armazém (TA) para separar mercadorias de uma posição de armazenamento a fim de atender a um pedido de entrega de saída. Isso representa a instrução do sistema para que um operador retire um produto. | ||
| Por que é importante O início do processo físico de saída. O intervalo de tempo entre a criação e a confirmação das tarefas de picking é crucial para analisar a eficiência da separação e a disponibilidade de recursos. Onde obter Capturado a partir do timestamp de criação (campo CREATED_AT) da Tarefa de Depósito relevante na tabela /SCWM/WT, onde o tipo de processo indica picking. Captura Filtra por Tarefas de Depósito com um tipo de processo de picking vinculado à Ordem de Depósito e usa seu timestamp de criação. Tipo de evento explicit | |||
| Tarefa de Putaway Criada | O sistema gera uma instrução específica, uma Tarefa de Armazém (TA), para mover mercadorias recebidas de uma área de recebimento para uma posição de armazenamento final. Esta atividade representa a prontidão do sistema para executar o movimento de armazenagem (putaway). | ||
| Por que é importante Rastrear o tempo entre a criação e a confirmação da tarefa revela quanto tempo leva para que as instruções de armazenagem (putaway) sejam atendidas e executadas pelos operadores, destacando possíveis faltas de mão de obra ou equipamentos. Onde obter Capturado a partir do timestamp de criação (campo CREATED_AT) da Tarefa de Depósito relevante na tabela /SCWM/WT, onde o tipo de processo indica putaway. Captura Filtra por Tarefas de Depósito com um tipo de processo de putaway vinculado à Ordem de Depósito e usa seu timestamp de criação. Tipo de evento explicit | |||
| Tarefa de Staging Confirmada | Um operador de depósito confirma a movimentação de uma unidade de manuseio embalada de uma estação de embalagem ou área de consolidação para uma área de staging de remessa designada. As mercadorias agora estão posicionadas para o carregamento. | ||
| Por que é importante Isso marca a transição do processamento interno para a logística de saída. Atrasos no staging podem levar a docas de carregamento desorganizadas e à perda dos horários de coleta das transportadoras. Onde obter Capturado a partir do timestamp de confirmação (campo CONFIRMED_AT) de uma Tarefa de Depósito (/SCWM/WT) com um tipo de processo para movimentos de staging. Captura Identifique o timestamp de confirmação para a tarefa de depósito de staging associada à unidade de manuseio ou entrega. Tipo de evento explicit | |||
Guias de Extração
Etapas
- Pré-requisito: Identificar ou criar CDS Views: As principais fontes de dados são as CDS Views padrão do SAP S/4HANA para Gestão de Depósito. As visões chave são
I_WarehouseOrderpara eventos no nível da ordem eI_WarehouseTaskpara eventos no nível da tarefa. Outras visões comoI_OutboundDeliveryItem,I_InboundDeliveryItemeI_EWMTransportationUnitsão necessárias para eventos logísticos relacionados. Certifique-se de que essas visões estejam ativas em seu sistema. - Criar uma Custom CDS View: Para combinar dados de múltiplas fontes em um único formato de log de eventos, você deve criar uma CDS view customizada. Use as ABAP Development Tools (ADT) no Eclipse para criar uma nova Data Definition. Esta visão customizada usará
UNION ALLpara mesclar registros de diferentes fontes, cada um representando uma atividade de negócio distinta. - Definir a Estrutura do Log de Eventos: Em sua CDS view customizada, defina os campos que formarão as colunas do seu log de eventos. Isso deve incluir
WarehouseOrder,ActivityName,EventTimee outros atributos obrigatórios e recomendados. Mapeie esses campos a partir das CDS views padrão subjacentes. - Modelar Eventos de Ordem de Depósito: Adicione as primeiras instruções
SELECTà sua união. Selecione a partir deI_WarehouseOrderpara gerar o evento 'Ordem de Depósito Criada' usando o timestamp de criação. Adicione instruçõesSELECTsubsequentes para os eventos 'Ordem de Depósito Concluída' e 'Ordem de Depósito Cancelada', filtrando pelo status da ordem e usando os timestamps apropriados de confirmação ou alteração. - Modelar Eventos de Tarefa de Depósito: Adicione instruções
SELECTa partir deI_WarehouseTask. Gere os eventos 'Tarefa de Putaway Criada' e 'Tarefa de Putaway Confirmada' filtrando pelas categorias de processo de depósito relacionadas ao putaway. Da mesma forma, crie os eventos 'Tarefa de Picking Criada', 'Tarefa de Picking Confirmada' e 'Tarefa de Staging Confirmada' com base em suas respectivas categorias de processo e use os timestamps de criação e confirmação. - Modelar Eventos de Movimentação de Mercadorias: Junte as visões relacionadas à entrega com as tarefas de depósito para capturar as movimentações. Para 'Recebimento de Mercadorias Lançado', selecione de
I_InboundDeliveryItemusando oActualGoodsMovementDateTime. Para 'Saída de Mercadorias Lançada', use o mesmo campo deI_OutboundDeliveryItem, vinculando de volta à ordem ou tarefa de depósito relevante. - Modelar Eventos de Carregamento e Embalagem: Selecione de
I_EWMTransportationUnitpara capturar os eventos 'Carregamento Iniciado' e 'Carregamento Concluído' usando seus timestamps dedicados. Para a embalagem (packing), que pode ser complexa, use um proxy selecionando de uma visão de Unidade de Manuseio (Handling Unit), onde o tempo de criação pode representar 'Embalagem Iniciada' e o tempo de alteração de status pode representar 'Embalagem Concluída'. Esta etapa pode exigir ajustes com base no seu processo de embalagem específico. - Adicionar Anotações para Expor a CDS View: Adicione a anotação
@OData.publish: trueà definição da sua CDS view customizada. Isso instrui o SAP a gerar automaticamente um serviço OData baseado na estrutura da visão. - Ativar a CDS View e o Serviço OData: Ative a nova Data Definition no ADT. Em seguida, acesse o sistema SAP Gateway hub e use a transação
/IWFND/MAINT_SERVICEpara localizar e ativar o serviço OData recém-gerado. Isso torna os dados acessíveis via endpoint de API REST. - Extrair os Dados: Use sua plataforma de dados ou ferramenta de ETL para se conectar ao endpoint do serviço OData ativado. Aplique filtros diretamente na URI do OData, como filtrar por
EventTimepara limitar o escopo dos dados (ex:?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Formatar para Process Mining: Certifique-se de que os dados extraídos sejam salvos em um formato de arquivo plano, como CSV, com os cabeçalhos das colunas correspondendo aos atributos exigidos pelo ProcessMind (
WarehouseOrder,ActivityName,EventTime, etc.). Faça o upload do arquivo final para a ferramenta de process mining.
Configuração
- Custom CDS View: Uma visão CDS dedicada, por exemplo
Z_C_EWM_EVENTLOG_CDS, deve ser criada para unificar os dados de eventos. Este é o objeto central para a extração. - Serviço OData: O serviço OData gerado a partir da CDS view customizada deve ser ativado. O nome do serviço é tipicamente o nome da CDS view com o sufixo
_CDS. - Filtro por Período: É fundamental aplicar um filtro de data no campo
EventTimeao chamar a API OData. Um intervalo típico para uma análise inicial é de 3 a 6 meses de dados. Sem um filtro, a consulta pode expirar ou causar problemas de desempenho. - Filtro por Entidade: Para limitar ainda mais o escopo dos dados, considere aplicar filtros em atributos como Número do Depósito (
Warehouse), Tipo de Ordem de Depósito (WarehouseOrderType) ou materiais específicos (MaterialNumber). - Autorizações de Sistema: O usuário que cria a CDS view precisa de acesso de desenvolvedor SAP no ADT. O usuário ou conta de serviço que chama a API OData requer autorizações para acessar os dados subjacentes de gestão de depósito.
a Consulta de Exemplo sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate Etapas
- Pré-requisito: Identificar ou criar CDS Views: As principais fontes de dados são as CDS Views padrão do SAP S/4HANA para Gestão de Depósito. As visões chave são
I_WarehouseOrderpara eventos no nível da ordem eI_WarehouseTaskpara eventos no nível da tarefa. Outras visões comoI_OutboundDeliveryItem,I_InboundDeliveryItemeI_EWMTransportationUnitsão necessárias para eventos logísticos relacionados. Certifique-se de que essas visões estejam ativas em seu sistema. - Criar uma Custom CDS View: Para combinar dados de múltiplas fontes em um único formato de log de eventos, você deve criar uma CDS view customizada. Use as ABAP Development Tools (ADT) no Eclipse para criar uma nova Data Definition. Esta visão customizada usará
UNION ALLpara mesclar registros de diferentes fontes, cada um representando uma atividade de negócio distinta. - Definir a Estrutura do Log de Eventos: Em sua CDS view customizada, defina os campos que formarão as colunas do seu log de eventos. Isso deve incluir
WarehouseOrder,ActivityName,EventTimee outros atributos obrigatórios e recomendados. Mapeie esses campos a partir das CDS views padrão subjacentes. - Modelar Eventos de Ordem de Depósito: Adicione as primeiras instruções
SELECTà sua união. Selecione a partir deI_WarehouseOrderpara gerar o evento 'Ordem de Depósito Criada' usando o timestamp de criação. Adicione instruçõesSELECTsubsequentes para os eventos 'Ordem de Depósito Concluída' e 'Ordem de Depósito Cancelada', filtrando pelo status da ordem e usando os timestamps apropriados de confirmação ou alteração. - Modelar Eventos de Tarefa de Depósito: Adicione instruções
SELECTa partir deI_WarehouseTask. Gere os eventos 'Tarefa de Putaway Criada' e 'Tarefa de Putaway Confirmada' filtrando pelas categorias de processo de depósito relacionadas ao putaway. Da mesma forma, crie os eventos 'Tarefa de Picking Criada', 'Tarefa de Picking Confirmada' e 'Tarefa de Staging Confirmada' com base em suas respectivas categorias de processo e use os timestamps de criação e confirmação. - Modelar Eventos de Movimentação de Mercadorias: Junte as visões relacionadas à entrega com as tarefas de depósito para capturar as movimentações. Para 'Recebimento de Mercadorias Lançado', selecione de
I_InboundDeliveryItemusando oActualGoodsMovementDateTime. Para 'Saída de Mercadorias Lançada', use o mesmo campo deI_OutboundDeliveryItem, vinculando de volta à ordem ou tarefa de depósito relevante. - Modelar Eventos de Carregamento e Embalagem: Selecione de
I_EWMTransportationUnitpara capturar os eventos 'Carregamento Iniciado' e 'Carregamento Concluído' usando seus timestamps dedicados. Para a embalagem (packing), que pode ser complexa, use um proxy selecionando de uma visão de Unidade de Manuseio (Handling Unit), onde o tempo de criação pode representar 'Embalagem Iniciada' e o tempo de alteração de status pode representar 'Embalagem Concluída'. Esta etapa pode exigir ajustes com base no seu processo de embalagem específico. - Adicionar Anotações para Expor a CDS View: Adicione a anotação
@OData.publish: trueà definição da sua CDS view customizada. Isso instrui o SAP a gerar automaticamente um serviço OData baseado na estrutura da visão. - Ativar a CDS View e o Serviço OData: Ative a nova Data Definition no ADT. Em seguida, acesse o sistema SAP Gateway hub e use a transação
/IWFND/MAINT_SERVICEpara localizar e ativar o serviço OData recém-gerado. Isso torna os dados acessíveis via endpoint de API REST. - Extrair os Dados: Use sua plataforma de dados ou ferramenta de ETL para se conectar ao endpoint do serviço OData ativado. Aplique filtros diretamente na URI do OData, como filtrar por
EventTimepara limitar o escopo dos dados (ex:?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Formatar para Process Mining: Certifique-se de que os dados extraídos sejam salvos em um formato de arquivo plano, como CSV, com os cabeçalhos das colunas correspondendo aos atributos exigidos pelo ProcessMind (
WarehouseOrder,ActivityName,EventTime, etc.). Faça o upload do arquivo final para a ferramenta de process mining.
Configuração
- Custom CDS View: Uma visão CDS dedicada, por exemplo
Z_C_EWM_EVENTLOG_CDS, deve ser criada para unificar os dados de eventos. Este é o objeto central para a extração. - Serviço OData: O serviço OData gerado a partir da CDS view customizada deve ser ativado. O nome do serviço é tipicamente o nome da CDS view com o sufixo
_CDS. - Filtro por Período: É fundamental aplicar um filtro de data no campo
EventTimeao chamar a API OData. Um intervalo típico para uma análise inicial é de 3 a 6 meses de dados. Sem um filtro, a consulta pode expirar ou causar problemas de desempenho. - Filtro por Entidade: Para limitar ainda mais o escopo dos dados, considere aplicar filtros em atributos como Número do Depósito (
Warehouse), Tipo de Ordem de Depósito (WarehouseOrderType) ou materiais específicos (MaterialNumber). - Autorizações de Sistema: O usuário que cria a CDS view precisa de acesso de desenvolvedor SAP no ADT. O usuário ou conta de serviço que chama a API OData requer autorizações para acessar os dados subjacentes de gestão de depósito.
a Consulta de Exemplo sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate