Seu Template de dados para planejamento da produção
Seu Template de dados para planejamento da produção
- Atributos recomendados para analisar o planejamento da produção
- Principais atividades de planejamento da produção para acompanhar
- Orientações detalhadas para extrair dados do SAP S/4HANA
Atributos do planejamento da produção
| Nome | Descrição | ||
|---|---|---|---|
| Atividade Activity | 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 do ciclo de vida da ordem de produção. Alguns exemplos são 'Ordem de produção criada', 'Disponibilidade de materiais verificada', 'Produção iniciada' e 'Ordem encerrada financeiramente'. Cada atividade representa uma ação específica ou uma mudança de status registrada no sistema. Analisar a sequência e a frequência dessas atividades é essencial no 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 e permite descobrir e visualizar o fluxo de trabalho real da produção e suas variações. Onde encontrar Derivado de mudanças de status em tabelas como JEST e JCDS, dos códigos de transação usados (por exemplo, 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 lançada | |||
| Hora de início StartTime | Data e hora que indicam quando uma atividade ou um evento específico começou. | ||
| Descrição Este atributo informa a data e a hora de cada evento registrado no processo de produção. É a base temporal de todas as análises de processo relacionadas ao tempo. A hora de início é essencial para calcular a duração entre atividades, medir o tempo de ciclo total de uma ordem de produção e entender quando os eventos ocorreram. Ela permite analisar gargalos, tempos de espera e cumprimento do cronograma, comparando as datas e horas reais com as planejadas. Por que isso importa Fornece o contexto cronológico de todos os eventos e permite analisar a performance do processo, as durações e os gargalos. Onde encontrar Essas informações geralmente estão 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 | 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 produtos. Ele reúne os eventos relacionados, do planejamento e da liberação à execução e à 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. A análise por ordem de produção permite medir indicadores-chave de performance, como tempo de ciclo e cumprimento do cronograma, além de identificar gargalos que afetam determinadas execuções de produção. Por que isso importa É o atributo fundamental que conecta todas as etapas do processo e permite analisar todo o ciclo de vida da produção no nível do caso, do início ao fim. Onde encontrar Este é o número da ordem de produção, geralmente encontrado em tabelas SAP como AFKO (campo AUFNR) e AFPO. Exemplos 100056710008341001299 | |||
| Sistema de origem SourceSystem | Sistema do qual os dados de planejamento da produção foram extraídos. | ||
| Descrição Este atributo identifica a origem dos dados, algo essencial em ambientes com vários sistemas integrados. Neste processo, normalmente será a instância específica do SAP S/4HANA. Em análises de dados mais amplas, conhecer o sistema de origem ajuda a garantir a integridade dos dados e fornece o contexto adequado ao combinar dados de diferentes fontes. É um metadado fundamental para a governança e a rastreabilidade dos dados. Por que isso importa Fornece metadados essenciais para a governança dos dados, deixando clara a origem e o contexto dos dados do processo. Onde encontrar Normalmente, é um valor estático adicionado durante a extração dos dados para identificar o cliente e o ID do sistema SAP S/4HANA (SID). Exemplos S4P_100S4H_PRD_200S4Q_300 | |||
| Última atualização dos dados LastDataUpdate | Data e hora que indicam 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 importante que informa aos usuários se os dados analisados estão atualizados. Saber quando os dados foram atualizados pela última vez é essencial para interpretar a análise corretamente. Isso ajuda a entender se as informações são atuais ou se representam 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 Ajuda os usuários a saber se os dados estão atualizados, algo essencial para tomar decisões de negócio precisas e relevantes. Onde encontrar Esta data e hora são geradas e adicionadas durante o processo de extração, transformação e carregamento de dados (ETL). Exemplos 2024-05-21T02:00:00Z2024-05-22T02:00:00Z2024-05-23T02:00:00Z | |||
| Centro de trabalho WorkCenter | Máquina, grupo de máquinas ou área de montagem responsável por uma operação específica. | ||
| Descrição Um centro de trabalho representa uma unidade operacional específica dentro de uma fábrica, onde uma etapa da produção é realizada. Pode ser uma 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 descobrir quais centros de trabalho estão sobrecarregados ou subutilizados e onde os atrasos ocorrem com mais frequência durante a execução da produção. Essa análise é 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 que são gargalos e permite direcionar melhorias para aumentar a capacidade e otimizar a utilização de recursos. Onde encontrar 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 de término planejada PlannedEndDate | Data prevista para a conclusão da ordem de produção, conforme o plano inicial. | ||
| Descrição A data de término planejada é a data-limite para a conclusão de todas as atividades de produção de uma ordem. Ela é definida durante a etapa de programação do planejamento da produção. Este atributo é essencial para medir o cumprimento do cronograma. Ao comparar a data de término planejada com a data e hora reais de conclusão, as organizações podem calcular o KPI de taxa de cumprimento do cronograma de 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 e avaliar a precisão do planejamento e a eficiência da execução. Onde encontrar Encontrada na tabela de cabeçalho da ordem de produção AFKO (campo GLTRP). Exemplos 2023-11-152023-12-012024-01-20 | |||
| Fábrica Plant | Instalação ou local de fabricação onde a ordem de produção é executada. | ||
| Descrição A fábrica é uma unidade organizacional no SAP que representa um local ou uma instalação de produção. Cada ordem de produção é atribuída a uma fábrica específica, onde as atividades de fabricação serão realizadas. Este atributo é essencial para comparar diferentes locais de fabricação. Ao segmentar os dados do processo por fábrica, as organizações podem comparar a performance, identificar problemas ou boas práticas específicos de cada local e entender diferenças regionais de eficiência, capacidade ou cumprimento de 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 encontrar Encontrado na tabela de cabeçalho da ordem de produção AFKO (campo DWERK). Exemplos 100017102000 | |||
| Número do material MaterialNumber | Identificador exclusivo do produto fabricado na ordem de produção. | ||
| Descrição O número do material identifica o item que a ordem de produção deve fabricar. Ele conecta o processo de produção aos dados mestres do material, incluindo a lista técnica (BOM) e as 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. Com isso, é possível otimizar o processo para cada produto, ajustando parâmetros de planejamento ou melhorando o abastecimento de componentes específicos. Por que isso importa Permite filtrar e analisar os dados pelo produto fabricado, revelando ineficiências ou gargalos específicos de cada produto. Onde encontrar Encontrado na tabela de itens da ordem de produção AFPO (campo MATNR). Exemplos RM-1001FG-2050SA-3100-B | |||
| Status da ordem OrderStatus | 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 diferentes status do sistema e do usuário aplicados à ordem. Entre os status comuns estão CRTD (criada), REL (liberada), CNF (confirmada), TECO (concluída tecnicamente) e CLSD (encerrada). Analisar o status atual das ordens ajuda a entender o 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 em cada etapa. Por que isso importa Oferece uma visão geral da etapa do ciclo de vida de uma ordem e é fundamental para identificar a sequência de atividades no Process Mining. Onde encontrar Derivado do status do sistema armazenado na tabela JEST, vinculado pelo número do objeto na AFKO (campo OBJNR). Exemplos CRTDRELTECOCLSD | |||
| Data de início planejada PlannedStartDate | Data prevista para o início da ordem de produção, conforme o plano inicial. | ||
| Descrição A data de início planejada é a data prevista para o começo das atividades de produção de uma ordem. É um dos principais resultados do processo de programação. Este atributo serve como referência inicial para analisar o cumprimento do cronograma. Comparar a data de início planejada com a hora real de início ajuda a entender atrasos nas etapas iniciais, como a preparação de materiais ou a liberação da ordem, que podem afetar todo o cronograma de produção. Por que isso importa Serve como referência para medir o cumprimento do horário de início e identificar atrasos nas etapas anteriores à produção, como a liberação da ordem e a disponibilidade de materiais. Onde encontrar Encontrada na tabela de cabeçalho da ordem de produção AFKO (campo GSTRP). Exemplos 2023-11-102023-11-252024-01-15 | |||
| É retrabalho IsRework | Indicador que mostra se a 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 no plano depois do início da produção. Isso pode ser indicado por uma atividade explícita de retrabalho ou por um evento 'Plano de produção ajustado' após 'Produção iniciada'. Este indicador é essencial para calcular o KPI de taxa de retrabalho da produção e para o Dashboard de retrabalho e revisões da produção. Ele facilita a filtragem e a análise de casos problemáticos, ajudando a descobrir as causas-raiz de problemas de qualidade ou desvios do processo que geram retrabalho custoso. Por que isso importa Isola os casos com retrabalho e permite analisar de forma direcionada como reduzir problemas de qualidade, desvios do processo e custos associados. Onde encontrar Campo calculado. Definido como verdadeiro se a atividade 'Plano de produção ajustado' ocorrer após a atividade 'Produção iniciada' no mesmo caso ou se for usado um tipo específico de ordem de retrabalho. Exemplos truefalse | |||
| Hora de término EndTime | Data e hora que indicam quando uma atividade ou um evento específico foi concluído. | ||
| Descrição Este atributo informa a data e a hora de conclusão de cada evento registrado. Junto com a hora de início, permite determinar a duração das atividades. A hora de término é essencial para calcular o tempo de processamento exato 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, permitindo identificar gargalos com mais precisão. Por que isso importa Permite calcular a duração exata das atividades, algo essencial para analisar a eficiência dos recursos e identificar gargalos no processo. Onde encontrar Encontrada nas tabelas de confirmação (AFRU) para as 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 | |||
| No prazo IsOnTime | Indicador que mostra se a ordem de produção foi concluída até a data de término planejada. | ||
| Descrição Este atributo booleano calculado mede diretamente o cumprimento do cronograma, comparando a data real de conclusão com a data de término planejada. Ele apresenta um resultado claro, sim ou não, para indicar se cada ordem de produção foi concluída no prazo. Este atributo é a base do KPI de taxa de cumprimento do cronograma de produção. Ele simplifica a análise ao permitir separar facilmente as ordens concluídas no prazo das atrasadas e identificar características ou caminhos do processo associados a atrasos. Por que isso importa Oferece uma medida clara e simples do cumprimento do cronograma de cada ordem e facilita a análise das causas-raiz dos atrasos. Onde encontrar Campo calculado. Definido como verdadeiro se a data e hora do evento 'Ordem concluída tecnicamente' for anterior ou igual ao atributo 'Data de término planejada'. Exemplos truefalse | |||
| Prioridade de produção ProductionPriority | Código ou valor atribuído a uma ordem de produção para indicar sua urgência ou importância. | ||
| Descrição Os planejadores usam a prioridade de produção para sequenciar e priorizar ordens, especialmente quando há restrições de recursos. Em condições ideais, uma ordem de maior prioridade deve ser processada antes de uma de menor prioridade. Analisar este atributo ajuda a avaliar se as prioridades definidas estão sendo respeitadas 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. Com isso, é possível melhorar a disciplina de programação e alinhar melhor o planejamento à execução. Por que isso importa Ajuda a verificar se a programação da produção segue as prioridades do negócio e se as ordens críticas estão sendo aceleradas como previsto. Onde encontrar Geralmente é um campo personalizado ou se baseia em outros parâmetros da ordem. A localização específica depende da configuração. Exemplos AltaMédiaBaixa15 | |||
| Quantidade confirmada TotalConfirmedQuantity | Quantidade total do material cuja produção foi confirmada para a ordem. | ||
| Descrição Este atributo representa a quantidade acumulada de produtos acabados ou semiacabados registrada por meio de confirmações de produção. Ele acompanha o progresso da ordem em relação à quantidade prevista. Comparar a quantidade confirmada com a quantidade planejada ajuda a monitorar o progresso da produção e identificar problemas de rendimento ou divergências. É uma medida fundamental da produção realizada e é usada em vários cálculos de performance, incluindo taxas de descarte 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 divergências. Onde encontrar Agregada 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 mostra 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 feita. O status 'falta de material' é um sinal importante de possíveis atrasos. Este atributo é essencial para o Dashboard de análise do impacto da falta de materiais. Ele ajuda a quantificar os atrasos causados pela indisponibilidade de materiais, relacionando o status de falta ao tempo entre a liberação da ordem e o início da produção. Melhorar esse indicador é fundamental para tornar o fluxo de produção mais eficiente. Por que isso importa Explica diretamente os atrasos entre a liberação da ordem e o início da produção e ajuda a quantificar o impacto de problemas na cadeia de suprimentos sobre a fabricação. Onde encontrar Este é um status, geralmente derivado do status coletivo dos componentes do material. Pode ser encontrado no status do sistema (JEST), com status como 'MSPT' (falta de material). Exemplos DisponívelFalta de materialNão verificado | |||
| Tipo de ordem OrderType | Classificação da ordem de produção que define sua finalidade e controla seu processamento. | ||
| Descrição O tipo de ordem é um elemento-chave de configuração no SAP PP que determina como o sistema processa uma ordem de produção. Ele controla intervalos de numeração, seleção de dados mestres, parâmetros de custeio e regras de liquidação. Alguns exemplos são 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 produção. Isso pode revelar se as ordens de retrabalho levam muito mais tempo ou se determinados tipos de ordem exigem mais 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 e comparar a produção padrão, o retrabalho e outros processos. Onde encontrar Encontrado na tabela de cabeçalho da ordem de produção AFKO (campo AUART). Exemplos PP01PP03ZP01 | |||
| Usuário User | 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 de usuário do SAP associado a uma transação ou mudança de status específica, como liberar uma ordem ou registrar uma confirmação. Ele permite rastrear as 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 no plano ou se há atrasos associados a equipes específicas. Por que isso importa Permite identificar responsabilidades e analisar a carga de trabalho, o comportamento de cada usuário e possíveis necessidades de treinamento. Onde encontrar Geralmente encontrado nos cabeçalhos de documentos de alteração (CDHDR, campo UNAME) ou nos registros de confirmação (AFRU, campo PERNR, referente ao número de pessoal). Exemplos CB9980000021JSMITHPLANNER01 | |||
Atividades do planejamento da produção
| Atividade | Descrição | ||
|---|---|---|---|
| Confirmação final registrada | Esta atividade registra a confirmação da última operação no roteiro da ordem de produção. Indica que todas as etapas de fabricação planejadas 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. Muitas vezes, ela é usada como um ponto final mais preciso para medir o tempo de ciclo no chão de fábrica, antes do recebimento final de mercadorias. Onde encontrar Inferido a partir dos dados de confirmação na tabela AFRU. É identificado como o registro de confirmação da última sequência de operações (AFVC-VPLNR) com o indicador de 'confirmação final' (AFRUD-AUERU) ativado. Coleta Encontre na AFRU a confirmação da última operação com o indicador de confirmação final ativado. Tipo de evento inferred | |||
| Entrada de mercadorias lançada | Este 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, é considerado o fim do ciclo de produção para medir as entregas no prazo e o tempo de atravessamento total. Onde encontrar 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. Coleta Encontre na MSEG o documento de material vinculado à ordem com o tipo de movimento 101. Tipo de evento explicit | |||
| Ordem de produção criada | Este evento registra a criação inicial da ordem de produção no sistema, que formaliza a solicitação para produzir uma quantidade específica de um produto. O evento é registrado quando um usuário salva uma nova ordem, definindo o 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 da programação oficial da produção. Onde encontrar Este evento é registrado na tabela AUFK (Order Master Data) 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). Coleta Horário registrado em AUFK-ERDAT ou no log de mudança de status para 'CRTD' em JCDS. Tipo de evento explicit | |||
| Ordem de produção liberada | Este é um marco importante: a ordem de produção é aprovada e fica disponível 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 Este evento marca o início oficial do processo de produção executável e é um ponto essencial para medir o tempo de atravessamento. O tempo entre a criação e a liberação é um KPI importante da eficiência pré-produção. Onde encontrar A liberação é acionada explicitamente por um usuário ou por uma tarefa do sistema, resultando no status REL. Essa mudança de status é registrada com o horário correspondente na tabela JCDS. A data de liberação também costuma ser armazenada em AFKO-FTRMI. Coleta Horário da mudança 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 movimentações de mercadorias ou confirmações. Do ponto de vista logístico, a ordem é considerada concluída. | ||
| Por que isso importa TECO é o ponto final definitivo do processo de produção e é essencial para calcular o tempo de ciclo total da ordem. Indica que todas as atividades logísticas foram concluídas e que a ordem está pronta para o encerramento financeiro. Onde encontrar O evento é acionado quando um usuário define o status como TECO (Technically Completed). A mudança de status é registrada na tabela JCDS com o horário correspondente. Coleta Horário da mudança de status para 'TECO' na tabela JCDS. Tipo de evento inferred | |||
| Plano de produção ajustado | Representa uma mudança significativa na ordem de produção após sua liberação, como uma alteração na quantidade, nas datas ou na lista técnica de materiais. Essa mudança é identificada pela análise dos documentos de alteração. | ||
| Por que isso importa Ajustes frequentes podem indicar instabilidade no planejamento ou demanda volátil. Esta atividade é a base do KPI de taxa de revisão do plano de produção e ajuda a identificar as fontes de variabilidade do processo. Onde encontrar Inferido a partir dos logs de alterações registrados nas tabelas CDHDR (Change document header) e CDPOS (Change document items) 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. Coleta Identifique alterações em CDHDR/CDPOS nos campos principais, 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 componentes para a ordem. | ||
| Por que isso importa Esta atividade marca a transição do planejamento para a execução. É essencial para acompanhar a aderência ao cronograma, comparando a data real de início com a data planejada. Onde encontrar Este evento é inferido. Normalmente, é derivado do horário mais antigo de um lançamento de movimentação de mercadorias (tabela MSEG, tipo de movimento 261) ou de um lançamento de confirmação de tempo (tabela AFRU) associado à ordem. Coleta Horário mais antigo registrado em AFRU (confirmações) ou MSEG (movimentações de mercadorias) para a ordem. Tipo de evento inferred | |||
| Confirmação de produção registrada | Representa o registro do andamento de uma operação específica da ordem de produção. Inclui o lançamento das quantidades produzidas, das perdas e do tempo trabalhado em um centro de trabalho. | ||
| Por que isso importa As confirmações oferecem visibilidade em tempo real do andamento no chão de fábrica e são essenciais para acompanhar o status da produção. Analisar a frequência e os horários das confirmações ajuda a monitorar o fluxo e identificar atrasos entre operações. Onde encontrar Cada confirmação é registrada explicitamente como uma entrada na tabela AFRU (Order Completion Confirmations), com o horário (BUDAT, UZEIT) e os detalhes da operação. Coleta Registrado como documento na tabela AFRU. Tipo de evento explicit | |||
| Disponibilidade de materiais verificada | Representa a ação do sistema ou do usuário para verificar se todos os componentes necessários à ordem de produção estão disponíveis nas quantidades exigidas e no prazo. Normalmente, essa verificação é automatizada na criação ou liberação da ordem, mas também pode ser manual e atualizar o status da ordem. | ||
| Por que isso importa Identificar a falta de materiais com antecedência é essencial para o planejamento proativo. Acompanhar essa atividade ajuda a entender como a disponibilidade de materiais afeta a liberação das ordens e o início da produção no prazo. Onde encontrar Inferido a partir do status da ordem. Um status como MACM (Material committed) ou uma mudança na data de disponibilidade do material (AFKO-MSERF) indica que a verificação foi realizada. A ausência de um status de falta de material (MSPT) também pode indicar disponibilidade. Coleta Inferido a partir de mudanças de status relacionadas ao comprometimento de materiais ou à execução da transação COMAC. Tipo de evento inferred | |||
| Falta de material ocorrida | Este 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 registrar a ocorrência. | ||
| Por que isso importa Acompanhar a falta 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 encontrar Inferido pela ativação do status 'MSPT' (Material shortage) na ordem de produção. O horário dessa mudança de status pode ser consultado na tabela JCDS. Coleta Horário da mudança de status para 'MSPT' na tabela JCDS. Tipo de evento inferred | |||
| Necessidades de capacidade planejadas | Esta 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 a carga de capacidade dos centros de trabalho e, se estiver configurado, faz o nivelamento para determinar as datas de produção. | ||
| Por que isso importa Esta 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 aumentar a precisão do planejamento de recursos. Onde encontrar Em geral, 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 término (AUFK-GSTRP, AUFK-GLTRP) também indica a conclusão da atividade. Coleta Inferido pelo preenchimento das datas programadas em AUFK/AFKO ou por um status relacionado à programação em JEST. Tipo de evento inferred | |||
| Ordem de produção cancelada | Representa o cancelamento de uma ordem de produção antes de sua conclusão. É um estado final alternativo e malsucedido do processo. | ||
| Por que isso importa Analisar ordens canceladas pode revelar problemas no planejamento da demanda, nos dados mestres ou no processo de vendas. Uma alta taxa de cancelamento pode indicar problemas sistêmicos que precisam ser resolvidos. Onde encontrar Inferido pela definição do status do sistema CACL (Cancellation) na tabela JCDS. Como alternativa, o indicador de exclusão (AUFK-LOEKZ) também pode indicar o cancelamento. Coleta Horário da mudança de status para 'CACL' em JCDS ou da definição do indicador de exclusão em AUFK. Tipo de evento inferred | |||
| Ordem encerrada financeiramente | Etapa final de encerramento, em que a ordem é liquidada e não são mais possíveis lançamentos financeiros. Isso marca 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 de uma análise exclusivamente de produção, esta 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 encontrar O evento é acionado quando um usuário define o status como CLSD (Closed). A mudança de status é registrada na tabela JCDS com o horário correspondente. Coleta Horário da mudança de status para 'CLSD' na tabela JCDS. Tipo de evento inferred | |||
| Parada não planejada ocorrida | Este evento calculado representa um período ocioso significativo durante a fase de execução da produção. Não é um evento explícito do sistema: ele é identificado por intervalos longos entre confirmações de produção consecutivas. | ||
| Por que isso importa Ajuda a monitorar interrupções não planejadas, como falhas em máquinas ou problemas de qualidade. Identificar paradas frequentes ou prolongadas é essencial para melhorar a estabilidade e o volume produzido no chão de fábrica. Onde encontrar O evento é calculado pela análise dos horários de atividades consecutivas de 'Confirmação de produção registrada' na tabela AFRU. Um intervalo acima de um limite predefinido é sinalizado como parada não planejada. Coleta Calcule a diferença de tempo entre horários de confirmação consecutivos (AFRU-BUDAT/UZEIT). Tipo de evento calculated | |||
Guias de extração
Etapas
- Verifique os pré-requisitos: confirme se você tem um usuário no SAP S/4HANA com as autorizações necessárias para acessar as visualizações Core Data Services (CDS). As visualizações necessárias incluem
I_ProductionOrder,I_ProdOrdConfirmation,I_MaterialDocumentItem,I_ObjectStatuseI_ChangeDocument. Você também precisa de 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 será usado no 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, incluindo 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 espaços reservados: substitua os valores de exemplo da consulta pelos 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 contexto da sua empresa. - 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 longo, considere extrair os dados 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 consulta terminar, confira rapidamente os resultados. Verifique a quantidade de linhas, confirme se todas as colunas estão presentes e se a coluna
Atividadecontém diferentes eventos esperados. - Valide os dados: siga as etapas da seção
validationStepspara fazer uma validação mais detalhada. Compare alguns pedidos de produção com os respectivos detalhes no sistema SAP usando a transaçãoCO03para confirmar a precisão do Event Log extraído. - Exporte para CSV: exporte o conjunto de resultados final para um arquivo CSV. Use a codificação UTF-8 para evitar problemas com caracteres.
- Prepare o arquivo para 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 colunaStartTimeusa um formato de timestamp padrão, como ISO 8601 (YYYY-MM-DDTHH:MM:SS).
Configuração
- Visões CDS principais: A extração usa principalmente um conjunto de visões CDS padrão, que oferecem uma visão estruturada dos dados de negócio armazenados nas tabelas SAP. Entre as principais estão:
I_ProductionOrder: dados do cabeçalho e eventos de criação.I_ProdOrdConfirmation: todas as confirmações de operações.I_MaterialDocumentItem: movimentos de mercadorias, como saídas e entradas.I_ObjectStatus: alterações de status da ordem de produção.I_ChangeDocumente visões associadas: alterações nos principais campos da ordem.
- Filtro por período: É fundamental aplicar um filtro de datas para controlar o volume de dados. A consulta fornecida usa a
CreationDateda ordem de produção. Para uma análise inicial, costuma ser adequado usar dados de 3 a 6 meses. - Filtros de negócio principais: 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: análise de uma unidade de produção específica.ProductionOrderType: foco em produção padrão, retrabalho ou outros tipos de ordem.CompanyCode: restrição dos dados a uma entidade legal específica.
- Limite para parada não planejada: A consulta inclui uma lógica para identificar eventos
Unplanned Halt Occurred. Essa lógica precisa de um limite de tempo para definir o que é uma lacuna significativa entre operações. Configure esse valor de acordo com os tempos de ciclo típicos da produção e as regras de negócio. - Pré-requisitos de autorização: O usuário SAP que executar a consulta precisa ter autorização de visualização para todas as visões CDS e as tabelas subjacentes. Sem as autorizações necessárias, o resultado poderá ficar vazio ou incompleto.
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 há acesso direto de leitura ao esquema SAP HANA que contém os dados das ordens de produção. Identifique o proprietário do esquema, o tratamento do cliente, as convenções de data e hora e o modelo de autorização. Use o SAP HANA Database Explorer ou um cliente SQL aprovado. Antes de finalizar a consulta, valide a versão do SAP S/4HANA e o escopo de planejamento da produção ativado.
- Configure a string de conexão, as credenciais, o nome do esquema, 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, além de fazer referência a AFKO, AFVC, AFRU, RESB, MSEG, CDHDR e CDPOS. Antes de executar, confirme se esses objetos estão disponíveis no seu sistema e verifique as definições dos campos, pois podem existir extensões, visões de compatibilidade e diferenças entre versões.
- Execute a consulta no SAP HANA Database Explorer ou na ferramenta de execução SQL aprovada. A consulta cria uma linha para cada atividade extraída explicitamente e combina as linhas de atividades com UNION ALL. O ProcessMind não é usado para inferir eventos.
- Revise os dados de origem e adapte as expressões marcadas como específicas do sistema, quando necessário. Em especial, confirme os códigos de status usados para disponibilidade de materiais, planejamento de capacidade, conclusão técnica, encerramento financeiro e cancelamento. Verifique também os nomes do objeto e dos campos do documento de alteração usados para identificar ajustes no plano de produção.
- Valide a conversão de data e hora e o filtro de 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 unidade ou do sistema. Garanta que os valores resultantes de StartTime usem um único fuso horário 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 exatamente os nomes das colunas de saída: ProductionOrder, Activity, StartTime, SourceSystem, LastDataUpdate, MaterialNumber, Plant, WorkCenter, PlannedEndDate e OrderStatus.
- Ordene as linhas exportadas por ProductionOrder e StartTime. Se o processo de carregamento permitir, defina também uma ordenação secundária determinística para datas e horários iguais. Mantenha uma linha por evento, incluindo confirmações e alterações de status repetidas quando corresponderem a registros de origem distintos.
- Carregue o arquivo no ProcessMind e mapeie ProductionOrder como identificador do caso, Activity como atividade e StartTime como data e hora do evento. Mapeie as demais colunas como atributos do evento ou do caso, de acordo com a configuração de importação do ProcessMind. Confirme se os 14 rótulos de atividade foram mantidos exatamente como a consulta os produziu.
Configuração
- Período: comece com um intervalo móvel de três a seis meses. Para os testes iniciais, use um período menor e amplie-o 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 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. Os perfis de status e as extensões personalizadas podem alterar os códigos disponíveis.
- Documentos de alteração: confirme o objeto de documento de alteração da ordem de produção, os nomes das tabelas e dos campos e os formatos dos valores usados para quantidade, datas, lista técnica e roteiro. A consulta considera os registros correspondentes de CDHDR e CDPOS como evidência de ajuste do plano.
- Tratamento de data e hora: padronize todos os dados de data e hora de origem em um único fuso horário. Confirme se os campos de data e hora são armazenados separadamente, se os horários 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 somente as colunas necessárias e execute a consulta em um período adequado para relatórios. Para grandes conjuntos de dados, faça a extração mês a mês ou por intervalo de ordens de produção e salve 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 esquema selecionado. Se uma visão ou um campo for diferente na sua versão, substitua-o pelo objeto correspondente, liberado ou aprovado.
- Autorizações: é necessário ter acesso de leitura ao esquema e aos objetos SAP HANA selecionados, além de permissão para executar SQL. O processo de governança da sua empresa também pode exigir autorizações para aplicações SAP.
- 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 precisam estar disponíveis 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 data e hora do evento. Não espere que o ProcessMind derive atividades ausentes a partir de atributos.
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 melhorar a eficiência do planejamento da produção. Prepare seus dados com este Template e encontre insights valiosos para otimizar o processo.
Comece hoje a otimizar o planejamento da produção
Identifique e elimine gargalos e reduza o tempo de ciclo da produção em 30%.
Não é necessário informar cartão de crédito