Seu Template de dados para processamento de devoluções e reembolsos
Seu Template de dados para processamento de devoluções e reembolsos
- Atributos recomendados para coleta
- Principais atividades a acompanhar
- Orientações para extração
Atributos do processamento de devoluções e reembolsos
| Nome | Descrição | ||
|---|---|---|---|
| Horário do evento EventTime | A data e a hora exatas em que a atividade ocorreu. | ||
| Descrição Este registro de data e hora marca o momento exato em que um evento de negócio aconteceu. Ele é registrado para cada atividade do processo, fornecendo a sequência cronológica dos eventos dentro de um caso. O horário do evento é essencial para todas as análises baseadas em tempo, incluindo o cálculo dos tempos de ciclo entre atividades, a identificação de gargalos em que o tempo é gasto aguardando e a medição da duração total do caso. Ele permite analisar a performance e verificar a conformidade com os acordos de nível de serviço (SLAs). Por que isso importa Este registro de data e hora é essencial para calcular todas as durações, analisar a performance do processo, identificar gargalos e entender a linha do tempo de cada caso de devolução. Onde obter Obtido de vários campos de data e hora nas tabelas do SAP. Para eventos de criação, geralmente são usados os campos ERDAT e ERZET, por exemplo, na VBAK. Para eventos de alteração, são usados UDATE e UTIME na tabela CDHDR. Exemplos 2023-04-15T10:22:05Z2023-04-16T14:01:30Z2023-04-18T09:15:00Z | |||
| ID do caso de devolução ReturnCaseId | O identificador exclusivo da solicitação de devolução de um cliente, vinculando todas as atividades e os documentos relacionados. | ||
| Descrição O ID do caso de devolução funciona como a chave primária para acompanhar todo o ciclo de vida de um processo de devolução, do início ao encerramento. Cada ID corresponde a uma devolução específica de um cliente e reúne todos os eventos associados, como criação da ordem, entrega, inspeção e processamento da nota de crédito. Na análise de processos, esse atributo é fundamental para construir o mapa do processo. Ele permite que o sistema agrupe eventos individuais em jornadas de ponta a ponta, possibilitando analisar variantes do processo, tempos de ciclo e gargalos de cada devolução. Por que isso importa Este é o identificador essencial do caso que conecta todas as etapas de uma jornada de devolução, permitindo analisar o fluxo e a performance do processo de ponta a ponta. Onde obter Normalmente, é o número da ordem de devolução do módulo de Vendas e Distribuição (SD). Ele está na tabela VBAK (dados do cabeçalho do documento de vendas), no campo VBELN, em que a categoria do documento (VBAK-VBTYP) é "H" para devoluções. Exemplos 600001236000045660000789 | |||
| Nome da atividade ActivityName | O nome de um evento ou etapa de negócio específico que ocorreu no processo de devoluções. | ||
| Descrição Este atributo descreve uma ação individual e distinta ou uma mudança de status no ciclo de vida da devolução, como "Return Order Created", "Goods Receipt Posted" ou "Credit Memo Created". Essas atividades formam os blocos básicos do mapa do processo. Analisar a sequência e a frequência dessas atividades ajuda a identificar os caminhos mais comuns do processo, os desvios e os ciclos de retrabalho. Isso é essencial para entender o que acontece em um caso e em que ordem, formando a base de toda análise de Process Mining. Por que isso importa As atividades definem as etapas do processo. Analisar sua sequência, duração e frequência é o núcleo do Process Mining e revela como o trabalho realmente é executado. Onde obter Derivado de alterações de status em tabelas como VBUK/VBUP, eventos de criação de documentos, por exemplo, em VBAK, LIKP e VBRK, ou logs de alterações nas tabelas CDHDR/CDPOS. Exemplos Ordem de devolução criadaEntrada de mercadorias registradaNota de crédito criadaItem da ordem de devolução concluído | |||
| Sistema de origem SourceSystem | O sistema do qual os dados foram extraídos. | ||
| Descrição Este atributo identifica a origem dos dados, o que é essencial em ambientes com vários sistemas. Ele fornece contexto e ajuda a garantir a linhagem e a integridade dos dados. Na análise, é usado para segmentar ou filtrar dados quando processos de diferentes sistemas de origem são combinados. Ele confirma que os eventos vêm do aplicativo esperado, neste caso, o SAP ECC. Por que isso importa Identifica a origem dos dados, algo essencial para a governança de dados e para análises que abrangem vários sistemas corporativos. Onde obter Este é um valor estático definido durante a extração dos dados para identificar a instância específica do SAP ECC, por exemplo, "ECC_PROD_100". Exemplos SAP_ECC_PRODSAPECC_FINANCE_200 | |||
| Última atualização dos dados LastDataUpdate | O registro de data e hora que indica quando os dados deste processo foram atualizados pela última vez. | ||
| Descrição Este atributo registra a data e a hora da extração ou atualização mais recente dos dados. Ele oferece transparência sobre a atualidade dos dados analisados. Na análise, isso é importante para entender o quanto os insights estão atualizados. Os usuários podem verificar quão recentes são os dados, o que afeta a relevância das descobertas, especialmente no monitoramento das operações em andamento. Por que isso importa Indica a atualidade dos dados, ajudando os usuários a entender quão recente é a análise do processo e quando esperar a próxima atualização. Onde obter Este é um atributo de metadados preenchido com o registro de data e hora da execução do job de extração de dados. Exemplos 2023-05-20T02:00:00Z2023-05-21T02:00:00Z | |||
| Agente de processamento ProcessingAgent | O ID do usuário do funcionário que executou a atividade. | ||
| Descrição Este atributo registra o nome de usuário da pessoa responsável por executar uma etapa específica do processo, como criar a ordem de devolução ou registrar a entrada de mercadorias. Ele costuma ser chamado de usuário "Changed By" ou "Created By". Analisar por agente de processamento é essencial para a gestão de performance e a análise de recursos. Isso ajuda a identificar os profissionais de melhor performance, os agentes que podem precisar de treinamento adicional e a distribuição da carga de trabalho na equipe. O atributo é usado em Dashboards como "Agent Return Processing Performance" para comparar tempos de ciclo e volume processado. Por que isso importa Acompanha o envolvimento dos usuários, permitindo analisar a performance da equipe, a distribuição da carga de trabalho e a identificação de necessidades de treinamento ou melhores práticas. Onde obter Normalmente encontrado em campos como ERNAM (Created by) ou AENAM (Changed by) nas tabelas de cabeçalho, como VBAK, LIKP e VBRK. Para eventos de alteração, é o USERNAME na CDHDR. Exemplos CBURNSDSCRANTONJHALPERT | |||
| Canal de devolução ReturnChannel | O canal pelo qual a devolução foi iniciada, como online, na loja ou por central de atendimento. | ||
| Descrição Este atributo especifica a origem ou o método de recebimento da solicitação de devolução. Ele ajuda a diferenciar devoluções iniciadas por um portal web, uma loja física ou um representante de atendimento ao cliente. Segmentar o processo por canal de devolução é essencial para entender diferenças operacionais e alocar recursos. Por exemplo, devoluções feitas na loja podem ter tempos de inspeção menores, mas exigir etapas de documentação diferentes das devoluções online. Essa é uma dimensão importante para o Dashboard “Tendências de throughput do processo de devoluções”. Por que isso importa Diferencia como as devoluções são iniciadas, algo que geralmente afeta o fluxo do processo, as necessidades de recursos e os tempos de ciclo de cada canal. Onde obter Esse dado geralmente não é um campo padrão no SAP ECC e pode precisar ser obtido de um campo personalizado, por exemplo, em VBAK, ou inferido a partir de outros dados, como a Organização de vendas (VKORG) ou o Canal de distribuição (VTWEG). Consulte a documentação do SAP ECC para verificar a implementação específica. Exemplos Portal onlineNa lojaCentral de atendimento | |||
| Motivo da devolução ReturnReason | O código de motivo informado pelo cliente para devolver o item. | ||
| Descrição Este atributo indica por que um produto foi devolvido, usando códigos de motivo predefinidos no SAP. Alguns exemplos são "Damaged in transit", "Wrong item shipped" e "Does not fit". Esta é uma dimensão essencial para a análise de causas-raiz. Ao filtrar o mapa do processo ou os KPIs por motivo da devolução, os analistas podem identificar se determinados motivos estão associados a tempos de processamento mais longos, índices maiores de reprovação na inspeção ou desvios específicos no processo. Esse insight pode orientar melhorias na qualidade do produto, na logística ou nos processos de vendas. Por que isso importa Explica por que as devoluções acontecem, permitindo analisar as causas-raiz e reduzir os índices de devolução ao tratar problemas de qualidade do produto, envio ou descrição. Onde obter Encontrado na tabela de itens do documento de vendas VBAP, no campo ABGRU (motivo da rejeição dos documentos de vendas). Exemplos 001 - Produto danificado002 - Produto incorreto005 - Chegou tarde demais | |||
| Número do material MaterialNumber | O identificador exclusivo do produto que está sendo devolvido. | ||
| Descrição O número do material, ou SKU, especifica o item exato envolvido na devolução. Isso permite uma análise detalhada no nível do produto. Ao analisar as devoluções por número do material, as empresas podem identificar produtos com altos índices de devolução, o que pode indicar problemas de qualidade, descrições imprecisas ou defeitos de fabricação. Esse atributo é essencial para Dashboards como "Inventory Impact of Returns" e para entender como diferentes produtos percorrem o processo de devoluções. Por que isso importa Identifica quais produtos estão sendo devolvidos, destacando possíveis problemas de controle de qualidade ou descrições imprecisas dos produtos. Onde obter Encontrado na tabela de itens do documento de vendas VBAP, no campo MATNR. Exemplos RM-1025FG-2050-BACC-5591 | |||
| Valor real do reembolso ActualRefundAmount | O valor final creditado ao cliente, conforme registrado nos documentos financeiros. | ||
| Descrição Este atributo representa o valor final e confirmado do reembolso, processado e registrado no sistema contábil. Esse valor pode ser diferente do valor solicitado devido a taxas de reposição de estoque, ajustes baseados na condição do item ou à aplicação de outras políticas. Esse é um atributo essencial para o Dashboard “Acompanhamento de divergências no valor do reembolso”. Compará-lo ao valor solicitado ajuda a identificar problemas sistêmicos no cálculo e no processo de aprovação de reembolsos, garantindo a precisão financeira. Por que isso importa Representa o resultado financeiro final da devolução. Compará-lo ao valor solicitado ajuda a garantir a precisão e identificar perdas financeiras. Onde obter Obtido do documento financeiro associado à nota de crédito. Normalmente encontrado na tabela BSEG (Accounting Document Segment), campo WRBTR (Amount in document currency), para o lançamento na conta contábil relevante. Exemplos 150.0045.001200.75 | |||
| Valor solicitado do reembolso RequestedRefundAmount | O valor esperado do reembolso, normalmente baseado no valor líquido do(s) item(ns) devolvido(s). | ||
| Descrição Este atributo representa o valor monetário inicial da devolução, registrado no pedido de devolução. Ele serve como base para a análise e a conciliação financeira. Esse valor é comparado ao “Valor real do reembolso” para acompanhar divergências, uma métrica importante para o Dashboard “Acompanhamento de divergências no valor do reembolso”. Analisar esse dado ajuda a monitorar o impacto financeiro das devoluções e identificar possíveis problemas no cálculo de preços ou créditos. Por que isso importa Estabelece o valor financeiro inicial da devolução, essencial para acompanhar divergências financeiras e entender o valor total dos produtos devolvidos. Onde obter Esse valor normalmente corresponde ao valor líquido no nível do item do pedido de devolução. Encontrado na tabela VBAP, campo NETWR. Exemplos 150.0049.991250.75 | |||
| Aderência à política de devolução ReturnPolicyAdherence | Um indicador que mostra se a devolução está em conformidade com todas as regras e políticas de negócio definidas. | ||
| Descrição Este atributo booleano calculado indica se um caso de devolução seguiu as políticas padrão e estabelecidas pela empresa. A lógica pode envolver a verificação de várias condições, como se a devolução foi iniciada dentro do prazo permitido, se o código do motivo é válido para o produto ou se uma aprovação gerencial foi obtida para uma exceção. Esse atributo alimenta o Dashboard “Conformidade com a política de aprovação de devoluções”. Ele permite medir diretamente a taxa de conformidade e identificar quais políticas são ignoradas com mais frequência, viabilizando melhorias direcionadas no processo ou treinamentos. Por que isso importa Mede a conformidade com as regras de negócio, ajudando a aplicar as políticas de forma consistente e identificar casos que exigem análise ou aprovação especial. Onde obter Este é um atributo derivado com base em um conjunto de regras de negócio. Por exemplo: (Return Initiation Date - Original Purchase Date) <= 30 days AND ReturnReason IS NOT NULL. Exemplos truefalse | |||
| Centro Plant | O local físico ou a instalação onde o item devolvido é recebido e processado. | ||
| Descrição O Plant no SAP representa um local físico, como um armazém ou centro de distribuição, onde as mercadorias são movimentadas. No caso de devoluções, normalmente é o local onde o item é recebido e inspecionado. Analisar o processo por Plant ajuda a identificar variações de performance entre diferentes instalações. Isso pode mostrar quais armazéns são mais eficientes na inspeção dos itens ou têm maior throughput, apoiando o Dashboard “Throughput e eficiência da inspeção de itens”. Por que isso importa Identifica o local físico que processa a devolução, permitindo comparar a performance entre diferentes armazéns ou centros de distribuição. Onde obter Encontrado no nível do item do pedido de devolução, na tabela VBAP, campo WERKS. Exemplos PL01WH02DC05 | |||
| Código da empresa CompanyCode | A entidade jurídica ou empresa responsável pela transação. | ||
| Descrição O Company Code representa uma unidade contábil independente dentro do SAP. Todas as transações financeiras, incluindo devoluções e reembolsos, são registradas em um código de empresa específico. Esse atributo é essencial para relatórios financeiros e para segmentar o processo em organizações multinacionais ou com várias entidades. Analisar por Company Code permite comparar a performance do processo de devoluções entre diferentes entidades jurídicas da corporação. Por que isso importa Permite filtrar e comparar processos de devolução entre diferentes entidades jurídicas de uma organização, algo essencial para a análise financeira. Onde obter Encontrado na tabela Sales Document Header, VBAK, campo BUKRS_VF (Company code for billing). Exemplos 10002000US01 | |||
| Data-alvo do SLA de reembolso RefundSLATargetDate | A data até a qual o reembolso deve ser processado, de acordo com os acordos de nível de serviço. | ||
| Descrição Este atributo define o prazo para concluir o processo de reembolso de um determinado caso de devolução. Normalmente, ele é calculado com base em regras de negócio, como “5 dias úteis após o recebimento da mercadoria”. Essa data-alvo é a referência usada para medir a performance real. Ela é o componente central do Dashboard “Conformidade com o SLA do processamento de reembolsos”, permitindo monitorar o cumprimento dos compromissos com os clientes e identificar casos com risco de violação do SLA. Por que isso importa Define a meta de performance para o processamento de reembolsos, permitindo medir e reportar a conformidade com o SLA e priorizar casos em atraso. Onde obter Esse dado normalmente não é um campo padrão do SAP e precisaria ser derivado com base em regras de negócio. Ele poderia ser calculado a partir de um campo de data de referência, como a data de recebimento da mercadoria em MKPF, somado a uma duração configurada. Consulte a documentação do SAP ECC ou os requisitos de negócio. Exemplos 2023-04-25T23:59:59Z2023-04-28T23:59:59Z2023-05-02T23:59:59Z | |||
| Divergência no valor do reembolso RefundAmountDiscrepancy | A diferença calculada entre os valores real e solicitado do reembolso. | ||
| Descrição Essa métrica calculada quantifica a diferença monetária entre o valor inicialmente solicitado no pedido de devolução e o valor finalmente emitido na nota de crédito. Um valor positivo pode indicar um reembolso parcial, enquanto um valor negativo é incomum, mas pode indicar um pagamento excedente. Esse atributo é a principal medida do Dashboard “Acompanhamento de divergências no valor do reembolso”. Ele ajuda a identificar e analisar rapidamente casos com desvios financeiros, que podem ser causados por avaliações da condição do item, taxas de reposição de estoque ou erros. Monitorar esse dado ajuda a garantir o controle financeiro e o cumprimento das políticas. Por que isso importa Mede diretamente os desvios financeiros no processo de reembolso, ajudando a identificar não conformidades com as políticas, erros de processamento ou perdas financeiras. Onde obter Campo calculado: ActualRefundAmount - RequestedRefundAmount. Exemplos 0.00-4.99-50.00 | |||
| Documento de vendas original OriginalSalesDocument | O número do pedido de vendas original ao qual a devolução está vinculada. | ||
| Descrição Este atributo fornece um vínculo direto com a compra inicial do cliente. Ele é um documento de referência que conecta a devolução aos detalhes da transação original. Esse vínculo é extremamente valioso para análises mais aprofundadas. Ele permite investigar por que vendas de determinados pedidos são devolvidas, verificar preços e condições originais e entender todo o ciclo de vida do pedido do cliente, da compra à devolução. Também ajuda a responder se produtos vendidos em campanhas ou canais específicos apresentam taxas de devolução mais altas. Por que isso importa Vincula a devolução à venda original, permitindo uma visão completa da transação do cliente e uma análise mais profunda das causas-raiz. Onde obter Essa referência é armazenada no nível do item do pedido de devolução. Ela pode ser encontrada na tabela VBAP, campo VGBEL (Document number of the reference document). Exemplos 100034561000987110012345 | |||
| Está em conformidade com o SLA IsSLACompliant | Um indicador que mostra se o reembolso foi processado dentro do acordo de nível de serviço (SLA) definido. | ||
| Descrição Este é um atributo booleano calculado que compara a data real da atividade “Reembolso processado” com a “Data-alvo do SLA de reembolso”. O resultado é true se o reembolso foi concluído no prazo e false caso contrário. Esse atributo simplifica a análise e os relatórios ao fornecer um resultado binário claro para a performance de SLA de cada caso. Ele é usado para calcular a taxa geral de “Conformidade com o SLA do processamento de reembolsos” e permite filtrar facilmente os casos não conformes para análise. Por que isso importa Fornece um indicador binário claro da performance de SLA de cada caso, simplificando o monitoramento e os relatórios de conformidade. Onde obter Este é um atributo calculado. A lógica é: 'Refund Processed' EventTime <= RefundSLATargetDate. Exemplos truefalse | |||
| ID do cliente CustomerId | O identificador exclusivo do cliente que iniciou a devolução. | ||
| Descrição Este atributo identifica o cliente específico (o “Sold-to Party”, na terminologia do SAP) que está devolvendo o produto. Ele vincula a transação de devolução aos dados mestres do cliente. Analisar por Customer ID ajuda a identificar clientes com devoluções frequentes, o que pode indicar insatisfação ou possível uso indevido das políticas de devolução. Também é possível combinar esse dado com informações de segmentação de clientes para entender se determinados grupos apresentam comportamentos de devolução ou experiências diferentes no processo. Por que isso importa Vincula as devoluções a clientes específicos, permitindo analisar o comportamento dos clientes, identificar clientes que devolvem produtos repetidamente e avaliar o impacto nos relacionamentos com os clientes. Onde obter Encontrado na tabela Sales Document Header, VBAK, campo KUNNR (Sold-to Party). Exemplos CUST-100432CUST-203991CUST-831102 | |||
| Número da nota de crédito CreditMemoNumber | O identificador exclusivo do documento de nota de crédito emitido para o reembolso. | ||
| Descrição A Credit Memo é o documento oficial de faturamento no SAP que formaliza o reembolso a ser pago ao cliente. Esse número identifica exclusivamente o documento financeiro. Esse atributo é essencial para a conciliação financeira e para acompanhar o processo desde a devolução operacional até a liquidação financeira. Ele representa um marco importante no processo e é usado para localizar documentos contábeis relacionados a atributos como “Valor real do reembolso”. Por que isso importa Fornece um vínculo direto com o documento financeiro que autoriza o reembolso ao cliente, essencial para auditorias e conciliações financeiras. Onde obter A nota de crédito é um documento de faturamento. Seu número é encontrado na tabela VBRK (Billing Document: Header Data), campo VBELN. O vínculo é localizado por meio do fluxo de documentos do pedido de devolução. Exemplos 900011229000334490005566 | |||
| Status do pedido de devolução ReturnOrderStatus | O status geral de processamento do caso do pedido de devolução. | ||
| Descrição Este atributo apresenta um retrato do estado atual do caso de devolução, como “Aberto”, “Em processamento” ou “Concluído”. Ele é derivado da combinação dos status no nível do cabeçalho ou do item do documento de vendas. Na análise, esse atributo é útil para filtrar casos e concentrar o foco em devoluções ativas ou concluídas. Ele ajuda a monitorar a carga de trabalho e o progresso geral dos casos abertos, além de fornecer um resultado de alto nível para cada jornada de devolução. Por que isso importa Oferece uma visão de alto nível da etapa do ciclo de vida em que o caso se encontra, permitindo filtrar e analisar devoluções abertas, em andamento ou encerradas. Onde obter Derivado dos campos de status nas tabelas VBUK (Header Status) e VBUP (Item Status). Por exemplo, VBUK-GBSTK representa o status geral de processamento do documento. Exemplos AbertoEm andamentoConcluído | |||
Atividades do processamento de devoluções e reembolsos
| Atividade | Descrição | ||
|---|---|---|---|
| Decisão de utilização tomada | Após a inspeção, um engenheiro ou inspetor de qualidade toma uma decisão formal sobre a condição do item devolvido. Essa decisão determina a etapa seguinte do processo, como devolver o item ao estoque, descartá-lo ou enviá-lo para reparo. | ||
| Por que isso importa Esta atividade é essencial para entender a eficiência da inspeção e seus resultados. A decisão afeta diretamente o valor do reembolso e a gestão do estoque. Onde obter Se o SAP QM for utilizado, este é um evento explícito registrado na tabela QAVE (decisão de utilização do processamento da inspeção). O horário da decisão é armazenado em QAVE-VDATUM. O vínculo com a entrega está na tabela QALS. Captura Use a data da decisão de utilização (VDATUM) da tabela QAVE, vinculada por meio do lote de inspeção (QALS-PRUEFLOS). Tipo de evento explicit | |||
| Entrada de mercadorias registrada | Esta atividade ocorre quando o item físico devolvido é recebido no armazém ou centro de processamento. Ela é registrada pela contabilização de um documento de movimentação de mercadorias associado à entrega de devolução. | ||
| Por que isso importa Um marco importante que indica que a empresa assumiu a posse do item devolvido. É o ponto de partida para a inspeção física e afeta a precisão do estoque. Onde obter Este evento pode ser inferido pelo status da movimentação de mercadorias do item da entrega de devolução na tabela VBUP, por exemplo, WBSTA = "C". O registro de data e hora exato está no cabeçalho do documento de material (MKPF-BUDAT) correspondente à entrada de mercadorias. Captura Encontre a data de contabilização (BUDAT) na tabela MKPF para o documento de material vinculado à entrega de devolução. Tipo de evento inferred | |||
| Nota de crédito contabilizada no FI | A nota de crédito é liberada para a contabilidade financeira, tornando-se um lançamento oficial em contas a receber. Esta etapa inicia o processo efetivo de pagamento do reembolso ao cliente. | ||
| Por que isso importa Esta atividade marca o momento em que o reembolso é reconhecido financeiramente pela empresa. Atrasos entre a criação e a contabilização da nota de crédito podem retardar o reembolso efetivo ao cliente. Onde obter Este é um evento inferido, identificado quando o status de contabilização no cabeçalho do documento de faturamento (VBRK-RFBSK) é atualizado para "C" (documento de contabilização criado). A data real de criação do documento contábil está na tabela BKPF. Captura Identifique o registro de data e hora em que VBRK-RFBSK é definido como "C" ou use a data de criação (CPUDT) do documento contábil vinculado na BKPF. Tipo de evento inferred | |||
| Nota de crédito criada | Um documento de faturamento, a nota de crédito, é gerado para autorizar o crédito financeiro ao cliente. Este é o documento financeiro oficial que formaliza o valor do reembolso. | ||
| Por que isso importa Este é um marco financeiro importante do processo. Analisar o tempo necessário para criar a nota de crédito ajuda a identificar atrasos no processamento de documentos financeiros após o recebimento e a inspeção das mercadorias. Onde obter Este é um evento explícito registrado na tabela VBRK (cabeçalho do documento de faturamento). A data de criação está em VBRK-ERDAT. A nota de crédito é vinculada à ordem de devolução ou à solicitação de nota de crédito no fluxo de documentos. Captura Use o registro de data e hora da criação (ERDAT) da tabela VBRK para o documento de faturamento relevante. Tipo de evento explicit | |||
| Ordem de devolução concluída | Esta atividade marca o fim do processo de devoluções sob a perspectiva de vendas e distribuição. Ela ocorre quando todos os itens da ordem de devolução são totalmente processados e encerrados. | ||
| Por que isso importa Este é o principal evento de fim do processo. Medir o tempo entre "Return Order Created" e esta atividade fornece o tempo de ciclo de ponta a ponta do caso de devolução. Onde obter Este é um evento inferido a partir das tabelas de status. Ele é registrado quando o status geral do cabeçalho do documento de vendas (VBUK-GBSTK) é atualizado para "C" (processado completamente). Captura Identifique o registro de data e hora nos documentos de alteração (CDHDR/CDPOS) em que o campo de status do cabeçalho VBUK-GBSTK muda para "C". Tipo de evento inferred | |||
| Ordem de devolução criada | Esta atividade marca o início do processo de devolução, quando um cliente solicita a devolução de um produto. Ela é registrada quando um novo documento de vendas do tipo "Return", como RE, é criado no SAP ECC. | ||
| Por que isso importa Este é o principal evento de início do processo de devoluções. Analisar o tempo entre esta atividade e as demais ajuda a medir o tempo total de ciclo e identificar atrasos no processamento inicial. Onde obter Este é um evento explícito registrado na tabela VBAK (cabeçalho do documento de vendas). O registro de data e hora da criação é armazenado em VBAK-ERDAT e VBAK-ERZET para o número de documento de vendas correspondente (VBAK-VBELN), com o tipo de ordem VBAK-AUART = "RE". Captura Use o registro de data e hora da criação (ERDAT, ERZET) da tabela VBAK para o tipo de documento de vendas "RE". Tipo de evento explicit | |||
| Bloqueio da ordem de devolução removido | Representa a aprovação da solicitação de devolução, permitindo que ela avance para a próxima etapa. Normalmente, esse evento é registrado por uma alteração no status do documento ou pela remoção de um bloqueio de entrega ou faturamento. | ||
| Por que isso importa Esta atividade é um marco essencial de aprovação. Medir o tempo necessário para chegar a esta etapa ajuda a identificar gargalos no processo de autorização e aprovação da devolução. Onde obter Este é um evento inferido, derivado dos logs de alterações do documento de vendas. Verifique as tabelas CDHDR e CDPOS para alterações nos campos de bloqueio em VBAK ou VBAP, ou nos campos de status em VBUK/VBUP. Captura Identifique o registro de data e hora nas tabelas de documentos de alteração (CDHDR/CDPOS) em que um status de bloqueio relevante é removido. Tipo de evento inferred | |||
| Entrega de devolução criada | Um documento de entrega é gerado para gerenciar o recebimento físico das mercadorias devolvidas. Este evento indica que o processo logístico da devolução foi iniciado. | ||
| Por que isso importa Acompanha a transição do processamento administrativo para a logística física. Atrasos nesta etapa podem afetar o planejamento do armazém e o tempo total do ciclo de devolução. Onde obter Este é um evento explícito registrado na tabela LIKP (cabeçalho da entrega). O registro de data e hora da criação está em LIKP-ERDAT. O vínculo com a ordem de devolução de origem está na tabela LIPS (LIPS-VGBEL). Captura Use o registro de data e hora da criação (ERDAT) da tabela LIKP para a entrega associada à ordem de devolução. Tipo de evento explicit | |||
| Item da ordem de devolução concluído | Um item individual da ordem de devolução é marcado como totalmente processado. Isso normalmente ocorre depois que todos os documentos logísticos e financeiros subsequentes desse item foram concluídos. | ||
| Por que isso importa Acompanhar o processo no nível do item ajuda a identificar quais produtos ou motivos de devolução causam os maiores atrasos. Isso oferece uma visão mais detalhada da conclusão do processo. Onde obter Este é um evento inferido a partir das tabelas de status. Ele é registrado quando o status geral do item do documento de vendas (VBUP-GBSTK) é atualizado para "C" (processado completamente). Captura Identifique o registro de data e hora nos documentos de alteração (CDHDR/CDPOS) em que o campo de status do item VBUP-GBSTK muda para "C". Tipo de evento inferred | |||
| Item da ordem de devolução rejeitado | Um item específico da ordem de devolução é rejeitado, durante a análise inicial ou após a inspeção. Isso significa que não haverá mais processamento para esse item, incluindo o reembolso. | ||
| Por que isso importa Analisar as rejeições ajuda a identificar solicitações de devolução inválidas e pode orientar a comunicação das políticas aos clientes. É um caminho importante do processo que não leva a um reembolso. Onde obter Este é um evento inferido. Normalmente, ele é registrado quando um código exclusivo de "Reason for Rejection" é definido para o item na tabela VBAP (VBAP-ABGRU). O registro de data e hora deve ser obtido nos logs de alterações. Captura Identifique o registro de data e hora nos documentos de alteração (CDHDR/CDPOS) em que o campo VBAP-ABGRU é preenchido para um item de devolução. Tipo de evento inferred | |||
| Nota de crédito compensada | O item de crédito em aberto nas contas a receber é compensado, normalmente por meio de um pagamento ao cliente. Este evento marca o encerramento financeiro final do reembolso. | ||
| Por que isso importa Esta atividade confirma a saída do dinheiro e conclui a etapa financeira do processo. Do ponto de vista do cliente, é o verdadeiro fim da jornada do reembolso. Onde obter Este é um evento explícito do módulo FI. A data de compensação do documento contábil é armazenada na tabela BSEG (BSEG-AUGDT) para o item correspondente da conta do cliente. Captura Use a data de compensação (AUGDT) da tabela BSEG ou BSAD para o documento contábil vinculado à nota de crédito. Tipo de evento explicit | |||
| Solicitação de nota de crédito criada | Uma solicitação de nota de crédito é criada para documentar formalmente a necessidade de um reembolso. Em muitas configurações, a própria ordem de devolução funciona como solicitação de nota de crédito. | ||
| Por que isso importa Este é o início formal da etapa de liquidação financeira do processo de devoluções. Ele aciona as aprovações financeiras e a criação dos documentos seguintes. Onde obter Este pode ser um evento explícito na VBAK para um documento de vendas do tipo "Credit Memo Request", como CR, ou pode ser o mesmo evento que "Return Order Created" se o tipo de ordem estiver configurado para faturamento relacionado à ordem. Captura Use o registro de data e hora da criação (ERDAT) da VBAK para o tipo de documento "CR" ou reutilize o evento de criação da ordem de devolução. Tipo de evento explicit | |||
Guias de extração
Etapas
- Criar o programa ABAP: Use o código de transação
SE38para criar um novo programa ABAP executável, por exemplo,Z_PM_RETURN_EXTRACTION. Informe um título descritivo e salve-o como objeto local ou dentro de um pacote de desenvolvimento. - Definir a tela de seleção: No programa, defina uma tela de seleção para permitir que os usuários filtrem os dados. Os principais filtros incluem o intervalo de datas de criação dos pedidos de devolução (
S_ERDAT), o tipo de documento de vendas para devoluções (S_AUART, por exemplo, 'RE') e o código da empresa (P_BUKRS). - Definir as estruturas de dados: Crie um tipo de estrutura local que corresponda ao formato necessário do Event Log. Essa estrutura deve incluir campos para
ReturnCaseId,ActivityName,EventTime,SourceSystem,LastDataUpdate,ProcessingAgent,ReturnReasone outros atributos necessários. - Implementar a lógica de seleção de dados: Escreva a lógica ABAP principal para selecionar os dados das 12 atividades necessárias. Isso envolve consultar várias tabelas SAP, como VBAK, VBAP, LIKP, VBRK, BKPF, CDHDR e CDPOS. Use a tabela de fluxo de documentos (VBFA) para vincular documentos relacionados, como entregas e notas de crédito, ao pedido de devolução original.
- Extrair 'Return Order Created': Selecione registros das tabelas
VBAKeVBAPcom base nos critérios da tela de seleção. O número do documento de vendas (VBAK-VBELN) será usado comoReturnCaseId. - Extrair alterações de status e eventos importantes: Para atividades como 'Return Order Block Removed' ou 'Return Order Item Rejected', consulte as tabelas de documentos de alteração (
CDHDR,CDPOS) ou os campos de status em tabelas comoVBAP(ABGRU). Para atividades logísticas e financeiras subsequentes, selecione dados de tabelas comoLIKP,MKPF,VBRKeBKPF, usandoVBFApara garantir que estejam vinculados ao conjunto inicial de pedidos de devolução. - Preencher a tabela do Event Log: Para cada atividade recuperada, crie um novo registro em uma tabela interna definida com a estrutura do Event Log. Mapeie os dados das tabelas SAP de origem para os campos correspondentes. Por exemplo, mapeie
VBAK-ERNAMparaProcessingAgenteVBAK-ERDATeVBAK-ERZETparaEventTime. - Combinar os dados das atividades: Garanta que cada instrução SELECT de uma atividade acrescente os resultados à mesma tabela interna principal. Assim, você cria a estrutura do arquivo simples final, em que cada linha representa um evento.
- Tratar carimbos de data e hora e informações do sistema: Use os campos do sistema
SY-DATUMeSY-UZEITpara preencher o carimboLastDataUpdatede cada linha. UseSY-SYSIDpara preencherSourceSystem. - Implementar a funcionalidade de saída: Adicione uma funcionalidade para exibir os resultados em uma grade ALV (SAP List Viewer) para análise online, usando módulos de função como
REUSE_ALV_GRID_DISPLAY. Ofereça a opção de baixar a tabela interna final como arquivo CSV ou arquivo de texto simples no computador local do usuário. - Executar e exportar: Execute o programa pelo
SE38. Informe os critérios de seleção desejados e execute-o. Depois que os dados forem exibidos ou processados, use o recurso de exportação do programa para salvar o arquivo do Event Log. Garanta que o arquivo seja salvo em um formato compatível com o ProcessMind, normalmente CSV com uma linha de cabeçalho.
Configuração
- Intervalo de datas: Na tela de seleção, especifique um intervalo de datas para a criação dos pedidos de devolução. Para a análise inicial, recomenda-se um período de 3 a 6 meses, equilibrando o volume de dados e a geração de insights sobre o processo.
- Tipo de documento de devolução: Filtre pelo tipo específico de documento de vendas usado para devoluções no seu sistema, por exemplo, 'RE' para devoluções ou 'CR' para solicitação de nota de crédito. Esse é um filtro essencial para isolar o processo correto. Informe esses valores na opção de seleção
S_AUART. - Código da empresa: Especifique o código da empresa relevante (
P_BUKRS) para limitar os dados a uma entidade legal específica. Isso é essencial em ambientes com várias empresas. - Pré-requisitos: O usuário que executar o programa precisa de autorizações para
SE38(execução de programas) e acesso às tabelas subjacentes de SD, MM e FI, como VBAK, LIKP, VBRK, BKPF e CDHDR. O desenvolvimento exige um perfil de desenvolvedor ABAP. - Performance: Em conjuntos de dados muito grandes, abrangendo vários anos, o programa pode apresentar tempos de execução longos. Considere executá-lo como um job em background (
SM36) e gravar a saída no sistema de arquivos do servidor de aplicação, em vez de exibi-la online.
a Consulta de exemplo abap
REPORT Z_PM_RETURN_EXTRACTION.
" =======================================================================
" DATA DECLARATIONS
" =======================================================================
TYPES: BEGIN OF ty_event_log,
returncaseid TYPE vbeln_va,
activityname TYPE string,
eventtime TYPE timestamp,
sourcesystem TYPE sysysid,
lastdataupdate TYPE timestamp,
processingagent TYPE ernam,
returnreason TYPE augru,
materialnumber TYPE matnr,
returnchannel TYPE string, " Placeholder, needs custom logic
requestedrefundamount TYPE netwr,
actualrefundamount TYPE netwr,
END OF ty_event_log.
DATA: lt_event_log TYPE TABLE OF ty_event_log,
ls_event_log TYPE ty_event_log.
DATA: lv_timestamp TYPE timestamp,
lv_last_update TYPE timestamp.
" =======================================================================
" SELECTION SCREEN
" =======================================================================
SELECT-OPTIONS: s_erdat FOR sy-datum OBLIGATORY,
s_auart FOR vbak-auart.
PARAMETERS: p_bukrs TYPE bukrs OBLIGATORY.
" =======================================================================
" MAIN LOGIC
" =======================================================================
START-OF-SELECTION.
" Set static values for the extraction run
GET TIME STAMP FIELD lv_last_update.
" 1. Return Order Created & 6. Credit Memo Request Created
" Note: In many SAP standard processes, the Return Order itself acts as the Credit Memo Request.
SELECT h~vbeln, h~erdat, h~erzet, h~ernam, h~augru, i~matnr, i~netwr
INTO TABLE @DATA(lt_return_orders)
FROM vbak AS h
INNER JOIN vbap AS i ON h~vbeln = i~vbeln
WHERE h~erdat IN @s_erdat
AND h~auart IN @s_auart
AND h~bukrs_vf = @p_bukrs.
LOOP AT lt_return_orders INTO DATA(ls_return_order).
" Activity: Return Order Created
ls_event_log-returncaseid = ls_return_order-vbeln.
ls_event_log-activityname = 'Return Order Created'.
CONVERT DATE ls_return_order-erdat TIME ls_return_order-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_return_order-ernam.
ls_event_log-returnreason = ls_return_order-augru.
ls_event_log-materialnumber = ls_return_order-matnr.
ls_event_log-requestedrefundamount = ls_return_order-netwr.
APPEND ls_event_log TO lt_event_log.
" Activity: Credit Memo Request Created
ls_event_log-activityname = 'Credit Memo Request Created'.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
IF lt_return_orders IS NOT INITIAL.
" 2. Return Order Block Removed (Example for Delivery Block)
SELECT objectid, udate, utime, username
FROM cdhdr
INTO TABLE @DATA(lt_block_changes)
FOR ALL ENTRIES IN @lt_return_orders
WHERE objectclas = 'VERKBELEG'
AND objectid = @lt_return_orders-vbeln
AND tcode = 'VA02'.
IF sy-subrc = 0.
SELECT objectid, fname, value_new
INTO TABLE @DATA(lt_cdpos_block)
FROM cdpos
FOR ALL ENTRIES IN @lt_block_changes
WHERE objectclas = @lt_block_changes-objectclas
AND objectid = @lt_block_changes-objectid
AND changenr = @lt_block_changes-changenr
AND tabname = 'VBAK'
AND fname = 'LIFSK' " Delivery Block field
AND value_new = ''.
LOOP AT lt_cdpos_block INTO DATA(ls_cdpos_block).
READ TABLE lt_block_changes INTO DATA(ls_block_change) WITH KEY objectid = ls_cdpos_block-objectid.
IF sy-subrc = 0.
ls_event_log-returncaseid = ls_cdpos_block-objectid.
ls_event_log-activityname = 'Return Order Block Removed'.
CONVERT DATE ls_block_change-udate TIME ls_block_change-utime INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_block_change-username.
CLEAR: ls_event_log-returnreason, ls_event_log-materialnumber, ls_event_log-requestedrefundamount, ls_event_log-actualrefundamount.
APPEND ls_event_log TO lt_event_log.
ENDIF.
ENDLOOP.
ENDIF.
" Get subsequent documents from flow
SELECT vbelv, vbtyp_n, vbeln, rfbsk
INTO TABLE @DATA(lt_doc_flow)
FROM vbfa
FOR ALL ENTRIES IN @lt_return_orders
WHERE vbelv = @lt_return_orders-vbeln
AND vbtyp_n IN ('J', 'R', 'M'). " J=Delivery, R=Goods Mvmt, M=Invoice
" 3. Return Delivery Created
SELECT vbeln, erdat, erzet, ernam FROM likp
INTO TABLE @DATA(lt_deliveries)
FOR ALL ENTRIES IN @lt_doc_flow
WHERE vbeln = @lt_doc_flow-vbeln AND @lt_doc_flow-vbtyp_n = 'J'.
LOOP AT lt_deliveries INTO DATA(ls_delivery).
READ TABLE lt_doc_flow INTO DATA(ls_doc_flow_del) WITH KEY vbeln = ls_delivery-vbeln.
ls_event_log-returncaseid = ls_doc_flow_del-vbelv.
ls_event_log-activityname = 'Return Delivery Created'.
CONVERT DATE ls_delivery-erdat TIME ls_delivery-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_delivery-ernam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 4. Goods Receipt Posted
SELECT mblnr, mjahr, budat, cputm, usnam FROM mkpf
INTO TABLE @DATA(lt_goods_receipt)
FOR ALL ENTRIES IN @lt_doc_flow
WHERE xblnr = @lt_doc_flow-vbeln AND @lt_doc_flow-vbtyp_n = 'R'.
LOOP AT lt_goods_receipt INTO DATA(ls_goods_receipt).
READ TABLE lt_doc_flow INTO DATA(ls_doc_flow_gr) WITH KEY vbeln = ls_goods_receipt-mblnr.
ls_event_log-returncaseid = ls_doc_flow_gr-vbelv.
ls_event_log-activityname = 'Goods Receipt Posted'.
CONVERT DATE ls_goods_receipt-budat TIME ls_goods_receipt-cputm INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_goods_receipt-usnam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 5. Usage Decision Made (Requires QM Module implementation)
SELECT q~prueflos, q~vdatu, q~vzeit, q~vname
FROM qals AS q
INNER JOIN qave AS v ON q~prueflos = v~prueflos
INTO TABLE @DATA(lt_usage_decisions)
FOR ALL ENTRIES IN @lt_deliveries
WHERE q~kdauf = @lt_deliveries-vbeln.
LOOP AT lt_usage_decisions INTO DATA(ls_ud).
SELECT SINGLE vbelv FROM vbfa INTO @DATA(lv_vbelv_ud) WHERE vbeln = @ls_ud-prueflos.
ls_event_log-returncaseid = lv_vbelv_ud.
ls_event_log-activityname = 'Usage Decision Made'.
CONVERT DATE ls_ud-vdatu TIME ls_ud-vzeit INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_ud-vname.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 7. Credit Memo Created
SELECT h~vbeln, h~erdat, h~erzet, h~ernam, i~netwr, i~vgbel
INTO TABLE @DATA(lt_cred_memos)
FROM vbrk AS h
INNER JOIN vbrp AS i ON h~vbeln = i~vbeln
FOR ALL ENTRIES IN @lt_doc_flow
WHERE h~vbeln = @lt_doc_flow-vbeln AND @lt_doc_flow-vbtyp_n = 'M'.
LOOP AT lt_cred_memos INTO DATA(ls_cred_memo).
ls_event_log-returncaseid = ls_cred_memo-vgbel.
ls_event_log-activityname = 'Credit Memo Created'.
CONVERT DATE ls_cred_memo-erdat TIME ls_cred_memo-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_cred_memo-ernam.
ls_event_log-actualrefundamount = ls_cred_memo-netwr.
APPEND ls_event_log TO lt_event_log.
" 8. Credit Memo Posted To FI
SELECT SINGLE budat, cputime, usnam FROM bkpf
INTO @DATA(ls_bkpf_post)
WHERE awkey = @ls_cred_memo-vbeln AND awtyp = 'VBRK'.
IF sy-subrc = 0.
ls_event_log-activityname = 'Credit Memo Posted To FI'.
CONVERT DATE ls_bkpf_post-budat TIME ls_bkpf_post-cputime INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-processingagent = ls_bkpf_post-usnam.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 12. Credit Memo Cleared
SELECT SINGLE augdt FROM bseg
INTO @DATA(lv_augdt)
WHERE bukrs = @p_bukrs
AND belnr = @ls_cred_memo-vbeln
AND augdt IS NOT NULL.
IF sy-subrc = 0 AND lv_augdt IS NOT INITIAL.
ls_event_log-activityname = 'Credit Memo Cleared'.
CONVERT DATE lv_augdt INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
CLEAR: ls_event_log-processingagent.
APPEND ls_event_log TO lt_event_log.
ENDIF.
ENDLOOP.
" 9. Return Order Item Completed
SELECT vbeln, erdat, erzet, ernam, abgru FROM vbap
INTO TABLE @DATA(lt_items_completed)
FOR ALL ENTRIES IN @lt_return_orders
WHERE vbeln = @lt_return_orders-vbeln
AND gbsta = 'C'.
LOOP AT lt_items_completed INTO DATA(ls_item_completed).
ls_event_log-returncaseid = ls_item_completed-vbeln.
ls_event_log-activityname = 'Return Order Item Completed'.
CONVERT DATE ls_item_completed-erdat TIME ls_item_completed-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_item_completed-ernam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 10. Return Order Completed
SELECT vbeln, erdat, erzet, ernam FROM vbak
INTO TABLE @DATA(lt_orders_completed)
FOR ALL ENTRIES IN @lt_return_orders
WHERE vbeln = @lt_return_orders-vbeln
AND gbsta = 'C'.
LOOP AT lt_orders_completed INTO DATA(ls_order_completed).
ls_event_log-returncaseid = ls_order_completed-vbeln.
ls_event_log-activityname = 'Return Order Completed'.
CONVERT DATE ls_order_completed-erdat TIME ls_order_completed-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_order_completed-ernam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
" 11. Return Order Item Rejected
SELECT vbeln, erdat, erzet, ernam FROM vbap
INTO TABLE @DATA(lt_items_rejected)
FOR ALL ENTRIES IN @lt_return_orders
WHERE vbeln = @lt_return_orders-vbeln
AND abgru IS NOT NULL AND abgru <> ''.
LOOP AT lt_items_rejected INTO DATA(ls_item_rejected).
ls_event_log-returncaseid = ls_item_rejected-vbeln.
ls_event_log-activityname = 'Return Order Item Rejected'.
CONVERT DATE ls_item_rejected-erdat TIME ls_item_rejected-erzet INTO TIME STAMP ls_event_log-eventtime TIME ZONE sy-zonlo.
ls_event_log-sourcesystem = sy-sysid.
ls_event_log-lastdataupdate = lv_last_update.
ls_event_log-processingagent = ls_item_rejected-ernam.
APPEND ls_event_log TO lt_event_log.
ENDLOOP.
ENDIF.
" =======================================================================
" OUTPUT
" =======================================================================
cl_salv_table=>factory(
IMPORTING
r_salv_table = DATA(lo_alv)
CHANGING
t_table = lt_event_log ).
lo_alv->display( ). Etapas
- Pré-requisitos: Garanta que você tenha um usuário de banco de dados com acesso de leitura às tabelas SAP necessárias. Isso inclui tabelas dos módulos Sales and Distribution (SD), Materials Management (MM) e Financial Accounting (FI). Você precisará de uma ferramenta cliente SQL adequada, como DBeaver, SAP HANA Studio ou Oracle SQL Developer, para se conectar ao banco de dados.
- Identificar as especificidades do sistema: Antes de executar a consulta, identifique os tipos específicos de documento usados para devoluções na sua organização. A consulta usa o marcador
[YOUR_RETURN_ORDER_TYPES], que deve ser substituído pelos valores reais, como 'RE' para devoluções padrão. - Preparar a consulta: Copie a consulta SQL completa fornecida na seção 'query' para o seu cliente SQL.
- Configurar os parâmetros: Localize a Common Table Expression (CTE) chamada
BaseReturnOrdersno início da consulta. Modifique a cláusulaWHEREpara especificar o intervalo de datas desejado, substituindo[START_DATE]e[END_DATE]. Atualize a lista de tipos de pedidos de devolução e, se necessário, filtre por um código de empresa específico (BUKRS_VF). - Executar a consulta: Execute a consulta modificada no banco de dados SAP ECC. O tempo de execução pode variar conforme o intervalo de datas selecionado e o tamanho do banco de dados.
- Revisar os dados brutos: Quando a consulta terminar, faça uma revisão rápida da saída. Verifique se as colunas
ReturnCaseId,ActivityNameeEventTimeestão preenchidas e se há dados para várias atividades. - Exportar para CSV: Exporte todo o conjunto de resultados do seu cliente SQL para um arquivo CSV. Use a codificação UTF-8 para garantir que todos os caracteres sejam preservados corretamente.
- Preparar para o upload: Abra o arquivo CSV e verifique se os cabeçalhos das colunas correspondem exatamente aos atributos necessários:
ReturnCaseId,ActivityName,EventTime,SourceSystemetc. Ajuste os cabeçalhos caso o cliente SQL os tenha alterado durante a exportação. - Upload final: Faça o upload do arquivo CSV limpo na plataforma ProcessMind para análise.
Configuração
- Tipos de documento de devolução: A consulta deve ser configurada com os tipos específicos de documento de vendas que representam pedidos de devolução no seu sistema SAP. Para isso, substitua o marcador
[YOUR_RETURN_ORDER_TYPES]. Exemplos comuns incluem 'RE' ou tipos personalizados iniciados por 'Z'. - Intervalo de datas: É essencial definir um intervalo adequado para a extração. Para a análise inicial, normalmente recomenda-se um período de 3 a 6 meses. Configure-o usando os marcadores
[START_DATE]e[END_DATE]no formato 'YYYYMMDD'. - Código da empresa: Em organizações com vários códigos de empresa, filtrar os dados é essencial para manter o foco da análise. Você pode adicionar um filtro como
VBAK.BUKRS_VF = '[YOUR_COMPANY_CODE]'na CTE inicial para limitar o escopo. - Dialeto do banco de dados: A consulta fornecida usa funções SQL comuns. No entanto, conversões de data e hora, como
TO_TIMESTAMP, e a concatenação de strings (CONCAT) podem exigir pequenos ajustes de sintaxe, dependendo do sistema de banco de dados subjacente, como Oracle, HANA ou DB2. - Autorizações necessárias: O usuário do banco de dados precisa de acesso de leitura às seguintes tabelas principais: VBAK, VBAP, VBFA, LIKP, LIPS, VBRK, VBRP, MKPF, MSEG, BKPF, BSAD, QALS, QAVE, CDHDR e CDPOS.
a Consulta de exemplo sql
WITH BaseReturnOrders AS (
SELECT
VBAK.VBELN AS ReturnOrderNumber,
VBAP.POSNR AS ReturnOrderItemNumber
FROM VBAK
JOIN VBAP ON VBAK.VBELN = VBAP.VBELN
WHERE VBAK.AUART IN ('[YOUR_RETURN_ORDER_TYPES]') -- e.g., 'RE'
AND VBAK.ERDAT BETWEEN '[START_DATE]' AND '[END_DATE]' -- e.g., '20230101' and '20231231'
)
-- 1. Return Order Created
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Created' AS "ActivityName",
TO_TIMESTAMP(CONCAT(VBAK.ERDAT, VBAK.ERZET), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
VBAK.ERNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
UNION ALL
-- 2. Return Order Block Removed
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Block Removed' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CDHDR.USERNAME AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN CDHDR ON B.ReturnOrderNumber = CDHDR.OBJECTID
JOIN CDPOS ON CDHDR.OBJECTCLAS = CDPOS.OBJECTCLAS AND CDHDR.OBJECTID = CDPOS.OBJECTID AND CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
WHERE CDHDR.OBJECTCLAS = 'VERKBELEG'
AND CDPOS.TABNAME = 'VBAK'
AND CDPOS.FNAME IN ('LIFSK', 'FAKSK')
AND CDPOS.VALUE_NEW = ''
AND CDPOS.VALUE_OLD <> ''
UNION ALL
-- 3. Return Delivery Created
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Delivery Created' AS "ActivityName",
TO_TIMESTAMP(CONCAT(LIKP.ERDAT, LIKP.ERZET), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
LIKP.ERNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'J'
JOIN LIKP ON VBFA.VBELN = LIKP.VBELN
UNION ALL
-- 4. Goods Receipt Posted
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Goods Receipt Posted' AS "ActivityName",
TO_TIMESTAMP(CONCAT(MKPF.CPUDT, MKPF.CPUTM), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
MKPF.USNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'J'
JOIN LIPS ON VBFA.VBELN = LIPS.VBELN AND VBFA.POSNN = LIPS.POSNR
JOIN MSEG ON LIPS.VBELN = MSEG.LFBNR AND LIPS.POSNR = MSEG.LFPOS
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART IN ('651', '653', '655') -- Standard returns movement types
UNION ALL
-- 5. Usage Decision Made
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Usage Decision Made' AS "ActivityName",
TO_TIMESTAMP(CONCAT(QAVE.ADAT, QAVE.ATIM), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
QAVE.AENAME AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'J'
JOIN QALS ON VBFA.VBELN = QALS.VBELN AND VBFA.POSNN = QALS.POSNR -- Linking inspection lot to delivery item
JOIN QAVE ON QALS.PRUEFLOS = QAVE.PRUEFLOS
UNION ALL
-- 6. Credit Memo Request Created (assumes a separate doc, or can be the return order itself)
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Credit Memo Request Created' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CMR_VBAK.ERDAT, CMR_VBAK.ERZET), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CMR_VBAK.ERNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'K' -- 'K' is Credit Memo Request
JOIN VBAK AS CMR_VBAK ON VBFA.VBELN = CMR_VBAK.VBELN
UNION ALL
-- 7. Credit Memo Created
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Credit Memo Created' AS "ActivityName",
TO_TIMESTAMP(CONCAT(VBRK.ERDAT, VBRK.ERZET), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
VBRK.ERNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
VBRP.NETWR AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'M'
JOIN VBRK ON VBFA.VBELN = VBRK.VBELN
JOIN VBRP ON VBRK.VBELN = VBRP.VBELN AND VBFA.POSNN = VBRP.POSNR
WHERE VBRK.FKART IN ('[YOUR_CREDIT_MEMO_TYPES]') -- e.g., 'G2'
UNION ALL
-- 8. Credit Memo Posted To FI
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Credit Memo Posted To FI' AS "ActivityName",
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
BKPF.USNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
VBRP.NETWR AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'M'
JOIN VBRK ON VBFA.VBELN = VBRK.VBELN
JOIN VBRP ON VBRK.VBELN = VBRP.VBELN AND VBFA.POSNN = VBRP.POSNR
JOIN BKPF ON VBRK.VBELN = BKPF.AWKEY AND BKPF.AWTYP = 'VBRK'
UNION ALL
-- 9. Return Order Item Completed
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Item Completed' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CDHDR.USERNAME AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN CDHDR ON CONCAT(B.ReturnOrderNumber, LPAD(B.ReturnOrderItemNumber, 6, '0')) = CDHDR.OBJECTID
JOIN CDPOS ON CDHDR.OBJECTCLAS = CDPOS.OBJECTCLAS AND CDHDR.OBJECTID = CDPOS.OBJECTID AND CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
WHERE CDHDR.OBJECTCLAS = 'VERKBELEG'
AND CDPOS.TABNAME = 'VBUP'
AND CDPOS.FNAME = 'GBSTA'
AND CDPOS.VALUE_NEW = 'C'
UNION ALL
-- 10. Return Order Completed
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Completed' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CDHDR.USERNAME AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN CDHDR ON B.ReturnOrderNumber = CDHDR.OBJECTID
JOIN CDPOS ON CDHDR.OBJECTCLAS = CDPOS.OBJECTCLAS AND CDHDR.OBJECTID = CDPOS.OBJECTID AND CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
WHERE CDHDR.OBJECTCLAS = 'VERKBELEG'
AND CDPOS.TABNAME = 'VBUK'
AND CDPOS.FNAME = 'GBSTK'
AND CDPOS.VALUE_NEW = 'C'
UNION ALL
-- 11. Return Order Item Rejected
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Return Order Item Rejected' AS "ActivityName",
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CDHDR.USERNAME AS "ProcessingAgent",
CDPOS.VALUE_NEW AS "ReturnReason", -- Using rejection reason for this specific event
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
NULL AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN CDHDR ON CONCAT(B.ReturnOrderNumber, LPAD(B.ReturnOrderItemNumber, 6, '0')) = CDHDR.OBJECTID
JOIN CDPOS ON CDHDR.OBJECTCLAS = CDPOS.OBJECTCLAS AND CDHDR.OBJECTID = CDPOS.OBJECTID AND CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
WHERE CDHDR.OBJECTCLAS = 'VERKBELEG'
AND CDPOS.TABNAME = 'VBAP'
AND CDPOS.FNAME = 'ABGRU'
AND CDPOS.VALUE_NEW <> ''
UNION ALL
-- 12. Credit Memo Cleared
SELECT
CONCAT(B.ReturnOrderNumber, '-', B.ReturnOrderItemNumber) AS "ReturnCaseId",
'Credit Memo Cleared' AS "ActivityName",
TO_TIMESTAMP(BSAD.AUGDT, 'YYYYMMDD') AS "EventTime",
'SAP ECC' AS "SourceSystem",
CURRENT_TIMESTAMP AS "LastDataUpdate",
CLEAR_DOC.USNAM AS "ProcessingAgent",
VBAK.AUGRU AS "ReturnReason",
VBAP.MATNR AS "MaterialNumber",
VBAK.VTWEG AS "ReturnChannel",
VBAP.NETWR AS "RequestedRefundAmount",
VBRP.NETWR AS "ActualRefundAmount"
FROM BaseReturnOrders B
JOIN VBAK ON B.ReturnOrderNumber = VBAK.VBELN
JOIN VBAP ON B.ReturnOrderNumber = VBAP.VBELN AND B.ReturnOrderItemNumber = VBAP.POSNR
JOIN VBFA ON B.ReturnOrderNumber = VBFA.VBELV AND B.ReturnOrderItemNumber = VBFA.POSNV AND VBFA.VBTYP_N = 'M'
JOIN VBRK ON VBFA.VBELN = VBRK.VBELN
JOIN VBRP ON VBRK.VBELN = VBRP.VBELN AND VBFA.POSNN = VBRP.POSNR
JOIN BSAD ON VBRK.VBELN = BSAD.VBELN
JOIN BKPF AS CLEAR_DOC ON BSAD.AUGBL = CLEAR_DOC.BELNR AND BSAD.BUKRS = CLEAR_DOC.BUKRS AND BSAD.GJAHR_AUGL = CLEAR_DOC.GJAHR; Pronto para começar?
Comece a usar este Template hoje para simplificar a coleta de dados e obter insights poderosos sobre seu processo de devoluções e reembolsos.
Otimize agora o processamento de devoluções e reembolsos
Simplifique as devoluções no SAP ECC e reduza o tempo de ciclo em 30%. Comece hoje.
Não é necessário cartão de crédito. Configure em poucos minutos.