Seu Template de dados de manutenção de ativos
Seu Template de dados de manutenção de ativos
- Atributos recomendados para coleta
- Atividades críticas de manutenção para acompanhar
- Orientações técnicas de extração para SAP PM
Atributos de manutenção de ativos
| Nome | Descrição | ||
|---|---|---|---|
| Nome da atividade Activity | A tarefa específica ou alteração de status que ocorreu. | ||
| Descrição Representa a etapa executada no processo de manutenção, como 'Ordem de manutenção criada', 'Saída de mercadorias lançada' ou 'Operação da ordem confirmada'. Normalmente, essas etapas são derivadas das tabelas de gerenciamento de status, JEST, para alterações de status, ou das tabelas de transações, como AFRU para confirmações e MKPF para movimentos de material. Esse atributo determina os nós do mapa do processo. Por que isso importa Define o 'o quê' do processo, sendo essencial para descobrir o fluxo e as variantes do processo. Onde obter Derivado de JEST (Status), AFRU (Confirmações), QMEL (Notificações) Exemplos Ordem de manutenção criadaOrdem liberadaConcluído tecnicamente | |||
| Ordem de serviço de manutenção MaintenanceWorkOrder | O identificador exclusivo da ordem de serviço de manutenção. | ||
| Descrição A ordem de serviço de manutenção é o documento central do SAP Plant Maintenance, na tabela AUFK, campo AUFNR. Ela conecta a necessidade de manutenção, a Notificação, aos recursos de execução, materiais e custos. Na análise de Process Mining, ela funciona como o Case ID, permitindo reconstruir o ciclo de vida completo de um serviço de manutenção, desde a criação até a conclusão técnica e empresarial. Por que isso importa É a chave exclusiva que reúne todas as atividades, custos e registros de data e hora, permitindo visualizar o fluxo do processo. Onde obter Tabela SAP AUFK, campo AUFNR Exemplos 00004001234540012345000040098765 | |||
| Registro de data e hora do evento EventTimestamp | A data e a hora exatas em que a atividade ocorreu. | ||
| Descrição Registra o momento exato em que um evento ocorreu. Para alterações de status, esse dado vem do horário de atualização do status do sistema; para operações, vem do horário da confirmação. Registros de data e hora precisos são essenciais para calcular tempos de ciclo, prazos e identificar gargalos entre etapas do processo, como 'Planejamento' e 'Execução'. Por que isso importa Necessário para ordenar os eventos corretamente e calcular todos os KPIs baseados em duração. Onde obter JEST (UDATE/UTIME), AFRU (ISDD/ISDZ), MKPF (CPUDT/CPUTM) Exemplos 2023-10-15T08:30:00Z2023-10-15T14:45:12Z | |||
| Sistema de origem SourceSystem | O sistema de onde os dados foram originados. | ||
| Descrição Identifica o cliente ou a instância SAP específica, como 'SAP_PM_PROD'. Em ambientes com vários sistemas ERP, esse atributo ajuda a distinguir registros que podem ter IDs idênticos, mas pertencem a entidades legais ou ambientes de sistema diferentes. Por que isso importa Garante a exclusividade e a linhagem dos dados em ambientes com vários sistemas. Onde obter Configuração do sistema / registro de extração Exemplos SAP_ECC_P01SAP_S4H_100 | |||
| Última atualização dos dados LastDataUpdate | Registro de data e hora da extração de dados mais recente. | ||
| Descrição Indica quando os dados foram atualizados pela última vez no modelo de dados de Process Mining. Isso permite que os analistas entendam o quanto os insights estão atualizados e ajuda a validar a atualidade dos dados em Dashboards que monitoram o backlog em tempo real ou o cumprimento de SLA. Por que isso importa Crítico para a governança de dados e para estabelecer confiança nos Dashboards. Onde obter Registro de data e hora do ETL Exemplos 2023-11-01T12:00:00Z | |||
| Centro de trabalho principal MainWorkCenter | O principal centro de trabalho ou equipe designado para executar a ordem. | ||
| Descrição O centro de trabalho principal, VAPLZ, representa o grupo de técnicos ou máquinas que realizará o trabalho físico. Esse atributo é mapeado para 'Team' e é essencial para analisar a eficiência da execução, como o Mean Time to Repair por equipe. Ele ajuda a distinguir entre mão de obra interna e prestadores de serviço externos. Por que isso importa Permite analisar a performance no nível dos recursos. Onde obter Tabela SAP AFKO, campo VAPLZ, ou AUFK-VAPLZ, dependendo da configuração Exemplos MECH_01ELEC_TEAMEXT_CONT | |||
| Data prevista de conclusão TargetFinishDate | A data programada para a conclusão do trabalho de manutenção. | ||
| Descrição Essa data, normalmente a data básica de conclusão, GLTRP, representa o prazo da ordem de serviço. Ela é comparada ao registro de data e hora da conclusão real para calcular o KPI SLA Adherence Rate. É a referência para determinar se uma ordem de serviço está no prazo ou atrasada. Por que isso importa O ponto de referência para todos os cálculos de On-Time Delivery, OTD. Onde obter Tabela SAP AFKO, campo GLTRP Exemplos 2023-12-012023-12-15 | |||
| Grupo de planejadores ResponsiblePlannerGroup | O grupo de planejadores responsável por processar a ordem. | ||
| Descrição O grupo de planejadores, INGRP, identifica a equipe ou o departamento específico responsável pelo planejamento do trabalho de manutenção. Ele é mapeado para 'Department' e é essencial para o Dashboard Resource Utilization and Scheduling, ajudando a identificar quais equipes de planejamento são gargalos na etapa de preparação. Por que isso importa Identifica a equipe administrativa responsável pelo processo de planejamento. Onde obter Tabela SAP AUFK, campo INGRP Exemplos M01ELEMEC | |||
| Localização funcional FunctionalLocation | A localização hierárquica onde o ativo está instalado. | ||
| Descrição Representa o local na estrutura técnica onde a tarefa de manutenção é executada, TPLNR. Diferentemente do equipamento, que pode ser movimentado, a localização funcional é fixa. Esse atributo dá suporte ao Dashboard Technical Inspection Cycle Times, permitindo comparar a performance entre diferentes áreas da planta, como a sala de caldeiras e a linha de embalagem. Por que isso importa Permite analisar a performance da manutenção de forma espacial e hierárquica. Onde obter Tabela SAP IFLOT, campo TPLNR, ou por meio de AUFK-TPLNR Exemplos PLANT1-BLD2-LN01US-TX-DAL-01 | |||
| Número da notificação NotificationNumber | A notificação de manutenção que acionou esta ordem. | ||
| Descrição O número da notificação, QMNUM, vincula a ordem de serviço à solicitação inicial, a Notificação. Esse vínculo é necessário para calcular o prazo total desde o recebimento da solicitação de manutenção até a conclusão. Sem ele, a análise não considera a etapa inicial de detecção e comunicação do problema no ciclo de vida da manutenção. Por que isso importa Conecta a etapa de execução à etapa de solicitação e detecção. Onde obter Tabela SAP AUFK, campo QMNUM Exemplos 1000050010000501 | |||
| Número do equipamento EquipmentNumber | Identificador do ativo físico específico que está recebendo manutenção. | ||
| Descrição O número do equipamento, EQUNR, identifica a máquina ou o ativo físico individual. Ao agregar os dados por esse campo, os analistas podem calcular o Dashboard Asset Maintenance Cost and Throughput para encontrar equipamentos problemáticos que exigem reparos frequentes e caros. Isso permite realizar análises de manutenção centradas na confiabilidade. Por que isso importa Conecta a performance do processo aos ativos físicos específicos. Onde obter Tabela SAP AUFK, campo EQUNR Exemplos 10004567PUMP-001HVAC-202 | |||
| Planta de manutenção MaintenancePlant | A planta logística responsável pela manutenção. | ||
| Descrição A planta, WERKS, é a principal unidade organizacional da logística. Ela separa os dados por instalação física. Esse atributo é essencial para comparar a performance entre diferentes unidades e é mapeado para 'BusinessUnit' para permitir filtros organizacionais de alto nível nos Dashboards. Por que isso importa Principal filtro organizacional para comparar instalações. Onde obter Tabela SAP AUFK, campo WERKS Exemplos 100020003000 | |||
| Prioridade da manutenção MaintenancePriority | O nível de urgência atribuído à ordem de serviço. | ||
| Descrição Indica a prioridade, PRIOK, da tarefa de manutenção, como '1-Muito alta', '2-Alta' ou '3-Média'. Esse campo é a entrada direta do KPI Emergency Work Order Ratio. Analisar o fluxo por prioridade ajuda a identificar se as ordens de alta prioridade realmente avançam mais rápido pelo sistema em comparação com os trabalhos de rotina. Por que isso importa Principal fator para a análise de SLA e a identificação de trabalhos emergenciais. Onde obter Tabela SAP AFKO, campo PRIOK, ou AUFK por meio de uma view Exemplos 1-Emergência2-Alta3-Média4-Baixa | |||
| Status do sistema SystemStatus | O status técnico atual da ordem, por exemplo, REL ou TECO. | ||
| Descrição Uma string concatenada ou lista dos status ativos do sistema, provenientes de JEST, atualmente aplicados à ordem. Os valores comuns incluem CRTD (Created), REL (Released), TECO (Technically Completed) e CLSD (Closed). Isso ajuda a filtrar casos abertos e fechados no 'Backlog and Work In Progress Monitor'. Por que isso importa O principal indicador da etapa do ciclo de vida da ordem. Onde obter Módulo de função SAP STATUS_TEXT_EDIT ou tabela JEST Exemplos REL CNFTECOCRTD MACM | |||
| Tipo de ordem de manutenção MaintenanceOrderType | Categoriza a ordem de serviço, como Preventiva ou Corretiva. | ||
| Descrição O tipo de ordem, AUART, no SAP PM distingue a natureza do trabalho de manutenção. Os tipos comuns incluem PM01 (Corretiva), PM02 (Preventiva) e PM03 (Reforma). Esse atributo é essencial para o Emergency Work Order Impact Monitor e para segmentar variantes do processo, pois os Workflows preventivos diferem significativamente dos reativos. Por que isso importa Fundamental para segmentar a análise entre trabalhos planejados e não planejados. Onde obter Tabela SAP AUFK, campo AUART Exemplos PM01PM02PM03 | |||
| Usuário que criou CreatedByUser | O nome de usuário da pessoa que criou a ordem. | ||
| Descrição Identifica o usuário (ERNAM) responsável por iniciar a ordem de serviço. É mapeado para 'User' no modelo genérico. Permite analisar a criação manual versus automatizada e ajuda na auditoria da atividade 'Maintenance Order Created'. Por que isso importa Permite analisar o comportamento dos usuários e realizar auditorias. Onde obter Tabela SAP AUFK, campo ERNAM Exemplos JSMITHBSERVICEDDAVIS | |||
| Custo total real TotalActualCost | O custo total real lançado na ordem de serviço. | ||
| Descrição Custos agregados de mão de obra, materiais e serviços, provenientes da tabela PMCO. Esse atributo dá suporte ao Dashboard Asset Maintenance Cost and Throughput, permitindo que os gestores visualizem o impacto financeiro das atividades de manutenção. É essencial para determinar a relação custo-benefício entre reparar e substituir ativos. Por que isso importa Acrescenta a dimensão financeira aos dados operacionais do processo. Onde obter Tabela SAP PMCO, soma do tipo de valor 04, Real Exemplos 150.002500.500.00 | |||
| É retrabalho IsRework | Indicador que mostra se a ordem envolveu atividades de retrabalho. | ||
| Descrição Um valor booleano calculado que identifica se ocorreu um loop no processo, especificamente quando a atividade 'Maintenance Task Executed' aconteceu mais de uma vez ou quando o status voltou de 'Technically Completed' para 'In Process'. Isso dá suporte ao KPI 'Maintenance Rework Rate' e ajuda a identificar problemas de qualidade. Por que isso importa Dá suporte direto à análise do controle de qualidade. Onde obter Calculado a partir do fluxo do processo Exemplos truefalse | |||
| É trabalho emergencial IsEmergencyWork | Indicador que mostra se a ordem de serviço é emergencial. | ||
| Descrição Um atributo booleano calculado com base na prioridade de manutenção. Se a prioridade for '1' ou o código específico de emergência configurado, esse indicador será verdadeiro. Isso simplifica a filtragem e a criação do KPI 'Emergency Work Order Ratio', sem lógica complexa na camada do Dashboard. Por que isso importa Simplifica a filtragem para a análise de manutenção reativa crítica. Onde obter Calculado a partir de MaintenancePriority Exemplos truefalse | |||
| Horas de mão de obra planejadas PlannedLaborHours | As horas de mão de obra estimadas para a ordem. | ||
| Descrição O trabalho total planejado (ARBEI) das operações da ordem. Comparar esse valor com a duração real da atividade ajuda o Dashboard 'Planning and Estimation Performance' a avaliar a precisão do planejamento de manutenção. Por que isso importa Métrica básica para a análise da precisão do planejamento. Onde obter Tabela SAP AFKO (soma do trabalho planejado das operações) Exemplos 4.08.512.0 | |||
Atividades de manutenção de ativos
| Atividade | Descrição | ||
|---|---|---|---|
| Conclusão empresarial definida | Marca o encerramento administrativo final da ordem de serviço, impedindo novos lançamentos de custos. Capturada pela alteração de status para CLSD (Fechado). | ||
| Por que isso importa Representa o fim absoluto do ciclo de vida da ordem, sendo essencial para a precisão dos dados e a conformidade dos registros. Onde obter Tabela JCDS, status I0046 (CLSD). Captura Registrado quando o status é atualizado para CLSD na JCDS Tipo de evento explicit | |||
| Conclusão técnica definida | Marca o trabalho de manutenção como concluído física e tecnicamente. Capturada pela alteração de status para TECO (Concluído tecnicamente). | ||
| Por que isso importa É o endpoint mais crítico para a análise operacional, indicando que o ativo foi restaurado e a manutenção foi concluída. Onde obter Tabela JCDS, status I0045 (TECO). Captura Registrado quando o status é atualizado para TECO na JCDS Tipo de evento explicit | |||
| Operação da ordem confirmada | Representa o registro do tempo real gasto por um técnico em uma operação específica. Captura o trabalho efetivamente executado no ativo. | ||
| Por que isso importa Essa atividade é a principal fonte de dados para os cálculos de Mean Time to Repair e dos custos de mão de obra. Onde obter Tabela AFRU (Confirmações da ordem). Captura Registrado quando a transação IW41 é executada Tipo de evento explicit | |||
| Ordem de manutenção criada | Marca a geração do objeto de ordem de serviço de manutenção no sistema. Capturada explicitamente pelo registro de data e hora de criação da tabela de dados mestre da ordem. | ||
| Por que isso importa Este é o evento central do caso, marcando a transição da solicitação para o planejamento e a execução. Onde obter Tabela AUFK, campos ERDAT (Data) e ERFZEIT (Hora). Captura Registrado quando a transação IW31 é executada Tipo de evento explicit | |||
| Ordem de manutenção liberada | Indica que o planejamento foi concluído e que a ordem está liberada para execução. Capturada pelo monitoramento da alteração de status para REL nos registros de status do sistema. | ||
| Por que isso importa Esse marco separa a etapa de planejamento da etapa de execução, sendo essencial para medir o Planning and Estimation Lead Time. Onde obter Tabela JCDS (Documentos de alteração de status), status I0002 (REL). Captura Registrado quando o status é atualizado para REL na JCDS Tipo de evento explicit | |||
| Saída de mercadorias lançada | Registra o consumo físico de peças de reposição ou materiais associado à ordem de serviço. Capturada pelos cabeçalhos de documentos de material vinculados à ordem. | ||
| Por que isso importa Confirma que as peças estão disponíveis e foram separadas, impactando diretamente a análise do tempo de espera pela disponibilidade de peças. Onde obter Tabela MSEG/MKPF, tipo de movimento 261 (saída de mercadorias para a ordem). Captura Registrado quando a transação MIGO/MB1A é executada Tipo de evento explicit | |||
| Componente de material adicionado | Registra a adição de peças de reposição ou materiais à lista de componentes da ordem de serviço. Capturada pela criação de um item de linha de reserva. | ||
| Por que isso importa Identifica o início do ciclo de compras das peças necessárias, dando suporte ao Dashboard Spare Parts Procurement Lead Times. Onde obter Tabela RESB, campo BDTER (Data de necessidade) ou registro de data e hora de criação. Captura Registrado quando o item de linha é adicionado à RESB Tipo de evento explicit | |||
| Conclusão técnica revertida | Registra a revogação do status de conclusão técnica, indicando que a ordem foi reaberta. Isso cria um ciclo de retrabalho no modelo do processo. | ||
| Por que isso importa Principal indicador do KPI Maintenance Rework Rate, destacando encerramentos prematuros ou problemas de qualidade. Onde obter Tabela JCDS, alteração do status I0045 (TECO) para Inativo. Captura Registrado quando o status TECO é desativado Tipo de evento explicit | |||
| Custos da ordem liquidados | Indica que os custos acumulados na ordem foram transferidos para o objeto de controle, como um centro de custo. Capturada pelo documento de controle. | ||
| Por que isso importa Acompanha o aspecto de encerramento financeiro e dá suporte ao KPI Financial Settlement Duration. Onde obter Tabela COBK (CO Object: cabeçalho do documento), vinculada à ordem. Captura Registrado quando a transação de liquidação KO88 é executada Tipo de evento explicit | |||
| Leitura de medição registrada | Registra a entrada de um documento de medição, como uma leitura de contador ou uma avaliação de condição. Muitas vezes, serve como o evento de inspeção técnica. | ||
| Por que isso importa Essencial para a manutenção baseada em condição e para acompanhar os tempos de ciclo da inspeção técnica. Onde obter Tabela IMRG (Documento de medição), vinculada ao equipamento ou à localização funcional. Captura Registrado quando o documento de medição é criado Tipo de evento explicit | |||
| Notificação de manutenção criada | Registra a criação inicial de uma notificação de manutenção, que geralmente aciona uma ordem de serviço. Capturada pelo registro de data e hora de criação da tabela QMEL, essa atividade conecta a solicitação inicial à ordem de execução. | ||
| Por que isso importa Essa atividade estabelece o início do processo de manutenção de ponta a ponta, permitindo calcular os tempos de reação entre a detecção da falha e a geração da ordem. Onde obter Tabela QMEL, campos ERDAT (Data de criação) e MZEIT (Hora). Vinculada à ordem por meio de QMEL-AUFNR. Captura Registrado quando o registro é criado na tabela QMEL Tipo de evento explicit | |||
| Ordem de serviço programada | Indica a programação específica das operações para uma capacidade ou data. Inferida pela atribuição do status Dispatch às operações. | ||
| Por que isso importa Mede a eficiência da alocação de recursos e dá suporte ao Dashboard Resource Utilization and Scheduling. Onde obter Tabela JCDS (Documentos de alteração de status) para operações (ObjType OV), status I0009 (DSPT). Captura Comparar o campo de status antes e depois Tipo de evento inferred | |||
| Prioridade da manutenção alterada | Registra uma atualização no nível de prioridade da ordem de serviço, como uma escalada para Emergência. Derivado dos documentos de alteração associados aos dados mestre da ordem. | ||
| Por que isso importa Acompanhar as alterações de prioridade explica os desvios do processo e dá suporte ao Emergency Work Order Impact Monitor, identificando escaladas reativas. Onde obter Tabela CDPOS/CDHDR para a classe de objeto AUFTRAG, campo PRIOK. Captura Registrado nos documentos de alteração (CDPOS) Tipo de evento explicit | |||
| Requisição de compra criada | Indica que uma solicitação de compras externas ou serviços foi gerada. Isso conecta a ordem de manutenção interna à cadeia de suprimentos externa. | ||
| Por que isso importa Essencial para analisar atrasos causados por fornecedores externos ou pela compra de materiais não mantidos em estoque. Onde obter Tabela EBAN, vinculada por meio da atribuição contábil a AUFK-AUFNR. Captura Registrado quando o registro EBAN é criado Tipo de evento explicit | |||
Guias de extração
Etapas
Identifique a interface da fonte de dados: determine como você acessará a interface SQL do SAP S/4HANA. Normalmente, isso é feito pelo SAP HANA Studio, pelas ABAP Development Tools (ADT) no Eclipse ou por uma string de conexão DBaaS, caso o banco de dados HANA esteja exposto à sua camada de analytics.
Verifique a disponibilidade das visões CDS: confirme se as visões padrão Core Data Services (CDS) estão ativas no seu sistema S/4HANA. As principais visões necessárias são I_MaintenanceOrder, I_MaintenanceOrderOperation, I_MaintenanceNotification, I_MaintOrderConfirmation e I_MeasurementDocument. Você também precisará acessar a tabela de histórico de status do sistema JCDS e as tabelas de documentos de alteração (CDHDR/CDPOS) para reconstruir o histórico completo de eventos, pois as visões CDS padrão geralmente mostram apenas o estado atual.
Prepare o ambiente SQL: abra seu editor SQL. Confirme se seu usuário tem permissões SELECT nas visões SQL DDL, normalmente no schema SAPABAP1 ou similar, para os artefatos listados acima.
Execute a consulta de extração: copie o script SQL fornecido para o editor. Substitua o placeholder [Your Client Number] pelo ID específico do seu cliente SAP, por exemplo, 100. Se você estiver filtrando por um intervalo de datas específico, atualize os filtros EventTimestamp nas cláusulas WHERE.
Transformação dos dados: a consulta realiza a maior parte das transformações, como converter timestamps e mapear códigos de status para textos legíveis. No entanto, confirme se a coluna EventTimestamp está formatada em ISO 8601 (YYYY-MM-DDTHH:MM:SS) durante a exportação, caso o sistema de destino exija esse formato.
Exporte o resultado: execute a consulta e exporte os resultados para um arquivo CSV ou Parquet. Defina a codificação como UTF-8 para lidar com caracteres especiais em nomes de usuários ou descrições.
Valide o mapeamento das colunas: abra uma amostra da exportação e confirme se as colunas MaintenanceWorkOrder, Activity e EventTimestamp estão totalmente preenchidas. Verifique se a coluna Activity contém as strings específicas listadas nos requisitos, como Maintenance Order Created e Goods Issue Posted.
Faça o upload para o ProcessMind: importe o arquivo simples validado para o ProcessMind. Mapeie a coluna Activity para o campo Activity ID, MaintenanceWorkOrder para o campo Case ID e EventTimestamp para o campo Timestamp.
Configuração
- Filtro de cliente: os sistemas SAP são multi-clientes. Sempre filtre por
MANDTouClient, por exemplo, '100', para evitar dados duplicados ou vazamento entre clientes. - Intervalo de datas: recomenda-se filtrar a
CreationDateda ordem de manutenção pelos últimos 6 a 12 meses. Consultar todo o histórico deJCDS(Status) ouCDPOS(Documentos de alteração) sem filtros de data pode causar timeouts de performance. - Chave de idioma: a consulta usa o inglês ('E') por padrão. Se sua organização usar outro idioma principal para as descrições de texto, ajuste o filtro de idioma.
- Acesso ao sistema: requer acesso ao schema ABAP Core Data Services ou às tabelas HANA subjacentes. O acesso às tabelas brutas JCDS e CDHDR é essencial para a análise histórica de status, pois as visões CDS puras geralmente são baseadas em snapshots.
- Tipos de ordem: a consulta extrai todos os tipos de ordem. Você pode filtrar
MaintenanceOrderType, por exemplo, apenas PM01 e PM02, se quiser analisar somente cenários específicos de manutenção.
a Consulta de exemplo sql
/* Activity 1: Maintenance Notification Created */
SELECT
CAST(N.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(N.CreationDate, ' '), N.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
N.MaintenanceOrderType,
N.MaintenancePriority,
N.Equipment AS EquipmentNumber,
N.FunctionalLocation,
N.MaintenancePlant,
N.MaintenancePlannerGroup AS ResponsiblePlannerGroup,
N.MainWorkCenter,
N.MaintenanceNotification AS NotificationNumber,
CAST(NULL AS DATE) AS TargetFinishDate,
N.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceNotification N
JOIN I_MaintenanceOrder O ON N.MaintenanceOrder = O.MaintenanceOrder
WHERE N.MaintenanceOrder IS NOT NULL AND N.MaintenanceOrder <> ''
UNION ALL
/* Activity 2: Maintenance Order Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Created' AS Activity,
O.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrder O
UNION ALL
/* Activity 3: Maintenance Priority Changed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Priority Changed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(H.UDATE, ' '), H.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
H.USERNAME AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM CDHDR H
JOIN CDPOS P ON H.OBJECTCLAS = P.OBJECTCLAS AND H.OBJECTID = P.OBJECTID AND H.CHANGENR = P.CHANGENR
JOIN I_MaintenanceOrder O ON O.MaintenanceOrder = H.OBJECTID
WHERE H.OBJECTCLAS = 'ORDER'
AND P.TABNAME = 'AFKO'
AND P.FNAME = 'PRIOK'
UNION ALL
/* Activity 4: Maintenance Order Released */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Released' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0002' /* REL Status */
AND J.INACT = ' '
UNION ALL
/* Activity 5: Material Component Added */
SELECT
CAST(C.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Material Component Added' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(C.CreationDate, ' '), COALESCE(C.CreationTime, '000000')), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrderComponent C
JOIN I_MaintenanceOrder O ON C.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 6: Purchase Requisition Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Purchase Requisition Created' AS Activity,
PR.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
PR.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_PurchasingDocumentItem PR
JOIN I_MaintenanceOrder O ON PR.ServiceMaintenanceOrder = O.MaintenanceOrder
WHERE PR.PurchasingDocumentCategory = 'B' /* Requisition */
UNION ALL
/* Activity 7: Goods Issue Posted */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Goods Issue Posted' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(MD.CreationDate, ' '), MD.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
MD.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaterialDocumentItem MD
JOIN I_MaintenanceOrder O ON MD.MaintenanceOrder = O.MaintenanceOrder
WHERE MD.GoodsMovementType = '261'
UNION ALL
/* Activity 8: Work Order Scheduled (Operation Dispatched) */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Work Order Scheduled' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrderOperation OP ON J.OBJNR = OP.MaintenanceOrderOperationInternalID
JOIN I_MaintenanceOrder O ON OP.MaintenanceOrder = O.MaintenanceOrder
WHERE J.STAT = 'I0019' /* DSP Dispatched Status */
AND J.INACT = ' '
UNION ALL
/* Activity 9: Order Operation Confirmed */
SELECT
CAST(CNF.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Operation Confirmed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(CNF.CreationDate, ' '), CNF.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
CNF.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintOrderConfirmation CNF
JOIN I_MaintenanceOrder O ON CNF.MaintenanceOrder = O.MaintenanceOrder
WHERE CNF.IsReversed = ' '
UNION ALL
/* Activity 10: Measurement Reading Recorded */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Measurement Reading Recorded' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(M.CreationDate, ' '), M.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
M.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MeasurementDocument M
JOIN I_MaintenanceOrder O ON M.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 11: Technical Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = ' '
UNION ALL
/* Activity 12: Technical Completion Reversed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Reversed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = 'X' /* Inactive indicates it was removed/reversed */
AND J.CHIND = 'U' /* Update indicator */
UNION ALL
/* Activity 13: Order Cost Settled */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Cost Settled' AS Activity,
JE.CreationDateTime AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
JE.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_ActualPlanJrnlEntryItem JE
JOIN I_MaintenanceOrder O ON JE.OrderID = O.MaintenanceOrder
WHERE JE.BusinessTransactionType = 'KOAO' /* Settlement */
UNION ALL
/* Activity 14: Business Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Business Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0046' /* CLSD Status */
AND J.INACT = ' ' Etapas
- Confirme se há acesso direto de leitura a AUFK, AFVC, JEST, QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG e às tabelas aplicáveis de documentos de alteração e documentos de controlling. Confirme os nomes físicos exatos e os mapeamentos de campos no seu banco de dados SAP, pois a disponibilidade dos campos e as estruturas de tabelas replicadas variam conforme a implantação.
- Configure a conexão de extração, as credenciais, a data inicial, a data final e os filtros específicos da empresa. Use um período móvel de três a seis meses para a validação inicial e amplie o período depois que as verificações de performance e completude forem concluídas.
- Extraia os atributos do cabeçalho da ordem de AUFK, os atributos das operações de AFVC e os registros de status de JEST. Relacione os registros da ordem usando o campo de número da ordem adotado no seu schema SAP. JEST é uma tabela de status atual em muitas implementações SAP, portanto os timestamps históricos de status exigem uma fonte de histórico de status ou de documentos de alteração. Configure [Your status history table] e seus campos de timestamp se JEST não mantiver o histórico de alterações de status.
- Extraia a criação de notificações de QMEL, a criação de componentes de RESB, a criação de requisições de compra de EBAN, as informações de saída de mercadorias de MSEG e MKPF, as confirmações de AFRU, as leituras de medição de IMRG e os registros de liquidação de controlling de [Your controlling document table]. Extraia as alterações de prioridade de [Your order change document table] e [Your change document item table]. Essas fontes são necessárias porque AUFK, AFVC e JEST, sozinhas, não fornecem todas as 14 atividades solicitadas.
- Normalize todos os timestamps de origem para um único fuso horário e um único tipo de dado de timestamp. Converta os campos de data e hora SAP, ou os campos de timestamp do banco de dados, em EventTimestamp. Preserve a precisão do timestamp disponível no sistema. Aplique a janela de extração a EventTimestamp, não apenas à data de criação da ordem.
- Crie uma linha de evento para cada ocorrência na fonte. Não dependa do ProcessMind para inferir eventos. Atribua o valor exato de Activity especificado na consulta, preencha MaintenanceWorkOrder, EventTimestamp, SourceSystem, LastDataUpdate e os atributos recomendados disponíveis, mantendo os identificadores de origem quando forem úteis para investigar duplicidades.
- Remova duplicidades apenas de eventos de origem idênticos, usando chaves estáveis da fonte. Não consolide alterações de status, confirmações, movimentações de materiais, leituras de medição ou documentos de liquidação distintos que tenham ocorrido em horários diferentes. Se vários registros de origem representarem um único evento de negócio, documente a precedência da fonte selecionada na especificação de extração.
- Valide se os 14 valores de Activity aparecem como linhas explícitas, se cada linha tem um identificador de caso e um timestamp e se os timestamps estão dentro do período de extração solicitado. Compare as contagens com relatórios SAP ou com as contagens das tabelas de origem usando os mesmos filtros.
- Exporte o resultado como CSV UTF-8 ou outro formato de Event Log compatível com o ProcessMind. Use uma linha por evento, inclua as colunas obrigatórias com os nomes configurados exatamente, preserve timestamps ISO 8601 quando houver suporte e faça o upload do arquivo ou configure a conexão com o banco de dados no ProcessMind. Defina MaintenanceWorkOrder como identificador do caso, Activity como coluna de atividade e EventTimestamp como coluna de timestamp.
Configuração
- Tabelas de origem e mapeamentos: AUFK fornece os dados do cabeçalho da ordem, AFVC fornece os dados das operações e JEST fornece os dados de status do sistema. QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG, fontes de documentos de alteração e fontes de documentos de controlling também são necessárias para produzir todas as 14 atividades. Verifique os nomes exatos dos campos no seu banco de dados SAP antes da execução.
- Colunas obrigatórias de saída: MaintenanceWorkOrder, Activity, EventTimestamp, SourceSystem e LastDataUpdate devem estar presentes em todas as linhas de evento.
- Colunas de saída recomendadas: MaintenanceOrderType, MaintenancePriority, EquipmentNumber, FunctionalLocation, MaintenancePlant, ResponsiblePlannerGroup, MainWorkCenter, NotificationNumber, TargetFinishDate, CreatedByUser e SystemStatus devem ser preenchidas quando disponíveis.
- Intervalo de datas: comece com três a seis meses. Use um limite inicial inclusivo e um limite final exclusivo para evitar eventos duplicados entre execuções incrementais. Para cargas históricas, divida a extração por mês ou por outro período compatível com o banco de dados.
- Filtros: configure [Company Code filter], [Order Type filter], [Maintenance Plant filter], [Notification Type filter] e [Document Type filter] de acordo com o escopo do relatório. Não aplique filtros que excluam ordens sem notificações, operações, componentes, requisições, confirmações, medições ou documentos de liquidação.
- Histórico de status: JEST normalmente representa atribuições de status, mas as alterações históricas de status podem exigir [Your status history table] ou documentos de alteração. Configure a fonte que contém o timestamp da alteração de status e o histórico de transições de status.
- Histórico de prioridade: as alterações de prioridade exigem [Your order change document table] e [Your change document item table], com o identificador do objeto, o nome do campo, o valor anterior, o novo valor e o timestamp da alteração.
- Valor do sistema de origem: substitua [Your SAP system identifier] pelo nome estável do sistema de origem usado pela sua organização.
- Última atualização dos dados: substitua [Your extraction timestamp] pelo timestamp gerado no início ou no fim da execução da extração e use o mesmo valor em todas as linhas dessa execução.
- Performance: indexe ou particione as colunas usadas em junções e filtros quando permitido, restrinja a janela de extração, selecione apenas as colunas necessárias, processe períodos longos em lotes e materialize extrações intermediárias da fonte quando as junções diretas entre schemas forem lentas.
- Pré-requisitos: conectividade com o banco de dados, autorização de leitura para todas as tabelas de origem configuradas, acesso aos dados relevantes de Plant Maintenance, Materials Management, Controlling e medições, além de aprovação para extrair dados operacionais. Confirme eventuais restrições de replicação ou licenciamento da plataforma de banco de dados.
a Consulta de exemplo sql
WITH
params AS (
SELECT
CAST('[Start date and time]' AS TIMESTAMP) AS start_ts,
CAST('[End date and time]' AS TIMESTAMP) AS end_ts,
CAST('[Your SAP system identifier]' AS VARCHAR(100)) AS source_system,
CAST('[Your extraction timestamp]' AS TIMESTAMP) AS last_data_update
),
order_base AS (
SELECT
a.[Order number field] AS MaintenanceWorkOrder,
a.[Order type field] AS MaintenanceOrderType,
a.[Priority field] AS MaintenancePriority,
a.[Equipment field] AS EquipmentNumber,
a.[Functional location field] AS FunctionalLocation,
a.[Maintenance plant field] AS MaintenancePlant,
a.[Planner group field] AS ResponsiblePlannerGroup,
a.[Main work center field] AS MainWorkCenter,
a.[Notification number field] AS NotificationNumber,
a.[Target finish date field] AS TargetFinishDate,
a.[Created by field] AS CreatedByUser,
a.[System status field] AS SystemStatus,
a.[Creation date field] AS OrderCreationDate,
a.[Creation time field] AS OrderCreationTime
FROM AUFK a
WHERE a.[Order number field] IS NOT NULL
AND a.[Company code field] = '[Your company code filter]'
),
base_events AS (
SELECT
o.MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
CAST(q.[Notification creation timestamp field] AS TIMESTAMP) AS EventTimestamp,
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN QMEL q ON q.[Notification number field] = o.NotificationNumber
CROSS JOIN params p
WHERE q.[Notification creation timestamp field] >= p.start_ts
AND q.[Notification creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Order Created',
CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o CROSS JOIN params p
WHERE CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP) >= p.start_ts
AND CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP) < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Priority Changed',
CAST(c.[Change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, c.[New priority value field], o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN [Your order change document table] h ON h.[Order object identifier field] = o.MaintenanceWorkOrder
JOIN [Your change document item table] c ON c.[Change document number field] = h.[Change document number field]
CROSS JOIN params p
WHERE c.[Changed field name field] = '[Your priority field name]'
AND CAST(c.[Change timestamp field] AS TIMESTAMP) >= p.start_ts
AND CAST(c.[Change timestamp field] AS TIMESTAMP) < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Order Released',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'REL'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'REL'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Material Component Added',
CAST(r.[Reservation creation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN RESB r ON r.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE r.[Reservation line creation timestamp field] >= p.start_ts
AND r.[Reservation line creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Purchase Requisition Created',
CAST(e.[Purchase requisition creation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN EBAN e ON e.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE e.[Purchase requisition creation timestamp field] >= p.start_ts
AND e.[Purchase requisition creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Goods Issue Posted',
CAST(m.[Material document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN MSEG m ON m.[Order number field] = o.MaintenanceWorkOrder
JOIN MKPF k ON k.[Material document number field] = m.[Material document number field]
AND k.[Material document year field] = m.[Material document year field]
CROSS JOIN params p
WHERE m.[Movement type field] IN ('201', '261')
AND k.[Material document timestamp field] >= p.start_ts
AND k.[Material document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Work Order Scheduled',
CAST(v.[Dispatch status timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN AFVC v ON v.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE v.[Dispatch status field] = '[Your dispatch status value]'
AND v.[Dispatch status timestamp field] >= p.start_ts
AND v.[Dispatch status timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Order Operation Confirmed',
CAST(f.[Confirmation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN AFRU f ON f.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE f.[Confirmation timestamp field] >= p.start_ts
AND f.[Confirmation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Measurement Reading Recorded',
CAST(i.[Measurement document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN IMRG i ON i.[Equipment field] = o.EquipmentNumber
CROSS JOIN params p
WHERE i.[Measurement document timestamp field] >= p.start_ts
AND i.[Measurement document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Technical Completion Set',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'TECO'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'TECO'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Technical Completion Reversed',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, s.[Resulting system status field]
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Previous status code field] = 'TECO'
AND s.[Status code field] <> 'TECO'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Order Cost Settled',
CAST(c.[Controlling document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN [Your controlling document table] c ON c.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE c.[Controlling document timestamp field] >= p.start_ts
AND c.[Controlling document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Business Completion Set',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'CLSD'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'CLSD'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
)
SELECT
e.MaintenanceWorkOrder,
e.Activity,
e.EventTimestamp,
p.source_system AS SourceSystem,
p.last_data_update AS LastDataUpdate,
e.MaintenanceOrderType,
e.MaintenancePriority,
e.EquipmentNumber,
e.FunctionalLocation,
e.MaintenancePlant,
e.ResponsiblePlannerGroup,
e.MainWorkCenter,
e.NotificationNumber,
e.TargetFinishDate,
e.CreatedByUser,
e.SystemStatus
FROM base_events e
CROSS JOIN params p
WHERE e.MaintenanceWorkOrder IS NOT NULL
AND e.EventTimestamp IS NOT NULL
AND e.EventTimestamp >= p.start_ts
AND e.EventTimestamp < p.end_ts
ORDER BY e.MaintenanceWorkOrder, e.EventTimestamp, e.Activity; Pronto para começar?
Use estes recursos para começar a mapear seus Workflows de manutenção e identificar oportunidades de redução de custos. Nossa estrutura garante que você tenha o formato de dados adequado para obter total transparência das suas operações.
Elimine hoje os gargalos da manutenção de ativos no SAP
Reduza agora em 30% o tempo do seu ciclo de manutenção
Não é necessário cartão de crédito... Configuração em 5 minutos