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 | ||
|---|---|---|---|
| Data e hora do evento EventTime | A data e a hora exatas em que a atividade ocorreu. | ||
| Descrição Essa data e hora indicam o momento exato em que um evento de negócio aconteceu. O registro é feito para cada atividade do processo e fornece a sequência cronológica dos eventos em cada caso. A data e hora do evento são essenciais para todas as análises baseadas em tempo, incluindo o cálculo dos tempos de ciclo entre atividades, a identificação de gargalos causados por períodos de espera e a medição da duração total de cada caso. Elas permitem analisar a performance e verificar a conformidade com os acordos de nível de serviço (SLAs). Por que isso importa Essa data e hora são essenciais para calcular durações, analisar a performance do processo, identificar gargalos e entender a linha do tempo de cada caso de devolução. Onde encontrar Obtida de vários campos de data e hora nas tabelas SAP. Para eventos de criação, geralmente são usados os campos ERDAT e ERZET (por exemplo, em 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 | Identificador exclusivo da solicitação de devolução de um cliente, que vincula todas as atividades e os documentos relacionados. | ||
| Descrição O ID do caso de devolução é a chave principal para acompanhar todo o ciclo de vida do processo, 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 do pedido, entrega, inspeção e processamento da nota de crédito. Na análise de processos, esse atributo é fundamental para criar o mapa do processo. Ele permite que o sistema agrupe eventos individuais em jornadas completas de cada caso, possibilitando analisar variantes do processo, tempos de ciclo e gargalos de cada devolução. Por que isso importa Esse é o identificador essencial que conecta todas as etapas da jornada de devolução e permite analisar o fluxo e a performance do processo de ponta a ponta. Onde encontrar Geralmente, é o número do pedido de devolução do módulo de Vendas e Distribuição (SD). Ele fica no campo VBELN da tabela VBAK (dados do cabeçalho do documento de vendas), em que a categoria do documento (VBAK-VBTYP) é 'H' para devoluções. Exemplos 600001236000045660000789 | |||
| Nome da atividade ActivityName | Nome de um evento ou etapa específica do processo de devolução. | ||
| Descrição Esse atributo descreve uma ação específica ou uma mudança de status no ciclo de vida da devolução, como 'Pedido de devolução criado', 'Recebimento de mercadorias lançado' ou 'Nota de crédito criada'. Essas atividades formam os elementos básicos do mapa do processo. Analisar a sequência e a frequência dessas atividades ajuda a identificar os caminhos mais comuns, os desvios e os ciclos de retrabalho. Isso é essencial para entender o que acontece em cada caso e em que ordem, além de servir de base para 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 é a base do Process Mining e revela como o trabalho acontece na prática. Onde encontrar Derivado de mudanças de status em tabelas como VBUK/VBUP, de eventos de criação de documentos (por exemplo, em VBAK, LIKP e VBRK) ou de registros de alterações nas tabelas CDHDR/CDPOS. Exemplos Pedido de devolução criadoEntrada de mercadorias registradaNota de crédito criadaItem do pedido de devolução concluído | |||
| Sistema de origem SourceSystem | O sistema do qual os dados foram extraídos. | ||
| Descrição Esse atributo identifica a origem dos dados, algo essencial em ambientes com vários sistemas. Ele fornece contexto e ajuda a garantir a linhagem e a integridade dos dados. Na análise, ele é usado para segmentar ou filtrar dados ao combinar processos de diferentes sistemas de origem. Também 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 encontrar Esse é 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 | A data e hora que indicam quando os dados deste processo foram atualizados pela última vez. | ||
| Descrição Esse atributo registra a data e a hora da extração ou atualização mais recente dos dados. Assim, você sabe se os dados analisados estão atualizados. Na análise, essa informação ajuda a entender o quanto os insights são recentes. Você pode verificar a atualidade dos dados, que influencia a relevância das conclusões, especialmente no monitoramento de operações em andamento. Por que isso importa Indica se os dados estão atualizados, para que você saiba até quando vai a análise do processo e quando esperar a próxima atualização. Onde encontrar Esse é um atributo de metadados preenchido com a data e hora de execução do trabalho de extração dos dados. Exemplos 2023-05-20T02:00:00Z2023-05-21T02:00:00Z | |||
| Agente de processamento ProcessingAgent | O ID de usuário do funcionário que realizou a atividade. | ||
| Descrição Esse atributo registra o nome de usuário da pessoa responsável por executar uma etapa específica do processo, como criar o pedido de devolução ou lançar o recebimento de mercadorias. Esse usuário também pode aparecer como 'Alterado por' ou 'Criado por'. Analisar os dados por agente de processamento é importante para gerenciar a performance e os recursos. Isso ajuda a identificar quem tem melhor desempenho, quem pode precisar de treinamento adicional e como a carga de trabalho está distribuída na equipe. O atributo é usado em Dashboards como 'Performance dos agentes no processamento de devoluções' para comparar tempos de ciclo e volume processado. Por que isso importa Acompanha a participação dos usuários e permite analisar a performance da equipe, a distribuição da carga de trabalho e as necessidades de treinamento ou as melhores práticas. Onde encontrar Geralmente, aparece em campos como ERNAM (Criado por) ou AENAM (Alterado por) nas tabelas de cabeçalho, como VBAK, LIKP e VBRK. Para eventos de alteração, o campo correspondente é USERNAME na tabela CDHDR. Exemplos CBURNSDSCRANTONJHALPERT | |||
| Canal de devolução ReturnChannel | O canal pelo qual a devolução foi iniciada, como internet, loja física ou central de atendimento. | ||
| Descrição Esse atributo especifica a origem ou o meio pelo qual a solicitação de devolução foi recebida. Ele ajuda a diferenciar solicitações iniciadas pelo portal da internet, em uma loja física ou por meio de um representante do atendimento ao cliente. Segmentar o processo por canal de devolução é essencial para entender as diferenças operacionais e a alocação de recursos. Por exemplo, as devoluções em lojas físicas podem ter inspeções mais rápidas, mas exigir etapas de documentação diferentes das devoluções feitas pela internet. Esse é um critério importante para o Dashboard 'Tendências de volume do processo de devolução'. Por que isso importa Diferencia como as devoluções são iniciadas, o que costuma afetar o fluxo do processo, os recursos necessários e os tempos de ciclo de cada canal. Onde encontrar Esse campo geralmente não é padrão no SAP ECC e talvez precise ser obtido de um campo personalizado (por exemplo, em VBAK) ou inferido 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 saber como isso foi implementado. Exemplos Portal da internetLoja físicaCentral de atendimento | |||
| Motivo da devolução ReturnReason | O código de motivo informado pelo cliente para devolver o item. | ||
| Descrição Esse atributo indica por que um produto foi devolvido, usando códigos de motivo predefinidos no SAP. Alguns exemplos são 'Produto danificado no transporte', 'Produto enviado incorretamente' e 'Não serviu'. Esse é um critério essencial para a análise de causa raiz. Ao filtrar o mapa do processo ou os KPIs pelo motivo da devolução, analistas podem identificar se determinados motivos estão associados a tempos de processamento maiores, mais reprovações na inspeção ou desvios específicos do processo. Esse insight pode orientar melhorias na qualidade dos produtos, na logística ou nos processos de vendas. Por que isso importa Explica por que as devoluções acontecem e permite fazer uma análise de causa raiz para reduzir sua frequência, corrigindo problemas de qualidade, envio ou descrição dos produtos. Onde encontrar Fica no campo ABGRU da tabela VBAP, que contém os itens do documento de vendas (motivo da rejeição de documentos de vendas). Exemplos 001 - Produto danificado002 - Produto incorreto005 - Chegou com atraso | |||
| Número do material MaterialNumber | Identificador exclusivo do produto que está sendo devolvido. | ||
| Descrição O número do material, ou SKU, identifica o item exato envolvido na devolução. Isso permite fazer análises detalhadas por produto. Ao analisar as devoluções por número do material, as empresas podem identificar produtos com altas taxas de devolução, o que pode indicar problemas de qualidade, descrições imprecisas ou defeitos de fabricação. Esse atributo é essencial para Dashboards como 'Impacto das devoluções no estoque' e para entender como diferentes produtos passam pelo processo de devolução. Por que isso importa Identifica quais produtos estão sendo devolvidos e destaca possíveis problemas de controle de qualidade ou descrições imprecisas. Onde encontrar Fica no campo MATNR da tabela VBAP, que contém os itens do documento de vendas. Exemplos RM-1025FG-2050-BACC-5591 | |||
| Valor efetivo do reembolso ActualRefundAmount | Valor final creditado ao cliente, conforme registrado nos documentos financeiros. | ||
| Descrição Esse atributo representa o valor final confirmado do reembolso, processado e lançado no sistema contábil. Ele pode ser diferente do valor solicitado devido a taxas de reposição de estoque, ajustes com base na condição do item ou outras regras da política de devolução. Esse atributo é essencial para o Dashboard 'Acompanhamento de divergências no valor do reembolso'. Compará-lo ao valor solicitado ajuda a identificar problemas recorrentes no cálculo e na aprovação dos 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 encontrar Obtido do documento financeiro associado à nota de crédito. Geralmente, fica no campo WRBTR da tabela BSEG (segmento do documento contábil), referente ao valor na moeda do documento e ao lançamento na conta contábil correspondente. Exemplos 150.0045.001200.75 | |||
| Valor solicitado do reembolso RequestedRefundAmount | Valor esperado do reembolso, geralmente calculado com base no valor líquido dos itens devolvidos. | ||
| Descrição Esse atributo representa o valor monetário inicial da devolução, conforme registrado no pedido de devolução. Ele serve de referência para análises e conciliações financeiras. Esse valor é comparado ao 'Valor efetivo do reembolso' para acompanhar divergências, uma métrica importante para o Dashboard 'Acompanhamento de divergências no valor do reembolso'. Analisá-lo ajuda a monitorar o impacto financeiro das devoluções e a identificar possíveis problemas de preço ou de cálculo do crédito. Por que isso importa Define o valor financeiro inicial da devolução, essencial para acompanhar divergências financeiras e entender o valor total dos produtos devolvidos. Onde encontrar Esse valor geralmente corresponde ao valor líquido do item do pedido de devolução. Ele fica no campo NETWR da tabela VBAP. Exemplos 150.0049.991250.75 | |||
| Aderência à política de devolução ReturnPolicyAdherence | Indicador que mostra se a devolução está de acordo com todas as regras e políticas de negócio definidas. | ||
| Descrição Esse atributo booleano calculado indica se o caso de devolução seguiu as políticas padrão da empresa. A lógica pode verificar várias condições, como se a devolução foi iniciada dentro do prazo permitido, se o código de motivo é válido para o produto ou se um gerente aprovou 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, orientando melhorias no processo ou treinamentos específicos. Por que isso importa Mede a conformidade com as regras de negócio, ajuda a aplicar as políticas de forma consistente e identifica casos que precisam de análise ou aprovação especial. Onde encontrar Esse atributo é derivado de 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 | Local ou instalação física onde o item devolvido é recebido e processado. | ||
| Descrição No SAP, o centro representa um local físico, como um estoque ou centro de distribuição, onde as mercadorias são movimentadas. No processo de devolução, geralmente é o local onde o item é recebido e inspecionado. Analisar o processo por centro ajuda a identificar diferenças de performance entre instalações. Isso pode mostrar quais estoques inspecionam os itens com mais eficiência ou processam um volume maior, contribuindo para o Dashboard 'Volume e eficiência da inspeção de itens'. Por que isso importa Identifica o local físico que processa a devolução e permite comparar a performance entre diferentes estoques ou centros de distribuição. Onde encontrar Fica no campo WERKS da tabela VBAP, no nível do item do pedido de devolução. Exemplos PL01WH02DC05 | |||
| Código da empresa CompanyCode | Entidade jurídica ou empresa responsável pela transação. | ||
| Descrição O código da empresa representa uma unidade contábil independente no SAP. Todas as transações financeiras, incluindo devoluções e reembolsos, são lançadas 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 os dados por código da empresa permite comparar a performance do processo de devolução 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 encontrar Fica no campo BUKRS_VF da tabela VBAK, que contém o cabeçalho do documento de vendas (código da empresa para faturamento). Exemplos 10002000US01 | |||
| Data-limite do SLA de reembolso RefundSLATargetDate | Data até a qual se espera que o reembolso seja processado, de acordo com os acordos de nível de serviço. | ||
| Descrição Esse atributo define o prazo para concluir o processo de reembolso de um caso de devolução. Em geral, ele é calculado com base em regras de negócio, como '5 dias úteis após o recebimento das mercadorias'. Essa data é a referência para medir a performance real. Ela é o componente central do Dashboard 'Conformidade com o SLA de processamento de reembolsos', que permite acompanhar o cumprimento dos compromissos com os clientes e identificar casos com risco de descumprir o 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 atrasados. Onde encontrar Esse campo geralmente não é padrão no SAP e precisa ser calculado com base em regras de negócio. Por exemplo, ele pode ser calculado a partir de uma data importante (como a data de recebimento das mercadorias na tabela MKPF) mais um prazo configurado. 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 | Diferença calculada entre os valores efetivo e solicitado do reembolso. | ||
| Descrição Essa métrica calculada quantifica a diferença monetária entre o valor solicitado inicialmente no pedido de devolução e o valor emitido na nota de crédito. Um valor positivo pode indicar um reembolso parcial. Um valor negativo é incomum, mas pode indicar um pagamento a maior. Esse atributo é a principal métrica do Dashboard 'Acompanhamento de divergências no valor do reembolso'. Ele ajuda a identificar e analisar rapidamente casos com desvios financeiros, que podem decorrer da avaliação da condição do item, de taxas de reposição de estoque ou de erros. Acompanhar essa métrica ajuda a manter o controle financeiro e a cumprir as políticas. Por que isso importa Mede diretamente os desvios financeiros no processo de reembolso e ajuda a identificar descumprimentos de políticas, erros de processamento ou perdas financeiras. Onde encontrar Campo calculado: ActualRefundAmount - RequestedRefundAmount. Exemplos 0.00-4.99-50.00 | |||
| Documento de vendas original OriginalSalesDocument | Número do pedido de venda original ao qual a devolução está vinculada. | ||
| Descrição Esse atributo cria 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 é muito útil para análises mais aprofundadas. Ele permite que analistas investiguem por que produtos de determinados pedidos foram devolvidos, verifiquem os preços e as condições originais e entendam todo o ciclo do pedido do cliente até a devolução. Também ajuda a descobrir se produtos vendidos em campanhas ou canais específicos têm taxas de devolução mais altas. Por que isso importa Vincula a devolução à venda original, permitindo analisar toda a transação do cliente e fazer uma análise de causa raiz mais aprofundada. Onde encontrar Essa referência fica no nível do item do pedido de devolução. Ela está no campo VGBEL da tabela VBAP (número do documento de referência). Exemplos 100034561000987110012345 | |||
| Em conformidade com o SLA IsSLACompliant | Indicador que mostra se o reembolso foi processado dentro do acordo de nível de serviço (SLA). | ||
| Descrição Esse atributo booleano calculado compara a data real da atividade 'Reembolso processado' com a 'Data-limite do SLA de reembolso'. O resultado é verdadeiro se o reembolso foi concluído no prazo e falso caso contrário. Esse atributo simplifica a análise e os relatórios ao mostrar um resultado claro, com duas opções, para a performance do SLA de cada caso. Ele é usado para calcular a taxa geral de 'Conformidade com o SLA de processamento de reembolsos' e facilita a filtragem e a análise de casos fora de conformidade. Por que isso importa Mostra claramente, com duas opções, a performance do SLA de cada caso e simplifica o monitoramento e os relatórios de conformidade. Onde encontrar Esse atributo é calculado com a seguinte lógica: 'Refund Processed' EventTime <= RefundSLATargetDate. Exemplos truefalse | |||
| ID do cliente CustomerId | Identificador exclusivo do cliente que iniciou a devolução. | ||
| Descrição Esse atributo identifica o cliente específico que está devolvendo o produto, chamado de 'Emissor da ordem' na terminologia SAP. Ele vincula a transação de devolução aos dados mestres do cliente. Analisar os dados por ID do cliente ajuda a identificar clientes que fazem devoluções frequentes, o que pode indicar insatisfação ou possível uso indevido das políticas de devolução. Com dados de segmentação de clientes, também é possível entender se determinados grupos têm comportamentos ou experiências diferentes no processo de devolução. Por que isso importa Vincula as devoluções a clientes específicos e permite analisar o comportamento dos clientes, identificar quem devolve produtos com frequência e entender o impacto nos relacionamentos com os clientes. Onde encontrar Fica no campo KUNNR da tabela VBAK, que contém o cabeçalho do documento de vendas (Emissor da ordem). Exemplos CUST-100432CUST-203991CUST-831102 | |||
| Número da nota de crédito CreditMemoNumber | Identificador exclusivo do documento de nota de crédito emitido para o reembolso. | ||
| Descrição A nota de crédito é o documento de faturamento oficial do SAP que formaliza o reembolso a ser pago ao cliente. Esse número identifica o documento financeiro de forma exclusiva. 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 do processo e ajuda a localizar documentos contábeis relacionados a atributos como 'Valor efetivo do reembolso'. Por que isso importa Vincula diretamente ao documento financeiro que autoriza o reembolso ao cliente, algo essencial para auditorias e conciliações financeiras. Onde encontrar A nota de crédito é um documento de faturamento. Seu número fica no campo VBELN da tabela VBRK (documento de faturamento: dados do cabeçalho). O vínculo é feito pelo fluxo de documentos do pedido de devolução. Exemplos 900011229000334490005566 | |||
| Status do pedido de devolução ReturnOrderStatus | Status geral de processamento do caso do pedido de devolução. | ||
| Descrição Esse atributo mostra um retrato do estado atual do caso de devolução, como 'Em aberto', 'Em andamento' ou 'Concluído'. Ele é derivado da combinação dos status no cabeçalho ou nos itens do documento de vendas. Na análise, esse atributo ajuda a filtrar casos e focar nas devoluções em andamento ou concluídas. Ele também permite acompanhar a carga de trabalho e o progresso dos casos em aberto, além de mostrar o resultado geral de cada jornada de devolução. Por que isso importa Mostra em que etapa do ciclo de vida está cada caso e permite filtrar e analisar devoluções em aberto, em andamento ou encerradas. Onde encontrar Derivado dos campos de status nas tabelas VBUK (status do cabeçalho) e VBUP (status do item). Por exemplo, VBUK-GBSTK indica o status geral de processamento do documento. Exemplos Em 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 as condições do item devolvido. Essa decisão determina a etapa seguinte do processo, como retorno ao estoque, descarte ou 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 encontrar Se o SAP QM estiver em uso, este é um evento explícito registrado na tabela QAVE (decisão de utilização no processamento da inspeção). A data da decisão é armazenada em QAVE-VDATUM. O vínculo com a entrega está na tabela QALS. Coleta Use a data da decisão de utilização (VDATUM) da tabela QAVE, vinculada pelo lote de inspeção (QALS-PRUEFLOS). Tipo de evento explicit | |||
| Entrada de mercadorias registrada | Esta atividade ocorre quando o item físico devolvido chega ao armazém ou ao centro de processamento. Ela é registrada quando um documento de movimentação de mercadorias é lançado para a entrega de devolução. | ||
| Por que isso importa Um marco importante que indica que a empresa recebeu o item devolvido. É o ponto de partida da inspeção física e afeta a precisão do estoque. Onde encontrar 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'). A data e a hora exatas estão no cabeçalho do documento de material (MKPF-BUDAT) correspondente à entrada de mercadorias. Coleta Encontre a data de lançamento (BUDAT) na tabela MKPF para o documento de material vinculado à entrega de devolução. Tipo de evento inferred | |||
| Nota de crédito criada | Um documento de faturamento (nota de crédito) é gerado para autorizar o crédito financeiro ao cliente. Esse é o documento financeiro oficial que formaliza o valor do reembolso. | ||
| Por que isso importa Esse é um marco financeiro importante no 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 dos produtos. Onde encontrar Esse é um evento explícito registrado na tabela VBRK (cabeçalho do documento de faturamento). A data de criação é VBRK-ERDAT. A nota de crédito é vinculada ao pedido de devolução ou à solicitação de nota de crédito no fluxo de documentos. Coleta Use a data e hora de criação (ERDAT) da tabela VBRK para o documento de faturamento correspondente. Tipo de evento explicit | |||
| Nota de crédito lançada na contabilidade financeira | A nota de crédito é liberada para a contabilidade financeira e passa a ser um lançamento oficial em contas a receber. Essa etapa inicia o processo de pagamento do reembolso ao cliente. | ||
| Por que isso importa Essa atividade marca o momento em que a empresa reconhece financeiramente o reembolso. Atrasos entre a criação e o lançamento da nota de crédito podem retardar o reembolso ao cliente. Onde encontrar Esse é um evento inferido, identificado quando o status de lançamento no cabeçalho do documento de faturamento (VBRK-RFBSK) é atualizado para 'C' (documento de lançamento criado). A data de criação do documento contábil está na tabela BKPF. Coleta Identifique a data e hora em que VBRK-RFBSK recebe o valor 'C' ou use a data de criação (CPUDT) do documento contábil BKPF vinculado. Tipo de evento inferred | |||
| Pedido de devolução concluído | Essa atividade marca o fim do processo de devolução do ponto de vista de vendas e distribuição. Ela ocorre quando todos os itens do pedido de devolução são totalmente processados e encerrados. | ||
| Por que isso importa Esse é o principal evento final do processo. Medir o tempo entre 'Pedido de devolução criado' e essa atividade mostra o tempo de ciclo completo do caso de devolução. Onde encontrar Esse é um evento inferido das tabelas de status. Ele é registrado quando o status geral do cabeçalho do documento de vendas (VBUK-GBSTK) é atualizado para 'C' (processado completamente). Coleta Identifique a 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 | |||
| Pedido de devolução criado | Esta atividade marca o início do processo de devolução, quando o cliente solicita a devolução de um produto. Ela é registrada quando um novo documento de vendas do tipo 'Return' (por exemplo, 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 encontrar Este é um evento explícito registrado na tabela VBAK (cabeçalho do documento de vendas). A data e a hora de criação são armazenadas em VBAK-ERDAT e VBAK-ERZET para o número do documento de vendas correspondente (VBAK-VBELN), com o tipo de pedido VBAK-AUART = 'RE'. Coleta Use a data e a hora de criação (ERDAT, ERZET) da tabela VBAK para documentos de vendas do tipo 'RE'. Tipo de evento explicit | |||
| Bloqueio do pedido de devolução removido | Representa a aprovação da solicitação de devolução, que permite avançar para a próxima etapa. Normalmente, esse evento é registrado quando há uma mudança no status do documento ou quando um bloqueio de entrega ou faturamento é removido. | ||
| Por que isso importa Esta atividade é um marco importante de aprovação. Medir o tempo até esta etapa ajuda a identificar gargalos no processo de autorização e aprovação de devoluções. Onde encontrar Este é um evento inferido, derivado dos logs de alteração do documento de vendas. Consulte as tabelas CDHDR e CDPOS para verificar alterações nos campos de bloqueio em VBAK ou VBAP, ou nos campos de status em VBUK/VBUP. Coleta Identifique a data e a hora nas tabelas de documentos de alteração (CDHDR/CDPOS) em que um status de bloqueio relevante foi removido. Tipo de evento inferred | |||
| Entrega de devolução criada | Um documento de entrega é gerado para gerenciar o recebimento físico dos produtos devolvidos. 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 de ciclo da devolução. Onde encontrar Este é um evento explícito registrado na tabela LIKP (cabeçalho da entrega). A data de criação fica em LIKP-ERDAT. O vínculo com o pedido de devolução de origem está na tabela LIPS (LIPS-VGBEL). Coleta Use a data de criação (ERDAT) da tabela LIKP para a entrega associada ao pedido de devolução. Tipo de evento explicit | |||
| Item do pedido de devolução concluído | Um item individual do pedido de devolução é marcado como totalmente processado. Isso geralmente acontece depois que todos os documentos logísticos e financeiros relacionados a esse item são 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 encontrar Esse é um evento inferido das tabelas de status. Ele é registrado quando o status geral do item do documento de vendas (VBUP-GBSTK) é atualizado para 'C' (processado completamente). Coleta Identifique a 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 do pedido de devolução rejeitado | Um item específico do pedido de devolução é rejeitado, durante a análise inicial ou após a inspeção. Isso significa que ele não passará por outras etapas, como 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. Esse é um caminho importante do processo que não resulta em reembolso. Onde encontrar Esse é um evento inferido. Em geral, ele é registrado quando um código exclusivo de 'Motivo da rejeição' é definido para o item na tabela VBAP (VBAP-ABGRU). A data e hora devem ser obtidas nos registros de alterações. Coleta Identifique a data e hora nos documentos de alteração (CDHDR/CDPOS) em que o campo VBAP-ABGRU é preenchido para um item devolvido. Tipo de evento inferred | |||
| Nota de crédito compensada | O item de crédito em aberto em contas a receber é compensado, geralmente por meio de um pagamento ao cliente. Esse evento marca o encerramento financeiro definitivo do reembolso. | ||
| Por que isso importa Essa atividade confirma a saída do dinheiro e conclui a parte financeira do processo. Do ponto de vista do cliente, é o verdadeiro fim da jornada do reembolso. Onde encontrar Esse é um evento explícito do módulo FI. A data de compensação do documento contábil fica armazenada na tabela BSEG (BSEG-AUGDT), no item de linha correspondente ao cliente. Coleta 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, o próprio pedido 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 dá início às aprovações financeiras e à criação dos documentos seguintes. Onde encontrar Este pode ser um evento explícito na tabela VBAK para um documento de vendas do tipo 'Credit Memo Request' (por exemplo, CR), ou pode ser o mesmo evento que 'Return Order Created' se o tipo de pedido estiver configurado para faturamento relacionado ao pedido. Coleta Use a data de criação (ERDAT) da tabela VBAK para documentos do tipo 'CR' ou reutilize o evento de criação do pedido de devolução. Tipo de evento explicit | |||
Guias de extração
Etapas
- Crie um 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 como objeto local ou em um pacote de desenvolvimento. - Defina 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 período da data 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). - Defina 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. - Implemente 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.
- Extraia 'Pedido de devolução criado': 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. - Extraia alterações de status e eventos importantes: Para atividades como 'Bloqueio do pedido de devolução removido' ou 'Item do pedido de devolução rejeitado', 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. - Preencha 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. - Combine 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.
- Trate os dados de data e hora e as informações do sistema: Use os campos do sistema
SY-DATUMeSY-UZEITpara preencher a data e hora da última atualização (LastDataUpdate) em cada linha. UseSY-SYSIDpara preencherSourceSystem. - Implemente a funcionalidade de saída: Adicione uma função 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. Inclua a opção de baixar a tabela interna final como arquivo CSV ou arquivo de texto simples para o computador local do usuário. - Execute e exporte: Execute o programa pelo
SE38. Informe os critérios de seleção desejados e rode o programa. Depois que os dados forem exibidos ou processados, use a função de exportação para salvar o arquivo do Event Log. Salve-o em um formato compatível com o ProcessMind, normalmente CSV com uma linha de cabeçalho.
Configuração
- Período: Na tela de seleção, informe o período da data de criação do pedido de devolução. Para a análise inicial, recomenda-se um período de 3 a 6 meses, equilibrando o volume de dados e os 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 e 'CR' para solicitação de nota de crédito. Esse filtro é essencial para isolar o processo correto. Informe esses valores na opção de seleção
S_AUART. - Código da empresa: Informe 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 ter autorização para
SE38(execução de programas) e acesso às tabelas SD, MM e FI subjacentes (por exemplo, VBAK, LIKP, VBRK, BKPF, CDHDR). O desenvolvimento exige um perfil de desenvolvedor ABAP. - Performance: Em conjuntos de dados muito grandes, que abrangem vários anos, o programa pode levar bastante tempo para ser executado. Considere executá-lo como um job em segundo plano (
SM36) e gravar a saída no sistema de arquivos do servidor de aplicações, em vez de exibi-la online.
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: Verifique se você tem um usuário de banco de dados com acesso de leitura às tabelas SAP ECC necessárias. Isso inclui tabelas dos módulos de Vendas e Distribuição (SD), Gestão de Materiais (MM) e Contabilidade Financeira (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.
- Identifique as especificidades do sistema: Antes de executar a consulta, identifique os tipos de documento específicos usados para devoluções na sua organização. A consulta usa o marcador
[YOUR_RETURN_ORDER_TYPES], que você deve substituir pelos valores reais, como 'RE' para devoluções padrão. - Prepare a consulta: Copie a consulta SQL completa fornecida na seção 'query' para seu cliente SQL.
- Configure os parâmetros: Localize a expressão de tabela comum (CTE) chamada
BaseReturnOrdersno início da consulta. Altere a cláusulaWHEREpara informar o período desejado, substituindo[START_DATE]e[END_DATE]. Atualize a lista de tipos de pedido de devolução e, se necessário, filtre por um código de empresa específico (BUKRS_VF). - Execute a consulta: Rode a consulta modificada no banco de dados SAP ECC. O tempo de execução pode variar conforme o período selecionado e o tamanho do banco de dados.
- Revise os dados brutos: Quando a consulta terminar, faça uma revisão rápida dos resultados. Verifique se as colunas
ReturnCaseId,ActivityNameeEventTimeestão preenchidas e se há dados de várias atividades. - Exporte para CSV: Exporte todo o conjunto de resultados do cliente SQL para um arquivo CSV. Use a codificação UTF-8 para preservar corretamente todos os caracteres.
- Prepare os dados para carregamento: Abra o arquivo CSV e confira 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. - Carregue o arquivo: Carregue o arquivo CSV revisado na plataforma ProcessMind para análise.
Configuração
- Tipos de documento de devolução: Configure a consulta 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'. - Período: É essencial definir um período adequado para a extração. Para uma análise inicial, recomenda-se normalmente um período de dados de 3 a 6 meses. Use 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 (por exemplo, Oracle, HANA ou DB2). - Autorizações necessárias: O usuário do banco de dados precisa ter acesso de leitura às seguintes tabelas principais: VBAK, VBAP, VBFA, LIKP, LIPS, VBRK, VBRP, MKPF, MSEG, BKPF, BSAD, QALS, QAVE, CDHDR e CDPOS.
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 descobrir insights valiosos sobre o 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. Configuração em poucos minutos.