Seu Template de dados do planejamento da produção
Seu Template de dados do planejamento da produção
- Atributos recomendados para analisar o planejamento da produção
- Principais atividades do planejamento da produção a serem acompanhadas
- Orientações detalhadas para extrair dados do SAP S/4HANA
Atributos do planejamento da produção
| Nome | Descrição | ||
|---|---|---|---|
| Atividade Activity | O nome do evento ou da tarefa específica que ocorreu em determinado momento do processo de planejamento da produção. | ||
| Descrição Este atributo registra as etapas e os marcos distintos do ciclo de vida da ordem de produção. Os exemplos incluem “Ordem de produção criada”, “Disponibilidade de material verificada”, “Produção iniciada” e “Ordem encerrada financeiramente”. Cada atividade representa uma ação específica ou uma mudança de status documentada no sistema. Analisar a sequência e a frequência dessas atividades é a base do Process Mining. Isso ajuda a visualizar o fluxo do processo, identificar desvios do procedimento padrão e localizar atividades que causam atrasos ou exigem retrabalho frequente, como “Plano de produção ajustado”. Por que isso importa Define as etapas do processo, permitindo descobrir e visualizar o Workflow real da produção e suas variações. Onde obter Derivado de mudanças de status em tabelas como JEST e JCDS, dos códigos de transação usados, como CO01 para criação, ou de registros específicos de confirmação em AFRU. Exemplos Ordem de produção criadaOrdem de produção liberadaProdução iniciadaConfirmação final registradaEntrada de mercadorias registrada | |||
| Hora de início StartTime | O registro de data e hora que indica quando uma atividade ou um evento específico começou. | ||
| Descrição Este atributo fornece a data e a hora de cada evento registrado no processo de produção. É a base temporal de todas as análises de processo orientadas por tempo. A hora de início é essencial para calcular as durações entre atividades, medir o tempo de ciclo total de uma ordem de produção e entender o momento em que os eventos ocorrem. Ela permite analisar gargalos, tempos de espera e cumprimento do cronograma comparando os registros reais com as datas planejadas. Por que isso importa Fornece o contexto cronológico de todos os eventos, permitindo analisar a performance, as durações e os gargalos do processo. Onde obter Essas informações normalmente são encontradas nas tabelas de documentos de alteração (CDHDR/CDPOS), para mudanças de status, nas tabelas de confirmação (AFRU), para etapas de execução, e nas tabelas de cabeçalho (AFKO), para datas de criação. Exemplos 2023-10-26T09:00:00Z2023-10-26T14:30:00Z2023-10-27T08:15:00Z | |||
| Ordem de produção ProductionOrder | O identificador exclusivo de uma ordem de produção, usado como identificador principal do caso no processo de planejamento da produção. | ||
| Descrição O número da ordem de produção é uma chave exclusiva gerada pelo SAP S/4HANA para gerenciar e acompanhar todas as atividades relacionadas à fabricação de uma quantidade específica de produto. Ele conecta todos os eventos relacionados, desde o planejamento e a liberação até a execução e a liquidação final. No Process Mining, esse atributo é essencial para agrupar todos os eventos relacionados em uma única instância de processo de ponta a ponta. Analisar os processos por ordem de produção permite medir indicadores de performance, como tempo de ciclo e cumprimento do cronograma, além de identificar gargalos que afetam execuções específicas. Por que isso importa É o atributo fundamental que conecta todas as etapas do processo, permitindo uma análise completa, no nível do caso, de todo o ciclo de vida da produção, do início ao fim. Onde obter É o número da ordem de produção, normalmente encontrado em tabelas SAP como AFKO (campo AUFNR) e AFPO. Exemplos 100056710008341001299 | |||
| Sistema de origem SourceSystem | O sistema do qual os dados de planejamento da produção foram extraídos. | ||
| Descrição Este atributo identifica a origem dos dados, o que é essencial em ambientes com vários sistemas integrados. Neste processo, normalmente será a instância específica do SAP S/4HANA. Em um contexto mais amplo de análise de dados, conhecer o sistema de origem ajuda a garantir a integridade dos dados e fornece o contexto adequado ao combinar dados de fontes diferentes. É um elemento fundamental dos metadados para governança e rastreabilidade dos dados. Por que isso importa Fornece metadados essenciais para a governança dos dados, garantindo clareza sobre a origem e o contexto dos dados do processo. Onde obter Normalmente é um valor estático adicionado durante a extração dos dados para identificar o cliente SAP S/4HANA e o ID do sistema (SID). Exemplos S4P_100S4H_PRD_200S4Q_300 | |||
| Última atualização dos dados LastDataUpdate | O registro de data e hora que indica quando os dados foram atualizados ou extraídos pela última vez do sistema de origem. | ||
| Descrição Este atributo registra a data e a hora da extração mais recente dos dados. É um metadado essencial que informa aos usuários o quanto os dados analisados estão atualizados. Saber quando ocorreu a última atualização é fundamental para interpretar a análise corretamente. Isso ajuda a entender se você está visualizando informações em tempo real ou um retrato de um momento específico, o que afeta a relevância das descobertas e das decisões tomadas com base nos dados. Por que isso importa Garante que os usuários saibam o quão atuais são os dados, algo essencial para tomar decisões de negócio precisas e relevantes. Onde obter Este registro de data e hora é gerado e adicionado durante o processo de extração, transformação e carregamento (ETL) dos dados. Exemplos 2024-05-21T02:00:00Z2024-05-22T02:00:00Z2024-05-23T02:00:00Z | |||
| Centro Plant | A unidade fabril ou o local onde a ordem de produção está sendo executada. | ||
| Descrição O centro é uma unidade organizacional no SAP que representa um local ou uma unidade de produção. Cada ordem de produção é atribuída a um centro específico, onde as atividades de fabricação serão realizadas. Este atributo é essencial para análises comparativas entre diferentes locais de fabricação. Ao segmentar os dados do processo por centro, as organizações podem comparar a performance, identificar problemas ou boas práticas específicas de cada local e entender variações regionais de eficiência, capacidade ou cumprimento dos padrões. Por que isso importa Permite comparar a performance entre diferentes locais de produção, ajudando a identificar e compartilhar boas práticas ou resolver problemas específicos de cada local. Onde obter Encontrado na tabela de cabeçalho da ordem de produção AFKO (campo DWERK). Exemplos 100017102000 | |||
| Centro de trabalho WorkCenter | A máquina específica, o grupo de máquinas ou a área de montagem responsável por uma operação. | ||
| Descrição Um centro de trabalho representa uma unidade operacional específica dentro de um centro, onde uma etapa da produção é executada. Pode ser uma única máquina, uma linha de produção ou um grupo de funcionários. Analisar os dados do processo por centro de trabalho é essencial para identificar gargalos de capacidade e otimizar a alocação de recursos. Isso ajuda a responder quais centros de trabalho estão sobrecarregados, quais estão subutilizados e onde os atrasos ocorrem com mais frequência durante a execução da produção. Esse dado é fundamental para o Dashboard de Identificação de Gargalos de Capacidade. Por que isso importa Ajuda a localizar máquinas ou linhas de produção específicas que são gargalos, permitindo melhorias direcionadas na capacidade e na utilização de recursos. Onde obter Encontrado nos dados de operações de uma ordem de produção, na tabela AFVC (campo ARBPL). Exemplos WC-ASSEMBLY-01WC-MILLING-05WC-PACKING | |||
| Data planejada de término PlannedEndDate | A data de conclusão programada para a ordem de produção conforme o plano inicial. | ||
| Descrição A data planejada de término é a data-alvo até a qual todas as atividades de produção de uma ordem devem ser concluídas. Essa data é definida durante a etapa de programação do planejamento da produção. Este atributo é essencial para medir o cumprimento do cronograma. Comparando a data planejada de término com o registro real de conclusão, as organizações podem calcular o KPI de Taxa de Cumprimento do Cronograma da Produção e identificar ordens atrasadas. Essa análise é fundamental para melhorar a precisão do planejamento e a satisfação dos clientes. Por que isso importa Serve como referência para medir o cumprimento do cronograma, ajudando a avaliar a precisão do planejamento e a eficiência da execução. Onde obter Encontrado na tabela de cabeçalho da ordem de produção AFKO (campo GLTRP). Exemplos 2023-11-152023-12-012024-01-20 | |||
| Número do material MaterialNumber | O identificador exclusivo do produto que está sendo fabricado na ordem de produção. | ||
| Descrição O número do material especifica o item que a ordem de produção pretende fabricar. Ele conecta o processo de produção aos dados mestres do material, incluindo sua lista técnica (BOM) e suas informações de roteiro. Analisar o processo por número do material ajuda a identificar se determinados produtos estão mais sujeitos a atrasos, retrabalho ou falta de materiais. Isso permite otimizar o processo por produto, ajustando parâmetros de planejamento ou melhorando a cadeia de suprimentos de componentes específicos. Por que isso importa Permite filtrar e analisar os dados com base no produto fabricado, revelando ineficiências ou gargalos específicos de cada produto. Onde obter Encontrado na tabela de itens da ordem de produção AFPO (campo MATNR). Exemplos RM-1001FG-2050SA-3100-B | |||
| Status da ordem OrderStatus | O status atual de processamento da ordem de produção, como Criada, Liberada ou Concluída tecnicamente. | ||
| Descrição O status da ordem indica a etapa geral do ciclo de vida da ordem de produção. Ele resume os vários status do sistema e dos usuários aplicados à ordem. Os status comuns incluem CRTD (Criada), REL (Liberada), CNF (Confirmada), TECO (Concluída tecnicamente) e CLSD (Fechada). Analisar o status atual das ordens é útil para entender o cenário de trabalho em andamento. No Process Mining, acompanhar as transições entre esses status ao longo do tempo gera o registro de atividades e permite visualizar em detalhes o fluxo do processo e o tempo gasto em cada etapa. Por que isso importa Fornece uma visão geral da etapa do ciclo de vida da ordem e é fundamental para derivar a sequência de atividades do Process Mining. Onde obter Derivado do status do sistema armazenado na tabela JEST, vinculado pelo número do objeto em AFKO (campo OBJNR). Exemplos CRTDRELTECOCLSD | |||
| Data planejada de início PlannedStartDate | A data de início programada para a ordem de produção conforme o plano inicial. | ||
| Descrição A data planejada de início é a data-alvo em que as atividades de produção de uma ordem devem começar. Ela é um dos principais resultados do processo de programação. Este atributo fornece a referência inicial para a análise do cumprimento do cronograma. Comparar a data planejada de início com a hora real de início ajuda a entender atrasos nas etapas iniciais, como atrasos na preparação dos materiais ou na liberação da ordem, que podem afetar todo o cronograma de produção. Por que isso importa Fornece uma referência para medir o cumprimento do horário de início, algo essencial para identificar atrasos em etapas de pré-produção, como a liberação da ordem e a disponibilidade de materiais. Onde obter Encontrado na tabela de cabeçalho da ordem de produção AFKO (campo GSTRP). Exemplos 2023-11-102023-11-252024-01-15 | |||
| É retrabalho IsRework | Um indicador que informa se uma ordem de produção envolveu retrabalho ou ajustes significativos no plano após o início. | ||
| Descrição Este atributo booleano é derivado para identificar ordens de produção que passaram por ações corretivas ou mudanças de plano depois que a produção já havia começado. Isso pode ser acionado por uma atividade explícita de retrabalho ou por um evento de “Plano de produção ajustado” ocorrido depois de “Produção iniciada”. Este indicador é fundamental para calcular o KPI de Taxa de Retrabalho da Produção e para o Dashboard de Retrabalho e Revisões da Produção. Ele permite filtrar e analisar facilmente casos problemáticos, ajudando a descobrir as causas-raiz de problemas de qualidade ou desvios do processo que levam a retrabalho dispendioso. Por que isso importa Isola os casos com retrabalho, permitindo uma análise direcionada para entender e reduzir problemas de qualidade, desvios do processo e custos associados. Onde obter Campo calculado. Definido como true quando uma atividade de “Plano de produção ajustado” ocorre depois de uma atividade de “Produção iniciada” no mesmo caso, ou quando um tipo específico de ordem de retrabalho é usado. Exemplos truefalse | |||
| Está no prazo IsOnTime | Um indicador que informa se a ordem de produção foi concluída na data planejada de término ou antes dela. | ||
| Descrição Este atributo booleano calculado mede diretamente o cumprimento do cronograma comparando a data real de conclusão com a data planejada de término. Ele fornece um resultado binário claro sobre o cumprimento do prazo de cada ordem de produção. Este atributo é a base do KPI de Taxa de Cumprimento do Cronograma da Produção. Ele simplifica a análise ao permitir segmentar facilmente as ordens concluídas no prazo e as atrasadas, ajudando a identificar características ou caminhos de processo associados aos atrasos. Por que isso importa Fornece uma medida clara e simples do cumprimento do cronograma de cada ordem, facilitando a análise das causas-raiz dos atrasos. Onde obter Campo calculado. Definido como true quando o registro de data e hora da atividade “Ordem concluída tecnicamente” é menor ou igual ao atributo “Data planejada de término”. Exemplos truefalse | |||
| Hora de término EndTime | O registro de data e hora que indica quando uma atividade ou um evento específico foi concluído. | ||
| Descrição Este atributo fornece a data e a hora de conclusão de cada evento registrado. Ele complementa a hora de início e define a duração das atividades. A hora de término é essencial para calcular o tempo preciso de processamento de cada atividade, um dado importante para analisar a capacidade e a utilização de recursos. Ela ajuda a diferenciar o tempo de trabalho ativo do tempo ocioso ou de espera, levando a uma identificação mais precisa dos gargalos. Por que isso importa Permite calcular a duração precisa das atividades, algo essencial para analisar a eficiência dos recursos e identificar gargalos no processo. Onde obter Encontrado nas tabelas de confirmação (AFRU), para etapas de execução. Para outros eventos, pode ser igual à hora de início quando o evento é instantâneo. Exemplos 2023-10-26T09:45:00Z2023-10-26T15:00:00Z2023-10-27T10:30:00Z | |||
| Prioridade da produção ProductionPriority | Um código ou valor atribuído a uma ordem de produção para indicar sua urgência ou importância. | ||
| Descrição A prioridade da produção é usada por planejadores e programadores para ordenar e priorizar ordens, especialmente quando os recursos são limitados. Idealmente, uma ordem de maior prioridade deve ser processada antes de uma ordem de menor prioridade. Analisar este atributo ajuda a avaliar se as prioridades atribuídas estão sendo seguidas no chão de fábrica. O Dashboard de Consistência da Priorização da Produção compara a sequência de processamento com a prioridade atribuída para identificar inconsistências, contribuindo para uma disciplina de programação melhor e um alinhamento maior entre planejamento e execução. Por que isso importa Ajuda a determinar se a programação da produção segue as prioridades do negócio, garantindo que as ordens críticas sejam aceleradas conforme planejado. Onde obter Geralmente é um campo personalizado ou baseado em outros parâmetros da ordem. A localização específica depende da configuração. Exemplos AltaMédiaBaixa15 | |||
| Quantidade confirmada TotalConfirmedQuantity | A quantidade total do material confirmada como produzida para a ordem. | ||
| Descrição Este atributo representa a quantidade acumulada de produtos acabados ou semiacabados informada por meio das confirmações de produção. Ele acompanha o progresso da ordem em direção à meta de conclusão. Comparar a quantidade confirmada com a quantidade planejada ajuda a monitorar o progresso da produção e identificar problemas ou discrepâncias de rendimento. É uma medida fundamental da produção e é usada em vários cálculos de performance, incluindo taxas de sucata e eficiência. Por que isso importa Acompanha a produção real da ordem, algo essencial para monitorar o progresso, calcular o rendimento e identificar discrepâncias. Onde obter Agregado a partir dos registros de confirmação em AFRU (campo LMNGA para a quantidade produzida). Exemplos 9801000501200 | |||
| Status de disponibilidade de materiais MaterialAvailabilityStatus | Indica se todos os materiais necessários para a ordem de produção estão disponíveis. | ||
| Descrição Este status reflete o resultado da verificação de disponibilidade de materiais realizada para uma ordem de produção. Ele pode indicar que todos os materiais estão disponíveis, que alguns estão faltando ou que a verificação ainda não foi realizada. Um status de “falta” é um importante sinal de possíveis atrasos. Este atributo é fundamental para o Dashboard de Análise do Impacto da Falta de Materiais. Ele ajuda a quantificar os atrasos causados pela indisponibilidade de materiais, relacionando um status de falta ao tempo entre a liberação da ordem e o início da produção. Melhorar essa métrica é essencial para tornar o fluxo de produção mais estável. Por que isso importa Explica diretamente os atrasos entre a liberação da ordem e o início da produção, ajudando a quantificar o impacto de problemas da cadeia de suprimentos na fabricação. Onde obter É um status, geralmente derivado do status consolidado dos componentes de materiais. Pode ser encontrado no status do sistema (JEST), com status como “MSPT” (Falta de material). Exemplos DisponívelFaltaNão verificado | |||
| Tipo de ordem OrderType | Uma classificação da ordem de produção que define sua finalidade e controla seu processamento. | ||
| Descrição O tipo de ordem é um elemento essencial da configuração do SAP PP que determina como uma ordem de produção será tratada pelo sistema. Ele controla intervalos de numeração, seleção de dados mestres, parâmetros de custos e regras de liquidação. Os exemplos incluem ordens de produção padrão, ordens de retrabalho e ordens de protótipo. Analisar o processo por tipo de ordem permite comparar a performance e o fluxo de diferentes tipos de processos de produção. Isso pode revelar se as ordens de retrabalho levam muito mais tempo ou se determinados tipos de ordem estão mais sujeitos a ajustes de planejamento, gerando insights valiosos para melhorias direcionadas no processo. Por que isso importa Permite segmentar a análise pela finalidade de negócio da ordem, possibilitando comparar a produção padrão, o retrabalho e outros processos. Onde obter Encontrado na tabela de cabeçalho da ordem de produção AFKO (campo AUART). Exemplos PP01PP03ZP01 | |||
| Usuário User | O ID do sistema do usuário que criou, alterou ou confirmou um evento da ordem de produção. | ||
| Descrição Este atributo registra o ID do usuário SAP associado a uma transação ou mudança de status específica, como liberar uma ordem ou inserir uma confirmação. Ele fornece rastreabilidade das ações realizadas no sistema. Analisar as atividades por usuário ajuda a entender a distribuição da carga de trabalho, identificar necessidades de treinamento e garantir a conformidade com os procedimentos. Por exemplo, pode mostrar se determinados usuários participam com frequência de ajustes de plano ou se os atrasos estão associados a equipes específicas. Por que isso importa Fornece responsabilização e permite analisar a carga de trabalho, o comportamento específico dos usuários e possíveis oportunidades de treinamento. Onde obter Normalmente encontrado nos cabeçalhos de documentos de alteração (CDHDR, campo UNAME) ou nos registros de confirmação (AFRU, campo PERNR para o número do funcionário). Exemplos CB9980000021JSMITHPLANNER01 | |||
Atividades de planejamento da produção
| Atividade | Descrição | ||
|---|---|---|---|
| Confirmação final registrada | Essa atividade marca a confirmação da última operação no roteiro da ordem de produção. Ela indica que todas as etapas planejadas de fabricação foram concluídas no chão de fábrica. | ||
| Por que isso importa A confirmação final é um marco importante que indica o fim do trabalho físico de produção. Ela costuma ser usada como um ponto final mais preciso para medir o tempo de ciclo no chão de fábrica antes da entrada final de mercadorias. Onde obter Inferido a partir dos dados de confirmação na tabela AFRU. É identificado como o registro de confirmação da última sequência de operação (AFVC-VPLNR) que tem o indicador de 'confirmação final' (AFRUD-AUERU) definido. Captura Encontre a última confirmação de operação na AFRU com o indicador de confirmação final definido. Tipo de evento inferred | |||
| Entrada de mercadorias registrada | Esse evento registra o recebimento do produto acabado da linha de produção no estoque. Ele aumenta formalmente o nível de estoque do material produzido. | ||
| Por que isso importa Este é um marco essencial que representa a conclusão da produção. Muitas vezes, ele é considerado o fim do ciclo de produção para medir a entrega no prazo e o lead time geral. Onde obter Este é um lançamento financeiro explícito registrado nas tabelas de documentos de materiais MSEG (nível do item) e MKPF (nível do cabeçalho), normalmente com o tipo de movimento 101. Esses documentos são vinculados à ordem de produção. Captura Encontre o documento de material na MSEG vinculado à ordem com o tipo de movimento 101. Tipo de evento explicit | |||
| Ordem de produção criada | Esta é a criação inicial da ordem de produção no sistema, que funciona como a solicitação formal para produzir uma quantidade especificada de um produto. Esse evento é capturado explicitamente quando um usuário salva uma nova ordem, definindo seu status inicial como CRTD (Created). | ||
| Por que isso importa Marca o início do ciclo de vida da ordem de produção. Analisar o tempo entre a criação e a liberação ajuda a identificar atrasos administrativos ou de planejamento antes que a produção seja programada formalmente. Onde obter Esse evento é registrado na tabela AUFK (dados mestre da ordem) com a data de criação (ERDAT). O status de criação (CRTD) é registrado nas tabelas JEST e JCDS, vinculado pelo número do objeto da ordem (OBJNR). Captura Registro de data e hora de AUFK-ERDAT ou do log de alteração de status para 'CRTD' em JCDS. Tipo de evento explicit | |||
| Ordem de produção liberada | Este é um marco importante em que a ordem de produção é aprovada e disponibilizada para execução no chão de fábrica. A liberação permite iniciar baixas de mercadorias, confirmações e outras etapas de execução. | ||
| Por que isso importa Esse evento marca o início oficial do processo de produção executável e é um ponto essencial para medir lead times. O tempo entre a criação e a liberação é um KPI importante da eficiência de pré-produção. Onde obter A liberação é acionada explicitamente por um usuário ou job do sistema, resultando no status REL. Essa alteração de status é registrada com um registro de data e hora na tabela JCDS. A data de liberação também costuma ser armazenada em AFKO-FTRMI. Captura Registro de data e hora da alteração de status para 'REL' na tabela JCDS. Tipo de evento inferred | |||
| Ordem tecnicamente concluída | Esta é uma etapa administrativa de encerramento que impede novas alterações logísticas na ordem, como movimentos de mercadorias ou confirmações. Do ponto de vista logístico, a ordem é considerada concluída. | ||
| Por que isso importa TECO é um ponto final definitivo do processo de produção, essencial para calcular o tempo total de ciclo da ordem de produção. Ele indica que todas as atividades logísticas foram concluídas e que a ordem está pronta para o fechamento financeiro. Onde obter Isso é acionado quando um usuário define o status como TECO (Technically Completed). O evento é capturado como uma alteração de status na tabela JCDS, com o registro de data e hora correspondente. Captura Registro de data e hora da alteração de status para 'TECO' na tabela JCDS. Tipo de evento inferred | |||
| Plano de produção ajustado | Representa uma alteração significativa feita na ordem de produção após sua liberação, como mudança na quantidade, nas datas ou na lista técnica de materiais. Isso é capturado pela análise dos documentos de alteração. | ||
| Por que isso importa Ajustes frequentes podem indicar instabilidade no planejamento ou demanda volátil. Essa atividade é a base do KPI de taxa de revisão do plano de produção e ajuda a identificar fontes de variabilidade do processo. Onde obter Inferido a partir dos logs de alteração registrados nas tabelas CDHDR (cabeçalho do documento de alteração) e CDPOS (itens do documento de alteração) para o objeto da ordem de produção (AUFK ou AFPO). Alterações feitas após a data de liberação são consideradas ajustes. Captura Identifique alterações na CDHDR/CDPOS em campos importantes, como quantidade e datas, após o evento de liberação. Tipo de evento inferred | |||
| Produção iniciada | Indica o início das atividades físicas de produção da ordem. Normalmente, isso é inferido a partir da primeira confirmação no chão de fábrica ou da primeira baixa de mercadorias de componentes para a ordem. | ||
| Por que isso importa Essa atividade marca a transição do planejamento para a execução. Ela é essencial para acompanhar a aderência ao cronograma, comparando a data real de início com a data planejada. Onde obter Este é um evento inferido. Normalmente, ele é derivado do registro de data e hora mais antigo de um lançamento de movimento de mercadorias (tabela MSEG, tipo de movimento 261) ou de um lançamento de confirmação de tempo (tabela AFRU) associado à ordem. Captura Registro de data e hora mais antigo da AFRU (confirmações) ou da MSEG (movimentos de mercadorias) para a ordem. Tipo de evento inferred | |||
| Confirmação de produção registrada | Representa o registro do progresso de uma operação específica dentro da ordem de produção. Isso inclui registrar as quantidades produzidas, as perdas e o tempo gasto em um centro de trabalho. | ||
| Por que isso importa As confirmações oferecem visibilidade em tempo real do progresso no chão de fábrica e são essenciais para acompanhar o status da produção. Analisar a frequência e o momento das confirmações ajuda a monitorar o fluxo e identificar atrasos entre as operações. Onde obter Cada confirmação é registrada explicitamente como uma entrada na tabela AFRU (confirmações de conclusão da ordem), com um registro de data e hora (BUDAT, UZEIT) e detalhes da operação. Captura Registrado como um documento na tabela AFRU. Tipo de evento explicit | |||
| Disponibilidade de materiais verificada | Representa a ação do sistema ou do usuário de verificar se todos os componentes necessários para a ordem de produção estão disponíveis nas quantidades exigidas e no prazo. Normalmente, essa é uma verificação automatizada na criação ou liberação da ordem, ou uma verificação manual que atualiza o status da ordem. | ||
| Por que isso importa Identificar antecipadamente a falta de materiais é essencial para um planejamento proativo. Acompanhar essa atividade ajuda a entender como a disponibilidade de materiais afeta a capacidade de liberar ordens e iniciar a produção no prazo. Onde obter Inferido a partir do status da ordem. Um status como MACM (Material committed) ou uma alteração na data de disponibilidade do material (AFKO-MSERF) indica que uma verificação foi realizada. A ausência de um status de falta de material (MSPT) também pode indicar disponibilidade. Captura Inferido a partir de alterações de status relacionadas ao comprometimento de materiais ou à execução da transação COMAC. Tipo de evento inferred | |||
| Necessidades de capacidade planejadas | Essa atividade envolve programar as operações da ordem de produção e verificar a disponibilidade de capacidade nos centros de trabalho necessários. O sistema avalia as cargas de capacidade dos centros de trabalho e as nivela quando configurado, determinando as datas de produção. | ||
| Por que isso importa Essa etapa é essencial para garantir um cronograma de produção viável. Analisar sua duração e seus resultados ajuda a identificar gargalos de capacidade e melhora a precisão do planejamento de recursos. Onde obter Geralmente, isso é inferido pelo status do sistema que indica que a ordem foi programada, como SETC (Scheduling carried out). O preenchimento das datas programadas de início e fim (AUFK-GSTRP, AUFK-GLTRP) também sinaliza a conclusão dessa atividade. Captura Inferido pelo preenchimento das datas programadas em AUFK/AFKO ou por um status relacionado à programação em JEST. Tipo de evento inferred | |||
| Ocorreu falta de material | Esse evento indica que o processo de produção foi afetado ou interrompido pela indisponibilidade de um ou mais componentes necessários. O sistema define um status específico na ordem para refletir essa situação. | ||
| Por que isso importa Acompanhar faltas de materiais é essencial para a análise do impacto da falta de materiais. Isso ajuda a quantificar atrasos causados por problemas na cadeia de suprimentos e a melhorar o planejamento de materiais. Onde obter Isso é inferido pela ativação do status 'MSPT' (Material shortage) para a ordem de produção. O registro de data e hora dessa alteração de status pode ser encontrado na tabela JCDS. Captura Registro de data e hora da alteração de status para 'MSPT' na tabela JCDS. Tipo de evento inferred | |||
| Ocorreu uma parada não planejada | Esse evento calculado representa um período significativo de ociosidade durante a fase de execução da produção. Ele não é um evento explícito do sistema, mas é derivado da identificação de longos intervalos entre confirmações de produção consecutivas. | ||
| Por que isso importa Ajuda a monitorar interrupções não planejadas, como quebras de máquinas ou problemas de qualidade. Identificar paradas frequentes ou longas é essencial para melhorar a estabilidade e o throughput do chão de fábrica. Onde obter Isso é calculado analisando os registros de data e hora de atividades consecutivas de 'Confirmação de produção registrada' na tabela AFRU. Um intervalo que exceda um limite predefinido é sinalizado como uma parada não planejada. Captura Calcule a diferença de tempo entre registros de data e hora de confirmações consecutivas (AFRU-BUDAT/UZEIT). Tipo de evento calculated | |||
| Ordem de produção cancelada | Representa o cancelamento de uma ordem de produção antes de sua conclusão. Este é um estado final alternativo e malsucedido do processo. | ||
| Por que isso importa Analisar ordens canceladas pode revelar problemas no planejamento da demanda, nos dados mestre ou no processo de vendas. Taxas elevadas de cancelamento podem indicar problemas sistêmicos que precisam ser tratados. Onde obter Isso é inferido a partir da definição do status do sistema CACL (Cancellation) na tabela JCDS. Como alternativa, um indicador de exclusão (AUFK-LOEKZ) também pode indicar cancelamento. Captura Registro de data e hora da alteração de status para 'CACL' na JCDS ou da definição do indicador de exclusão na AUFK. Tipo de evento inferred | |||
| Ordem encerrada financeiramente | A etapa final de encerramento, em que a ordem é liquidada e nenhum novo lançamento financeiro é possível. Isso representa o fim do ciclo de vida da ordem do ponto de vista de controladoria e contabilidade. | ||
| Por que isso importa Embora muitas vezes esteja fora do escopo da análise exclusivamente produtiva, essa atividade oferece uma visão completa de ponta a ponta. Ela pode ajudar a analisar o tempo entre a conclusão logística (TECO) e o encerramento financeiro. Onde obter Isso é acionado quando um usuário define o status como CLSD (Closed). O evento é capturado como uma alteração de status na tabela JCDS, com o registro de data e hora correspondente. Captura Registro de data e hora da alteração de status para 'CLSD' na tabela JCDS. Tipo de evento inferred | |||
Guias de extração
Etapas
- Verificação de pré-requisitos: confirme se você tem um usuário no SAP S/4HANA com as autorizações adequadas para acessar as visões necessárias do Core Data Services (CDS). As visões necessárias incluem
I_ProductionOrder,I_ProdOrdConfirmation,I_MaterialDocumentItem,I_ObjectStatuseI_ChangeDocument. Também é necessário ter acesso a um ambiente de execução SQL conectado ao banco de dados SAP HANA, como SAP HANA Studio, DBeaver ou uma ferramenta ETL externa. - Identifique os detalhes do sistema: anote o identificador do sistema de origem que você usará para o atributo
SourceSystem. Esse é um nome lógico definido por você para identificar a origem dos dados, por exemplo,S4H_PROD. - Defina os parâmetros de extração: antes de executar a consulta, defina os principais parâmetros. Isso inclui as datas inicial e final do período de extração e filtros específicos, como
PlantouProductionOrderType, para limitar o escopo dos dados. - Prepare a consulta SQL: copie a consulta SQL completa fornecida na seção
querypara o cliente SQL ou a ferramenta de extração de dados escolhida. - Configure os placeholders: substitua os valores de placeholder da consulta pelos seus parâmetros específicos. Isso inclui
_StartDate,_EndDatee o identificador do sistema de origem. Ajuste o limite do eventoUnplanned Halt Occurred(por exemplo,'24:00:00') de acordo com o seu contexto de negócio. - Execute a consulta de extração: execute o script SQL configurado no banco de dados do sistema SAP S/4HANA. Para conjuntos de dados grandes que abrangem um período extenso, considere executar a extração em partes menores, por exemplo, mês a mês, para evitar problemas de performance.
- Faça uma revisão inicial dos dados: quando a execução da consulta for concluída, faça uma revisão rápida do resultado. Verifique a quantidade de linhas, confirme se todas as colunas estão presentes e valide se a coluna
Atividadecontém uma variedade dos eventos esperados. - Valide os dados: siga as etapas descritas na seção
validationStepspara fazer uma validação mais completa. Compare alguns pedidos de produção com os respectivos detalhes no sistema SAP usando a transaçãoCO03para confirmar a precisão do registro de eventos extraído. - Exporte para CSV: exporte o conjunto de resultados final para um arquivo CSV. Confirme se a codificação do arquivo é UTF-8 para evitar problemas com caracteres especiais.
- Prepare o carregamento: confirme se os cabeçalhos das colunas do CSV correspondem aos nomes de atributos exigidos:
ProductionOrder,Atividade,StartTime,SourceSystemeLastDataUpdate. Antes de carregar o arquivo na ferramenta de process mining, confirme se a colunaStartTimeestá em um formato de timestamp padrão, como ISO 8601 (YYYY-MM-DDTHH:MM:SS).
Configuração
- CDS Views principais: a extração depende principalmente de um conjunto de CDS views padrão que oferecem uma visão estruturada e orientada ao negócio das tabelas SAP subjacentes. As principais views incluem:
I_ProductionOrder: para dados do cabeçalho e eventos de criação.I_ProdOrdConfirmation: para todas as confirmações de operação.I_MaterialDocumentItem: para movimentos de mercadorias, como saídas e entradas.I_ObjectStatus: para ler as alterações de status da ordem de produção.I_ChangeDocumente views associadas: para capturar alterações nos principais campos da ordem.
- Filtragem por período: é fundamental aplicar um filtro de período para controlar o volume de dados. A consulta fornecida usa a
CreationDateda ordem de produção. Um período típico para a análise inicial é de 3 a 6 meses de dados. - Principais filtros de negócio: para refinar ainda mais o conjunto de dados, aplique filtros com base em atributos organizacionais ou de dados mestres. Os filtros mais comuns incluem:
Plant: para analisar uma unidade de produção específica.ProductionOrderType: para focar em produção padrão, retrabalho ou outros tipos de ordem.CompanyCode: para restringir os dados a uma entidade legal específica.
- Limite de parada não planejada: a consulta inclui uma lógica para derivar eventos
Unplanned Halt Occurred. Essa lógica exige um limite de tempo para definir o que constitui uma lacuna significativa entre operações. Esse valor deve ser configurado com base nos tempos típicos do ciclo de produção e nas regras de negócio. - Pré-requisitos de autorização: o usuário SAP que executar a consulta deve ter autorização de exibição para todas as CDS views e suas tabelas subjacentes. Autorizações ausentes resultarão em um conjunto de resultados vazio ou incompleto.
a Consulta de exemplo sql
WITH BaseOrders AS (
SELECT
ProductionOrder,
Material AS MaterialNumber,
ProductionPlant AS Plant,
CreationDate,
CreationTime,
BasicEndDate AS PlannedEndDate,
TechnicalCompletionDate,
LastChangeDateTime
FROM I_ProductionOrder
-- P_CreationDateFrom and P_CreationDateTo are placeholders for your date range
WHERE CreationDate BETWEEN '[_StartDate]' AND '[_EndDate]'
-- Add other filters as needed, for example:
-- AND ProductionPlant IN ('[Your_Plant_1]', '[Your_Plant_2]')
-- AND ProductionOrderType = '[Your_Order_Type]'
)
SELECT
bo.ProductionOrder,
'Production Order Created' AS Activity,
TO_TIMESTAMP(bo.CreationDate || ' ' || LPAD(bo.CreationTime, 6, '0'), 'YYYYMMDD HH24MISS') AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
'CRTD' AS OrderStatus
FROM BaseOrders bo
UNION ALL
-- System status changes like Released, Technically Completed, Closed, Cancelled, Material Shortage
SELECT
os.ObjectInternalID AS ProductionOrder,
CASE os.SystemStatus
WHEN 'I0002' THEN 'Production Order Released'
WHEN 'I0043' THEN 'Material Availability Checked' -- Status: MACM (Material committed)
WHEN 'I0045' THEN 'Order Technically Completed'
WHEN 'I0046' THEN 'Order Financially Closed'
WHEN 'I0047' THEN 'Production Order Cancelled'
WHEN 'I0010' THEN 'Material Shortage Occurred' -- Status: MSPT (Material shortage)
END AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus IN ('I0002', 'I0043', 'I0045', 'I0046', 'I0047', 'I0010') AND os.StatusIsInactive = ''
UNION ALL
-- Production Started, inferred from the first goods issue or first confirmation
SELECT
s.ProductionOrder,
'Production Started' AS Activity,
s.StartEventTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
s.MaterialNumber,
s.Plant,
NULL AS WorkCenter,
s.PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
bo.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime)) AS StartEventTime,
ROW_NUMBER() OVER(PARTITION BY bo.ProductionOrder ORDER BY MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime))) as rn
FROM BaseOrders bo
LEFT JOIN I_MaterialDocumentItem gm ON bo.ProductionOrder = gm.ProductionOrder AND gm.GoodsMovementType IN ('261', '262') -- Goods Issue
LEFT JOIN I_ProdOrdConfirmation cf ON bo.ProductionOrder = cf.ProductionOrder
WHERE gm.ProductionOrder IS NOT NULL OR cf.ProductionOrder IS NOT NULL
GROUP BY bo.ProductionOrder, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate
) s
WHERE s.rn = 1
UNION ALL
-- Production Confirmation Entered (for each confirmation)
SELECT
cf.ProductionOrder,
'Production Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
UNION ALL
-- Final Confirmation Entered
SELECT
cf.ProductionOrder,
'Final Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
WHERE cf.IsFinalConfirmation = 'X'
UNION ALL
-- Unplanned Halt Occurred (derived from gaps between confirmations)
SELECT
ProductionOrder,
'Unplanned Halt Occurred' AS Activity,
PreviousConfirmationTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
MaterialNumber,
Plant,
WorkCenter,
PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
cf.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
cf.WorkCenter,
cf.ConfirmationDateTime,
LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime) AS PreviousConfirmationTime,
(SECONDS_BETWEEN(LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime), cf.ConfirmationDateTime) / 3600.0) as HoursDiff
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
) AS gaps
WHERE gaps.HoursDiff > 24 -- Configurable threshold in hours, e.g. 24 hours
UNION ALL
-- Goods Receipt Posted
SELECT
gm.ProductionOrder,
'Goods Receipt Posted' AS Activity,
gm.PostingTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_MaterialDocumentItem gm
JOIN BaseOrders bo ON gm.ProductionOrder = bo.ProductionOrder
WHERE gm.GoodsMovementType = '101'
UNION ALL
-- Capacity Requirements Planned (using Release event as a proxy)
SELECT
os.ObjectInternalID AS ProductionOrder,
'Capacity Requirements Planned' AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus = 'I0002' AND os.StatusIsInactive = '' -- Status 'REL' (Released)
UNION ALL
-- Production Plan Adjusted
SELECT
ch.ObjectValue AS ProductionOrder,
'Production Plan Adjusted' AS Activity,
ch.CreationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL as WorkCenter,
bo.PlannedEndDate,
NULL as OrderStatus
FROM I_ChangeDocument AS ch
JOIN BaseOrders bo ON ch.ObjectValue = bo.ProductionOrder
WHERE ch.ChangeDocumentObject = 'PRODORDER'
-- Monitoring changes in key fields like Total Quantity (GAMNG) or Basic Finish Date (GLTRP)
AND ch.FieldName IN ('GAMNG', 'GLTRP')
GROUP BY ch.ObjectValue, ch.CreationDateTime, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate Etapas
- Confirme se o acesso direto de leitura ao schema SAP HANA que contém os dados das ordens de produção está disponível e identifique o proprietário do schema, o tratamento do cliente, as convenções de timestamp e o modelo de autorização. Use o SAP HANA Database Explorer ou um cliente SQL aprovado. Valide a versão relevante do SAP S/4HANA e o escopo de planejamento da produção ativado antes de finalizar a consulta.
- Configure a string de conexão, as credenciais, o nome do schema, o valor do cliente, as datas inicial e final da extração e os filtros específicos da empresa. A consulta abaixo usa AUFK, AFPO, JEST e JCDS e também faz referência a AFKO, AFVC, AFRU, RESB, MSEG, CDHDR e CDPOS. Confirme a disponibilidade e as definições dos campos desses objetos no seu sistema antes da execução, pois podem existir extensões, views de compatibilidade e diferenças específicas da versão.
- Execute a consulta no SAP HANA Database Explorer ou na ferramenta aprovada de execução SQL. A consulta cria uma linha para cada atividade extraída explicitamente e combina as linhas de atividades com UNION ALL. Ela não depende do ProcessMind para inferir eventos.
- Revise os dados de origem e adapte, quando necessário, as expressões marcadas como específicas do sistema. Em especial, confirme os códigos de status usados para disponibilidade de materiais, planejamento de capacidade, conclusão técnica, encerramento financeiro e cancelamento. Confirme o objeto do documento de alteração e os nomes dos campos usados para identificar ajustes no plano de produção.
- Valide a conversão de timestamp e a filtragem por cliente. Os sistemas SAP podem armazenar datas e horários em campos separados, e algumas instalações usam UTC, enquanto outras usam o horário local da planta ou do sistema. Garanta que os valores resultantes de StartTime usem um único fuso horário consistente e que datas SAP inválidas ou iniciais sejam excluídas.
- Exporte o resultado como um arquivo simples compatível com o ProcessMind, de preferência CSV ou texto delimitado em UTF-8. Preserve os nomes exatos das colunas de saída ProductionOrder, Activity, StartTime, SourceSystem, LastDataUpdate, MaterialNumber, Plant, WorkCenter, PlannedEndDate e OrderStatus.
- Ordene as linhas exportadas por ProductionOrder e StartTime, usando uma ordenação secundária determinística para timestamps iguais, se o processo de upload permitir. Mantenha uma linha por evento, incluindo confirmações repetidas e alterações de status repetidas quando representarem registros de origem separados.
- Faça o upload do arquivo para o ProcessMind e mapeie ProductionOrder como identificador do caso, Activity como atividade e StartTime como timestamp do evento. Mapeie as colunas restantes como atributos de evento ou de caso, de acordo com a configuração de importação do ProcessMind. Confirme se todos os 14 rótulos de atividade foram mantidos exatamente como produzidos pela consulta.
Configuração
- Período: comece com um período móvel de três a seis meses. Use um período menor nos testes iniciais e amplie somente depois de validar a quantidade de linhas e a performance da consulta.
- Parâmetros de extração: substitua [Your schema name], [Your client], [Extraction start date], [Extraction end date] e [Your source system name] pelos valores do seu ambiente. Aplique filtros específicos da empresa somente depois de confirmar os campos e valores organizacionais relevantes.
- Configuração de status: verifique os códigos exatos de status SAP e os identificadores de objeto de status usados no seu sistema para CRTD, liberação, disponibilidade de materiais, planejamento de capacidade, conclusão técnica, encerramento financeiro e cancelamento. Perfis de status e extensões personalizadas podem alterar os códigos disponíveis.
- Documentos de alteração: confirme o objeto do documento de alteração da ordem de produção, os nomes das tabelas e dos campos e os formatos dos valores usados para alterações de quantidade, datas, BOM e roteiro. A consulta trata os registros correspondentes de CDHDR e CDPOS como evidências de ajustes no plano.
- Tratamento de timestamps: padronize todos os timestamps de origem em um único fuso horário. Confirme se os campos de data e hora são armazenados separadamente, se os timestamps são locais ou UTC e como as datas iniciais são representadas.
- Performance: restrinja a extração pela data de criação da ordem ou por outra data indexada da ordem de produção, filtre por cliente, selecione apenas as colunas necessárias e execute durante uma janela adequada para relatórios. Para grandes volumes de dados, extraia por mês ou por intervalo de ordens de produção e persista os resultados de forma incremental.
- Objetos do banco de dados: confirme se AUFK, AFPO, JEST, JCDS, AFKO, AFVC, AFRU, RESB, MSEG, CDHDR e CDPOS estão disponíveis e podem ser lidos no schema selecionado. Se uma view ou um campo for diferente na sua versão, substitua-o pelo objeto correspondente liberado ou aprovado.
- Autorizações: o acesso necessário inclui autorização de leitura ao schema e aos objetos selecionados do SAP HANA, além de permissão para executar SQL. As autorizações da aplicação SAP também podem ser exigidas pelo seu processo de governança.
- Escopo funcional: os dados de planejamento e execução da produção, movimentação de estoque, histórico de status e documentos de alteração devem ser mantidos para o período selecionado. Registros arquivados ou excluídos não serão retornados.
- Mapeamento no ProcessMind: configure ProductionOrder como identificador do caso, Activity como atividade e StartTime como timestamp do evento. Não espere que o ProcessMind derive atividades ausentes a partir de atributos.
a Consulta de exemplo sql
WITH
params AS (
SELECT
'[Your client]' AS mandt,
TO_DATE('[Extraction start date]', 'YYYY-MM-DD') AS date_from,
TO_DATE('[Extraction end date]', 'YYYY-MM-DD') AS date_to,
'[Your source system name]' AS source_system,
CURRENT_UTCTIMESTAMP AS last_data_update
FROM DUMMY
),
orders AS (
SELECT
a.mandt,
LTRIM(a.aufnr, '0') AS production_order,
a.aufnr AS production_order_raw,
a.erdat AS order_created_date,
a.erfzeit AS order_created_time,
a.auart AS order_type,
a.werks AS plant,
a.objnr AS object_number,
a.ktext AS order_text,
p.matnr AS material_number,
p.psmng AS planned_quantity,
p.wemng AS delivered_quantity,
k.gstrp AS planned_start_date,
k.gltrp AS planned_end_date,
k.ftrmi AS release_date,
k.ftrmp AS release_time,
k.gamng AS total_order_quantity,
k.plnbez AS header_material_number,
k.plnty AS task_list_type,
k.plnnr AS task_list_group,
k.plnal AS task_list_group_counter
FROM [Your schema name].AUFK a
LEFT JOIN [Your schema name].AFPO p
ON p.mandt = a.mandt
AND p.aufnr = a.aufnr
LEFT JOIN [Your schema name].AFKO k
ON k.mandt = a.mandt
AND k.aufnr = a.aufnr
CROSS JOIN params x
WHERE a.mandt = x.mandt
AND a.erdat >= x.date_from
AND a.erdat < ADD_DAYS(x.date_to, 1)
),
status_history AS (
SELECT
o.*,
j.stat,
j.inact,
j.chgnr,
j.udate AS status_date,
j.utime AS status_time,
c.usnam AS status_user,
c.chind AS status_change_indicator
FROM orders o
INNER JOIN [Your schema name].JEST j
ON j.mandt = o.mandt
AND j.objnr = o.object_number
LEFT JOIN [Your schema name].JCDS c
ON c.mandt = j.mandt
AND c.objnr = j.objnr
AND c.stat = j.stat
AND c.chgnr = j.chgnr
WHERE COALESCE(j.inact, '') <> 'X'
),
operations AS (
SELECT
o.production_order,
o.mandt,
v.vornr,
v.arbid,
v.steus,
v.ltxa1,
v.aufpl,
v.aplzl,
cr.name1 AS work_center
FROM orders o
LEFT JOIN [Your schema name].AFVC v
ON v.mandt = o.mandt
AND v.aufpl = (SELECT MAX(k2.aufpl) FROM [Your schema name].AFKO k2 WHERE k2.mandt = o.mandt AND k2.aufnr = o.production_order_raw)
LEFT JOIN [Your schema name].CRHD cr
ON cr.mandt = v.mandt
AND cr.objty = 'A'
AND cr.objid = v.arbid
),
confirmations AS (
SELECT
o.production_order,
o.mandt,
r.rmzhl,
r.vornr,
r.budat AS confirmation_date,
r.ersda AS entry_date,
r.erzet AS entry_time,
r.ism01,
r.ism02,
r.ism03,
r.ism04,
r.ism05,
r.ism06,
r.xmnga,
r.stzhl,
r.stzhl AS reversal_counter,
r.lmnga AS confirmed_quantity,
r.xmnge AS scrap_quantity,
r.aufpl,
r.aplzl,
op.work_center
FROM orders o
INNER JOIN [Your schema name].AFRU r
ON r.mandt = o.mandt
AND r.aufnr = o.production_order_raw
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.mandt = r.mandt
AND op.vornr = r.vornr
),
first_confirmation AS (
SELECT production_order, MIN(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM confirmations
GROUP BY production_order
),
last_confirmation AS (
SELECT production_order, MAX(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS final_time
FROM confirmations
GROUP BY production_order
),
first_goods_issue AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('261', '262')
GROUP BY o.production_order
),
first_receipt AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS receipt_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('101', '102')
GROUP BY o.production_order
),
plan_changes AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(h.udate, 'YYYYMMDD') || LPAD(TO_VARCHAR(h.utime), 6, '0'), 'YYYYMMDDHH24MISS')) AS adjustment_time
FROM orders o
INNER JOIN [Your schema name].CDHDR h
ON h.mandant = o.mandt
AND h.objectid = o.production_order_raw
INNER JOIN [Your schema name].CDPOS p
ON p.mandant = h.mandant
AND p.objectclas = h.objectclas
AND p.objectid = h.objectid
AND p.changenr = h.changenr
WHERE h.objectclas IN ('ORDER', 'PP_ORDER')
AND p.tabname IN ('AFKO', 'AFPO', 'AFVC', 'RESB')
AND p.fname IN ('GAMNG', 'PSMNG', 'GSTRP', 'GLTRP', 'MATNR', 'BDMNG', 'VORNR')
GROUP BY o.production_order
),
status_times AS (
SELECT
production_order,
MIN(CASE WHEN stat IN ('I0001', 'CRTD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS created_status_time,
MIN(CASE WHEN stat IN ('I0002', 'REL') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS released_time,
MIN(CASE WHEN stat IN ('I0003', 'MATC', 'MANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS material_available_time,
MIN(CASE WHEN stat IN ('I0004', 'CAPC', 'CAPA') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS capacity_planned_time,
MIN(CASE WHEN stat IN ('I0045', 'TECO') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS technically_completed_time,
MIN(CASE WHEN stat IN ('I0046', 'CLSD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS financially_closed_time,
MIN(CASE WHEN stat IN ('I0076', 'DLFL', 'CANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS cancelled_time
FROM status_history
GROUP BY production_order
),
material_shortages AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(j.status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(j.status_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS shortage_time
FROM status_history j
INNER JOIN orders o
ON o.production_order = j.production_order
WHERE j.stat IN ('I0042', 'MANC', 'MSHT')
GROUP BY o.production_order
),
capacity_times AS (
SELECT
production_order,
MIN(COALESCE(released_time, created_status_time)) AS capacity_time
FROM status_times
GROUP BY production_order
),
base_attributes AS (
SELECT
o.production_order,
o.material_number,
o.plant,
COALESCE(op.work_center, '') AS work_center,
o.planned_end_date,
COALESCE(st.stat, '') AS current_status
FROM orders o
LEFT JOIN status_history st
ON st.production_order = o.production_order
AND st.inact = ''
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.vornr = (SELECT MIN(op2.vornr) FROM operations op2 WHERE op2.production_order = o.production_order)
),
events AS (
SELECT o.production_order, 'Production Order Created' AS activity, COALESCE(st.created_status_time, TO_TIMESTAMP(TO_VARCHAR(o.order_created_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(o.order_created_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time FROM orders o LEFT JOIN status_times st ON st.production_order = o.production_order
UNION ALL
SELECT production_order, 'Material Availability Checked', material_available_time FROM status_times WHERE material_available_time IS NOT NULL
UNION ALL
SELECT production_order, 'Capacity Requirements Planned', capacity_time FROM capacity_times WHERE capacity_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Released', released_time FROM status_times WHERE released_time IS NOT NULL
UNION ALL
SELECT o.production_order, 'Production Started', LEAST(COALESCE(fc.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS')), COALESCE(fg.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS'))) FROM orders o LEFT JOIN first_confirmation fc ON fc.production_order = o.production_order LEFT JOIN first_goods_issue fg ON fg.production_order = o.production_order WHERE fc.start_time IS NOT NULL OR fg.start_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Confirmation Entered', TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') FROM confirmations
UNION ALL
SELECT production_order, 'Material Shortage Occurred', shortage_time FROM material_shortages WHERE shortage_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Plan Adjusted', adjustment_time FROM plan_changes WHERE adjustment_time IS NOT NULL
UNION ALL
SELECT c.production_order, 'Unplanned Halt Occurred', ADD_SECONDS(c.confirmation_time, 1) FROM (SELECT production_order, TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') AS confirmation_time, LEAD(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) OVER (PARTITION BY production_order ORDER BY entry_date, entry_time, rmzhl) AS next_confirmation_time FROM confirmations) c WHERE c.next_confirmation_time IS NOT NULL AND SECONDS_BETWEEN(c.confirmation_time, c.next_confirmation_time) >= 86400
UNION ALL
SELECT production_order, 'Final Confirmation Entered', final_time FROM last_confirmation WHERE final_time IS NOT NULL
UNION ALL
SELECT production_order, 'Goods Receipt Posted', receipt_time FROM first_receipt WHERE receipt_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Technically Completed', technically_completed_time FROM status_times WHERE technically_completed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Financially Closed', financially_closed_time FROM status_times WHERE financially_closed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Cancelled', cancelled_time FROM status_times WHERE cancelled_time IS NOT NULL
)
SELECT
e.production_order AS "ProductionOrder",
e.activity AS "Activity",
e.start_time AS "StartTime",
p.source_system AS "SourceSystem",
p.last_data_update AS "LastDataUpdate",
b.material_number AS "MaterialNumber",
b.plant AS "Plant",
NULLIF(b.work_center, '') AS "WorkCenter",
b.planned_end_date AS "PlannedEndDate",
b.current_status AS "OrderStatus"
FROM events e
INNER JOIN base_attributes b
ON b.production_order = e.production_order
CROSS JOIN params p
WHERE e.start_time IS NOT NULL
ORDER BY e.production_order, e.start_time, e.activity; Pronto para começar?
Dê o primeiro passo para transformar a eficiência do seu planejamento da produção. Prepare seus dados com este Template e desbloqueie insights valiosos para otimização.
Comece hoje a otimizar seu planejamento da produção
Identifique e elimine gargalos e reduza o tempo do ciclo de produção em 30%.
Não é necessário cartão de crédito