Seu Template de dados de gestão de estoque
Seu Template de dados de gestão de estoque
- Atributos recomendados para coleta
- Principais atividades para acompanhar na descoberta do processo
- Instruções de extração para SAP S/4HANA
Atributos da gestão de estoque
| Nome | Descrição | ||
|---|---|---|---|
| Data e hora do evento EventTime | Data e hora exatas em que a atividade de estoque foi registrada no sistema. | ||
| Descrição Data e hora do evento é o registro que indica exatamente quando uma atividade ocorreu. Esse dado é essencial para ordenar os eventos cronologicamente e reconstruir o fluxo do processo de cada lote de estoque. Ele serve de base para todas as análises de Process Mining relacionadas ao tempo. A precisão da data e hora do evento é fundamental para calcular indicadores de performance, como tempos de ciclo, prazos e durações. Ela permite analisar a performance do processo em diferentes períodos, ajuda a identificar quando ocorrem gargalos e fornece uma base concreta para entender atrasos, como o tempo que um lote permanece em inspeção de qualidade antes de ser liberado. Por que isso importa Este registro ordena os eventos cronologicamente e serve de base para todos os cálculos de duração e performance. Onde encontrar Em geral, é a combinação da data de lançamento (MKPF-BUDAT) e do horário de entrada (MKPF-CPUTM) da tabela de cabeçalho de documentos de material MKPF. Exemplos 2023-10-26T09:00:00Z2023-11-15T14:35:10Z2024-01-05T23:15:00Z | |||
| Lote de estoque InventoryBatchLot | Identificador exclusivo de uma quantidade específica de um produto, usado como ID do caso para acompanhar seu ciclo de vida. | ||
| Descrição O número do lote de estoque é o principal identificador do caso e agrupa todas as atividades relacionadas a uma quantidade específica e distinta de um produto. Isso permite acompanhar cronologicamente o percurso completo de uma quantidade em estoque, desde o recebimento inicial no armazém, passando por diferentes movimentações internas e alterações de status, até a saída para venda, produção ou descarte. Na análise de processos, este atributo é fundamental. Ele permite rastrear o fluxo de ponta a ponta de cada lote, medir os tempos de ciclo com precisão, identificar variações no processo e entender como diferentes lotes são tratados. Analisar os processos por lote é essencial em setores nos quais a rastreabilidade, o controle de qualidade e a gestão de datas de validade são críticos, como os de produtos farmacêuticos, alimentos e bebidas e produtos químicos. Por que isso importa Este é o identificador principal que conecta todos os eventos relacionados ao estoque em um único caso e permite analisar o processo de ponta a ponta. Onde encontrar Em geral, é o número do lote, encontrado no campo CHARG de tabelas SAP como MCHA (registro mestre do lote) ou MCH1 (lotes). Exemplos B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| Atividade ActivityName | Nome do evento de negócio ocorrido em um momento específico do processo de gestão de estoque. | ||
| Descrição O atributo Atividade descreve uma etapa ou um evento do ciclo de vida de um lote de estoque. Esses eventos representam ações importantes, como receber mercadorias, movimentar o estoque, realizar uma inspeção de qualidade ou retirar materiais. Cada atividade registra algo que aconteceu com o lote em um momento específico. A análise das atividades é a base do Process Mining. Ela permite visualizar o fluxo do processo, identificar caminhos frequentes e raros, detectar gargalos causados por atrasos nas atividades e analisar ciclos de retrabalho. Ao entender a sequência e a frequência de atividades como 'Estoque descartado' ou 'Inspeção de qualidade', as empresas podem identificar oportunidades de melhoria e aumentar a eficiência operacional. Por que isso importa Define as etapas do processo e permite visualizar e analisar o ciclo de vida do estoque. Onde encontrar Este atributo é derivado e costuma ser mapeado a partir dos tipos de movimento do SAP (MSEG-BWART) ou dos códigos de transação (MKPF-TCODE2) para nomes mais fáceis de entender. Exemplos Entrada de mercadorias registradaTransferência para armazenagem registradaSaída de mercadorias para entrega registradaEstoque descartado | |||
| Código do motivo da movimentação MovementReasonCode | Código que especifica o motivo de uma movimentação de estoque. | ||
| Descrição O código do motivo da movimentação explica por que uma movimentação de mercadorias foi realizada. Ele costuma ser usado para justificar movimentações não planejadas, como ajustes de estoque, devoluções ou descarte. Esse atributo é muito útil para a análise de causa raiz. No dashboard “Motivos dos ajustes manuais de estoque”, analisar os dados por código de motivo pode revelar por que ocorrem divergências, como danos, furtos ou erros de digitação. Esse insight ajuda as empresas a resolver os problemas subjacentes, em vez de apenas corrigir os sintomas. Por que isso importa Explica os motivos das movimentações de estoque não planejadas e permite direcionar a análise de causa raiz. Onde encontrar Encontrado na tabela de itens de documentos de material MSEG, campo GRUND (motivo da movimentação). Exemplos 00010005102 | |||
| Depósito StorageLocation | Local específico dentro de uma planta onde o estoque é armazenado fisicamente. | ||
| Descrição Um depósito é uma unidade organizacional que permite diferenciar os estoques de materiais dentro de uma planta. Por exemplo, uma planta pode ter depósitos separados para matérias-primas, produtos acabados e estoque em inspeção de qualidade. Esse atributo oferece uma localização mais detalhada do que a planta. Ele é usado para entender as movimentações entre diferentes áreas de estoque, como o tempo de atravessamento das transferências da área de recebimento para o armazém principal. Analisar a utilização do espaço e a frequência de movimentações por depósito ajuda a otimizar o layout do armazém e a logística interna. Por que isso importa Mostra com mais detalhes onde o estoque está localizado dentro de uma planta, ajudando a analisar as movimentações internas e a eficiência do armazenamento. Onde encontrar Encontrado na tabela de itens de documentos de material MSEG, campo LGORT (depósito). Exemplos 0001RM01FG01QI01 | |||
| Nome do usuário UserName | ID do usuário que executou a transação no SAP. | ||
| Descrição Este atributo registra o ID do usuário SAP que lançou o documento ou executou a atividade. Ele permite rastrear as ações e identificar quem é responsável por cada uma delas no processo de gestão de estoque. Analisar os dados por usuário é essencial para entender a performance, a conformidade e as necessidades de treinamento. Por exemplo, o Dashboard 'Causas dos ajustes manuais de estoque' usa este atributo para identificar quem realiza mais ajustes. Isso pode ajudar a identificar usuários que precisam de treinamento adicional, destacar atividades não autorizadas ou reconhecer quem tem melhor performance. Por que isso importa Ajuda a identificar responsabilidades, comportamentos específicos de usuários, necessidades de treinamento ou problemas de conformidade. Onde encontrar Encontrado no campo USNAM (nome do usuário) da tabela de cabeçalho de documentos de material MKPF. Exemplos JSMITHMBROWNWAREHOUSE_OPS | |||
| Número do material MaterialNumber | Identificador exclusivo do produto ou material gerenciado. | ||
| Descrição O número do material, também conhecido como SKU (unidade de manutenção de estoque), é o código exclusivo atribuído a um produto específico. É um elemento fundamental dos dados mestres de gestão de estoque, usado para acompanhar quantidades, valores e movimentações de mercadorias. No Process Mining, analisar os dados por número do material permite visualizar os processos de estoque a partir de cada produto. Isso ajuda a responder perguntas como: quais produtos têm os maiores tempos de inspeção de qualidade, quais são descartados com mais frequência e quais apresentam mais transferências internas. Essa segmentação é essencial para identificar problemas específicos de cada produto e otimizar as estratégias de estoque para diferentes tipos de mercadoria. Por que isso importa Permite segmentar a análise por produto e revelar padrões e problemas específicos de determinados itens. Onde encontrar Encontrado no campo MATNR da tabela de itens de documentos de material MSEG. Os dados mestres ficam na tabela MARA. Exemplos RM-1001FG-2050-B100-400-A | |||
| Quantidade Quantity | Quantidade do material envolvido na movimentação de estoque. | ||
| Descrição Este atributo representa a quantidade de material movimentada, recebida, baixada ou ajustada em uma atividade. O valor é registrado na unidade de medida básica do material. Analisar a quantidade é essencial para entender a escala e o impacto dos processos de estoque. Isso permite criar dashboards que mostram o volume de mercadorias movimentadas, como “Volume de baixas de mercadorias por SKU”. Também é usado para calcular KPIs como a “Proporção de estoque descartado”, acrescentando uma dimensão quantitativa à análise do processo, além da simples contagem de eventos. Por que isso importa Quantifica o volume de material em cada atividade, permitindo analisar o fluxo, o volume descartado e o impacto dos ajustes. Onde encontrar Encontrado na tabela de itens de documentos de material MSEG, campo MENGE (quantidade). Exemplos 10012.55000-10 | |||
| Tipo de movimento MovementType | Código de três dígitos no SAP que determina como uma movimentação de mercadorias é registrada. | ||
| Descrição O tipo de movimento é um código de controle essencial na gestão de estoque do SAP, pois determina as características de uma movimentação de material. Ele especifica quais contas são atualizadas, como o layout da tela aparece na transação e quais campos de quantidade ou valor são atualizados. Por exemplo, '101' corresponde à entrada de mercadorias, '311' a uma transferência de estoque e '551' ao descarte. Este atributo costuma ser usado como base para derivar o nome mais fácil de entender da 'Atividade'. Analisar os processos por tipo de movimento permite entender em detalhes, do ponto de vista técnico, como o estoque circula. Isso é essencial para validar a precisão do mapa de processos e identificar tipos específicos de transação que podem causar gargalos ou desvios. Por que isso importa Oferece uma classificação técnica precisa de cada evento de estoque, essencial para derivar as atividades e fazer análises detalhadas. Onde encontrar Encontrado no campo BWART (tipo de movimento) da tabela de itens de documentos de material MSEG. Exemplos 101311261551601 | |||
| Unidade Plant | Unidade organizacional que representa uma instalação onde o estoque fica armazenado, como uma fábrica ou um centro de distribuição. | ||
| Descrição Uma planta é uma unidade organizacional central no SAP que pode representar uma instalação de produção, um local central de armazenamento ou a sede da empresa. Todo o estoque fica localizado física ou logicamente em uma planta. Analisar os dados por planta é fundamental para comparar a performance dos processos em diferentes locais. Isso ajuda a responder a perguntas como: “Qual planta tem o maior tempo de ciclo de armazenagem?” ou “A taxa de divergências no estoque é maior na planta A do que na planta B?”. Essa segmentação geográfica ou organizacional é essencial para identificar problemas específicos de cada local e compartilhar boas práticas em toda a organização. Por que isso importa Permite comparar os processos de estoque e sua performance em diferentes locais da empresa. Onde encontrar Encontrado na tabela de itens de documentos de material MSEG, campo WERKS (planta). Exemplos 10001710DE01US01 | |||
| Data de validade ExpirationDate | Data em que o lote do material vence e deixa de poder ser usado. | ||
| Descrição A data de validade (SLED) é um dado mestre essencial para produtos perecíveis ou com prazo de uso limitado. Ela é gerenciada por lote e determina quando um produto deixa de poder ser vendido ou consumido. Esse atributo é essencial para o dashboard “Análise de estoque obsoleto e vencido”. Ao analisar as atividades considerando a data de validade, as empresas podem identificar lotes com risco de vencimento e tomar medidas preventivas. O atributo ajuda a medir a eficácia de políticas de rotação de estoque, como Primeiro que vence, primeiro que sai (FEFO), e a quantificar as perdas causadas pelo descarte de estoque vencido. Por que isso importa Permite analisar o estoque obsoleto e vencido, ajudando a reduzir o desperdício e as perdas financeiras. Onde encontrar Encontrado na tabela mestre de lotes MCH1 ou MCHA, campo VFDAT (data de validade). Exemplos 2024-12-312025-06-302024-09-01 | |||
| Endereço de armazenagem StorageBin | Unidade de armazenamento mais detalhada em um armazém, onde os materiais ficam fisicamente localizados. | ||
| Descrição Um endereço de armazenagem representa uma coordenada específica no armazém, como a posição em uma estante. Esse nível de detalhe costuma ser usado quando o SAP Warehouse Management (WM) ou o Extended Warehouse Management (EWM) está implementado. Esse atributo é essencial para o dashboard “Utilização do espaço do armazém”. Ele permite analisar a eficiência do uso do espaço, identificar possíveis pontos de congestionamento e revelar caminhos ineficientes para armazenar ou separar itens. Analisar as movimentações entre endereços de armazenagem ajuda a otimizar o layout do armazém e reduzir o tempo de deslocamento dos operadores. Por que isso importa Fornece os dados de localização mais detalhados, permitindo analisar a utilização do espaço do armazém e a eficiência operacional. Onde encontrar Se você usa WM, esse dado pode ser encontrado em tabelas de ordens de transferência, como LTAK/LTAP. Para documentos de estoque, pode estar em MSEG-LGPBE. Consulte a documentação do SAP S/4HANA. Exemplos A-01-01-AB-05-10-CÁREA-REC-01 | |||
| Número do documento de material MaterialDocumentNumber | Número exclusivo que identifica o documento de material que registra a movimentação de mercadorias. | ||
| Descrição Quando uma movimentação de mercadorias é lançada no SAP, o sistema gera um documento de material como comprovante. Este atributo é o identificador exclusivo desse documento. Um único documento de material pode conter vários itens ou atividades. Em Process Mining, o número do documento de material é um identificador transacional importante, que pode ser usado para agrupar eventos lançados juntos. Ele também é essencial para auditorias e para aprofundar um nível da análise do processo até o sistema de origem e investigar transações específicas. Por que isso importa Serve como chave transacional para auditorias e permite agrupar atividades executadas em conjunto. Onde encontrar Encontrado nas tabelas MKPF (cabeçalho) e MSEG (item), campo MBLNR (número do documento de material). Exemplos 490000123450000056784900002345 | |||
| Sistema de origem SourceSystem | Identifica o sistema de origem de onde os dados foram extraídos. | ||
| Descrição Este atributo indica o sistema de registro em que os dados de gestão de estoque foram gerados. Neste caso, seria a instância específica do SAP S/4HANA. Essa informação é essencial em ambientes nos quais os dados podem vir de vários ERPs, sistemas de gestão de armazém ou plataformas legadas. Embora possa parecer estático em uma análise de um único sistema, esse atributo se torna essencial ao combinar dados de diferentes fontes para criar uma visão completa do processo. Ele ajuda na governança de dados, na investigação de problemas de extração e na garantia de uma linhagem de dados clara. Por que isso importa Informa a origem dos dados, algo essencial para a governança de dados e a análise de vários sistemas. Onde encontrar Em geral, é um valor definido diretamente durante a transformação dos dados para identificar a instância específica do SAP S/4HANA. Exemplos S4H_PROD_100SAP_S4_FINANCES4HANA_GLOBAL | |||
| Tempo de ciclo do atendimento de pedidos OrderFulfillmentCycleTime | Tempo total desde o início da separação até a baixa das mercadorias para entrega. | ||
| Descrição Esta métrica calculada mede o tempo total entre as atividades “Separação iniciada” e “Baixa de mercadorias para entrega lançada”. Ela representa o tempo que o armazém leva para preparar e enviar um pedido do cliente após o início do processo. Esse atributo mede diretamente o KPI “Tempo de ciclo do atendimento de pedidos”. Analisar essa duração ajuda as empresas a entender como respondem à demanda dos clientes. É possível segmentar os dados por produto, armazém ou cliente para identificar atrasos nas etapas de separação, embalagem e envio, que afetam diretamente a satisfação do cliente e a eficiência logística. Por que isso importa Mede a velocidade e a eficiência do fluxo de saída do armazém, um fator importante para a satisfação do cliente. Onde encontrar Este atributo calculado é obtido pela diferença de tempo entre os eventos “Separação iniciada” e “Baixa de mercadorias para entrega lançada” para cada lote. Exemplos 7200144003600 | |||
| Tipo de estoque StockType | Indica a situação do estoque, como disponível para uso, em inspeção de qualidade ou bloqueado. | ||
| Descrição O tipo de estoque classifica os materiais de acordo com a possibilidade de uso. Os principais tipos são estoque de livre utilização (disponível para uso), estoque em inspeção de qualidade (aguardando verificações) e estoque bloqueado (indisponível para uso). As movimentações de mercadorias muitas vezes envolvem uma mudança no tipo de estoque. Acompanhar essas mudanças é fundamental para entender o processo de disponibilidade do estoque. Isso dá suporte direto a atividades como “Estoque enviado para inspeção de qualidade” e “Situação do estoque alterada para bloqueado”. Analisar o tempo em cada tipo de estoque, especialmente em inspeção de qualidade, é essencial para identificar atrasos que afetam a disponibilidade de mercadorias para venda ou produção. Por que isso importa Acompanha a situação de uso do estoque, essencial para analisar atrasos na inspeção de qualidade e na disponibilidade dos materiais. Onde encontrar Encontrado na tabela de itens de documentos de material MSEG, campo INSMK (tipo de estoque). Exemplos Livre utilizaçãoInspeção de qualidadeEstoque bloqueado | |||
| Última atualização dos dados LastDataUpdate | Data e hora que indicam quando os dados deste registro foram atualizados pela última vez a partir do sistema de origem. | ||
| Descrição Este atributo registra a data e a hora da extração ou atualização mais recente dos dados do sistema de origem. Ele fornece metadados importantes sobre a atualidade das informações analisadas e ajuda a entender se os dados estão quase em tempo real ou se representam um período anterior. Em qualquer análise, saber quando os dados foram atualizados é essencial para chegar a conclusões relevantes e precisas. Este campo permite que analistas e usuários de negócio confirmem a atualidade dos dados e costuma ser exibido em dashboards para contextualizar os insights apresentados. Por que isso importa Informa quando os dados foram atualizados, garantindo que as análises usem informações recentes. Onde encontrar Esta data e hora são geradas e adicionadas durante o processo de extração, transformação e carregamento de dados (ETL). Exemplos 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
| Unidade de medida UnitOfMeasure | Unidade usada para medir a quantidade do material, como peças ou quilogramas. | ||
| Descrição A unidade de medida especifica a unidade do atributo “Quantidade”. Alguns exemplos comuns são peças (PC), quilogramas (KG), litros (L) e caixas (BOX). Ela dá contexto essencial ao campo de quantidade. Embora muitas vezes seja usada apenas como uma descrição, esse atributo é importante para garantir a qualidade dos dados e viabilizar análises que exigem a conversão de diferentes unidades para um padrão comum. Por exemplo, para calcular corretamente o valor total do estoque descartado, é preciso interpretar as quantidades em unidades diferentes e, se necessário, convertê-las. Por que isso importa Dá contexto essencial ao atributo “Quantidade” e permite interpretar corretamente os volumes de material. Onde encontrar Encontrado na tabela de itens de documentos de material MSEG, campo MEINS (unidade de medida básica). Exemplos PeçaQuilogramaUnidadeMetro | |||
Atividades da gestão de estoque
| Atividade | Descrição | ||
|---|---|---|---|
| Ajuste de estoque registrado | Registra uma alteração na quantidade em estoque decorrente de uma contagem física ou de outra divergência. Este evento ajusta explicitamente o saldo contábil para corresponder à contagem física. | ||
| Por que isso importa Esses ajustes são essenciais para manter a precisão do estoque. Uma frequência alta de ajustes indica problemas subjacentes no manuseio do estoque, na segurança ou na entrada de dados. Onde encontrar Registrado na tabela MATDOC. Identificado por tipos de movimento de inventário físico (BWART), como 701 (ganho de estoque) ou 702 (perda de estoque). Coleta Capturado nos documentos de material da MATDOC com tipos de movimento de ajuste de inventário físico (por exemplo, 701, 702). Tipo de evento explicit | |||
| Entrada de mercadorias registrada | Marca a entrada inicial de um lote de estoque no armazém, geralmente vindo de um fornecedor ou da produção. Esse evento é registrado explicitamente no SAP S/4HANA quando um documento de material é criado no recebimento das mercadorias. | ||
| Por que isso importa Este é o principal evento de início do ciclo de vida do estoque. Analisar o tempo entre esta atividade e outras, como a armazenagem, é essencial para medir a eficiência da doca de recebimento. Onde encontrar Registrado na tabela MATDOC. Identificado por tipos de movimento específicos (BWART), como 101 para recebimentos de pedidos de compra ou 103 para entrada de mercadorias em estoque bloqueado. Coleta Capturado nos documentos de material da MATDOC com os tipos de movimento correspondentes à entrada de mercadorias. Tipo de evento explicit | |||
| Estoque descartado | Marca o descarte definitivo de um lote de estoque, removendo-o permanentemente dos registros. Isso costuma ocorrer com estoque vencido, danificado ou obsoleto. | ||
| Por que isso importa Este é um evento final que representa uma perda financeira. Analisar os descartes ajuda a identificar problemas relacionados ao envelhecimento do estoque, aos procedimentos de manuseio ou à previsão de demanda. Onde encontrar Registrado na tabela MATDOC. Identificado por tipos de movimento (BWART) de descarte, como 551 (de utilização irrestrita), 553 (de inspeção de qualidade) ou 555 (de estoque bloqueado). Coleta Capturado nos documentos de material da MATDOC com tipos de movimento de descarte (por exemplo, 551). Tipo de evento explicit | |||
| Estoque liberado da inspeção de qualidade | Indica que um lote passou pela inspeção de qualidade e está disponível para uso ou armazenagem. O registro é feito por uma transferência explícita do estoque em inspeção para outro tipo de estoque, como o de utilização irrestrita. | ||
| Por que isso importa Este marco indica a conclusão do processo de qualidade e torna o estoque disponível. Atrasos nesta etapa podem causar problemas significativos nas etapas seguintes da produção ou do atendimento de pedidos. Onde encontrar Registrado na tabela MATDOC como uma transferência de estoque. Em geral, é identificado pelo tipo de movimento (BWART) 321, que transfere o estoque de 'Inspeção de qualidade' para 'Utilização irrestrita'. Coleta Capturado nos documentos de material da MATDOC com o tipo de movimento 321. Tipo de evento explicit | |||
| Saída de mercadorias para entrega registrada | Registra a etapa final do processo de saída, quando a propriedade do lote é transferida para um cliente ou transportadora. Essa transação explícita reduz o estoque e gera um lançamento contábil. | ||
| Por que isso importa Este é um evento essencial para concluir o atendimento do pedido. Ele é fundamental para medir as entregas no prazo e calcular o tempo de ciclo total do atendimento de pedidos. Onde encontrar Registrado na tabela MATDOC. Identificado pelo tipo de movimento (BWART) de saída de mercadorias para uma entrega de pedido de venda, geralmente 601. Coleta Capturado nos documentos de material da MATDOC com o tipo de movimento 601. Tipo de evento explicit | |||
| Saída de mercadorias para produção registrada | Representa o consumo de um lote de estoque por uma ordem de produção ou de processo. Essa transação reduz o estoque e aloca o custo do material à ordem de fabricação. | ||
| Por que isso importa Este é um evento essencial de consumo, que marca o fim do ciclo de vida do estoque para os componentes. É fundamental para analisar a disponibilidade de materiais para a produção e os padrões de consumo. Onde encontrar Registrado na tabela MATDOC. Identificado por tipos de movimento (BWART) de saída de mercadorias para uma ordem, como 261. Coleta Capturado nos documentos de material da MATDOC com o tipo de movimento 261. Tipo de evento explicit | |||
| Transferência para armazenagem registrada | Representa a movimentação física do lote da área de recebimento ou de separação para o local ou endereço definitivo de armazenagem. No SAP, essa movimentação é registrada em um documento de material de transferência de estoque. | ||
| Por que isso importa Conclui o processo de recebimento. O tempo para concluir esta atividade, conhecido como tempo de armazenagem, é um KPI essencial para medir a eficiência do armazém. Onde encontrar Registrado na tabela MATDOC como uma transferência de estoque, muitas vezes entre locais de armazenagem (por exemplo, tipo de movimento 311). A movimentação específica pode variar conforme a estrutura do armazém. Coleta Identificado nos documentos de transferência de estoque da MATDOC que movimentam o estoque de um local provisório ou de recebimento para o local definitivo de armazenagem. Tipo de evento explicit | |||
| Devolução de venda recebida | Registra a devolução ao armazém de um lote que já havia sido enviado a um cliente. Essa transação explícita aumenta o estoque. | ||
| Por que isso importa Acompanhar as devoluções é essencial para entender problemas de qualidade dos produtos e a insatisfação dos clientes. O processo de recebimento e destinação das devoluções também pode gerar ineficiências. Onde encontrar Registrado na tabela MATDOC. Identificado por tipos de movimento (BWART) de devolução de venda, como 651 (para utilização irrestrita) ou 653 (para inspeção de qualidade). Coleta Capturado nos documentos de material da MATDOC com tipos de movimento de devolução de venda (por exemplo, 651, 653). Tipo de evento explicit | |||
| Estoque enviado para inspeção de qualidade | Representa a transferência de um lote recebido para o status de estoque em inspeção de qualidade, deixando-o indisponível até a liberação. Essa transação explícita no SAP altera o tipo de estoque do lote. | ||
| Por que isso importa Esta atividade inicia o processo de inspeção de qualidade. O tempo entre ela e a liberação da inspeção é uma métrica importante para entender os atrasos relacionados à qualidade. Onde encontrar Registrado na tabela MATDOC. Pode ser uma entrada de mercadorias (por exemplo, 101) com o tipo de estoque (INSMK) definido como 'Q' (inspeção de qualidade) ou uma transferência de estoque (por exemplo, 322). Coleta Identificado nos documentos de material da MATDOC que colocam o estoque no tipo 'Inspeção de qualidade'. Tipo de evento explicit | |||
| Separação iniciada | Marca o início do atendimento do pedido, quando uma tarefa de armazém é criada para separar um lote do endereço de armazenagem. Em geral, o registro ocorre quando uma ordem de transferência ou uma tarefa de armazém é criada. | ||
| Por que isso importa Esta atividade dá início ao processo de separação. Analisar o tempo entre este evento e a conclusão da separação ajuda a medir a eficiência da equipe do armazém e a identificar atrasos. Onde encontrar Em geral, este evento não aparece na MATDOC. Em sistemas com Warehouse Management (WM/EWM), ele é inferido a partir da data e hora de criação de uma ordem de transferência (tabela LTAK) ou de uma tarefa de armazém. Coleta Inferido do registro de criação de uma ordem de transferência (no WM) ou de uma tarefa de armazém (no EWM) vinculada ao lote de material. Tipo de evento inferred | |||
| Status do estoque alterado para bloqueado | Representa uma alteração no status do lote que o torna indisponível para saída, geralmente por danos, solicitação de retenção ou outros motivos. No SAP, isso é registrado como uma transferência explícita de estoque. | ||
| Por que isso importa Destaca interrupções na disponibilidade do estoque. Uma frequência alta de bloqueios pode indicar problemas de manuseio, condições de armazenagem ou qualidade do fornecedor. Onde encontrar Registrado na tabela MATDOC como uma transferência de estoque. O tipo de movimento (BWART) 344 costuma transferir o estoque de 'Bloqueado' para 'Utilização irrestrita', enquanto o tipo 343 faz o caminho inverso. Esta atividade corresponde ao tipo 343. Coleta Identificado nos documentos de material da MATDOC com o tipo de movimento 343. Tipo de evento explicit | |||
| Status do estoque alterado para utilização irrestrita | Representa uma alteração no status do lote, liberando-o de um bloqueio ou da retenção por qualidade e tornando-o disponível para uso. O registro é feito como uma transferência explícita de estoque. | ||
| Por que isso importa Esta atividade marca a resolução de uma retenção de estoque. Analisar o tempo que o estoque permanece bloqueado pode ajudar a melhorar os processos de resolução. Onde encontrar Registrado na tabela MATDOC como uma transferência de estoque. O tipo de movimento (BWART) 344 transfere o estoque de 'Bloqueado' para 'Utilização irrestrita'. Coleta Identificado nos documentos de material da MATDOC com o tipo de movimento 344. Tipo de evento explicit | |||
| Status do lote alterado | Reflete uma alteração no registro mestre do lote, como a mudança de status de 'Utilização irrestrita' para 'Restrito'. Não se trata de uma movimentação de material, mas de uma alteração nos dados mestres que fica registrada no sistema. | ||
| Por que isso importa As alterações no status do lote afetam diretamente seu uso em vendas ou na produção. Analisá-las pode revelar problemas com estoque próximo do vencimento ou com o controle de qualidade, mesmo sem movimentação física. Onde encontrar Inferido dos logs de alteração das tabelas mestre de lotes (MCH1, MCHA). As tabelas CDHDR e CDPOS registram as alterações no campo de status do lote (MCH1-ZUSTD). Coleta Derivado dos documentos de alteração em CDHDR/CDPOS para o campo de status do registro mestre do lote (MCH1-ZUSTD). Tipo de evento inferred | |||
| Transferência interna de estoque registrada | Registra a movimentação de um lote de estoque entre diferentes locais ou endereços de armazenagem dentro da mesma unidade. Essa transação explícita cria um documento de material. | ||
| Por que isso importa Acompanhar as transferências internas ajuda a analisar a eficiência operacional do armazém, identificar movimentações desnecessárias e medir o tempo de reposição do estoque entre locais. Onde encontrar Registrado na tabela MATDOC. Em geral, é identificado pelo tipo de movimento (BWART) 311, usado em transferências entre locais de armazenagem. Coleta Capturado nos documentos de material da MATDOC com tipos de movimento de estoque interno (por exemplo, 311). Tipo de evento explicit | |||
Guias de extração
Etapas
- Configure o acesso ao sistema: confirme se você tem um usuário com as autorizações necessárias para consultar as views Core Data Services (CDS) no sistema SAP S/4HANA. Normalmente, o acesso é concedido por um administrador do sistema.
- Escolha um cliente SQL: selecione uma ferramenta cliente SQL que possa se conectar ao banco de dados SAP HANA. Entre as opções comuns estão SAP HANA Studio, SAP HANA Database Explorer e ferramentas de terceiros, como DBeaver.
- Configure a conexão com o banco de dados: crie uma nova conexão usando seu cliente SQL. Você precisará do nome do host do banco de dados HANA, do número da porta (normalmente 3<instance_number>15) e das credenciais do usuário do banco de dados.
- Prepare a consulta SQL: copie a consulta SQL completa fornecida na seção “query” deste documento e cole-a no editor do seu cliente SQL.
- Defina os parâmetros da consulta: localize os valores de exemplo na consulta. Substitua
I_MaterialDocumentItem.PostingDate BETWEEN 'YYYYMMDD' AND 'YYYYMMDD'pelo período desejado, por exemplo,BETWEEN '20230101' AND '20230630'. Atualize também os filtros específicos da empresa ou da planta, comoMaterialDocumentItem.Plant IN ('Plant1', 'Plant2'), para que correspondam à estrutura da sua organização. - Execute a consulta: rode a consulta SQL atualizada no banco de dados S/4HANA. O tempo de execução varia conforme o período e o volume de dados de estoque no sistema.
- Revise os dados: quando a consulta terminar, confira os resultados no cliente SQL para garantir que estejam corretos e completos. Verifique se há diferentes atividades e se os principais atributos foram preenchidos.
- Exporte o Event Log: exporte todo o conjunto de resultados do cliente SQL para um arquivo CSV. Configure a exportação para usar a codificação UTF-8 e evitar problemas com caracteres.
- Prepare os dados para carregamento: nomeie as colunas do arquivo CSV exatamente como aparecem nos aliases da consulta, por exemplo,
InventoryBatchLot,ActivityName,EventTimee assim por diante. Agora, o arquivo está pronto para ser carregado em uma ferramenta de Process Mining.
Configuração
- Autorizações: o usuário que executa a consulta precisa de permissões
SELECTnas seguintes CDS Views:I_MaterialDocumentItem,I_BatchChangeDocumenteI_WarehouseTask. Também é necessário ter acesso ao esquema do banco de dados onde essas views estão localizadas. - Filtro por período: é essencial aplicar um filtro de período aos campos
PostingDate,ChangeDocumentCreationDateouWarehouseTaskCreationDate. Um período comum para análise é de 3 a 12 meses. Consultar vários anos pode causar problemas significativos de performance. - Filtros organizacionais: para melhorar a performance e direcionar a análise, adicione cláusulas
WHEREpara filtrar porPlantouCompanyCode. Isso reduz o volume de dados e concentra a extração nas áreas relevantes da empresa. - Volume de dados: sistemas de gestão de estoque geram grandes volumes de dados. Um período amplo pode resultar em milhões de linhas e afetar tanto o sistema de origem durante a extração quanto a performance da ferramenta cliente.
- Extended Warehouse Management (EWM): a atividade “Separação iniciada” depende da CDS View
I_WarehouseTask, que só é preenchida se você usa o SAP Extended Warehouse Management. Se sua organização usa o módulo antigo Warehouse Management (WM) ou apenas Inventory Management (IM), essa atividade específica não será extraída.
Consulta de exemplo sql
SELECT
mat_doc.Batch AS "InventoryBatchLot",
CASE
WHEN mat_doc.MovementType = '101' AND mat_doc.InventoryStockType = '2' THEN 'Stock Posted to Quality Inspection'
WHEN mat_doc.MovementType = '101' THEN 'Goods Receipt Posted'
WHEN mat_doc.MovementType = '321' THEN 'Quality Inspection Stock Released'
WHEN mat_doc.MovementType = '311' THEN 'Internal Stock Transfer Posted'
WHEN mat_doc.MovementType = '344' THEN 'Stock Status Changed to Blocked'
WHEN mat_doc.MovementType IN ('343', '322') THEN 'Stock Status Changed to Unrestricted'
WHEN mat_doc.MovementType IN ('701', '702') THEN 'Inventory Adjustment Posted'
WHEN mat_doc.MovementType = '601' THEN 'Goods Issue for Delivery Posted'
WHEN mat_doc.MovementType = '261' THEN 'Goods Issue for Production Posted'
WHEN mat_doc.MovementType IN ('651', '653') THEN 'Sales Return Received'
WHEN mat_doc.MovementType = '551' THEN 'Stock Scrapped'
WHEN mat_doc.MovementType = '313' THEN 'Put-Away Transfer Posted' -- Example for two-step transfers
ELSE 'Unknown Material Movement'
END AS "ActivityName",
TO_TIMESTAMP(mat_doc.PostingDate || LPAD(mat_doc.CreationTime, 6, '0'), 'YYYYMMDDHH24MISS') AS "EventTime",
mat_doc.Material AS "MaterialNumber",
mat_doc.CreatedByUser AS "UserName",
mat_doc.MovementType AS "MovementType",
mat_doc.Plant AS "Plant",
mat_doc.StorageLocation AS "StorageLocation",
mat_doc.QuantityInEntryUnit AS "Quantity",
mat_doc.ReasonForMovement AS "MovementReasonCode"
FROM
I_MaterialDocumentItem AS mat_doc
WHERE
mat_doc.Batch IS NOT NULL AND mat_doc.Batch <> ''
AND mat_doc.PostingDate BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
-- AND mat_doc.Plant IN ('Plant1', 'Plant2') -- Placeholder: Add filters for relevant plants
UNION ALL
SELECT
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 3) AS "InventoryBatchLot",
'Batch Status Changed' AS "ActivityName",
change_doc.ChangeDocumentCreationDateTime AS "EventTime",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 1) AS "MaterialNumber",
change_doc.ChangedByUser AS "UserName",
NULL AS "MovementType",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 2) AS "Plant",
NULL AS "StorageLocation",
NULL AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_BatchChangeDocument AS change_doc
WHERE
change_doc.ChangeDocumentTable = 'MCHA' AND change_doc.ChangeDocumentTableFieldName = 'ZUSTD'
AND TO_VARCHAR(change_doc.ChangeDocumentCreationDate) BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
UNION ALL
SELECT
wh_task.Batch AS "InventoryBatchLot",
'Picking Initiated' AS "ActivityName",
wh_task.WarehouseTaskCreationDateTime AS "EventTime",
wh_task.Product AS "MaterialNumber",
wh_task.CreatedByUser AS "UserName",
NULL AS "MovementType",
wh_task.Plant AS "Plant",
wh_task.SourceStorageLocation AS "StorageLocation",
wh_task.TargetQuantity AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_WarehouseTask AS wh_task
WHERE
wh_task.Batch IS NOT NULL AND wh_task.Batch <> ''
AND wh_task.WarehouseProcessType IN ('P210', 'P220') -- Placeholder: Adjust process types based on your picking configuration
AND TO_VARCHAR(wh_task.WarehouseTaskCreationDate) BETWEEN '20230101' AND '20231231'; -- Placeholder: Set your date range Etapas
- Confirme se o acesso direto ao SAP HANA SQL foi aprovado e se o usuário de extração tem acesso de leitura à MATDOC e às tabelas mestre de lotes necessárias no sistema. Confirme o proprietário do esquema físico e substitua [Your SAP HANA schema] pelo nome de esquema aprovado.
- Confirme quais campos das tabelas MATDOC e de lotes estão disponíveis na versão do SAP S/4HANA de destino. A consulta abaixo usa campos comuns de MATDOC e MCHA, mas a disponibilidade e os nomes dos campos podem variar conforme a versão, a implantação e o escopo ativado. Antes de executar, substitua todos os campos marcados com [Configure based on your system].
- Defina o período de extração substituindo [Start timestamp] e [End timestamp] por valores de data e hora no formato ISO. Para a extração inicial, use um período de três a seis meses. Depois, amplie-o quando validar o volume e a performance.
- Execute a consulta em um cliente SQL aprovado, no SAP HANA Database Explorer ou em outra ferramenta de banco de dados autorizada. Restrinja os resultados aos códigos de empresa, plantas, tipos de documento ou tipos de movimentação necessários, substituindo os valores de exemplo dos filtros correspondentes.
- Revise o mapeamento dos tipos de movimentação na CTE de atividades. Os tipos de movimentação dependem da configuração do sistema e do negócio. Substitua as listas de exemplo pelos tipos configurados no sistema de destino para recebimento de mercadorias, inspeção de qualidade, liberação, armazenagem, transferência interna, estoque bloqueado, estoque de livre utilização, ajuste de estoque, separação, baixa para entrega, baixa para produção, devolução de venda e descarte.
- Valide se cada linha de saída contém InventoryBatchLot, ActivityName e EventTime. Confirme se o identificador do lote é estável o suficiente para ser usado como identificador de caso no ProcessMind. Se o caso de negócio exigir material, planta ou depósito para diferenciar valores de lote iguais entre unidades organizacionais, use o identificador de caso composto configurado em vez de usar apenas o valor do lote.
- Valide a ordem dos eventos, as linhas duplicadas, os documentos de estorno, os documentos cancelados e o tratamento de fuso horário. A MATDOC registra lançamentos de documentos, portanto, os registros de estorno e cancelamento podem aparecer como eventos separados, a menos que sejam excluídos ou mapeados explicitamente.
- Exporte os resultados da consulta como um arquivo simples, com uma linha por evento e as colunas InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity e MovementReasonCode. Mantenha as datas e horas em um formato ISO 8601 consistente e preserve os zeros à esquerda nos valores de material, lote, planta e depósito.
- Carregue o Event Log resultante no ProcessMind e mapeie InventoryBatchLot como identificador do caso, ActivityName como atividade e EventTime como data e hora do evento. Não conte com o ProcessMind para inferir atividades, combinar registros ou derivar eventos ausentes.
Configuração
- Método de extração: consulta SQL direta aos dados de estoque e de lotes do SAP HANA. A consulta lê a MATDOC e combina os dados mestre de lotes da MCHA. Adicione a MCH1 ou outra tabela de lotes somente depois de confirmar os campos relevantes e o nível de lote no sistema de destino.
- Período: comece com três a seis meses. Use EventTime com base na data e hora de lançamento do documento de material disponíveis na MATDOC. Para cargas incrementais, use uma janela de sobreposição controlada para capturar lançamentos atrasados e depois remova as duplicatas usando os identificadores de documento e item configurados.
- Filtros necessários: configure o código da empresa, a planta, o tipo de documento de material, o tipo de movimentação, a presença do lote e a data de lançamento de acordo com o escopo do processo. Confirme os campos de código da empresa e tipo de documento na versão instalada antes de adicioná-los à consulta.
- Mapeamento de atividades: o significado dos tipos de movimentação depende da configuração. Mantenha uma tabela de mapeamento aprovada ou substitua as listas de tipos de movimentação da consulta pelos valores usados pela empresa. Não considere as listas de exemplo como uma definição universal da semântica do SAP.
- Escopo dos lotes: a consulta exclui linhas sem valor de lote porque o identificador do caso é InventoryBatchLot. Se for necessário derivar o lote de outra fonte, configure essa fonte explicitamente antes da extração.
- Granularidade dos eventos: cada item qualificado da MATDOC é gerado como uma linha de evento. A consulta não infere atividades de separação, decisões de qualidade, mudanças na situação do lote nem outras atividades a partir de registros posteriores.
- Alterações nos dados mestre de lotes: as mudanças na situação do lote não são representadas de forma confiável apenas pela MATDOC. Configure uma fonte de documentos de alteração ou de histórico de lotes para a atividade “Situação do lote alterada”. A consulta inclui uma ramificação de exemplo que precisa ser conectada a uma fonte verificada antes da execução.
- Separação: o início da separação geralmente é registrado nos dados de execução do armazém, não como lançamento na MATDOC. Configure uma fonte verificada de tarefas do armazém ou de ordens de transferência e substitua a ramificação de exemplo antes da execução.
- Performance: filtre por data e hora ou data de lançamento, planta, código da empresa e tipos de movimentação relevantes. Selecione apenas as colunas necessárias, evite consultas históricas sem restrições e execute a extração em uma janela de carga aprovada. Para grandes volumes da MATDOC, recomendamos extrações particionadas ou incrementais.
- Autorizações e pré-requisitos: obtenha conectividade aprovada com o banco de dados, acesso ao esquema, autorização de leitura, acesso aos dados de estoque do SAP S/4HANA e acesso a qualquer fonte de histórico de alterações ou de execução do armazém usada para as duas atividades que não vêm da MATDOC. Confirme se o acesso direto ao banco de dados está de acordo com o modelo operacional e a política de suporte SAP da organização.
- Fusos horários: confirme os fusos horários do banco de dados e da aplicação. Converta EventTime de forma consistente antes de carregar os dados no ProcessMind.
- Proteção de dados: aplique os controles da organização para IDs de usuário, dados de materiais, dados relacionados a clientes e credenciais do banco de dados. Não inclua credenciais no texto da consulta.
Consulta de exemplo sql
WITH
params AS (
SELECT
TO_TIMESTAMP('[Start timestamp]') AS start_ts,
TO_TIMESTAMP('[End timestamp]') AS end_ts
FROM DUMMY
),
movement_map AS (
SELECT '101' AS movement_type, 'Goods Receipt Posted' AS activity_name FROM DUMMY
UNION ALL SELECT '105', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '107', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '109', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '321', 'Stock Posted to Quality Inspection' FROM DUMMY
UNION ALL SELECT '322', 'Quality Inspection Stock Released' FROM DUMMY
UNION ALL SELECT '343', 'Stock Status Changed to Unrestricted' FROM DUMMY
UNION ALL SELECT '344', 'Stock Status Changed to Blocked' FROM DUMMY
UNION ALL SELECT '311', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '301', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '311', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '701', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '702', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '703', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '704', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '705', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '706', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '601', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '602', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '261', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '262', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '651', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '653', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '654', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '551', 'Stock Scrapped' FROM DUMMY
UNION ALL SELECT '552', 'Stock Scrapped' FROM DUMMY
),
matdoc_events AS (
SELECT
m.MATNR AS MaterialNumber,
m.CHARG AS InventoryBatchLot,
COALESCE(m.BUDAT_MKPF, m.BUDAT) AS EventTime,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(m.BWART AS NVARCHAR(3)) AS MovementType,
m.WERKS AS Plant,
m.LGORT AS StorageLocation,
m.MENGE AS Quantity,
m.GRUND AS MovementReasonCode,
mm.activity_name AS ActivityName,
m.MBLNR AS MaterialDocumentNumber,
m.MJAHR AS MaterialDocumentYear,
m.ZEILE AS MaterialDocumentItem
FROM [Your SAP HANA schema].MATDOC m
INNER JOIN movement_map mm
ON CAST(m.BWART AS NVARCHAR(3)) = mm.movement_type
CROSS JOIN params p
WHERE m.CHARG IS NOT NULL
AND TRIM(m.CHARG) <> ''
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) >= p.start_ts
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) < p.end_ts
AND m.WERKS IN ([Configure based on your system])
),
batch_enriched_events AS (
SELECT
e.InventoryBatchLot,
e.ActivityName,
e.EventTime,
e.MaterialNumber,
e.UserName,
e.MovementType,
e.Plant,
e.StorageLocation,
e.Quantity,
e.MovementReasonCode,
e.MaterialDocumentNumber,
e.MaterialDocumentYear,
e.MaterialDocumentItem,
c.CUOBJ_BM AS BatchObjectNumber
FROM matdoc_events e
LEFT JOIN [Your SAP HANA schema].MCHA c
ON c.MATNR = e.MaterialNumber
AND c.CHARG = e.InventoryBatchLot
AND c.WERKS = e.Plant
),
verified_batch_status_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Batch Status Changed' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
verified_picking_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
all_events AS (
SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM batch_enriched_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_batch_status_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_picking_events
)
SELECT
InventoryBatchLot,
ActivityName,
EventTime,
MaterialNumber,
UserName,
MovementType,
Plant,
StorageLocation,
Quantity,
MovementReasonCode
FROM all_events
WHERE InventoryBatchLot IS NOT NULL
AND EventTime IS NOT NULL
ORDER BY InventoryBatchLot, EventTime, MaterialDocumentYear, MaterialDocumentNumber, MaterialDocumentItem, ActivityName; Etapas
- Acesse o editor ABAP: entre no sistema SAP S/4HANA. Abra o editor ABAP usando o código de transação
SE38. - Crie um programa: informe um nome para o novo programa no campo 'Programa', por exemplo,
Z_PM_INVENTORY_EXTRACT, e clique no botão 'Criar'. Insira um título descritivo, defina o 'Tipo' como 'Programa executável' e salve o programa em um pacote. - Defina os parâmetros do programa: no editor, defina a tela de seleção que servirá como interface para a extração. Assim, os usuários poderão informar parâmetros como o intervalo de datas e o centro dos dados a extrair.
- Implemente a lógica de extração: copie todo o código ABAP fornecido na seção 'Consulta' e cole-o no editor ABAP. Esse código seleciona dados de todas as 14 atividades de estoque necessárias, em várias tabelas SAP.
- Entenda a lógica principal: o programa seleciona dados de cada atividade de estoque nas respectivas tabelas de origem, como
MKPFeMSEGpara movimentos de materiais ouCDHDReCDPOSpara alterações nos dados mestres. Em seguida, combina cada seleção comUNION ALLem uma única tabela interna que representa o Event Log. - Configure a saída do arquivo: a parte final do código grava os dados consolidados da tabela interna em um arquivo. A instrução
OPEN DATASETcria o arquivo no servidor de aplicação SAP. Informe um caminho válido no servidor em que o usuário do sistema SAP tenha permissão de gravação. - Execute o programa: salve e ative o programa ABAP (Ctrl+F3). Pressione F8 para executá-lo. Na tela de seleção, informe o intervalo de datas desejado e outros filtros relevantes, como centro ou código da empresa.
- Execute como job em segundo plano: para grandes volumes de dados, é essencial executar o programa como job em segundo plano para evitar timeouts de sessão. Na tela de execução (F8), acesse o menu
Programa -> Executar em segundo plano. Agende o job para um horário de menor movimento. - Recupere o arquivo de saída: quando o job terminar, localize o arquivo no servidor de aplicação SAP. Use o código de transação
AL11para navegar pelos diretórios do servidor e encontrar o arquivo. Use a transaçãoCG3Ypara baixá-lo para o computador local. - Prepare o arquivo para carregamento: abra o arquivo baixado em um editor de texto ou programa de planilhas. Verifique se está no formato CSV, com uma linha de cabeçalho, vírgulas como delimitadores e aspas duplas para delimitar o texto. Antes de carregar o arquivo na ferramenta de Process Mining, confira se os nomes das colunas correspondem aos requisitos.
Configuração
- Intervalo de datas de lançamento: este é o parâmetro mais importante. Recomendamos extrair os dados em lotes gerenciáveis, como períodos de 3 a 6 meses, para garantir uma boa performance e evitar timeouts do sistema.
- Filtro por centro: recomendamos filtrar por um ou mais centros específicos (
WERKS). Executar a extração para todos os centros ao mesmo tempo pode consumir muitos recursos. - Filtro por código da empresa: você pode adicionar um filtro opcional por código da empresa (
BUKRS) para limitar ainda mais o escopo dos dados, caso sua organização opere com vários códigos de empresa no mesmo sistema. - Caminho do arquivo no servidor de aplicação: o programa ABAP precisa de um caminho de diretório válido e predefinido no servidor de aplicação SAP. Verifique se o usuário do sistema SAP (
SY-UNAME) tem as permissões necessárias no sistema operacional para gravar arquivos nesse diretório. - Autorizações: o usuário que executar a extração precisa de autorização para a transação
SE38(para criar e executar o programa), acesso de exibição às tabelasMKPF,MSEG,MCH1,CDHDR,CDPOS,LTAKeLTAP, além de permissão para agendar jobs em segundo plano (SM36/SM37).
Consulta de exemplo abap
REPORT Z_PM_INVENTORY_EXTRACT.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_budat FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: s_werks FOR mseg-werks.
PARAMETERS: p_fpath TYPE string DEFAULT '/usr/sap/trans/tmp/inventory_log.csv' OBLIGATORY.
" ====================================================================
" DATA STRUCTURES
" ====================================================================
TYPES: BEGIN OF ty_event_log,
InventoryBatchLot TYPE charg,
ActivityName TYPE string,
EventTime TYPE string,
MaterialNumber TYPE matnr,
UserName TYPE xubname,
MovementType TYPE bwart,
Plant TYPE werks_d,
StorageLocation TYPE lgort_d,
Quantity TYPE menge_d,
MovementReasonCode TYPE grund,
END OF ty_event_log.
DATA: lt_event_log TYPE TABLE OF ty_event_log.
" ====================================================================
" DATA SELECTION
" ====================================================================
START-OF-SELECTION.
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Receipt Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('101', '103', '105', '501', '521', '561')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~shkzg
WHEN 'H' THEN 'Stock Posted to Quality Inspection'
WHEN 'S' THEN 'Quality Inspection Stock Released'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '321' " For QI to Unrestricted
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Put-Away Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '311' AND mseg~shkzg = 'H' " Assume put-away is the credit side
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Internal Stock Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('301', '311', '313', '315')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~bwart
WHEN '343' THEN 'Stock Status Changed to Blocked'
WHEN '344' THEN 'Stock Status Changed to Unrestricted'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('343', '344')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Inventory Adjustment Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('701', '702', '711', '712')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Delivery Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '601'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Production Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '261'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Sales Return Received' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('651', '653')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Stock Scrapped' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '551'
UNION ALL
SELECT
ltap~charg AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CONCAT( ltak~bdatu, ltak~bzeit ) AS EventTime,
ltap~matnr AS MaterialNumber,
ltak~bname AS UserName,
ltak~bwart AS MovementType,
ltap~werks AS Plant,
ltap~lgort AS StorageLocation,
ltap~nista AS Quantity,
'' AS MovementReasonCode
FROM ltap
JOIN ltak ON ltak~tanum = ltap~tanum
WHERE ltak~bdatu IN s_budat
AND ltap~werks IN s_werks
AND ltap~charg IS NOT NULL AND ltap~charg <> ''
UNION ALL
SELECT
SUBSTRING( cdhdr~objectid, 5, 18 ) AS InventoryBatchLot, " Object ID for BATCH is MATNR+WERKS+CHARG
'Batch Status Changed' AS ActivityName,
CONCAT( cdhdr~udate, cdhdr~utime ) AS EventTime,
SUBSTRING( cdhdr~objectid, 1, 4 ) AS MaterialNumber,
cdhdr~username AS UserName,
'' AS MovementType,
'' AS Plant,
'' AS StorageLocation,
0 AS Quantity,
'' AS MovementReasonCode
FROM cdhdr
JOIN cdpos ON cdpos~objectclas = cdhdr~objectclas
AND cdpos~objectid = cdhdr~objectid
AND cdpos~changenr = cdhdr~changenr
WHERE cdhdr~udate IN s_budat
AND cdhdr~objectclas = 'BATCH'
AND cdpos~tabname = 'MCH1'
AND cdpos~fname = 'ZUSTD'
INTO TABLE @lt_event_log.
" ====================================================================
" WRITE OUTPUT FILE
" ====================================================================
DATA: lv_string TYPE string.
DATA: lo_conv TYPE REF TO cl_abap_conv_out_ce.
lo_conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'Error opening file.' TYPE 'E'.
RETURN.
ENDIF.
" Write Header
lv_string = 'InventoryBatchLot,ActivityName,EventTime,MaterialNumber,UserName,MovementType,Plant,StorageLocation,Quantity,MovementReasonCode'.
TRANSFER lv_string TO p_fpath.
" Write Data
LOOP AT lt_event_log ASSIGNING FIELD-SYMBOL(<fs_log>).
CONCATENATE
<fs_log>-InventoryBatchLot
<fs_log>-ActivityName
<fs_log>-EventTime
<fs_log>-MaterialNumber
<fs_log>-UserName
<fs_log>-MovementType
<fs_log>-Plant
<fs_log>-StorageLocation
<fs_log>-Quantity
<fs_log>-MovementReasonCode
INTO lv_string
SEPARATED BY ','.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
WRITE: 'Extraction complete. File written to:', p_fpath. Pronto para começar?
Use este Template para preparar seus dados com segurança e descobrir insights valiosos sobre as operações de gestão de estoque. Comece hoje a aumentar a eficiência e reduzir custos.
Otimize a gestão de estoque no SAP S/4HANA
Identifique ineficiências, reduza o tempo de ciclo em 30% e economize.
Não é necessário cartão de crédito • Configure em poucos minutos