Seu Template de Dados para Requisição no Purchase to Pay
Seu Template de Dados para Requisição no Purchase to Pay
- Atributos recomendados para coleta em análise detalhada
- Principais atividades para monitorar na descoberta de processos
- Orientações para extração de dados do SAP S/4HANA
Atributos de Requisição ao Pagamento
| Nome | Descrição | ||
|---|---|---|---|
| ID da Requisição de Compra PurchaseRequisitionId | O identificador exclusivo de um documento de requisição de compra. | ||
| Descrição O ID da Requisição de Compra é a chave primária que identifica exclusivamente cada solicitação de bens ou serviços no SAP S/4HANA. Ele serve como o identificador central do caso, vinculando todas as atividades e mudanças relacionadas a uma requisição específica, desde sua criação até seu estado final, como aprovação, rejeição ou conversão em um pedido de compra. No process mining, este atributo é fundamental para reconstruir o ciclo de vida de ponta a ponta de cada requisição. Ao agrupar todos os eventos relacionados sob um único ID de Requisição de Compra, os analistas podem medir com precisão os tempos de ciclo, rastrear mudanças de status e analisar os diferentes caminhos que uma requisição pode percorrer no processo de aprovação. Por que é importante Este é o identificador de caso essencial que conecta todas as etapas relacionadas ao processo, permitindo uma visão completa e coerente do ciclo de vida da requisição. Onde obter Este atributo é o Número da Requisição de Compra, encontrado na tabela EBAN, campo BANFN. Exemplos 100178901001789110017892 | |||
| Nome da Atividade ActivityName | O nome da atividade de negócio que ocorreu em um ponto específico do processo de requisição. | ||
| Descrição O campo Nome da Atividade descreve um evento ou tarefa específica que ocorreu no ciclo de vida de uma requisição de compra. Essas atividades derivam dos logs do sistema, como documentos de modificação e históricos de workflow, representando marcos importantes do processo como 'Requisição Criada', 'Início da Etapa de Aprovação' ou 'Pedido de Compra Criado'. A análise dessas atividades permite visualizar o fluxo do processo, identificar gargalos e medir o tempo gasto em diferentes estágios. Entender a sequência e a frequência de atividades como 'Requisição Alterada' ou 'Requisição Rejeitada' é fundamental para identificar ineficiências e áreas de melhoria. Por que é importante Define as etapas, formando a espinha dorsal do mapa de processos e permitindo analisar o fluxo, variações e gargalos. Onde obter Este é um atributo derivado, normalmente construído pela interpretação de dados de tabelas de documentos de modificação (CDHDR, CDPOS) e logs de workflow (ex: SWWLOGHIST). Exemplos Requisição de vaga criadaEtapa de Aprovação ConcluídaRequisição aprovadaPedido de Compra criado | |||
| Tempo do Evento EventTime | A data e hora exatas em que uma atividade específica ocorreu. | ||
| Descrição Event Time é o registro de tempo de quando uma atividade ocorreu. Esse dado é vital para a ordenação cronológica e base para todos os cálculos de duração e performance. Por exemplo, a diferença entre 'Requisição Enviada' e 'Requisição Aprovada' define o tempo do ciclo de aprovação. Timestamps precisos são essenciais para analisar o desempenho, identificar atrasos e monitorar SLAs. Este atributo alimenta Dashboards que visualizam tempos de ciclo, rastreiam requisições paradas e comparam a performance entre períodos. Por que é importante Este timestamp é essencial para ordenar eventos, calcular tempos de ciclo e analisar o desempenho do processo e seus gargalos. Onde obter Os timestamps são normalmente obtidos de cabeçalhos de documentos de modificação (CDHDR-UDATE, CDHDR-UTIME) ou logs de eventos de workflow. Exemplos 2023-04-15T10:05:30Z2023-04-15T14:22:01Z2023-04-16T09:00:15Z | |||
| Departamento Department | O departamento ou centro de custo ao qual os custos da requisição são debitados. | ||
| Descrição O atributo Departamento, muitas vezes representado pelo Centro de Custo no SAP, identifica a unidade de negócio responsável pela compra solicitada. É uma informação financeira e organizacional crucial atribuída ao item de linha de uma requisição. No process mining, este atributo é essencial para a análise de desempenho departamental. Ele habilita Dashboards que comparam métricas essenciais, como tempo de ciclo, taxas de alteração e taxas de rejeição entre diferentes departamentos. Isso ajuda a identificar departamentos de alto desempenho cujas práticas poderiam ser adotadas em outros lugares, bem como departamentos que podem precisar de treinamento adicional ou suporte no processo. Por que é importante Permite comparar a performance entre unidades de negócio, destacando variações em tempos de ciclo ou taxas de rejeição para identificar melhores práticas. Onde obter Este é o Centro de Custo, normalmente encontrado na tabela de atribuição de contas EBKN, campo KOSTL. Exemplos FIN-1001IT-2005MKT-3010 | |||
| ID do Aprovador ApproverId | O identificador do usuário que realizou uma etapa de aprovação ou rejeição. | ||
| Descrição O ID do Aprovador identifica especificamente o usuário que concluiu uma atividade de aprovação ou rejeição. Ele difere do ID de Usuário geral, pois foca apenas nos tomadores de decisão dentro do workflow de aprovação. Capturar essas informações é vital para analisar o processo de aprovação detalhadamente. Este atributo permite analisar o comportamento de aprovação, como identificar gestores com tempos de aprovação longos ou aqueles que rejeitam requisições com frequência. É fundamental para Dashboards focados em tempos de ciclo de etapas de aprovação e análise de gargalos no workflow, ajudando a identificar indivíduos ou funções específicas que possam estar causando atrasos. Por que é importante Identifica quem tomou a decisão na etapa de aprovação, permitindo analisar tempos de ciclo e gargalos por indivíduo ou cargo. Onde obter Essas informações são normalmente extraídas de tabelas do SAP Business Workflow, como SWW_WI2OBJ e SWWLOGHIST, que vinculam itens de trabalho ao usuário que os concluiu. Exemplos MJOHNSONCWILLIAMSLBLACK | |||
| ID do usuário UserId | O identificador do usuário que criou a requisição ou realizou uma atividade específica. | ||
| Descrição O ID de Usuário identifica o funcionário ou usuário do sistema responsável por um evento específico no ciclo de vida da requisição. Pode ser a pessoa que criou a requisição, o gerente que a aprovou ou o agente que a alterou. Em casos de etapas automatizadas, esse pode ser o ID de um usuário do sistema ou de lote. A análise por ID de Usuário ajuda a entender o comportamento específico do usuário, a distribuição da carga de trabalho e o desempenho. É fundamental para identificar necessidades de treinamento, reconhecer indivíduos de alto desempenho e garantir a responsabilidade dentro do processo. Também apoia a análise de desempenho departamental quando combinado com os dados mestre do usuário. Por que é importante Permite analisar a performance do usuário, distribuição de carga de trabalho e conformidade. É crucial para identificar necessidades de treinamento e gargalos de recursos. Onde obter Encontrado em EBAN-ERNAM para o criador. Para mudanças posteriores, está em CDHDR-USERNAME. Para aprovações, fica nos logs de workflow. Exemplos JSMITHRROEWF-BATCH | |||
| Status da Requisição RequisitionStatus | O status atual de processamento ou aprovação da requisição de compra. | ||
| Descrição O Status da Requisição indica o estado atual da requisição em seu ciclo de vida. No SAP, isso costuma ser representado pelo Indicador de Liberação, que mostra se uma requisição está bloqueada, em aprovação, parcialmente aprovada ou totalmente aprovada. Esse status muda conforme a requisição avança pelo workflow. Acompanhar o status ao longo do tempo é fundamental para entender o fluxo do processo. Ajuda a identificar onde as requisições estão ficando presas e por quanto tempo. Analisar as transições entre status permite uma visão detalhada do processo de aprovação e de suas variantes. Por que é importante Indica o estado atual da requisição, fundamental para rastrear o progresso, identificar gargalos e analisar o fluxo. Onde obter O status de liberação é frequentemente determinado pelo Indicador de Liberação, encontrado na tabela EBAN, campo FRGZU. Exemplos B1S | |||
| Tipo de Requisição RequisitionType | Código que classifica a requisição de compra, por exemplo, para itens padrão, serviços ou despesas de capital (CAPEX). | ||
| Descrição O Tipo de Requisição, também conhecido como Tipo de Documento no SAP, é um campo de configuração essencial que categoriza as requisições de compra. Diferentes tipos podem acionar diferentes workflows de aprovação, ter diferentes configurações de campos e ser usados para diferentes fins comerciais, como itens de estoque padrão, serviços externos ou compras de ativos. Ao analisar o processo com base no Tipo de Requisição, as organizações podem entender como diferentes tipos de solicitações são tratados. Isso permite comparar o desempenho, os tempos de ciclo e os caminhos de aprovação entre categorias, o que pode revelar se certos tipos de requisição são mais ou menos eficientes e ajudar a personalizar as melhorias do processo. Por que é importante Categoriza as requisições para permitir análises comparativas, ajudando a entender se diferentes tipos de pedidos têm fluxos, gargalos ou tempos de ciclo distintos. Onde obter Este é o campo Tipo de Documento, encontrado na tabela EBAN, campo BSART. Exemplos NBFORV | |||
| Valor da Requisição RequisitionAmount | O valor monetário total da requisição de compra. | ||
| Descrição O Valor da Requisição representa o custo total estimado dos bens ou serviços solicitados. Esse valor costuma ser um fator determinante para a complexidade e a duração do workflow de aprovação, já que requisições de maior valor normalmente exigem mais níveis de aprovação. A análise desse atributo permite segmentar o processo com base no valor. Pode ajudar a responder perguntas como: 'Requisições de alto valor levam mais tempo para serem aprovadas?' ou 'Qual é o valor das requisições que são frequentemente rejeitadas?'. É uma dimensão crítica para entender o impacto financeiro das ineficiências do processo. Por que é importante Ajuda a segmentar o processo pelo impacto financeiro, correlacionando-o com a complexidade da aprovação e o tempo de ciclo. Vital para análises baseadas em valor. Onde obter O valor total pode ser encontrado na tabela EBAN, campo GFWERT. O valor ao nível do item está em EBAN-PREIS. Exemplos 1500.0075000.50250.75 | |||
| Data de necessidade RequiredByDate | A data em que o solicitante precisa dos bens ou serviços solicitados. | ||
| Descrição A Data de Necessidade, ou Data de Remessa no SAP, especifica quando os bens ou serviços no item de linha da requisição são necessários. Essa data é definida pelo solicitante e serve como meta para todo o processo de compras. Este atributo é essencial para calcular o KPI 'Taxa de Conclusão de Requisição no Prazo'. Ao comparar a Data de Necessidade com a data de aprovação final ou de criação do pedido de compra, a organização pode medir sua capacidade de atender aos níveis de serviço internos e às necessidades do negócio. Analisar requisições que perdem esse prazo pode destacar atrasos sistêmicos no processo de compras. Por que é importante Define a data-alvo para conclusão do pedido, permitindo medir a entrega no prazo e a adesão aos níveis de serviço (SLAs) internos. Onde obter Esta é a Data de Remessa, encontrada ao nível do item na tabela EBAN, campo LFDAT. Exemplos 2023-11-152023-12-012024-01-20 | |||
| É Automatizado IsAutomated | Um indicador que sinaliza se uma atividade foi realizada por um usuário de sistema em vez de um humano. | ||
| Descrição O atributo É Automatizado é um sinalizador booleano que é verdadeiro se uma atividade foi executada por um usuário do sistema ou em lote (batch), como 'WF-BATCH' para ações de workflow. Isso ajuda a distinguir entre etapas manuais e automatizadas no processo. Este atributo é essencial para medir o nível de automação no processo de requisição e para calcular o KPI 'Taxa de Aprovação Automatizada'. Ao filtrar etapas automatizadas ou manuais, os analistas podem comparar sua eficiência e identificar oportunidades para maior automação, visando reduzir tempos de processamento e esforço manual. Por que é importante Distingue atividades humanas de automáticas, o que é fundamental para medir taxas de automação e identificar oportunidades para automatizar tarefas manuais. Onde obter Este é um atributo derivado, normalmente baseado em uma regra que verifica se o ID de Usuário de um evento pertence a uma lista de usuários conhecidos do sistema ou em lote (batch). Exemplos verdadeirofalse | |||
| É Retrabalho IsRework | Um indicador que sinaliza se uma atividade constitui retrabalho, como uma alteração após o envio. | ||
| Descrição Is Rework é um indicador booleano que identifica tarefas repetitivas ou que não agregam valor. Um exemplo comum é a 'Requisição Alterada' após o envio para aprovação, o que reinicia o fluxo. Este atributo é vital para quantificar o retrabalho e seu impacto nos tempos de ciclo. O Dashboard de Alteração de Requisição e Taxa de Retrabalho usa esse flag para evidenciar ineficiências. Reduzir o retrabalho é o foco de muitas melhorias, pois economiza tempo e esforço direto. Por que é importante Sinaliza atividades que representam esforço desperdiçado ou repetição, permitindo medir diretamente o retrabalho e seu impacto na eficiência. Onde obter Este é um atributo calculado. A lógica normalmente sinalizaria qualquer atividade de 'Requisição Alterada' que ocorra após a primeira 'Requisição Enviada para Aprovação' como retrabalho. Exemplos verdadeirofalse | |||
| End Time EndTime | A data e hora precisas em que uma atividade específica foi concluída. | ||
| Descrição EndTime é o registro de tempo que indica quando uma atividade foi concluída. Enquanto muitos eventos do sistema são instantâneos (StartTime igual a EndTime), tarefas humanas como aprovações podem ter início e fim distintos. Este timestamp marca a finalização do trabalho. Ter um EndTime separado permite medir com precisão o tempo de processamento ativo versus o tempo de espera (idle). É usado com o StartTime para calcular a métrica de ProcessingTime, aprimorando a análise de utilização de recursos e eficiência em tarefas manuais. Por que é importante Marca a conclusão de uma atividade, permitindo calcular o tempo de processamento ativo e detalhar a duração das tarefas. Onde obter Isso é derivado de logs de workflow que podem capturar tanto quando um item de trabalho foi criado (DataHoraInicial) quanto quando foi concluído (DataHoraFinal). Exemplos 2023-04-15T10:20:30Z2023-04-15T14:25:01Z2023-04-16T11:00:45Z | |||
| Moeda Currency | O código da moeda para o valor da requisição. | ||
| Descrição Este atributo especifica a moeda na qual o valor da requisição é denominado, por exemplo, BRL, USD ou EUR. Ele fornece o contexto necessário para o atributo Valor da Requisição, especialmente em organizações multinacionais que operam com várias moedas. Para uma análise financeira e relatórios precisos, é essencial considerar a moeda. Ao agregar ou comparar valores de requisição, todos os valores devem ser convertidos para uma moeda comum para garantir resultados significativos. Este atributo é um pré-requisito para tais conversões. Por que é importante Fornece contexto essencial para o valor da requisição, permitindo análises financeiras e comparações precisas em ambientes multimoeda. Onde obter Isso é encontrado na tabela EBAN, campo WAERS. Exemplos USDEURGBP | |||
| Motivo da Rejeição RejectionReason | O motivo fornecido quando uma requisição de compra é rejeitada. | ||
| Descrição O Motivo da Rejeição explica por que um aprovador decidiu rejeitar uma requisição de compra. Os motivos podem incluir excesso de orçamento, informações incorretas, não conformidade com as políticas ou duplicidade de outra solicitação. Essas informações fornecem um contexto crucial para entender falhas no processo. A análise dos motivos de rejeição ajuda a identificar as causas raízes de ineficiências e retrabalho. Por exemplo, se 'Centro de Custo Incorreto' for um motivo comum, isso indica a necessidade de melhor treinamento do usuário ou validação do sistema. Este atributo é a chave para o Dashboard de Análise de Rejeição de Requisição e é vital para a melhoria direcionada do processo. Por que é importante Fornece a causa raiz de falhas no processo, permitindo melhorias focadas para reduzir o retrabalho e aumentar a taxa de requisições certas de primeira. Onde obter Muitas vezes este não é um campo padrão. Pode ser capturado em elementos de container de workflow, textos longos associados à requisição ou campos personalizados. Exemplos Excede o orçamentoFornecedor incorretoSolicitação duplicada | |||
| Nível de Urgência UrgencyLevel | Classificação da urgência da requisição, que pode influenciar sua prioridade de processamento. | ||
| Descrição O Nível de Urgência indica a prioridade da solicitação de compra. Embora não seja um campo dedicado padrão, algumas organizações usam campos como o Número de Rastreamento de Requisitos para capturar essa informação. Isso permite que os solicitantes sinalizem necessidades críticas que podem exigir processamento acelerado. Analisar o impacto da urgência é importante para avaliar se o processo prioriza efetivamente as solicitações críticas. O Dashboard de Análise de Impacto do Nível de Urgência usa este atributo para comparar tempos de ciclo e taxas de aprovação de requisições urgentes versus padrão, ajudando a determinar se o tratamento prioritário está funcionando como pretendido. Por que é importante Permite analisar como o desempenho do processo difere para solicitações de alta prioridade, ajudando a validar se itens urgentes são realmente agilizados. Onde obter Não existe um campo de urgência padrão. Algumas empresas utilizam o Número de Rastreamento do Requisito (EBAN-BEDAR) para essa finalidade. Também pode ser um campo personalizado. Exemplos AltoMédioBaixo | |||
| Nome da Etapa de Aprovação ApprovalStepName | O nome ou descrição específica de uma etapa de aprovação no workflow. | ||
| Descrição O Nome da Etapa de Aprovação fornece uma descrição compreensível de um estágio específico do workflow de aprovação, como 'Aprovação do Gerente' ou 'Aprovação do VP de Finanças'. Isso é mais descritivo do que uma atividade genérica como 'Etapa de Aprovação Concluída'. Este atributo é fundamental para os Dashboards de Tempo de Ciclo da Etapa de Aprovação e de Análise de Gargalos no Workflow. Ele permite uma visão granular do processo de aprovação, possibilitando apontar exatamente quais estágios de aprovação estão causando os maiores atrasos e onde o trabalho está se acumulando. Esse nível de detalhe é necessário para intervenções direcionadas que visam agilizar a cadeia de aprovação. Por que é importante Detalha os estágios de aprovação de forma granular, permitindo identificar gargalos precisos no Workflow multinível. Onde obter Essas informações são derivadas da descrição da tarefa do workflow, que pode ser encontrada vinculando o log do workflow às tabelas de definição de tarefas, como a T528T. Exemplos Aprovação do GestorAprovação do DiretorAprovação do VP de Finanças | |||
| Número do Pedido de Compra PurchaseOrderNumber | O número do pedido de compra que foi criado a partir da requisição. | ||
| Descrição O Número do Pedido de Compra é o identificador do documento oficial de compra criado a partir de uma requisição aprovada. A criação de um pedido de compra costuma ser o resultado final bem-sucedido de uma requisição, indicando que a solicitação foi convertida em um pedido formal com um fornecedor. Este atributo é fundamental para medir o KPI de Lead Time da Requisição ao Pedido de Compra e a taxa de conversão geral. Ele vincula o processo de requisição ao processo de compra subsequente, permitindo uma visão mais ampla e de ponta a ponta de todo o ciclo de Compra ao Pagamento. Por que é importante Vincula a requisição ao documento de compra seguinte, permitindo medir a taxa de conversão e o lead time de requisição para pedido (PO). Onde obter Encontrado na tabela EBAN, campo EBELN, assim que um pedido (PO) é criado a partir do item da requisição. Exemplos 450001789045000178914500017892 | |||
| Sistema de Origem SourceSystem | Identifica a instância específica do SAP S/4HANA de onde os dados foram extraídos. | ||
| Descrição O atributo Sistema de Origem indica o sistema de onde os dados do processo foram gerados. Em organizações com múltiplas instâncias SAP, como sistemas diferentes para desenvolvimento, garantia de qualidade e produção, ou sistemas separados para regiões diferentes, este campo é crucial para a governança de dados e o contexto. Ele garante que os dados de diferentes fontes possam ser distinguidos, evitando a agregação incorreta e permitindo análises específicas do sistema. É um atributo obrigatório para manter a linhagem dos dados e garantir a rastreabilidade dos dados do processo. Por que é importante Oferece contexto essencial sobre a origem e governança dos dados, garantindo rastreabilidade em cenários multissistemas. Onde obter Este costuma ser o ID do Sistema SAP (SID), que pode ser recuperado de variáveis de sistema ou tabelas de configuração. Exemplos S4PECCS4H_PROD_01 | |||
| Tempo de Processamento ProcessingTime | O tempo gasto em uma atividade específica. | ||
| Descrição Processing Time mede o tempo para concluir uma única atividade, calculado pela diferença entre o fim e o início de um evento. No SAP, muitos eventos são instantâneos, resultando em tempo zero. Porém, em aprovações, representa o tempo que o aprovador dedicou à tarefa. Essa métrica é útil para entender o esforço nas etapas, diferenciando o tempo que o caso ficou parado (wait time) de quando foi trabalhado (processing time), oferecendo uma visão detalhada da performance. Por que é importante Mede o tempo de trabalho ativo em uma atividade, ajudando a separar o tempo de execução do tempo de espera, essencial para análise de recursos. Onde obter Este é um atributo calculado, normalmente derivado como DataHoraFinal menos DataHoraInicial para cada evento no Event Log. Exemplos PT15MPT2H30MP1D | |||
| Última Atualização de Dados LastDataUpdate | O timestamp que indica quando os dados para este registo foram atualizados pela última vez a partir do sistema de origem. | ||
| Descrição Este atributo registra a data e a hora da extração ou atualização de dados mais recente do sistema de origem. É um metadado crítico para entender a atualidade dos dados analisados. Analistas e usuários de negócios dependem desse timestamp para saber se os dados do processo refletem o estado mais atual das operações. Em qualquer análise de processo, conhecer a atualidade dos dados é fundamental para tomar decisões informadas. Esse atributo ajuda a gerenciar as expectativas dos usuários e garante que as conclusões sejam tiradas de dados tão atualizados quanto o necessário para a análise específica. Por que é importante Indica quão recentes são os dados, algo crucial para confiar na análise e tomar decisões de negócio ágeis. Onde obter Este timestamp é gerado e adicionado durante o processo de extração, transformação e carga (ETL). Exemplos 2023-10-27T02:00:00Z2023-10-28T02:00:00Z | |||
Atividades de Requisição ao Pagamento
| Atividade | Descrição | ||
|---|---|---|---|
| Etapa de Aprovação Concluída | Ocorre quando um aprovador valida a requisição, concluindo uma etapa do fluxo multinível. Inferido pela mudança no status de liberação. | ||
| Por que é importante Esta atividade permite uma análise detalhada do fluxo de aprovação, medindo o tempo gasto em cada etapa individual. Ajuda a identificar aprovadores eficientes versus gargalos no processo. Onde obter Inferido via documentos de modificação da EBAN. Uma mudança no status do código de liberação (ex: campo FRGZU) de não liberado para liberado marca este evento. Captura Rastreie alterações nos campos de status de liberação na EBAN para cada código de liberação definido na estratégia. Tipo de evento inferred | |||
| Pedido de Compra criado | Indica que um pedido de compra foi gerado referenciando o item da requisição. É um evento explícito do sistema que vincula a requisição ao documento de compra seguinte. | ||
| Por que é importante Este é um marco importante e um resultado bem-sucedido para o processo de requisição. O tempo entre a aprovação da requisição e a criação do pedido de compra é um KPI crítico para medir a eficiência das compras. Onde obter Gravado explicitamente na criação de um item de pedido de compra. O vínculo fica na tabela EKPO, que contém o número da requisição de origem (BANFN) e o número do item (BNFPO). Captura Fazer o Join da tabela EKPO com a EBAN usando o número e item da requisição. A data de criação do item do pedido (PO) marca o evento. Tipo de evento explicit | |||
| Requisição aprovada | Marca a aprovação final da requisição, tornando-a apta para virar um pedido de compra. Este marco é inferido quando o status de liberação atinge o estado final 'Aprovado'. | ||
| Por que é importante Este é um marco de sucesso crítico e um ponto final comum para análise de tempo de ciclo. Significa que a requisição passou por todas as verificações e está pronta para a ação do departamento de compras. Onde obter Inferido por mudança de status na tabela EBAN, quando o indicador de liberação geral (FRGZU) ou status de processamento (PROCSTAT) atinge o valor final 'Aprovado'. Captura Identificar o timestamp de quando o código de liberação final é aplicado ou o status geral da requisição muda para 'Aprovado'. Tipo de evento inferred | |||
| Requisição de vaga criada | Marca a criação inicial da requisição no sistema. O evento é capturado quando o usuário salva a requisição pela primeira vez, registrando o timestamp de criação. | ||
| Por que é importante Esta atividade serve como o ponto inicial principal para a análise do ciclo de vida da requisição. É essencial para medir o tempo de ciclo de ponta a ponta, desde a identificação inicial da necessidade até a aprovação final ou conversão em um pedido de compra. Onde obter Este é um evento explícito capturado da tabela EBAN, usando os campos data de criação (ERDAT) e hora de criação (ERZEIT) para o número da requisição de compra específico (BANFN). Captura Use os campos de timestamp de criação (ERDAT, ERZEIT) da tabela EBAN para cada requisição (BANFN). Tipo de evento explicit | |||
| Requisição Encerrada | Indica que o item da requisição está totalmente processado e não podem ser criados novos pedidos a partir dele. Geralmente definido ao atingir a quantidade total pedida. | ||
| Por que é importante Esta atividade representa a conclusão final e bem-sucedida do ciclo de vida do item de requisição. Ela confirma que a necessidade do negócio foi totalmente traduzida em um pedido de compra. Onde obter Inferido da tabela EBAN. Ocorre quando o indicador 'Fechado' (EBAKZ) é marcado, geralmente quando a quantidade pedida iguala a quantidade requisitada. Captura Identificar o evento onde o indicador 'Fechado' (EBAKZ) é definido na tabela EBAN através de documentos de modificação. Tipo de evento inferred | |||
| Requisição Rejeitada | Rejeição final da requisição por um aprovador, interrompendo o fluxo. Capturado por uma atualização de status específica que indica a rejeição. | ||
| Por que é importante Esta atividade é um ponto final de falha crítico. Analisar a frequência de rejeição, os motivos e os pontos no processo ajuda a identificar problemas de conformidade com as políticas, orçamento ou qualidade da solicitação. Onde obter Inferido por mudança de status na tabela EBAN. O status de processamento (PROCSTAT) ou indicador de liberação é definido para um valor que signifique explicitamente 'Rejeitado'. Captura Identificar o timestamp de quando o status geral na EBAN é atualizado para 'Rejeitado' via documentos de modificação. Tipo de evento inferred | |||
| Aprovação Resetada | Evento onde todo o Workflow de aprovação é resetado, geralmente por uma alteração significativa na requisição, forçando o reinício do fluxo desde o primeiro nível. | ||
| Por que é importante Esta atividade destaca retrabalhos significativos que afetam gravemente o tempo de ciclo. Identificar as causas dos reinícios de aprovação é fundamental para simplificar o processo e reduzir atrasos. Onde obter Inferido via documentos de modificação da EBAN. Detectado quando campos de status de liberação (como FRGKZ ou FRGZU) são limpos após terem sido parcial ou totalmente definidos. Captura Procurar nos logs de modificação uma mudança no status de liberação de um estado liberado de volta para não liberado. Tipo de evento inferred | |||
| Etapa de Aprovação Iniciada | Indica que uma requisição aguarda ação de um aprovador ou grupo. É inferido quando o status mostra que há um código de liberação pendente. | ||
| Por que é importante Esta atividade é essencial para identificar gargalos na cadeia de aprovação. Analisar a duração desse estado ajuda a identificar requisições paradas e aprovadores sobrecarregados. Onde obter Inferido dos campos de status de liberação da EBAN e da estratégia configurada. O evento inicia quando um código específico se torna o próximo a ser processado. Captura Determina quando uma requisição entra em um estado onde um código de liberação específico está pendente de aprovação, baseado nos logs de workflow ou campos de status. Tipo de evento inferred | |||
| Fonte de Suprimento Atribuída | Ação de um comprador atribuindo fornecedor, contrato ou registro info a um item aprovado. Passo fundamental para preparar a requisição para virar um pedido de compra (PO). | ||
| Por que é importante Esta atividade preenche a lacuna entre a aprovação e o pedido. Medir o tempo para atribuir uma fonte ajuda a identificar atrasos na carga de trabalho do comprador e na eficiência do sourcing. Onde obter Inferido quando valores são inseridos nos campos de fonte de suprimento na EBAN, como fornecedor fixo (LIFNR), registro info (INFNR) ou contrato (KONNR). Captura Rastreie o preenchimento de campos como LIFNR, INFNR ou KONNR na tabela EBAN por meio de documentos de modificação. Tipo de evento inferred | |||
| Requisição Alterada | Ocorre quando um usuário altera campos-chave como quantidade, preço ou material após a criação. Esta ação fica registrada no sistema de documentos de modificação do SAP. | ||
| Por que é importante Rastrear as alterações é fundamental para identificar ciclos de retrabalho e seu impacto nos prazos. Uma alta frequência de alterações sugere problemas na qualidade dos dados ou mudanças de requisitos, que são áreas fundamentais para a melhoria de processos. Onde obter Registrado explicitamente nas tabelas de documentos de modificação do SAP (CDHDR e CDPOS) para alterações na tabela EBAN. Cada mudança em um campo rastreado cria uma entrada. Captura Extrair eventos de modificação de CDHDR/CDPOS onde a classe do objeto é BANF para requisições de compra. Tipo de evento explicit | |||
| Requisição Enviada para Aprovação | Momento em que o solicitante envia formalmente a requisição, disparando o Workflow. Inferido quando a estratégia de liberação é determinada e o status muda para 'Em Aprovação'. | ||
| Por que é importante Este é um marco crítico que inicia a contagem para os KPIs de tempo de ciclo de aprovação. Analisar o tempo entre a criação e o envio pode revelar atrasos na fase de preparação da requisição. Onde obter Inferido via documentos de modificação (CDHDR/CDPOS) para a tabela EBAN, quando campos da estratégia de liberação (ex: FRGST) são preenchidos ou o status geral muda para 'Em Aprovação'. Captura Identificar a primeira entrada de documento de modificação que indica o início do Workflow de aprovação ou mudança de status para 'Em Aprovação'. Tipo de evento inferred | |||
| Requisição Retirada | Ocorre quando o solicitante cancela ou apaga a requisição antes do processamento total. Geralmente é uma ação que ativa o flag de eliminação no item. | ||
| Por que é importante Rastrear as retiradas ajuda a entender a volatilidade da demanda e os motivos do cancelamento. Representa um estado terminal para a requisição, impedindo o processamento posterior. Onde obter Capturado quando o campo indicador de eliminação (LOEKZ) na tabela EBAN é definido. A alteração é registrada em CDHDR/CDPOS. Captura Identificar o evento onde o indicador de eliminação (LOEKZ) na tabela EBAN é definido como 'L'. Tipo de evento explicit | |||
Guias de Extração
Etapas
- Pré-requisitos: Certifique-se de ter um usuário com as autorizações adequadas no SAP S/4HANA para acessar as visões CDS necessárias. Isso geralmente envolve permissões para objetos como S_TABU_NAM e acesso a ferramentas de visualização de dados.
- Identificar Método de Acesso: Determine como você se conectará ao banco de dados SAP S/4HANA para executar as consultas SQL. Ferramentas comuns incluem SAP HANA Studio, Eclipse IDE com ADT (ABAP Development Tools), ou clientes SQL de terceiros como o DBeaver.
- Revisar a Consulta SQL: Familiarize-se com o script SQL fornecido. Ele utiliza Expressões de Tabela Comuns (CTEs) para coletar dados de diferentes atividades e uni-los em um Event Log unificado.
- Customizar Placeholders: Localize e substitua os campos reservados na consulta. Você precisará definir o intervalo de datas (formato
[AAAA-MM-DD]) para a extração e especificar os códigos de empresa ([Seu Código de Empresa]) da sua organização. - Executar a Consulta: Execute a consulta SQL customizada no banco de dados SAP S/4HANA. Dependendo do volume de dados e do período selecionado, a execução pode levar algum tempo.
- Revisão Inicial dos Dados: Assim que a consulta terminar, revise as primeiras linhas do resultado. Verifique se colunas como PurchaseRequisitionId, ActivityName e EventTime estão preenchidas corretamente e se os formatos estão certos.
- Transformação de Dados: A consulta foi projetada para gerar dados prontos para o Process Mining. As funções
CASTeCONCATgarantem tipos de dados consistentes, dispensando grandes transformações pós-execução. - Exportar o Event Log: Exporte o conjunto completo de resultados do seu cliente SQL para um arquivo CSV. Garanta que a codificação do arquivo seja UTF-8 para evitar problemas de caracteres.
- Preparar para o Upload: Antes de subir para a ferramenta de Process Mining, verifique se o CSV tem os cabeçalhos corretos (
PurchaseRequisitionId,ActivityName,EventTime, etc.) e se o formato de data e hora emEventTimeé suportado pela plataforma. - Upload para o ProcessMind: Faça o upload do arquivo CSV final no seu projeto ProcessMind. Configure o projeto mapeando
PurchaseRequisitionIdcomo Case ID,ActivityNamecomo Atividade eEventTimecomo Timestamp.
Configuração
- Core CDS Views: A extração utiliza principalmente a
I_PurchaseRequisitionAPI01para dados principais de requisição, aI_ChangeDocumente aI_ChangeDocumentItempara rastrear alterações e atualizações de status, e aI_PurchaseOrderItemAPI01para vincular a pedidos de compra. - Autorização: O usuário executor precisa de acesso de leitura às visões CDS mencionadas. Consulte sua equipe de segurança SAP para obter os perfis e autorizações necessários.
- Filtro de Período: É fundamental aplicar um filtro de data na data de criação da requisição (
CreationDate) para limitar o volume de dados. Recomenda-se um intervalo de 3 a 6 meses para uma análise inicial. - Filtragem Organizacional: Filtre os dados por
CompanyCodepara garantir que você está analisando o processo da entidade de negócio correta. Considere também filtrar porPurchaseRequisitionTypepara focar em processos de suprimentos específicos, como bens padrão vs. serviços. - Configuração de Documento de Modificação: A captura de atividades como 'Requisição Alterada' e etapas de aprovação depende da ativação do log de documentos de modificação para os campos relevantes no seu sistema SAP. Se esses eventos estiverem ausentes, verifique a configuração do sistema para a tabela EBAN.
- Performance: Para sistemas muito grandes com milhões de requisições, executar essa consulta por um longo período pode impactar o desempenho do sistema. Considere executá-la em horários de menor movimento ou em ambiente de homologação com dados atualizados recentemente.
a Consulta de Exemplo sql
WITH REQUISITIONS AS (
SELECT
PurchaseRequisition,
PurchaseRequisitionType,
PurReqnDescription,
CreatedByUser,
CreationDate,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS CreationTimestamp,
SourceOfSupplyIsAssigned
FROM I_PurchaseRequisitionAPI01
WHERE CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
AND CompanyCode IN ('[Your Company Code]')
),
CHANGE_DOCS AS (
SELECT
ObjectValue AS PurchaseRequisition,
UserName,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS ChangeTimestamp,
FieldName,
ValueNew,
ValueOld
FROM I_ChangeDocument AS H
JOIN I_ChangeDocumentItem AS I
ON H.ChangeDocument = I.ChangeDocument
WHERE H.Objectclass = 'EINKBELEG'
AND H.CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
)
-- 1. Requisition Created
SELECT
R.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Created' AS "ActivityName",
R.CreationTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM REQUISITIONS AS R
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON R.PurchaseRequisition = I.PurchaseRequisition
UNION ALL
-- 2. Requisition Submitted For Approval & 5. Approval Step Started
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
CASE
WHEN C.ValueOld = ''
THEN 'Requisition Submitted For Approval'
ELSE 'Approval Step Started'
END AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R
ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew != ''
UNION ALL
-- 3. Requisition Amended
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Amended' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('MENGE', 'PREIS', 'MATNR', 'LIFNR', 'INFNR')
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 4. Approval Reset
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Reset' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueOld != '' AND C.ValueNew = ''
UNION ALL
-- 6. Approval Step Completed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Step Completed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew IN ('1', '2', '3', '4', '5', '6', '7') -- Adjust release codes as per your config
UNION ALL
-- 7. Requisition Approved
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Approved' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGKE' AND C.ValueNew = '2' -- Final release indicator '2' is common for approved
UNION ALL
-- 8. Requisition Rejected
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Rejected' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew = 'B' -- 'B' for Blocked/Rejected is a common setting
UNION ALL
-- 9. Requisition Withdrawn
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Withdrawn' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'LOEKZ' AND C.ValueNew = 'X'
UNION ALL
-- 10. Source of Supply Assigned
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Source of Supply Assigned' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('LIFNR', 'INFNR') AND C.ValueNew != ''
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 11. Purchase Order Created
SELECT DISTINCT
I.PurchaseRequisition AS "PurchaseRequisitionId",
'Purchase Order Created' AS "ActivityName",
CAST(CONCAT(H.PurchaseOrderDate, 'T', LPAD(H.CreationTime, 6, '0')) AS TIMESTAMP) AS "EventTime",
H.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.OrderPriceUnit * I.OrderQuantity AS "RequisitionAmount",
'PO Created' AS "RequisitionStatus"
FROM I_PurchaseOrderItemAPI01 AS I
JOIN I_PurchaseOrderAPI01 AS H
ON I.PurchaseOrder = H.PurchaseOrder
JOIN REQUISITIONS AS R
ON I.PurchaseRequisition = R.PurchaseRequisition
WHERE I.PurchaseRequisition IS NOT NULL AND I.PurchaseRequisition != ''
UNION ALL
-- 12. Requisition Closed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Closed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'EBAKZ' AND C.ValueNew = 'X' Etapas
- Pré-requisitos: Certifique-se de ter um usuário com as autorizações adequadas no SAP S/4HANA para acessar as visões CDS necessárias. Isso geralmente envolve permissões para objetos como S_TABU_NAM e acesso a ferramentas de visualização de dados.
- Identificar Método de Acesso: Determine como você se conectará ao banco de dados SAP S/4HANA para executar as consultas SQL. Ferramentas comuns incluem SAP HANA Studio, Eclipse IDE com ADT (ABAP Development Tools), ou clientes SQL de terceiros como o DBeaver.
- Revisar a Consulta SQL: Familiarize-se com o script SQL fornecido. Ele utiliza Expressões de Tabela Comuns (CTEs) para coletar dados de diferentes atividades e uni-los em um Event Log unificado.
- Customizar Placeholders: Localize e substitua os campos reservados na consulta. Você precisará definir o intervalo de datas (formato
[AAAA-MM-DD]) para a extração e especificar os códigos de empresa ([Seu Código de Empresa]) da sua organização. - Executar a Consulta: Execute a consulta SQL customizada no banco de dados SAP S/4HANA. Dependendo do volume de dados e do período selecionado, a execução pode levar algum tempo.
- Revisão Inicial dos Dados: Assim que a consulta terminar, revise as primeiras linhas do resultado. Verifique se colunas como PurchaseRequisitionId, ActivityName e EventTime estão preenchidas corretamente e se os formatos estão certos.
- Transformação de Dados: A consulta foi projetada para gerar dados prontos para o Process Mining. As funções
CASTeCONCATgarantem tipos de dados consistentes, dispensando grandes transformações pós-execução. - Exportar o Event Log: Exporte o conjunto completo de resultados do seu cliente SQL para um arquivo CSV. Garanta que a codificação do arquivo seja UTF-8 para evitar problemas de caracteres.
- Preparar para o Upload: Antes de subir para a ferramenta de Process Mining, verifique se o CSV tem os cabeçalhos corretos (
PurchaseRequisitionId,ActivityName,EventTime, etc.) e se o formato de data e hora emEventTimeé suportado pela plataforma. - Upload para o ProcessMind: Faça o upload do arquivo CSV final no seu projeto ProcessMind. Configure o projeto mapeando
PurchaseRequisitionIdcomo Case ID,ActivityNamecomo Atividade eEventTimecomo Timestamp.
Configuração
- Core CDS Views: A extração utiliza principalmente a
I_PurchaseRequisitionAPI01para dados principais de requisição, aI_ChangeDocumente aI_ChangeDocumentItempara rastrear alterações e atualizações de status, e aI_PurchaseOrderItemAPI01para vincular a pedidos de compra. - Autorização: O usuário executor precisa de acesso de leitura às visões CDS mencionadas. Consulte sua equipe de segurança SAP para obter os perfis e autorizações necessários.
- Filtro de Período: É fundamental aplicar um filtro de data na data de criação da requisição (
CreationDate) para limitar o volume de dados. Recomenda-se um intervalo de 3 a 6 meses para uma análise inicial. - Filtragem Organizacional: Filtre os dados por
CompanyCodepara garantir que você está analisando o processo da entidade de negócio correta. Considere também filtrar porPurchaseRequisitionTypepara focar em processos de suprimentos específicos, como bens padrão vs. serviços. - Configuração de Documento de Modificação: A captura de atividades como 'Requisição Alterada' e etapas de aprovação depende da ativação do log de documentos de modificação para os campos relevantes no seu sistema SAP. Se esses eventos estiverem ausentes, verifique a configuração do sistema para a tabela EBAN.
- Performance: Para sistemas muito grandes com milhões de requisições, executar essa consulta por um longo período pode impactar o desempenho do sistema. Considere executá-la em horários de menor movimento ou em ambiente de homologação com dados atualizados recentemente.
a Consulta de Exemplo sql
WITH REQUISITIONS AS (
SELECT
PurchaseRequisition,
PurchaseRequisitionType,
PurReqnDescription,
CreatedByUser,
CreationDate,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS CreationTimestamp,
SourceOfSupplyIsAssigned
FROM I_PurchaseRequisitionAPI01
WHERE CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
AND CompanyCode IN ('[Your Company Code]')
),
CHANGE_DOCS AS (
SELECT
ObjectValue AS PurchaseRequisition,
UserName,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS ChangeTimestamp,
FieldName,
ValueNew,
ValueOld
FROM I_ChangeDocument AS H
JOIN I_ChangeDocumentItem AS I
ON H.ChangeDocument = I.ChangeDocument
WHERE H.Objectclass = 'EINKBELEG'
AND H.CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
)
-- 1. Requisition Created
SELECT
R.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Created' AS "ActivityName",
R.CreationTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM REQUISITIONS AS R
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON R.PurchaseRequisition = I.PurchaseRequisition
UNION ALL
-- 2. Requisition Submitted For Approval & 5. Approval Step Started
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
CASE
WHEN C.ValueOld = ''
THEN 'Requisition Submitted For Approval'
ELSE 'Approval Step Started'
END AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R
ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew != ''
UNION ALL
-- 3. Requisition Amended
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Amended' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('MENGE', 'PREIS', 'MATNR', 'LIFNR', 'INFNR')
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 4. Approval Reset
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Reset' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueOld != '' AND C.ValueNew = ''
UNION ALL
-- 6. Approval Step Completed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Step Completed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew IN ('1', '2', '3', '4', '5', '6', '7') -- Adjust release codes as per your config
UNION ALL
-- 7. Requisition Approved
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Approved' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGKE' AND C.ValueNew = '2' -- Final release indicator '2' is common for approved
UNION ALL
-- 8. Requisition Rejected
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Rejected' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew = 'B' -- 'B' for Blocked/Rejected is a common setting
UNION ALL
-- 9. Requisition Withdrawn
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Withdrawn' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'LOEKZ' AND C.ValueNew = 'X'
UNION ALL
-- 10. Source of Supply Assigned
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Source of Supply Assigned' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('LIFNR', 'INFNR') AND C.ValueNew != ''
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 11. Purchase Order Created
SELECT DISTINCT
I.PurchaseRequisition AS "PurchaseRequisitionId",
'Purchase Order Created' AS "ActivityName",
CAST(CONCAT(H.PurchaseOrderDate, 'T', LPAD(H.CreationTime, 6, '0')) AS TIMESTAMP) AS "EventTime",
H.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.OrderPriceUnit * I.OrderQuantity AS "RequisitionAmount",
'PO Created' AS "RequisitionStatus"
FROM I_PurchaseOrderItemAPI01 AS I
JOIN I_PurchaseOrderAPI01 AS H
ON I.PurchaseOrder = H.PurchaseOrder
JOIN REQUISITIONS AS R
ON I.PurchaseRequisition = R.PurchaseRequisition
WHERE I.PurchaseRequisition IS NOT NULL AND I.PurchaseRequisition != ''
UNION ALL
-- 12. Requisition Closed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Closed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'EBAKZ' AND C.ValueNew = 'X'