Seu Template de dados de manutenção de ativos
Seu Template de dados de manutenção de ativos
- Atributos recomendados para coleta
- Atividades essenciais de manutenção para acompanhar
- Orientações técnicas para extração no SAP PM
Atributos de manutenção de ativos
| Nome | Descrição | ||
|---|---|---|---|
| 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 mudanças 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 e prazos, além de identificar gargalos entre etapas do processo, como 'Planejamento' e 'Execução'. Por que isso importa Necessário para ordenar corretamente os eventos e calcular todos os KPIs baseados em duração. Onde encontrar JEST (UDATE/UTIME), AFRU (ISDD/ISDZ), MKPF (CPUDT/CPUTM) Exemplos 2023-10-15T08:30:00Z2023-10-15T14:45:12Z | |||
| Nome da atividade Activity | A tarefa específica ou a mudança de status que ocorreu. | ||
| Descrição Representa a etapa realizada no processo de manutenção, como 'Ordem de manutenção criada', 'Saída de mercadorias lançada' ou 'Operação da ordem confirmada'. Em geral, essas etapas são derivadas das tabelas de gerenciamento de status (JEST), no caso de mudanças de status, ou das tabelas de transações (AFRU para confirmações e MKPF para movimentos de materiais). Esse atributo define os nós do mapa de processo. Por que isso importa Define o que acontece no processo e é essencial para descobrir o fluxo e as variantes do processo. Onde encontrar Derivado de JEST (status), AFRU (confirmações) e QMEL (notificações) Exemplos Ordem de manutenção criadaOrdem liberadaConcluído tecnicamente | |||
| Ordem de serviço de manutenção MaintenanceWorkOrder | 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 (tabela AUFK, campo AUFNR). Ela conecta a necessidade de manutenção (notificação) aos recursos de execução, materiais e custos. Na análise de Process Mining, ela funciona como ID do caso e permite reconstruir todo o ciclo de vida de um serviço de manutenção, da criação à conclusão técnica e empresarial. Por que isso importa É a chave exclusiva que reúne todas as atividades, os custos e os registros de data e hora, permitindo visualizar o fluxo do processo. Onde encontrar Tabela SAP AUFK, campo AUFNR Exemplos 00004001234540012345000040098765 | |||
| Sistema de origem SourceSystem | O sistema de onde os dados vieram. | ||
| Descrição Identifica o cliente ou a instância SAP específica (por exemplo, 'SAP_PM_PROD'). Em ambientes com vários sistemas ERP, esse atributo ajuda a diferenciar registros que podem ter IDs iguais, 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 encontrar Configuração do sistema / registro de extração Exemplos SAP_ECC_P01SAP_S4H_100 | |||
| Última atualização dos dados LastDataUpdate | 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. Assim, os analistas podem avaliar o quanto os insights são atuais e verificar se os dados estão atualizados nos Dashboards que monitoram o backlog em tempo real ou o cumprimento de SLA. Por que isso importa Essencial para a governança de dados e para gerar confiança nos Dashboards. Onde encontrar Data e hora do ETL Exemplos 2023-11-01T12:00:00Z | |||
| Centro de trabalho principal MainWorkCenter | Centro de trabalho ou equipe principal designada 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 'Equipe' e é essencial para analisar a eficiência da execução, como o tempo médio de reparo por equipe. Também ajuda a diferenciar a mão de obra interna dos prestadores de serviço externos. Por que isso importa Permite analisar o desempenho por recurso. Onde encontrar Tabela SAP AFKO, campo VAPLZ (ou AUFK-VAPLZ, dependendo da configuração) Exemplos MECH_01ELEC_TEAMEXT_CONT | |||
| Data prevista de conclusão TargetFinishDate | Data programada para a conclusão do trabalho de manutenção. | ||
| Descrição Essa data, geralmente a data básica de conclusão (GLTRP), representa o prazo da ordem de serviço. Ela é comparada com o registro de data e hora da conclusão real para calcular o KPI “Taxa de cumprimento do SLA”. É a referência para determinar se uma ordem de serviço foi concluída no prazo ou com atraso. Por que isso importa Referência para todos os cálculos de entrega no prazo (OTD). Onde encontrar Tabela SAP AFKO, campo GLTRP Exemplos 2023-12-012023-12-15 | |||
| Grupo de planejadores ResponsiblePlannerGroup | Grupo de planejadores responsável por processar a ordem. | ||
| Descrição O grupo de planejadores (INGRP) identifica a equipe ou o departamento responsável pelo planejamento do trabalho de manutenção. Esse atributo é mapeado para 'Departamento' e é essencial para o Dashboard de utilização e programação de recursos, que ajuda a identificar quais equipes de planejamento são gargalos na fase de preparação. Por que isso importa Identifica a equipe administrativa responsável pelo processo de planejamento. Onde encontrar Tabela SAP AUFK, campo INGRP Exemplos M01ELEMEC | |||
| Local de instalação FunctionalLocation | Local hierárquico onde o ativo está instalado. | ||
| Descrição Representa o local da estrutura técnica onde a tarefa de manutenção é realizada (TPLNR). Ao contrário do equipamento, que pode ser deslocado, o local de instalação é fixo. Esse atributo dá suporte ao Dashboard de tempos de ciclo da inspeção técnica, permitindo comparar o desempenho entre diferentes áreas da planta (por exemplo, casa de caldeiras e linha de embalagem). Por que isso importa Permite analisar o desempenho da manutenção por localização e nível hierárquico. Onde encontrar 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 deu origem a esta ordem. | ||
| Descrição O número da notificação (QMNUM) vincula a ordem de serviço à solicitação inicial (notificação). Esse vínculo é necessário para calcular o prazo total entre o recebimento da solicitação de manutenção e a conclusão. Sem ele, a análise não inclui as etapas iniciais de detecção e comunicação do ciclo de vida da manutenção. Por que isso importa Conecta a fase de execução à fase de solicitação/detecção. Onde encontrar Tabela SAP AUFK, campo QMNUM Exemplos 1000050010000501 | |||
| Número do equipamento EquipmentNumber | Identificador do ativo físico específico que recebe manutenção. | ||
| Descrição O número do equipamento (EQUNR) identifica cada máquina ou ativo. Ao agrupar os dados por esse campo, os analistas podem criar o Dashboard de custos e volume de manutenção de ativos para encontrar equipamentos problemáticos que exigem reparos frequentes e caros. Isso permite analisar a manutenção com foco em confiabilidade. Por que isso importa Relaciona o desempenho do processo a ativos físicos específicos. Onde encontrar Tabela SAP AUFK, campo EQUNR Exemplos 10004567BOMBA-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 e separa os dados por instalação física. Esse atributo é essencial para comparar o desempenho entre diferentes unidades e é mapeado para 'Unidade de negócios', permitindo filtrar os Dashboards por organização em um nível mais amplo. Por que isso importa Principal filtro organizacional para comparar o desempenho das instalações. Onde encontrar Tabela SAP AUFK, campo WERKS Exemplos 100020003000 | |||
| Prioridade de manutenção MaintenancePriority | 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 alimenta diretamente o KPI de proporção de ordens de serviço emergenciais. Analisar o fluxo por prioridade ajuda a identificar se as ordens de alta prioridade realmente avançam mais rápido pelo sistema do que os trabalhos de rotina. Por que isso importa Fator essencial para a análise de SLA e a identificação de trabalhos emergenciais. Onde encontrar Tabela SAP AFKO, campo PRIOK (ou AUFK por meio de uma view) Exemplos 1-Emergencial2-Alta3-Média4-Baixa | |||
| Status do sistema SystemStatus | Status técnico atual da ordem (por exemplo, REL, TECO). | ||
| Descrição Texto concatenado ou lista dos status ativos do sistema (da JEST) aplicados à ordem no momento. Entre os valores comuns estão CRTD (Criada), REL (Liberada), TECO (Concluída tecnicamente) e CLSD (Encerrada). Isso ajuda a filtrar casos abertos e encerrados no “Monitor de backlog e trabalho em andamento”. Por que isso importa Principal indicador da etapa do ciclo de vida da ordem. Onde encontrar Módulo de função SAP STATUS_TEXT_EDIT ou tabela JEST Exemplos REL CNFTECOCRTD MACM | |||
| Tipo de ordem de manutenção MaintenanceOrderType | Classifica a ordem de serviço (por exemplo, preventiva ou corretiva). | ||
| Descrição O tipo de ordem (AUART) no SAP PM diferencia a natureza do trabalho de manutenção. Entre os tipos mais comuns estão PM01 (corretiva), PM02 (preventiva) e PM03 (reforma). Esse atributo é essencial para o monitor de impacto de ordens de serviço emergenciais e para segmentar as variantes do processo, já que os fluxos de trabalho preventivos diferem bastante dos reativos. Por que isso importa Fundamental para segmentar a análise entre trabalhos planejados e não planejados. Onde encontrar Tabela SAP AUFK, campo AUART Exemplos PM01PM02PM03 | |||
| Usuário que criou CreatedByUser | 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. Esse campo é mapeado para “Usuário” no modelo genérico. Ele permite analisar a criação manual ou automatizada e ajuda a auditar a atividade “Ordem de manutenção criada”. Por que isso importa Permite analisar o comportamento dos usuários e realizar auditorias. Onde encontrar Tabela SAP AUFK, campo ERNAM Exemplos JSMITHBSERVICEDDAVIS | |||
| Custo real total TotalActualCost | Custo real total lançado na ordem de serviço. | ||
| Descrição Custos agregados de mão de obra, materiais e serviços (da tabela PMCO). Esse atributo dá suporte ao Dashboard “Custo e volume de manutenção de ativos”, permitindo que gestores vejam o impacto financeiro das atividades de manutenção. É essencial para avaliar se vale mais a pena reparar ou substituir os ativos. Por que isso importa Acrescenta a dimensão financeira aos dados operacionais do processo. Onde encontrar Tabela SAP PMCO (soma do tipo de valor 04, Real) Exemplos 150.002500.500.00 | |||
| É retrabalho IsRework | Indicador que informa se a ordem envolveu atividades de retrabalho. | ||
| Descrição Valor booleano calculado que identifica a ocorrência de um loop no processo, especificamente quando a atividade “Manutenção executada” acontece mais de uma vez ou quando o status volta de “Concluída tecnicamente” para “Em andamento”. Isso dá suporte ao KPI “Taxa de retrabalho de manutenção” e ajuda a identificar problemas de qualidade. Por que isso importa Dá suporte direto à análise de controle de qualidade. Onde encontrar Calculado a partir do fluxo do processo Exemplos truefalse | |||
| É trabalho emergencial IsEmergencyWork | Indicador que informa se a ordem de serviço é emergencial. | ||
| Descrição Atributo booleano calculado com base na prioridade de manutenção. Se a prioridade for “1” (ou o código específico para emergência na configuração), o indicador será verdadeiro. Isso simplifica a filtragem e a criação do KPI “Proporção de ordens de serviço emergenciais”, sem exigir lógica complexa no Dashboard. Por que isso importa Simplifica a filtragem para analisar a manutenção corretiva crítica. Onde encontrar Calculado a partir de MaintenancePriority Exemplos truefalse | |||
| Horas de mão de obra planejadas PlannedLaborHours | Horas de mão de obra estimadas para a ordem. | ||
| Descrição Total de trabalho planejado (ARBEI) nas operações da ordem. A comparação com a duração real da atividade ajuda a avaliar a precisão do planejamento de manutenção no Dashboard “Performance do planejamento e das estimativas”. Por que isso importa Métrica básica para analisar a precisão do planejamento. Onde encontrar 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 e impede novos lançamentos de custos. Capturada pela mudança de status para CLSD (encerrado). | ||
| Por que isso importa Representa o fim definitivo do ciclo de vida da ordem e é essencial para a precisão dos dados e a Conformidade dos registros. Onde encontrar Tabela JCDS, status I0046 (CLSD). Coleta Registrada quando o status é atualizado para CLSD na JCDS Tipo de evento explicit | |||
| Conclusão técnica definida | Marca a conclusão física e técnica do trabalho de manutenção. Capturada pela mudança de status para TECO (concluído tecnicamente). | ||
| Por que isso importa O ponto final mais importante para a análise operacional: indica que o ativo foi restaurado e o trabalho de manutenção terminou. Onde encontrar Tabela JCDS, status I0045 (TECO). Coleta Registrada quando o status é atualizado para TECO na JCDS Tipo de evento explicit | |||
| Operação da ordem confirmada | Representa o registro do tempo efetivamente dedicado por um técnico a uma operação específica. Registra o trabalho realizado no ativo. | ||
| Por que isso importa Essa atividade é a principal fonte de dados para calcular o tempo médio de reparo e os custos de mão de obra. Onde encontrar Tabela AFRU (confirmações da ordem). Coleta Registrada 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 diretamente pelo timestamp de criação da tabela de dados mestre da ordem. | ||
| Por que isso importa Este é o evento central do caso, que marca a transição da solicitação para o planejamento e a execução. Onde encontrar Tabela AUFK, campos ERDAT (data) e ERFZEIT (hora). Coleta Registrada quando a transação IW31 é executada Tipo de evento explicit | |||
| Ordem de manutenção liberada | Indica que o planejamento foi concluído e a ordem está liberada para execução. Capturada pelo monitoramento da mudança de status para REL nos registros de status do sistema. | ||
| Por que isso importa Esse marco separa a fase de planejamento da fase de execução, algo essencial para medir o tempo de planejamento e estimativa. Onde encontrar Tabela JCDS (documentos de alteração de status), status I0002 (REL). Coleta Registrada 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 na 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, afetando diretamente a análise do tempo de espera pela disponibilidade de peças. Onde encontrar Tabelas MSEG/MKPF, tipo de movimento 261 (saída de mercadorias para ordem). Coleta Registrada quando a transação MIGO/MB1A é executada Tipo de evento explicit | |||
| Componente de material adicionado | Registra a inclusão de peças de reposição ou materiais na lista de componentes da ordem de serviço. Capturada pela criação de um item de reserva. | ||
| Por que isso importa Identifica o início do ciclo de aquisição das peças necessárias e dá suporte ao Dashboard de prazos de aquisição de peças de reposição. Onde encontrar Tabela RESB, campo BDTER (data de necessidade) ou timestamp de criação. Coleta Registrada quando o item é 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 de processo. | ||
| Por que isso importa Principal indicador do KPI de taxa de retrabalho da manutenção, que destaca encerramentos prematuros ou problemas de qualidade. Onde encontrar Tabela JCDS, mudança do status I0045 (TECO) para inativo. Coleta Registrada 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 (por exemplo, centro de custo). Capturada pelo documento de controle. | ||
| Por que isso importa Acompanha o encerramento financeiro e dá suporte ao KPI de duração da liquidação financeira. Onde encontrar Tabela COBK (cabeçalho do documento de objeto CO), vinculada à ordem. Coleta Registrada 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 a leitura de um contador ou a avaliação de uma condição. Muitas vezes, corresponde ao evento de inspeção técnica. | ||
| Por que isso importa Essencial para a manutenção baseada em condição e o acompanhamento dos tempos de ciclo da inspeção técnica. Onde encontrar Tabela IMRG (documento de medição), vinculada ao equipamento ou local de instalação. Coleta Registrada 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 muitas vezes dá início a uma ordem de serviço. Capturada pelo timestamp de criação na tabela QMEL, essa atividade conecta a solicitação inicial à ordem de execução. | ||
| Por que isso importa Essa atividade marca o início do processo de manutenção de ponta a ponta e permite calcular o tempo de resposta entre a detecção da falha e a geração da ordem. Onde encontrar Tabela QMEL, campos ERDAT (data de criação) e MZEIT (hora). Vinculada à ordem por QMEL-AUFNR. Coleta Registrada quando o registro é criado na tabela QMEL Tipo de evento explicit | |||
| Ordem de serviço programada | Indica o agendamento específico das operações para uma capacidade ou data. Inferida pela atribuição do status de despacho às operações. | ||
| Por que isso importa Mede a eficiência da alocação de recursos e dá suporte ao Dashboard de utilização e programação de recursos. Onde encontrar Tabela JCDS (documentos de alteração de status) para operações (ObjType OV), status I0009 (DSPT). Coleta Compare o campo de status antes e depois Tipo de evento inferred | |||
| Prioridade de manutenção alterada | Registra uma atualização no nível de prioridade da ordem de serviço, como a mudança para Emergencial. Derivada dos documentos de alteração associados aos dados mestre da ordem. | ||
| Por que isso importa Acompanhar as mudanças de prioridade ajuda a explicar os desvios do processo e dá suporte ao monitor de impacto de ordens de serviço emergenciais, identificando escalonamentos reativos. Onde encontrar Tabelas CDPOS/CDHDR para a classe de objeto AUFTRAG, campo PRIOK. Coleta Registrada nos documentos de alteração (CDPOS) Tipo de evento explicit | |||
| Requisição de compra criada | Indica que foi gerada uma solicitação de aquisição externa ou de serviços. 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 aquisição de materiais que não estão em estoque. Onde encontrar Tabela EBAN, vinculada à AUFK-AUFNR por meio da imputação. Coleta Registrada quando o registro é criado na EBAN Tipo de evento explicit | |||
Guias de extração
Etapas
Identifique a interface da fonte de dados: Determine como você vai acessar a interface SQL do SAP S/4HANA. Isso geralmente é 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 disponível na sua camada de análise.
Verifique a disponibilidade das CDS Views: Confirme se as views padrão de Core Data Services (CDS) estão ativas no seu sistema S/4HANA. As principais views 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 CDS Views 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 views SQL DDL (geralmente no esquema SAPABAP1 ou similar) dos objetos listados acima.
Execute a consulta de extração: Copie o script SQL fornecido para o editor. Substitua o marcador [Your Client Number] pelo ID específico do seu cliente SAP (por exemplo, 100). Se você estiver filtrando por um período específico, atualize os filtros EventTimestamp nas cláusulas WHERE.
Transforme os dados: A consulta realiza a maioria das transformações, como converter registros de data e hora e mapear códigos de status para textos legíveis. No entanto, se o sistema de destino exigir esse formato, confirme se a coluna EventTimestamp está no padrão ISO 8601 (YYYY-MM-DDTHH:MM:SS) durante a exportação.
Exporte o resultado: Execute a consulta e exporte os resultados para um arquivo CSV ou Parquet. Use a codificação UTF-8 para preservar caracteres especiais em nomes de usuários e descrições.
Valide o mapeamento de colunas: Abra uma amostra do arquivo exportado e confirme se as colunas MaintenanceWorkOrder, Activity e EventTimestamp estão preenchidas. Verifique se a coluna Activity contém as strings específicas listadas nos requisitos (por exemplo, Maintenance Order Created, Goods Issue Posted).
Carregue os dados no ProcessMind: Importe o arquivo 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 multicliente. Sempre filtre por
MANDTouClient(por exemplo, '100') para evitar dados duplicados ou vazamento entre clientes. - Período: Recomendamos filtrar a
CreationDateda ordem de manutenção para os ú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. - Idioma: A consulta usa inglês ('E') por padrão. Se sua organização usa outro idioma principal nas descrições, ajuste o filtro de idioma.
- Acesso ao sistema: É necessário ter acesso ao esquema ABAP Core Data Services ou às tabelas HANA subjacentes. O acesso às tabelas brutas JCDS e CDHDR é essencial para analisar o histórico de status, pois as CDS Views puras geralmente mostram apenas um instantâneo.
- Tipos de ordem: A consulta extrai todos os tipos de ordem. Se quiser analisar apenas cenários específicos de manutenção, você pode filtrar
MaintenanceOrderType(por exemplo, apenas PM01 e PM02).
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 das tabelas replicadas variam conforme a implantação.
- Configure a conexão de extração, as credenciais, as datas de início e fim da extração 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 depois que as verificações de performance e integridade forem concluídas com sucesso.
- Extraia os atributos do cabeçalho da ordem de AUFK, os atributos das operações de AFVC e os registros de status de JEST. Faça a junção dos registros relacionados à ordem pelo campo de número da ordem usado no seu esquema SAP. Em muitas implementações SAP, JEST é uma tabela de status atual; portanto, os registros de data e hora 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 registro de data e hora 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, por si só, não fornecem todas as 14 atividades solicitadas.
- Normalize todos os registros de data e hora de origem para um único fuso horário e um único tipo de dado de data e hora. Converta os campos de data e hora SAP ou os campos de timestamp do banco de dados em EventTimestamp. Preserve a precisão disponível no sistema para os registros de data e hora de origem. Aplique o período de extração configurado a EventTimestamp, não apenas à data de criação da ordem.
- Crie uma linha de evento para cada ocorrência na origem. 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, e mantenha os identificadores de origem quando forem úteis para investigar duplicidades.
- Remova duplicidades apenas de eventos idênticos da origem, usando chaves estáveis. Não agrupe alterações de status, confirmações, movimentações de materiais, leituras de medição ou documentos de liquidação distintos que ocorreram em momentos diferentes. Se vários registros de origem representarem um único evento de negócio, documente na especificação de extração qual fonte tem precedência.
- Valide se os 14 valores de atividade aparecem em linhas explícitas, se cada linha tem um identificador de caso e um registro de data e hora e se os registros 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 em outro formato de Event Log compatível com o ProcessMind. Use uma linha por evento, inclua as colunas obrigatórias com os nomes configurados exatos, preserve os registros de data e hora ISO 8601 quando houver suporte e carregue o 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 registro de data e hora.
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, as fontes de documentos de alteração e as fontes de documentos de controlling também são necessárias para gerar as 14 atividades. Verifique os nomes exatos dos campos no seu banco de dados SAP antes de executar a extração.
- Colunas obrigatórias de saída: MaintenanceWorkOrder, Activity, EventTimestamp, SourceSystem e LastDataUpdate devem estar presentes em todas as linhas de evento.
- Colunas recomendadas de saída: Preencha MaintenanceOrderType, MaintenancePriority, EquipmentNumber, FunctionalLocation, MaintenancePlant, ResponsiblePlannerGroup, MainWorkCenter, NotificationNumber, TargetFinishDate, CreatedByUser e SystemStatus quando estiverem disponíveis.
- Período: 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 dos relatórios. 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 geralmente representa as atribuições de status, mas o histórico de alterações pode exigir [Your status history table] ou documentos de alteração. Configure a fonte que contém o registro de data e hora da alteração de status e o histórico das transições.
- 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 registro de data e hora 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 registro de data e hora 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 o período de extração, selecione apenas as colunas necessárias, processe períodos longos em lotes e materialize extrações intermediárias das fontes quando as junções diretas entre esquemas 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 as restrições de replicação ou licenciamento da plataforma de banco de dados.
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 fluxos de trabalho de manutenção e identificar oportunidades de redução de custos. Nossa estrutura ajuda você a organizar os dados corretamente e ter total visibilidade das operações.
Elimine gargalos na manutenção de ativos no SAP hoje mesmo
Reduza em 30% o tempo de ciclo da manutenção a partir de agora
Não é necessário cartão de crédito... Configuração em 5 minutos