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
- Orientações de extração adaptadas ao SAP S/4HANA
Atributos da gestão de estoque
| Nome | Descrição | ||
|---|---|---|---|
| Horário do evento EventTime | A data e a hora exatas em que a atividade de estoque foi registrada no sistema. | ||
| Descrição Event Time é o registro de data e hora 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 orientadas por tempo. A precisão do Event Time é fundamental para calcular indicadores de performance como tempos de ciclo, lead times e durações. Ela permite analisar a performance do processo em diferentes períodos, ajuda a identificar quando os gargalos ocorrem e fornece a base factual para entender atrasos, como o tempo que um lote permanece em inspeção de qualidade antes de ser liberado. Por que isso importa Esse registro de data e hora ordena os eventos cronologicamente e é a base de todos os cálculos de duração e performance. Onde obter Normalmente, é uma 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 | O 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 que agrupa todas as atividades relacionadas a uma quantidade específica e distinta de um produto. Isso permite visualizar em ordem cronológica toda a jornada de uma quantidade de estoque, desde seu recebimento inicial no armazém, passando por diversos movimentos internos e alterações de status, até sua saída para venda, produção ou descarte. Na análise de processos, esse 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 no nível do lote é essencial em setores nos quais rastreabilidade, controle de qualidade e gestão da data de validade são críticos, como farmacêutico, alimentos e bebidas e químico. Por que isso importa Este é o identificador central que conecta todos os eventos de estoque relacionados em um único caso, tornando possível a análise do processo de ponta a ponta. Onde obter Normalmente, é o número do lote, encontrado em tabelas SAP como MCHA (Batch Master) ou MCH1 (Batches), no campo CHARG. Exemplos B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| Atividade ActivityName | O nome do evento de negócio que ocorreu em um ponto específico do processo de gestão de estoque. | ||
| Descrição O atributo Activity descreve uma única etapa ou evento no ciclo de vida do estoque de um lote. Esses eventos representam ações de negócio importantes, como receber mercadorias, mover estoque, realizar uma inspeção de qualidade ou expedir materiais. Cada atividade é um registro de algo que aconteceu com o lote de estoque em um momento específico. Analisar atividades é a base do Process Mining. Isso permite visualizar o fluxo do processo, identificar caminhos frequentes e raros, detectar gargalos em que as atividades sofrem atrasos e analisar ciclos de retrabalho. Ao entender a sequência e a frequência de atividades como 'Stock Scrapped' ou 'Quality Inspection', as empresas conseguem identificar oportunidades de melhoria de processos e eficiência operacional. Por que isso importa Ele define as etapas do processo, permitindo visualizar e analisar o ciclo de vida do estoque. Onde obter Este é um atributo derivado, geralmente mapeado a partir de SAP Movement Types (MSEG-BWART) ou Transaction Codes (MKPF-TCODE2) para nomes mais fáceis de entender. Exemplos Entrada de mercadorias lançadaTransferência para armazenagem lançadaSaída de mercadoria para entrega registradaEstoque sucateado | |||
| Código do motivo do movimento MovementReasonCode | Um código que especifica o motivo de um movimento de estoque. | ||
| Descrição O código Reason for Movement fornece contexto adicional sobre o motivo pelo qual um movimento de mercadoria foi realizado. Ele costuma ser usado para explicar movimentos não planejados, como ajustes de estoque, devoluções ou sucateamento. Esse atributo é extremamente valioso para a análise de causa raiz. No Dashboard 'Manual Inventory Adjustment Drivers', analisar por código de motivo pode revelar por que as divergências ocorrem, como danos, furtos ou erros de entrada de dados. Esse insight ajuda as empresas a resolver os problemas subjacentes, em vez de apenas corrigir os sintomas. Por que isso importa Ele explica o 'porquê' por trás dos movimentos de estoque não planejados, permitindo uma análise direcionada de causa raiz. Onde obter Encontrado na tabela de itens de documentos de material MSEG, no campo GRUND (Reason for Movement). Exemplos 00010005102 | |||
| Local de armazenamento StorageLocation | Um local específico dentro de uma Plant onde o estoque é armazenado fisicamente. | ||
| Descrição Um Storage Location é uma unidade organizacional que permite diferenciar os estoques de materiais dentro de uma Plant. Por exemplo, uma planta pode ter locais de armazenamento separados para matérias-primas, produtos acabados e estoque em inspeção de qualidade. Esse atributo fornece um nível de detalhe de localização mais granular do que a Plant. Ele é usado na análise para entender os movimentos entre diferentes áreas de estoque, como o lead time das transferências da área de recebimento para o armazém principal. Analisar a utilização do armazenamento e a frequência de movimentos por local ajuda a otimizar o layout do armazém e a logística interna. Por que isso importa Ele fornece uma visão granular da localização do estoque dentro de uma planta, ajudando a analisar movimentos internos e eficiência de armazenamento. Onde obter Encontrado na tabela de itens de documentos de material MSEG, no campo LGORT (Storage Location). Exemplos 0001RM01FG01QI01 | |||
| Nome do usuário UserName | O ID do usuário que executou a transação no SAP. | ||
| Descrição Esse atributo captura o ID do usuário SAP do funcionário que registrou o documento ou executou a atividade. Ele fornece rastreabilidade ao mostrar quem é responsável por ações específicas no processo de gestão de estoque. Analisar por usuário é essencial para entender performance, conformidade e necessidades de treinamento. Por exemplo, o Dashboard 'Manual Inventory Adjustment Drivers' usa esse atributo para identificar quem realiza mais ajustes. Ele pode ajudar a identificar usuários que precisam de treinamento adicional, destacar atividades não autorizadas ou reconhecer os profissionais com melhor performance. Por que isso importa Ele promove a responsabilização e ajuda a identificar comportamentos específicos de usuários, necessidades de treinamento ou problemas de conformidade. Onde obter Encontrado na tabela de cabeçalho de documentos de material MKPF, no campo USNAM (User Name). Exemplos JSMITHMBROWNWAREHOUSE_OPS | |||
| Número do material MaterialNumber | O identificador exclusivo do produto ou material que está sendo gerenciado. | ||
| Descrição O número do material, geralmente chamado de SKU (Stock Keeping Unit), é o código exclusivo atribuído a um produto específico. Ele é um elemento fundamental dos dados mestres de gestão de estoque, usado para acompanhar quantidades, valores e movimentos de mercadorias. No Process Mining, analisar por número do material permite uma visão dos processos de estoque centrada no produto. Isso ajuda a responder perguntas como quais produtos têm os maiores tempos de inspeção de qualidade, quais são mais sucateados ou quais apresentam o maior volume de 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 Ele permite segmentar a análise por produto, revelando padrões e problemas específicos de determinados itens. Onde obter Encontrado na tabela de itens de documentos de material MSEG, no campo MATNR. Os dados mestres estão na tabela MARA. Exemplos RM-1001FG-2050-B100-400-A | |||
| Planta Plant | A unidade organizacional que representa uma instalação onde o estoque está localizado, como uma fábrica ou um centro de distribuição. | ||
| Descrição Uma Plant é uma unidade organizacional central no SAP que pode representar uma unidade de produção, um local central de armazenamento ou a sede corporativa. Todo o estoque está localizado física ou logicamente dentro de uma Plant. Analisar por Plant é fundamental para comparar a performance do processo em diferentes locais físicos. Isso ajuda a responder perguntas como: 'Qual planta tem o maior tempo de ciclo de put-away?' ou 'A taxa de divergências de 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 Ele permite comparar os processos e a performance do estoque entre diferentes locais da empresa. Onde obter Encontrado na tabela de itens de documentos de material MSEG, no campo WERKS (Plant). Exemplos 10001710DE01US01 | |||
| Quantidade Quantity | A quantidade de material envolvida no movimento de estoque. | ||
| Descrição Esse atributo representa a quantidade de material que foi movimentada, recebida, expedida ou ajustada em uma determinada atividade. Ele é 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 visualizam o volume de mercadorias movimentadas, como 'Goods Issue Throughput by SKU'. Também é usado para calcular KPIs como o 'Stock Scrapped/Disposed Ratio', adicionando uma dimensão quantitativa à análise do processo que vai além da simples contagem de eventos. Por que isso importa Ele quantifica o volume de material em cada atividade, permitindo analisar throughput, volume de sucateamento e impacto dos ajustes. Onde obter Encontrado na tabela de itens de documentos de material MSEG, no campo MENGE (Quantity). Exemplos 10012.55000-10 | |||
| Tipo de movimento MovementType | Uma chave de três dígitos no SAP que controla como um movimento de mercadoria é registrado. | ||
| Descrição O Movement Type é uma chave de controle essencial na gestão de estoque do SAP, pois determina as características de um movimento de material. Ele especifica quais contas são atualizadas, como o layout da tela aparece para a transação e quais campos de quantidade ou valor são atualizados. Por exemplo, '101' é usado para recebimento de mercadoria, '311' para uma transferência e '551' para sucateamento. Esse atributo costuma ser a fonte para derivar o nome de Activity mais fácil de entender. Analisar os processos por Movement Type permite uma visão técnica e detalhada de como o estoque está fluindo. Isso é essencial para validar a precisão do mapa de processo e identificar tipos específicos de transação que podem estar causando gargalos ou desvios. Por que isso importa Ele fornece uma classificação técnica precisa de cada evento de estoque, essencial para derivar atividades e realizar análises detalhadas. Onde obter Encontrado na tabela de itens de documentos de material MSEG, no campo BWART (Movement Type). Exemplos 101311261551601 | |||
| Bin de armazenamento StorageBin | A unidade de armazenamento mais granular de um armazém, onde os materiais ficam fisicamente localizados. | ||
| Descrição Um Storage Bin representa uma coordenada específica no armazém, como a localização em uma estante. Esse nível de detalhe é normalmente usado quando o SAP Warehouse Management (WM) ou o Extended Warehouse Management (EWM) está implementado. No Dashboard 'Warehouse Storage Utilization', esse atributo é essencial. Ele permite analisar a eficiência do uso do espaço do armazém, identificar possíveis pontos de congestionamento e revelar rotas ineficientes de put-away ou picking. Analisar os movimentos entre bins de armazenamento ajuda a otimizar o layout do armazém e reduzir o tempo de deslocamento dos operadores. Por que isso importa Ele fornece os dados de localização mais granulares, permitindo analisar a utilização do espaço do armazém e a eficiência operacional. Onde obter Se você estiver usando WM, isso pode ser encontrado em tabelas de Transfer Order, 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-CRCV-AREA-01 | |||
| Data de validade ExpirationDate | A data em que o lote de material vence e deixa de ser utilizável. | ||
| Descrição A Shelf Life Expiration Date (SLED) é um dado mestre crítico para mercadorias perecíveis ou sensíveis ao tempo. Ela é gerenciada no nível do lote e determina quando um produto não pode mais ser vendido ou consumido. Esse atributo é essencial para o Dashboard 'Obsolete & Expired Stock Analysis'. Ao analisar as atividades considerando a data de validade, as empresas conseguem identificar lotes em risco de vencimento e tomar medidas preventivas. Ele ajuda a medir a eficácia de políticas de rotação de estoque, como First-Expired-First-Out (FEFO), e quantificar perdas decorrentes do sucateamento de estoque vencido. Por que isso importa Ele permite analisar estoque obsoleto e vencido, ajudando a minimizar desperdícios e perdas financeiras. Onde obter Encontrado na tabela mestre de lotes MCH1 ou MCHA, no campo VFDAT (Shelf Life Expiration Date). Exemplos 2024-12-312025-06-302024-09-01 | |||
| Número do documento de material MaterialDocumentNumber | O número exclusivo que identifica o documento de material que registra o movimento de mercadoria. | ||
| Descrição Quando um movimento de mercadoria é registrado no SAP, o sistema gera um documento de material como comprovante do movimento. Esse atributo é o identificador exclusivo desse documento. Um único documento de material pode conter vários itens ou atividades. No Process Mining, o número do documento de material é um identificador transacional importante que pode ser usado para agrupar eventos relacionados registrados juntos. Ele também é essencial para auditorias e para navegar da análise do processo até o sistema de origem e investigar transações específicas. Por que isso importa Ele funciona como uma chave transacional para auditoria e permite agrupar atividades executadas em conjunto. Onde obter Encontrado nas tabelas MKPF (cabeçalho) e MSEG (item), no campo MBLNR (Number of Material Document). Exemplos 490000123450000056784900002345 | |||
| Sistema de origem SourceSystem | Identifica o sistema de origem do qual os dados foram extraídos. | ||
| Descrição Esse atributo especifica o sistema oficial de registro em que os dados de gestão de estoque foram originados. Neste contexto, seria a instância específica do SAP S/4HANA. Essas informações são essenciais 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 sistema único, ele se torna fundamental ao combinar dados de diferentes fontes para criar uma visão holística do processo. Ele ajuda na governança de dados, na solução de problemas de extração e na garantia de uma linhagem de dados clara. Por que isso importa Ele fornece contexto sobre a origem dos dados, algo essencial para a governança de dados e a análise de múltiplos sistemas. Onde obter Normalmente, é um valor definido diretamente durante o processo de 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 do pedido OrderFulfillmentCycleTime | A duração de ponta a ponta entre o início do picking e o registro da saída de mercadoria para entrega. | ||
| Descrição Esta é uma métrica calculada que mede o tempo total entre a atividade 'Picking Initiated' e a atividade 'Goods Issue for Delivery Posted'. Ela representa o tempo total que o armazém leva para preparar e expedir um pedido de cliente depois que o processo começa. Esse atributo mede diretamente o KPI 'Order Fulfillment Cycle Time'. Analisar essa duração ajuda as empresas a entender sua capacidade de resposta à demanda dos clientes. Ela pode ser detalhada por produto, armazém ou cliente para identificar onde ocorrem atrasos no processo de separar, embalar e expedir, afetando diretamente a satisfação do cliente e a eficiência logística. Por que isso importa Ele mede a velocidade e a eficiência do processo de saída do armazém, um fator essencial para a satisfação do cliente. Onde obter Este é um atributo calculado, obtido pela diferença de tempo entre os eventos 'Picking Initiated' e 'Goods Issue for Delivery Posted' para cada lote. Exemplos 7200144003600 | |||
| Tipo de estoque StockType | Indica o status do estoque, como irrestrito, em inspeção de qualidade ou bloqueado. | ||
| Descrição Stock Type categoriza o estoque com base na sua utilização. Os principais tipos são estoque de uso irrestrito (disponível livremente), estoque em inspeção de qualidade (aguardando verificações de qualidade) e estoque bloqueado (indisponível para uso). Os movimentos de mercadoria geralmente envolvem a alteração do tipo de estoque. Acompanhar as alterações no tipo de estoque é fundamental para entender o processo de disponibilidade do estoque. Isso dá suporte direto a atividades como 'Stock Posted to Quality Inspection' e 'Stock Status Changed to Blocked'. Analisar o tempo gasto em cada tipo de estoque, especialmente em 'quality inspection', é essencial para identificar atrasos que afetam a disponibilidade das mercadorias para venda ou produção. Por que isso importa Ele acompanha o status de utilização do estoque, essencial para analisar atrasos na inspeção de qualidade e na disponibilidade do estoque. Onde obter Encontrado na tabela de itens de documentos de material MSEG, no campo INSMK (Stock Type). Exemplos Uso irrestritoInspeção de qualidadeEstoque bloqueado | |||
| Última atualização dos dados LastDataUpdate | O registro de data e hora que indica quando os dados desse registro foram atualizados pela última vez a partir do sistema de origem. | ||
| Descrição Esse atributo registra a data e a hora da extração ou atualização mais recente dos dados a partir do sistema de origem. Ele fornece metadados importantes sobre a atualidade das informações analisadas. Isso ajuda os usuários a entender se estão consultando dados quase em tempo real ou uma fotografia de um período anterior. Em qualquer análise, saber quando os dados foram atualizados é essencial para chegar a conclusões relevantes e precisas. Esse 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 Ele informa aos usuários o quanto os dados estão atualizados, garantindo que as análises se baseiem em informações recentes. Onde obter Esse registro de data e hora é gerado e adicionado durante o processo de extração, transformação e carregamento (ETL) dos dados. Exemplos 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
| Unidade de medida UnitOfMeasure | A unidade usada para medir a quantidade do material, como peças ou quilogramas. | ||
| Descrição A Unit of Measure especifica a unidade do atributo 'Quantity'. Exemplos comuns incluem peças (PC), quilogramas (KG), litros (L) ou caixas (BOX). Isso fornece o contexto essencial para o campo de quantidade. Embora muitas vezes seja usada apenas como uma descrição, esse atributo é importante para garantir a qualidade dos dados e realizar análises nas quais diferentes unidades precisam ser convertidas para um padrão comum. Por exemplo, para calcular com precisão o valor total do estoque sucateado, é preciso entender e, possivelmente, converter quantidades em unidades diferentes. Por que isso importa Ele fornece o contexto essencial para o atributo 'Quantity', garantindo a interpretação correta dos volumes de material. Onde obter Encontrado na tabela de itens de documentos de material MSEG, no campo MEINS (Base Unit of Measure). Exemplos PCKGEAM | |||
Atividades de gestão de estoque
| Atividade | Descrição | ||
|---|---|---|---|
| Ajuste de estoque registrado | Registra uma alteração na quantidade em estoque resultante de uma contagem física ou de outra divergência. Esse evento ajusta explicitamente o estoque contábil para corresponder à contagem física. | ||
| Por que isso importa Esses ajustes são essenciais para manter a precisão do estoque. Uma alta frequência de ajustes indica problemas subjacentes no manuseio do estoque, na segurança ou na entrada de dados. Onde obter Registrado na tabela MATDOC. Identificado por Movement Types (BWART) de inventário físico, como 701 (ganho de inventário) ou 702 (perda de inventário). Captura Capturado a partir de documentos de material na MATDOC com tipos de movimento de ajuste de inventário físico, por exemplo, 701 e 702. Tipo de evento explicit | |||
| Entrada de mercadorias lançada | Marca a entrada inicial de um lote de estoque no armazém, normalmente proveniente 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 essa atividade e outras, como o put-away, é essencial para medir a eficiência da doca de recebimento. Onde obter Registrado na tabela MATDOC. Identificado por tipos específicos de movimentação (BWART), como 101 para recebimentos de pedidos de compra ou 103 para recebimento em estoque bloqueado. Captura Capturado a partir de documentos de material na MATDOC, com os tipos de movimentação correspondentes ao recebimento de mercadorias. Tipo de evento explicit | |||
| Estoque em inspeção de qualidade liberado | Indica que um lote foi aprovado na inspeção de qualidade e agora está disponível para uso ou put-away. Isso é registrado como uma transferência explícita do estoque de qualidade para outro tipo de estoque, como uso irrestrito. | ||
| Por que isso importa Este marco indica a conclusão do processo de qualidade, tornando o estoque disponível. Atrasos nessa etapa podem causar problemas significativos nas operações seguintes de produção ou atendimento de pedidos. Onde obter Registrado na tabela MATDOC como uma transferência de estoque. Normalmente identificado pelo tipo de movimentação (BWART) 321, que transfere o estoque de 'Quality Inspection' para 'Unrestricted-use'. Captura Capturado a partir de documentos de material na MATDOC com o tipo de movimentação 321. Tipo de evento explicit | |||
| Estoque sucateado | Marca a destinação final de um lote de estoque, removendo-o permanentemente dos registros de estoque. Isso geralmente ocorre com estoque vencido, danificado ou obsoleto. | ||
| Por que isso importa Este é um evento final que representa uma perda financeira. Analisar os eventos de sucateamento ajuda a identificar problemas relacionados ao envelhecimento do estoque, aos procedimentos de manuseio ou à previsão de demanda. Onde obter Registrado na tabela MATDOC. Identificado por Movement Types (BWART) de sucateamento, como 551 (de irrestrito), 553 (de QI) ou 555 (de bloqueado). Captura Capturado a partir de documentos de material na MATDOC com tipos de movimento de sucateamento, por exemplo, 551. Tipo de evento explicit | |||
| Saída de mercadoria para entrega registrada | Registra a etapa final do processo de saída, quando a propriedade do lote é transferida para um cliente ou transportadora. Trata-se de uma transação explícita que reduz o estoque e gera um lançamento contábil. | ||
| Por que isso importa Este é um evento essencial de conclusão do processo de atendimento do pedido. Ele é fundamental para medir a entrega no prazo e calcular o tempo total do ciclo de atendimento do pedido. Onde obter Registrado na tabela MATDOC. Identificado pelo Movement Type (BWART) de saída de mercadoria para uma entrega de pedido de venda, geralmente 601. Captura Capturado a partir de documentos de material na MATDOC com o tipo de movimento 601. Tipo de evento explicit | |||
| Saída de mercadoria 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 primário de consumo, que marca o fim do ciclo de vida do estoque dos componentes. É fundamental para analisar a disponibilidade de materiais para a produção e os padrões de consumo. Onde obter Registrado na tabela MATDOC. Identificado por Movement Types (BWART) de saída de mercadoria para uma ordem, como 261. Captura Capturado a partir de documentos de material na MATDOC com o tipo de movimento 261. Tipo de evento explicit | |||
| Transferência para armazenagem lançada | Representa o movimento físico do lote de uma área de recebimento ou preparação até seu local ou bin de armazenamento final. Isso é registrado como um documento de material de transferência no SAP. | ||
| Por que isso importa Conclui o processo de recebimento de entrada. O tempo necessário para concluir essa atividade, conhecido como tempo de put-away, é um KPI crítico para a eficiência do armazém. Onde obter Registrado na tabela MATDOC como uma transferência, geralmente entre locais de armazenamento, por exemplo, Movement Type 311. O movimento específico pode variar conforme a estrutura do armazém. Captura Identificado por documentos de transferência na MATDOC que movem o estoque de um SLoc intermediário ou de recebimento para um SLoc de armazenamento final. Tipo de evento explicit | |||
| Devolução de venda recebida | Registra o retorno ao armazém de um lote anteriormente expedido para um cliente. Trata-se de uma transação explícita que aumenta o estoque. | ||
| Por que isso importa Acompanhar as devoluções é essencial para entender problemas de qualidade do produto e a insatisfação dos clientes. O processo de tratamento e destinação das devoluções também pode ser uma fonte de ineficiência. Onde obter Registrado na tabela MATDOC. Identificado por Movement Types (BWART) de devolução de vendas, como 651 (para irrestrito) ou 653 (para inspeção de qualidade). Captura Capturado a partir de documentos de material na MATDOC com tipos de movimento de devolução de vendas, por exemplo, 651 e 653. Tipo de evento explicit | |||
| Estoque lançado para inspeção de qualidade | Representa a movimentação de um lote recebido para um status de retenção de inspeção de qualidade, tornando-o indisponível para uso até sua liberação. Essa é uma transação explícita no SAP que altera o tipo de estoque do lote. | ||
| Por que isso importa Esta atividade inicia o processo de inspeção de qualidade. A duração entre esse evento e a liberação da inspeção de qualidade é um indicador essencial para entender os atrasos relacionados à qualidade. Onde obter Registrado na tabela MATDOC. Pode ser uma movimentação de recebimento de mercadorias, como 101, com o tipo de estoque (INSMK) definido como 'Q' (Quality Inspection), ou uma transferência de estoque, como 322. Captura Identificado por documentos de material na MATDOC que colocam o estoque no tipo 'Quality Inspection'. Tipo de evento explicit | |||
| Picking iniciado | Marca o início do processo de atendimento do pedido, quando uma tarefa de armazém é criada para separar um lote de seu bin de armazenamento. Geralmente é capturado quando uma Transfer Order ou Warehouse Task é criada. | ||
| Por que isso importa Esta atividade dispara o processo de picking. Analisar o tempo entre esse evento e a conclusão do picking ajuda a medir a eficiência dos operadores do armazém e identificar atrasos. Onde obter Normalmente, isso não está na MATDOC. Em sistemas com Warehouse Management (WM/EWM), é inferido a partir do registro de data e hora de criação de uma Transfer Order (tabela LTAK) ou de uma Warehouse Task. Captura Inferido a partir do registro de criação de uma Transfer Order (no WM) ou de uma Warehouse Task (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, tornando-o indisponível para saída, geralmente devido a danos, solicitações de retenção ou outros motivos. Trata-se de uma transferência explícita no SAP. | ||
| Por que isso importa Evidencia interrupções na disponibilidade do estoque. Uma alta frequência de eventos de bloqueio pode indicar problemas no manuseio, nas condições de armazenamento ou na qualidade do fornecedor. Onde obter Registrado na tabela MATDOC como uma transferência. Geralmente usa o Movement Type (BWART) 344 para mover o estoque de 'Blocked' para 'Unrestricted', e 343 para mover de 'Unrestricted' para 'Blocked'. Esta atividade corresponde ao 343. Captura Identificado por documentos de material na MATDOC com o tipo de movimento 343. Tipo de evento explicit | |||
| Status do estoque alterado para irrestrito | Representa uma alteração no status do lote, liberando-o de um bloqueio ou retenção de qualidade e tornando-o disponível para uso. Isso é registrado como uma transferência explícita. | ||
| Por que isso importa Esta atividade marca a resolução de uma retenção de estoque. O tempo que o estoque permanece bloqueado pode ser analisado para melhorar os processos de resolução. Onde obter Registrado na tabela MATDOC como uma transferência. O Movement Type (BWART) 344 move o estoque de 'Blocked' para 'Unrestricted-use'. Captura Identificado por documentos de material na 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 seu status de 'Unrestricted' para 'Restricted'. Não se trata de um movimento de material, mas de uma alteração nos dados mestres que é registrada. | ||
| Por que isso importa As alterações no status do lote afetam diretamente sua utilização em vendas ou na produção. Analisar essas alterações pode revelar problemas relacionados a estoque próximo do vencimento ou ao controle de qualidade que não envolvem movimentação física. Onde obter Inferido a partir dos logs de alterações das tabelas do Batch Master (MCH1, MCHA). As tabelas CDHDR e CDPOS registram alterações no campo de status do lote (MCH1-ZUSTD). Captura 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 o movimento de um lote de estoque entre diferentes locais ou bins de armazenamento dentro da mesma planta. Trata-se de uma transação explícita que 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 movimentos desnecessários e medir o lead time da reposição de estoque entre locais. Onde obter Registrado na tabela MATDOC. Geralmente identificado pelo Movement Type (BWART) 311 para transferências entre locais de armazenamento. Captura Capturado a partir de documentos de material na MATDOC com tipos de movimento para movimentações internas de estoque, por exemplo, 311. Tipo de evento explicit | |||
Guias de extração
Etapas
- Estabeleça o acesso ao sistema: garanta que você tenha um usuário com as autorizações necessárias para consultar CDS Views no sistema SAP S/4HANA. Normalmente, esse acesso é concedido por um administrador do sistema.
- Escolha um cliente SQL: selecione uma ferramenta de cliente SQL que possa se conectar ao banco de dados SAP HANA. As opções comuns incluem SAP HANA Studio, SAP HANA Database Explorer ou ferramentas de terceiros, como o DBeaver.
- Configure a conexão com o banco de dados: usando seu cliente SQL, crie uma nova conexão com o banco de dados. 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.
- Prepare a consulta SQL: copie a consulta SQL completa fornecida na seção 'query' deste documento para o editor do seu cliente SQL.
- Defina os parâmetros da consulta: localize os valores de espaço reservado na consulta. Você deve substituir
I_MaterialDocumentItem.PostingDate BETWEEN 'YYYYMMDD' AND 'YYYYMMDD'pelo intervalo de datas 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 refletir sua estrutura organizacional. - Execute a consulta: execute a consulta SQL modificada no banco de dados S/4HANA. O tempo de execução varia conforme o intervalo de datas e o volume de dados de estoque no seu sistema.
- Revise os dados: quando a consulta terminar, revise os resultados no seu cliente SQL para garantir que estejam corretos e completos. Verifique se diferentes atividades estão presentes e se os principais atributos foram preenchidos.
- Exporte o Event Log: exporte todo o conjunto de resultados do seu cliente SQL para um arquivo CSV. Garanta que as configurações de exportação usem a codificação UTF-8 para evitar problemas com caracteres.
- Prepare o upload: nomeie as colunas do arquivo CSV exatamente como foram definidas na 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 executar 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 subjacente onde essas views estão armazenadas. - Filtro por intervalo de datas: é fundamental aplicar um filtro de intervalo de datas aos campos
PostingDate,ChangeDocumentCreationDateouWarehouseTaskCreationDate. Um intervalo 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 partes relevantes do negócio. - Volume de dados: lembre-se de que os sistemas de gestão de estoque geram um grande volume de dados. Um intervalo amplo pode resultar em milhões de linhas, afetando potencialmente tanto o sistema de origem durante a extração quanto a performance da sua ferramenta cliente.
- Extended Warehouse Management (EWM): a atividade 'Picking Initiated' depende da CDS View
I_WarehouseTask, que só é preenchida quando você usa o SAP Extended Warehouse Management. Se sua organização usa o módulo Warehouse Management (WM) mais antigo ou apenas Inventory Management (IM), essa atividade específica não será extraída.
a 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 que o acesso direto ao SQL do SAP HANA foi aprovado e que o usuário de extração tem acesso de leitura à MATDOC e às tabelas mestre de lotes exigidas pelo sistema. Confirme o proprietário do esquema físico e substitua [Your SAP HANA schema] pelo nome de esquema aprovado.
- Confirme os campos disponíveis nas tabelas MATDOC e de lotes na versão de destino do SAP S/4HANA. A consulta abaixo usa campos normalmente disponíveis da MATDOC e da MCHA, mas a disponibilidade e a nomenclatura dos campos podem variar conforme a versão, a implantação e o escopo ativado. Substitua todos os campos marcados como [Configure based on your system] antes da execução.
- Defina o período de extração substituindo [Start timestamp] e [End timestamp] por valores de timestamp no formato ISO. Use um período de três a seis meses na extração inicial e amplie-o depois de validar o volume e a performance.
- Execute a consulta em um cliente SQL aprovado, no SAP HANA Database Explorer ou em uma ferramenta de banco de dados autorizada equivalente. Restrinja o resultado aos códigos de empresa, plantas, tipos de documento ou tipos de movimentação necessários, substituindo os espaços reservados 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 entrada de mercadorias, inspeção de qualidade, liberação, armazenagem, transferência interna, estoque bloqueado, estoque de utilização livre, ajuste de estoque, separação, saída para entrega, saída para produção, devolução de vendas e sucateamento.
- Valide se cada linha de saída contém InventoryBatchLot, ActivityName e EventTime. Confirme se o identificador do lote é estável o suficiente para servir como identificador de caso do ProcessMind. Se o caso de negócio exigir material, planta ou local de armazenamento para distinguir valores de lote idênticos 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 fusos horários. Os registros da MATDOC documentam lançamentos, portanto registros de estorno e cancelamento podem aparecer como eventos separados, a menos que sejam explicitamente excluídos ou mapeados.
- Exporte o resultado 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. Preserve os timestamps em um formato ISO 8601 consistente e mantenha os zeros à esquerda nos valores de material, lote, planta e local de armazenamento.
- Carregue o Event Log resultante no ProcessMind e mapeie InventoryBatchLot como identificador de caso, ActivityName como atividade e EventTime como timestamp do evento. Não dependa do 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 lotes do SAP HANA. A consulta lê a MATDOC e faz uma junção com 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 do lote no sistema de destino.
- Intervalo de datas: 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 tardios e depois elimine duplicidades usando os identificadores de documento e item configurados.
- Filtros obrigatórios: configure código da empresa, planta, tipo de documento de material, tipo de movimentação, presença do lote e data de lançamento de acordo com o escopo do processo. Os campos de código da empresa e tipo de documento devem ser confirmados para a versão instalada antes de serem adicionados à consulta.
- Mapeamento de atividades: os significados dos tipos de movimentação dependem da configuração. Mantenha uma tabela de mapeamento aprovada ou substitua as listas de tipos de movimentação na consulta pelos valores usados pelo negócio. Não trate as listas de exemplo como semântica universal do SAP.
- Escopo de lotes: a consulta exclui linhas sem valor de lote porque o identificador de 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 é emitido como uma linha de evento. A consulta não infere separação, decisões de qualidade, alterações de status do lote ou outras atividades a partir de registros posteriores.
- Alterações no mestre de lotes: as alterações de status do lote não são representadas de forma confiável apenas pela MATDOC. Configure um documento de alteração ou uma fonte de histórico de lotes para a atividade Batch Status Changed. A consulta inclui uma ramificação de espaço reservado que deve ser conectada a uma fonte verificada antes da execução.
- Separação: o início da separação geralmente pertence aos dados de execução do armazém, e não a um lançamento na MATDOC. Configure uma fonte verificada de tarefas do armazém ou ordens de transferência e substitua a ramificação de espaço reservado antes da execução.
- Performance: filtre por timestamp ou data de lançamento, planta, código da empresa e tipos de movimentação relevantes. Selecione apenas as colunas necessárias, evite varreduras históricas irrestritas e execute durante uma janela de carga aprovada. A extração particionada ou incremental é recomendada para grandes volumes de MATDOC.
- 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 execução do armazém ou histórico de alterações usada para as duas atividades que não vêm da MATDOC. Confirme que 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 do upload 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 coloque credenciais no texto da consulta.
a 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: faça login no seu sistema SAP S/4HANA. Abra o Editor ABAP usando o código de transação
SE38. - Crie um novo programa: informe um nome para o novo programa no campo 'Program', por exemplo,
Z_PM_INVENTORY_EXTRACT, e clique no botão 'Create'. Forneça um título descritivo, defina o 'Type' como 'Executable Program' e salve o programa em um pacote. - Defina os parâmetros do programa: no editor do programa, defina a tela de seleção que servirá como interface do usuário para a extração. Isso permite que os usuários especifiquem parâmetros como o intervalo de datas e a planta para a extração dos dados.
- Implemente a lógica de extração: copie o código ABAP completo fornecido na seção 'Query' e cole-o no Editor ABAP. Esse código foi projetado para selecionar dados das 14 atividades de estoque necessárias em várias tabelas SAP.
- Entenda a lógica principal: o programa seleciona dados para cada atividade de estoque distinta em suas tabelas de origem, como
MKPFeMSEGpara movimentações de materiais ouCDHDReCDPOSpara alterações em dados mestre. Depois, cada seleção é combinada usandoUNION 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. Ela usa a instrução
OPEN DATASETpara criar um arquivo no servidor de aplicação SAP. Você deve especificar 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). Execute-o pressionando F8. Na tela de seleção, informe o intervalo de datas desejado e outros filtros relevantes, como Plant ou Company Code.
- Execute como um job em segundo plano: para grandes volumes de dados, é fundamental executar o programa como um job em segundo plano para evitar timeouts da sessão. Na tela de execução (F8), acesse o menu
Program -> Execute in Background. Agende o job para ser executado fora do horário de pico. - Recupere o arquivo de saída: quando o job terminar, localize o arquivo de saída 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 baixar o arquivo do servidor de aplicação para o seu computador. - Prepare o upload: abra o arquivo baixado em um editor de texto ou programa de planilhas. Garanta que ele esteja formatado como um arquivo CSV com uma linha de cabeçalho, usando vírgula como delimitador e aspas duplas como qualificador de texto. Verifique se os nomes das colunas atendem aos requisitos antes de fazer o upload na ferramenta de Process Mining.
Configuração
- Intervalo da data de lançamento: este é o parâmetro mais importante. Recomendamos extrair os dados em lotes gerenciáveis, como 3 a 6 meses por vez, para garantir uma boa performance e evitar timeouts do sistema.
- Filtro de planta: é altamente recomendável filtrar por uma ou mais plantas específicas (
WERKS). Executar a extração para todas as plantas simultaneamente pode consumir muitos recursos. - Filtro de código da empresa: você pode adicionar um filtro opcional para Company Code (
BUKRS) e limitar ainda mais o escopo dos dados se sua organização operar com vários códigos de empresa no mesmo sistema. - Caminho do arquivo no servidor de aplicação: o programa ABAP exige um caminho de diretório válido e predefinido no servidor de aplicação SAP. Garanta que o usuário do sistema SAP (
SY-UNAME) tenha as permissões necessárias no sistema operacional para gravar arquivos nesse diretório. - Autorizações: o usuário que executar essa extração precisa de autorizações para a transação
SE38, para criar e executar o programa, acesso de exibição às tabelasMKPF,MSEG,MCH1,CDHDR,CDPOS,LTAKeLTAP, além da capacidade de agendar jobs em segundo plano (SM36/SM37).
a 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 obter insights valiosos sobre suas operações de gestão de estoque. Comece hoje sua jornada para aumentar a eficiência e reduzir custos.
Otimize sua 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 minutos