Seu Template de dados de Record to Report - Lançamento contábil
Seu Template de dados de Record to Report - Lançamento contábil
- Atributos recomendados para uma análise completa
- Principais atividades de lançamento contábil a acompanhar
- Orientações práticas para extrair dados do SAP ECC
Atributos de Record to Report - Lançamento contábil
| Nome | Descrição | ||
|---|---|---|---|
| Hora do evento EventTime | Data e hora que indicam quando uma atividade ou evento específico ocorreu no processo de lançamento contábil. | ||
| Descrição A hora do evento fornece a data e a hora exatas de cada atividade no processo de lançamento contábil. Esses dados são essenciais para calcular todas as métricas baseadas em tempo, como tempos de ciclo, durações de processamento e atrasos entre etapas. A origem desses dados varia conforme a atividade: pode ser a data e hora de criação do documento (CPUDT/CPUTM) ou as datas e horas de alteração registradas nos logs (CDHDR-UDATE/UTIME). Na análise, a hora do evento é usada para ordenar os eventos cronologicamente e formar a base do mapa de processo. Ela é essencial para calcular todos os KPIs relacionados ao tempo, como tempo médio de ciclo do lançamento contábil, tempo médio de aprovação e tempo entre aprovação e lançamento. Por que isso importa Esta data e hora são a base de todas as análises relacionadas ao tempo e permitem calcular tempos de ciclo, durações e gargalos. Onde encontrar Obtido de vários campos, conforme a atividade, principalmente da data e hora de criação (CPUDT, CPUTM) em BKPF ou das datas e horas de alteração (UDATE, UTIME) em CDHDR. Exemplos 2023-10-26T09:00:00Z2023-10-26T14:30:15Z2023-10-27T11:05:00Z | |||
| ID do lançamento contábil JournalEntryId | Identificador único de um documento contábil, composto pelo código da empresa, número do documento e exercício fiscal. | ||
| Descrição O ID do lançamento contábil é o identificador principal do caso para acompanhar o ciclo de vida de um lançamento. É uma chave composta, geralmente formada pela concatenação do código da empresa (BUKRS), do número do documento (BELNR) e do exercício fiscal (GJAHR), garantindo a unicidade em todo o sistema SAP. Na análise de processos, esse ID vincula todas as atividades relacionadas, como criação, estacionamento, envio, aprovação, rejeição e lançamento. Ao rastrear esse identificador, é possível reconstruir a jornada completa de cada lançamento contábil, medir tempos de ciclo e identificar desvios do processo ou gargalos em lançamentos específicos. Por que isso importa Esta é a chave essencial para acompanhar um lançamento contábil desde sua criação até o registro final, permitindo analisar o processo de ponta a ponta e comparar variantes. Onde encontrar Este é um atributo derivado, geralmente formado pela concatenação de campos da tabela BKPF: código da empresa (BUKRS), número do documento (BELNR) e exercício fiscal (GJAHR). Exemplos 1000-1000000123-20232000-1900000456-20231000-1800000789-2024 | |||
| Nome da atividade ActivityName | Nome da atividade de negócio ou do evento ocorrido em um determinado momento do processo de lançamento contábil. | ||
| Descrição O nome da atividade descreve uma etapa específica do ciclo de vida do lançamento contábil, como 'Lançamento contábil criado', 'Lançamento contábil aprovado' ou 'Lançamento contábil registrado'. Esse atributo costuma ser derivado de várias fontes no SAP, incluindo códigos de transação (TCODE), logs de alteração de documentos (tabelas CDHDR e CDPOS) e campos de status do documento. A análise das atividades é a base de Process Mining. Ela permite visualizar mapas de processo, calcular os tempos de transição entre etapas e identificar ciclos de retrabalho (por exemplo, 'Lançamento contábil rejeitado' seguido de 'Lançamento contábil corrigido'). Esses dados são fundamentais para dashboards de tempos de ciclo, taxas de retrabalho e variantes do processo. Por que isso importa Define as etapas do mapa de processo e permite visualizar, analisar e otimizar o fluxo de trabalho de lançamento contábil. Onde encontrar Derivado de várias fontes, incluindo códigos de transação em BKPF (TCODE), status do documento e logs do fluxo de trabalho em tabelas como SWW_WI2OBJ, ou documentos de alteração em CDHDR e CDPOS. Exemplos Lançamento contábil criadoLançamento contábil aprovadoLançamento contábil rejeitadoLançamento contábil registrado | |||
| Sistema de origem SourceSystem | Sistema do qual os dados do processo foram extraídos. | ||
| Descrição Este atributo identifica a origem dos dados, neste caso, a instância específica do SAP ECC. Em geral, é um valor estático adicionado durante a extração dos dados. Embora simples, este atributo é importante em ambientes com vários ERPs ou fontes de dados. Ele mantém clara a linhagem dos dados e permite filtrar ou segmentar a análise pelo sistema de origem. Por que isso importa Deixa clara a linhagem dos dados e é essencial para acompanhar a qualidade dos dados, especialmente em ambientes com vários sistemas de origem. Onde encontrar Em geral, é um valor estático adicionado durante a transformação dos dados para identificar a instância específica do SAP ECC (por exemplo, 'ECC_PROD_100'). Exemplos SAP ECC EHP8ECC_FIN_PRODSAP_ERP_60 | |||
| Última atualização dos dados LastDataUpdate | Data e hora que indicam quando os dados foram extraídos ou atualizados pela última vez no sistema de origem. | ||
| Descrição Este atributo registra a data e a hora da extração mais recente de dados do SAP ECC. É um campo de metadados essencial para entender o nível de atualização dos dados analisados. Em qualquer Dashboard ou análise de Process Mining, saber quando os dados foram atualizados pela última vez é fundamental para que as pessoas confiem nos dados e tomem decisões fundamentadas. Isso ajuda a responder à pergunta: 'Até quando estas informações estão atualizadas?'. Por que isso importa Informa o nível de atualização dos dados, ajudando as pessoas a entender o período analisado e a confiar nos resultados. Onde encontrar Este campo de metadados é gerado e armazenado pela ferramenta de extração de dados ou pelo processo de ETL durante a atualização dos dados. Exemplos 2024-05-20T04:00:00Z2024-05-21T04:00:00Z2024-05-22T04:00:00Z | |||
| Código da empresa CompanyCode | Unidade organizacional que representa uma entidade legal independente para a qual são preparadas demonstrações financeiras. | ||
| Descrição O código da empresa é uma unidade organizacional fundamental no SAP Financials. Ele representa uma empresa legalmente independente e é um campo essencial no cabeçalho do documento de lançamento contábil. Este atributo é essencial para segmentar a análise do processo por entidade legal. Ele permite comparar a performance do processo, as taxas de conformidade e os resultados dos KPIs entre diferentes partes da empresa. Por exemplo, ajuda a identificar se atrasos na aprovação ou taxas altas de estorno se concentram em determinados códigos de empresa. Por que isso importa Permite filtrar e comparar a performance do processo entre diferentes entidades legais ou unidades de negócio da organização. Onde encontrar Localizado no campo BUKRS da tabela de cabeçalho do documento BKPF. Exemplos 10002000US01DE01 | |||
| Código de transação TransactionCode | Código da transação SAP usada para criar ou processar o lançamento contábil. | ||
| Descrição O código de transação (T-Code) é um identificador único de uma função ou programa específico no SAP. Para lançamentos contábeis, ele indica como o lançamento foi criado, por exemplo, manualmente (FB01, F-02), por estacionamento (FV50) ou por uma interface automatizada. Este atributo é muito útil para o Dashboard 'Otimização de atividades manuais'. Ao analisar o T-Code, é possível diferenciar atividades manuais de automatizadas, identificar quais processos manuais consomem mais tempo e encontrar oportunidades de automação para reduzir o esforço manual e melhorar a eficiência. Por que isso importa Ajuda a diferenciar processos manuais de automatizados e a identificar oportunidades de automação e padronização do processo. Onde encontrar Localizado no campo TCODE da tabela de cabeçalho do documento BKPF. Exemplos FB01F-02FV50FBD1 | |||
| Data de lançamento PostingDate | Data em que a transação é registrada no razão geral e afeta o período financeiro. | ||
| Descrição A data de lançamento determina o período fiscal em que o lançamento contábil é contabilizado. É um campo de data essencial do ponto de vista financeiro e de conformidade, pois deve estar de acordo com os cronogramas de fechamento contábil e as normas aplicáveis. Em Process Mining, essa data é usada para monitorar a conformidade. O Dashboard 'Monitoramento da conformidade' e o KPI 'Taxa de conformidade' usam este atributo para verificar se os lançamentos foram registrados no período correto. Ele também pode ser usado para analisar tendências no volume de lançamentos contábeis ao longo do tempo. Por que isso importa Essencial para relatórios financeiros e análises de conformidade, pois ajuda a garantir que os lançamentos sejam registrados no período contábil correto. Onde encontrar Localizado no campo BUDAT da tabela de cabeçalho do documento BKPF. Exemplos 2023-10-312023-11-302024-01-15 | |||
| Estornado IsReversed | Indicador booleano que informa se o lançamento contábil foi estornado. | ||
| Descrição Este indicador identifica lançamentos contábeis que foram estornados posteriormente por outro documento contábil. No SAP, o documento estornado fica vinculado ao documento de estorno, criando um histórico claro para auditoria. Este atributo é fundamental para o Dashboard “Análise de estornos de lançamentos contábeis” e para o KPI “Taxa de estorno de lançamentos contábeis”. Ele permite isolar os lançamentos estornados e investigar as causas raiz, como erros de digitação ou tratamentos contábeis incorretos, com o objetivo de reduzir a frequência dos estornos. Por que isso importa Dá suporte direto à análise de estornos ao sinalizar lançamentos desfeitos posteriormente, ajudando a identificar as causas raiz dos erros e a melhorar a integridade dos dados. Onde encontrar Derivado do campo de número do documento de estorno (STBLG) na tabela BKPF. Se STBLG não estiver vazio, o indicador será verdadeiro. Exemplos truefalse | |||
| Tipo de documento DocumentType | Classificação de documentos contábeis que determina como eles são processados e armazenados. | ||
| Descrição O tipo de documento diferencia categorias de transações de negócio, como um lançamento no razão geral (SA), uma fatura de fornecedor (KR) ou um lançamento de ativo (AA). Ele é definido na configuração do sistema e atribuído a cada lançamento contábil. Este atributo é essencial para a análise, pois permite segmentar o processo conforme a natureza da transação. O Dashboard 'Volume de lançamentos contábeis por tipo' e o KPI 'Tempo médio de ciclo por tipo de lançamento contábil' dependem diretamente deste campo. Ele ajuda a identificar se determinados tipos de lançamento estão mais sujeitos a atrasos, retrabalho ou estornos. Por que isso importa Permite segmentar a análise por tipo de transação e identificar se os problemas do processo se concentram em determinados tipos de lançamento contábil. Onde encontrar Localizado no campo BLART da tabela de cabeçalho do documento BKPF. Exemplos SAKRREAA | |||
| Usuário User | ID do usuário SAP que criou ou alterou o lançamento contábil. | ||
| Descrição Este atributo registra o nome de usuário SAP responsável por uma atividade, como criar, estacionar ou lançar um documento. Os dados vêm diretamente do cabeçalho do documento ou das tabelas de log de alterações. Analisar o atributo Usuário é essencial para entender a performance da equipe e de cada pessoa. Ele dá suporte ao Dashboard de produtividade do usuário, acompanhando o volume de atividades e os tempos de processamento por usuário. Também ajuda a identificar quem participa de ciclos de retrabalho, estornos ou desvios de conformidade, permitindo direcionar treinamentos ou melhorias no processo. Por que isso importa Identifica a pessoa responsável por cada atividade e permite analisar a performance, a distribuição da carga de trabalho e os padrões de retrabalho. Onde encontrar Geralmente, os dados vêm da tabela BKPF (campo USNAM para o criador) ou da tabela CDHDR (campo USERNAME para quem fez a alteração). Exemplos ABROWNCJONESDSMITH | |||
| Centro de custo CostCenter | Unidade organizacional dentro de uma área de controlling que representa um local onde os custos são incorridos. | ||
| Descrição O centro de custo é um dado mestre importante do módulo de Controlling (CO), geralmente atribuído ao item de linha do lançamento contábil. Ele é usado para acompanhar os custos de um departamento, função ou local específico. Incluir o centro de custo permite analisar o processo de lançamento contábil com mais detalhes. Isso ajuda a identificar se determinados departamentos geram mais retrabalho, têm tempos de ciclo maiores ou são responsáveis por um volume mais alto de lançamentos manuais. Assim, você consegue avaliar a eficiência do processo por departamento. Por que isso importa Permite analisar a performance do processo por departamento ou área funcional e identificar ineficiências locais. Onde encontrar Localizado na tabela de itens de linha do documento BSEG, campo KOSTL. Exemplos 4100CC_FINANCE_US10010101 | |||
| Chave da moeda CurrencyKey | Código da moeda dos valores registrados no lançamento contábil. | ||
| Descrição Este atributo especifica a moeda do lançamento contábil, como USD, EUR ou JPY. Ele dá contexto aos valores financeiros associados ao documento. Embora nem sempre seja uma dimensão principal de análise, é essencial para interpretar corretamente os valores monetários. Também pode ser usado para segmentar análises em organizações globais e verificar se os processos diferem entre lançamentos em moedas estrangeiras e locais. Por que isso importa Fornece o contexto necessário para todos os valores monetários, garantindo análises e interpretações financeiras precisas. Onde encontrar Localizado na tabela de cabeçalho do documento BKPF, campo WAERS. Exemplos USDEURGBPJPY | |||
| É retrabalho IsRework | Indicador booleano que informa se um lançamento contábil passou por um ciclo de retrabalho, como ser rejeitado e depois corrigido. | ||
| Descrição Este indicador identifica casos que saíram do “Caminho ideal” e exigiram uma ação corretiva. Em geral, ele recebe o valor verdadeiro quando uma sequência de atividades como “Lançamento contábil rejeitado” seguida de “Lançamento contábil corrigido” é observada para um lançamento contábil. Este atributo é essencial para calcular o KPI “Taxa de retrabalho de lançamentos contábeis” e analisar o Dashboard “Taxa de retrabalho e rejeição”. Ele ajuda a quantificar o nível de ineficiência do processo e serve de base para investigar as causas raiz do retrabalho, como requisitos pouco claros ou documentação insuficiente. Por que isso importa Sinaliza lançamentos que precisaram de correção, permitindo quantificar o retrabalho e analisar suas causas raiz para aumentar a taxa de acerto na primeira tentativa. Onde encontrar Este atributo calculado é derivado da análise da sequência de atividades de um caso. Um ciclo de retrabalho é identificado quando ocorre uma atividade de rejeição ou correção. Exemplos truefalse | |||
| Está estacionado IsParked | Indicador booleano que informa se o lançamento contábil foi salvo como documento estacionado antes de ser contabilizado. | ||
| Descrição Estacionar um documento permite salvar um lançamento contábil incompleto sem afetar os saldos financeiros. Depois, outro usuário pode concluí-lo ou revisá-lo antes da contabilização. Este indicador identifica os lançamentos que passaram por uma etapa de estacionamento. A análise deste atributo ajuda a entender como o recurso de estacionamento é usado. Ela pode revelar se o estacionamento funciona como uma etapa informal de revisão e causa atrasos. Também permite analisar o tempo de ciclo de ponta a ponta, diferenciando os lançamentos contabilizados diretamente daqueles estacionados primeiro. Por que isso importa Identifica lançamentos que usam o recurso de estacionamento, que pode causar atrasos ou indicar um processo informal de revisão. Onde encontrar Derivado do campo de status do documento (BSTAT) na tabela BKPF. O valor 'V' indica um documento estacionado. Exemplos truefalse | |||
| Motivo do estorno ReversalReason | Código que indica o motivo do estorno de um lançamento contábil. | ||
| Descrição Ao estornar um documento, o SAP permite que o usuário informe um código de motivo. Esse código registra de forma estruturada por que o estorno foi necessário, por exemplo, por causa de uma data de lançamento incorreta ou de um erro de digitação. Este atributo é uma informação essencial para o Dashboard “Análise de estornos de lançamentos contábeis”. Ao analisar os motivos de estorno mais comuns, as organizações podem identificar problemas sistêmicos nos processos ou lacunas de treinamento e tomar medidas direcionadas para evitar erros futuros e reduzir a taxa de estornos. Por que isso importa Mostra diretamente por que os estornos acontecem, permitindo uma análise de causa raiz direcionada para reduzir erros futuros. Onde encontrar Localizado na tabela de cabeçalho do documento BKPF, campo STGRD. Exemplos 010205 | |||
| Tempo de aprovação ApprovalTime | Tempo decorrido entre o envio de um lançamento contábil para aprovação e sua aprovação ou rejeição. | ||
| Descrição Esta métrica mede a duração do subprocesso de aprovação, que costuma contribuir significativamente para o tempo de ciclo total. Ela é calculada pela diferença entre a atividade “Lançamento contábil enviado” e a atividade correspondente “Lançamento contábil aprovado” ou “Lançamento contábil rejeitado”. O tempo de aprovação é a métrica principal do Dashboard “Performance da aprovação de lançamentos contábeis” e do KPI “Tempo médio de aprovação de lançamentos contábeis”. Analisar essa duração ajuda a identificar gargalos no fluxo de trabalho de aprovação, medir a performance dos aprovadores e embasar mudanças no processo, como o ajuste dos limites de aprovação. Por que isso importa Quantifica a duração da etapa de aprovação, ajudando a identificar e resolver atrasos no fluxo de trabalho de revisão e aprovação. Onde encontrar Calculado subtraindo-se o registro de data e hora do evento “Lançamento contábil enviado” do registro de data e hora do evento “Lançamento contábil aprovado” ou “Lançamento contábil rejeitado”. Exemplos P1DT2HPT4H15MP3D | |||
| Valor total do documento TotalDocumentAmount | Valor total do lançamento contábil na moeda do documento. | ||
| Descrição Este atributo representa o valor financeiro total do lançamento contábil. Em geral, ele é calculado pela soma dos valores absolutos de todos os itens de débito ou crédito associados ao documento. Analisar o processo pelo valor financeiro pode revelar padrões importantes. Por exemplo, lançamentos de alto valor podem seguir um fluxo de aprovação diferente e mais rigoroso. Este atributo pode ser usado para filtrar ou segmentar a análise e verificar se os tempos de ciclo, as taxas de rejeição ou os atrasos na aprovação estão relacionados ao valor do lançamento. Por que isso importa Permite analisar o impacto financeiro, por exemplo, relacionando os tempos de processamento ou as taxas de rejeição ao valor monetário dos lançamentos contábeis. Onde encontrar Este é um campo calculado, derivado da agregação do campo de valor (WRBTR ou DMBTR) de todos os itens de linha da tabela BSEG para um determinado lançamento contábil. Exemplos 1500.0025000.75125.50 | |||
Atividades de Record to Report - Lançamento contábil
| Atividade | Descrição | ||
|---|---|---|---|
| Estorno do lançamento contábil processado | Esta atividade marca o estorno de um lançamento contábil registrado anteriormente. O estorno é um novo documento contábil que anula o lançamento original. | ||
| Por que isso importa Este é um evento essencial para medir a qualidade dos dados e a precisão do processo. Uma taxa alta de estornos aponta para problemas sistêmicos nas etapas iniciais de entrada ou aprovação dos dados, e cada estorno representa retrabalho. Onde encontrar Este evento é identificado no cabeçalho do documento original (tabela BKPF). Quando um documento é estornado, o SAP preenche o número do documento de estorno (BKPF-STBLG) e o motivo do estorno (BKPF-STGRD). A data do evento é a data de lançamento do novo documento de estorno. Coleta Identifique quando BKPF-STBLG é preenchido no documento original; a data do evento é a data de lançamento do documento de estorno. Tipo de evento explicit | |||
| Lançamento contábil aprovado | Esta atividade marca a aprovação final de um lançamento contábil em um fluxo de trabalho, tornando-o apto para lançamento. O evento é registrado no log do fluxo de trabalho quando a etapa final de 'liberação' ou 'aprovação' é concluída. | ||
| Por que isso importa Este é um marco importante que encerra o processo de aprovação. A duração até esta atividade é um KPI essencial para medir a eficiência da aprovação, e o tempo entre este evento e o lançamento mede o atraso após a aprovação. Onde encontrar Inferido a partir da data e hora de conclusão da etapa final de aprovação no log do SAP Business Workflow. Esta é a última ação de aprovação antes de o documento ser lançado ou ficar pronto para lançamento. Coleta Identifique a conclusão da etapa final de 'liberação' ou 'aprovação' nos logs do fluxo de trabalho. Tipo de evento inferred | |||
| Lançamento contábil enviado | Esta atividade indica que o criador finalizou um lançamento contábil estacionado e que ele está pronto para revisão e aprovação. Em geral, o evento é registrado quando uma tarefa do SAP Business Workflow vinculada ao documento estacionado é iniciada. | ||
| Por que isso importa Este é o handoff do criador para o aprovador e marca o início da contagem dos KPIs de tempo de ciclo de aprovação. É um marco importante para medir a eficiência do fluxo de trabalho de aprovação. Onde encontrar Inferido a partir da hora de início da instância do fluxo de trabalho de aprovação vinculada ao objeto do documento financeiro. Para isso, é preciso analisar tabelas de log do fluxo de trabalho, como SWW_WI2OBJ, e localizar o fluxo iniciado para a empresa, o número do documento e o exercício fiscal específicos. Coleta Identifique o evento de início do fluxo de trabalho para o objeto do documento estacionado. Tipo de evento inferred | |||
| Lançamento contábil estacionado | Esta atividade marca a criação inicial de um lançamento contábil em estado preliminar, antes de seu registro oficial no razão geral. No SAP, ela é registrada quando um usuário salva um documento usando uma transação de estacionamento, definindo o status do documento como 'estacionado'. | ||
| Por que isso importa Este é um evento de início crítico para processos que envolvem revisão e aprovação. Analisar o tempo entre o estacionamento e o lançamento ajuda a identificar atrasos nas etapas anteriores ao lançamento e de aprovação. Onde encontrar Este evento é identificado na tabela de cabeçalho do documento BKPF. Um documento é considerado estacionado quando é criado com o status BKPF-BSTAT = 'V'. A data e a hora do evento são BKPF-CPUDT e BKPF-CPUTM. Coleta Identifique a criação do documento em BKPF quando BKPF-BSTAT for 'V'. Tipo de evento explicit | |||
| Lançamento contábil registrado | Esta é a atividade central em que o lançamento contábil é registrado oficialmente no razão geral, afetando as demonstrações financeiras. O evento é registrado explicitamente quando o status do documento passa a ser 'lançado' e uma data de lançamento é atribuída. | ||
| Por que isso importa Este é o marco mais importante, pois indica que o processamento do lançamento contábil foi concluído com sucesso. O tempo de ciclo de ponta a ponta costuma ser medido até este ponto, que também é um evento essencial para a análise do fechamento financeiro. Onde encontrar O evento é identificado quando um documento na tabela BKPF tem uma data de lançamento (BKPF-BUDAT). Para documentos estacionados, isso corresponde ao momento em que o status BKPF-BSTAT muda de 'V' para em branco. A data do lançamento é BKPF-CPUDT. Coleta Identifique quando BKPF-BSTAT muda de 'V' para em branco ou, em lançamentos diretos, use o evento de criação. Tipo de evento explicit | |||
| Alterações solicitadas no lançamento contábil | Representa uma etapa do fluxo de trabalho em que o aprovador revisou o lançamento contábil e o devolveu ao criador para correção. O evento é registrado nos logs do fluxo de trabalho, que indicam uma decisão do usuário de 'rejeitar' ou 'devolver'. | ||
| Por que isso importa Esta atividade é essencial para identificar ciclos de retrabalho, uma das principais fontes de ineficiência e desvios do processo. Uma frequência alta desse evento pode indicar problemas na qualidade dos lançamentos ou falta de clareza nos requisitos. Onde encontrar Este evento é inferido a partir da data e hora de uma etapa específica de decisão do usuário no log do SAP Business Workflow, correspondente a uma ação de 'rejeitar' ou 'enviar para correção'. Coleta Identifique a data e hora da decisão de 'rejeição' ou 'retrabalho' nos logs do fluxo de trabalho. Tipo de evento inferred | |||
| Documentação anexada | Esta atividade representa o anexo, por um usuário, de documentos de apoio, como faturas ou planilhas, ao lançamento contábil. Esse evento não é registrado explicitamente como um evento contábil padrão e costuma ser inferido pela verificação da criação de anexos vinculados ao objeto do documento contábil. | ||
| Por que isso importa Acompanhar esta atividade ajuda a verificar a conformidade com políticas que exigem documentação. Atrasos na inclusão de documentos podem prolongar os ciclos de aprovação. Onde encontrar É difícil registrar este evento com data e hora de forma confiável. Uma possibilidade é inferi-lo pela análise das tabelas de anexos do Generic Object Services (GOS), como SOOD, vinculando a data e hora de criação do anexo à chave do objeto do lançamento contábil. Coleta Infira o evento pela data e hora de criação de objetos vinculados nas tabelas do GOS (por exemplo, SOOD). Tipo de evento inferred | |||
| Item de linha do lançamento contábil compensado | Esta atividade representa a compensação de um item de linha em aberto de uma conta do razão geral gerenciada por partidas em aberto, como uma conta de compensação bancária. Ela ocorre quando um item de linha é conciliado com outro e encerrado. | ||
| Por que isso importa Em processos como a conciliação bancária, o tempo para compensar itens é um KPI essencial. Esta atividade ajuda a analisar a eficiência da conciliação e dos procedimentos de fechamento mensal. Onde encontrar Este evento é registrado na tabela de itens de linha BSEG. Quando um item de linha é compensado, os campos de data de compensação (BSEG-AUGDT) e documento de compensação (BSEG-AUGBL) são preenchidos. A data do evento é a data de compensação. Coleta Identifique quando a data de compensação (BSEG-AUGDT) é preenchida para um item de linha. Tipo de evento explicit | |||
| Lançamento contábil corrigido | Esta atividade indica que o criador original modificou um lançamento contábil estacionado depois que ele foi devolvido para alterações. Ela é inferida pela detecção de alterações no documento após um evento de 'Alterações solicitadas'. | ||
| Por que isso importa Acompanhar as correções ajuda a quantificar o esforço dedicado ao retrabalho. O tempo entre a solicitação de alteração e a correção revela atrasos na resolução de problemas nos lançamentos enviados. Onde encontrar Inferido pela análise dos logs de alteração do documento (tabelas CDHDR e CDPOS) para o documento estacionado. Uma alteração registrada após um evento de rejeição no fluxo de trabalho indica que houve uma correção. A data e hora vêm da tabela CDHDR. Coleta Identifique uma entrada de log de alteração em CDHDR/CDPOS após um evento de rejeição. Tipo de evento inferred | |||
| Lançamento contábil criado | Representa a criação de um lançamento contábil registrado diretamente, sem uma etapa anterior de estacionamento. O evento é registrado quando um documento é criado no SAP por meio de uma transação de lançamento direto. | ||
| Por que isso importa Esta atividade funciona como um ponto de início alternativo para processos mais simples de lançamento contábil, que não exigem um fluxo de trabalho de aprovação. Ela ajuda a diferenciar lançamentos diretos simples de lançamentos estacionados mais complexos. Onde encontrar Este evento corresponde à criação de um documento na tabela BKPF quando o status BKPF-BSTAT está em branco (lançado). A data do evento é BKPF-CPUDT. Para esses documentos, os eventos 'Criado' e 'Lançado' ocorrem ao mesmo tempo. Coleta Identifique a criação do documento em BKPF quando BKPF-BSTAT estiver em branco. Tipo de evento explicit | |||
| Lançamento contábil estacionado excluído | Representa a exclusão de um lançamento contábil estacionado que nunca foi lançado. Isso pode ocorrer após uma rejeição ou quando o lançamento foi criado por engano. | ||
| Por que isso importa Esta atividade marca um desfecho malsucedido do processo. Analisar por que documentos estacionados são excluídos pode revelar problemas como lançamentos duplicados ou falta de entendimento do processo. Onde encontrar Este evento é registrado quando o status de um documento estacionado na tabela BKPF é alterado. O campo de status BKPF-BSTAT é atualizado para 'Z' (documento estacionado excluído). A data e hora da alteração podem ser encontradas nos logs de alteração do documento (CDHDR). Coleta Identifique quando BKPF-BSTAT é atualizado para 'Z'. Tipo de evento explicit | |||
| Lançamento contábil rejeitado | Esta atividade indica a rejeição final de um lançamento contábil, que não será lançado. Em geral, esse é um status terminal no fluxo de trabalho de aprovação e leva à exclusão posterior do documento estacionado. | ||
| Por que isso importa Acompanhar as rejeições é essencial para a gestão da qualidade. Analisar os motivos e a frequência das rejeições ajuda a aumentar a taxa de lançamentos contábeis corretos na primeira tentativa. Onde encontrar Este resultado é registrado no log do SAP Business Workflow e representa uma decisão final do usuário de 'rejeitar', que encerra o processo. O documento estacionado pode ser excluído posteriormente. Coleta Identifique o status terminal de 'rejeição' no log do fluxo de trabalho do documento. Tipo de evento inferred | |||
| Lançamento entre empresas identificado | Atividade calculada que sinaliza um lançamento contábil que afeta mais de uma empresa. Isso é determinado pela análise dos itens de linha de um único documento financeiro. | ||
| Por que isso importa Transações entre empresas podem ter requisitos de processamento e aprovação mais complexos. Identificá-las permite analisar separadamente seus tempos de ciclo e caminhos do processo para encontrar gargalos específicos. Onde encontrar Calculado pela análise da tabela de itens de linha BSEG para um determinado número de documento (BELNR). Se os itens de linha contiverem mais de um código de empresa distinto (BSEG-BUKRS), o lançamento será entre empresas. Coleta Verifique se há vários valores únicos de BSEG-BUKRS para um único BKPF-BELNR. Tipo de evento calculated | |||
| Lançamento manual identificado | Esta atividade identifica se um lançamento contábil foi criado por uma transação manual online ou por uma interface automatizada ou processo em lote. Não se trata de uma ação do usuário, mas de um atributo calculado do lançamento, derivado dos dados do sistema. | ||
| Por que isso importa Diferenciar lançamentos manuais de automatizados é essencial para direcionar melhorias no processo. Os processos manuais costumam ser o foco de iniciativas de padronização e automação. Onde encontrar O cálculo é feito pela análise dos campos da tabela de cabeçalho do documento BKPF. Códigos de transação (BKPF-TCODE) como 'FB01', 'FB50' ou 'FV50' indicam um lançamento manual, enquanto outros códigos T ou nomes específicos de entrada em lote (BKPF-AWKEY) sugerem automação. Coleta Derive o dado de BKPF-TCODE ou de outros indicadores do sistema de origem no cabeçalho do documento. Tipo de evento calculated | |||
Guias de extração
Etapas
- Crie o programa ABAP: No sistema SAP, acesse o código de transação SE38 (Editor ABAP). Informe um nome para o novo programa, por exemplo, Z_PM_JE_EXTRACTION, e clique em Criar. Defina um título adequado e selecione 'Programa executável' como tipo de programa.
- Defina a tela de seleção: No código-fonte do programa, defina a tela de seleção. Ela permite que os usuários especifiquem parâmetros, como o intervalo de datas de criação dos documentos, os códigos de empresa e os tipos de documento, para limitar o volume de dados extraído.
- Declare as estruturas de dados: Defina a estrutura de uma tabela interna que armazenará os dados finais do Event Log. Ela deve incluir todos os campos obrigatórios: JournalEntryId, ActivityName, EventTime, SourceSystem, LastDataUpdate e atributos recomendados, como User, CompanyCode e PostingDate.
- Implemente a lógica de seleção de dados: Escreva as consultas SQL ABAP principais para extrair dados das 14 atividades obrigatórias. Isso envolve selecionar dados de tabelas principais, como BKPF (cabeçalho) e BSEG (item de linha), tabelas de log de alterações CDHDR e CDPOS, tabelas de fluxo de trabalho, como SWWLOGHIST, e tabelas de compensação, como BSAS e BSAK.
- Extraia documentos estacionados e contabilizados: Para eventos 'Lançamento contábil estacionado', selecione na BKPF os documentos cujo status (BSTAT) seja 'V'. Para eventos 'Lançamento contábil criado' e 'Lançamento contábil contabilizado', selecione na BKPF os documentos com status em branco, que indica um documento normal e contabilizado.
- Extraia eventos de alteração e exclusão: Consulte as tabelas de documentos de alteração CDHDR e CDPOS para a classe de objeto 'BELEG'. Filtre pela chave do documento para encontrar alterações correspondentes às atividades 'Lançamento contábil corrigido' ou 'Lançamento contábil estacionado excluído'.
- Extraia eventos do fluxo de trabalho: Para registrar atividades como 'Lançamento contábil enviado', 'Aprovado', 'Rejeitado' e 'Alterações solicitadas', consulte as tabelas do fluxo de trabalho. Use a tabela SWW_WI2OBJ para vincular o documento contábil a uma instância do fluxo de trabalho e, em seguida, consulte SWWLOGHIST para identificar decisões específicas dos usuários ou alterações de status.
- Identifique eventos calculados: Para 'Lançamento manual identificado', verifique o código de transação (BKPF-TCODE) em relação a uma lista de códigos de transação manuais conhecidos. Para 'Lançamento entre empresas identificado', analise os itens de linha da BSEG de um documento para verificar se há vários códigos de empresa envolvidos.
- Consolide e transforme os dados: À medida que os dados de cada atividade forem selecionados, transforme-os na estrutura final do Event Log. Concatene o código da empresa, o número do documento e o exercício fiscal para criar o JournalEntryId. Converta as datas e horas do SAP em um único registro de data e hora EventTime. Acrescente os resultados de cada consulta à tabela interna final.
- Implemente a exportação do arquivo: Use comandos ABAP para manipular arquivos, como OPEN DATASET, LOOP AT, TRANSFER e CLOSE DATASET, para gravar a tabela interna consolidada em um arquivo CSV ou de texto no diretório do servidor de aplicações SAP (acessível pela transação AL11).
- Agende como job em segundo plano: Acesse a transação SM36 (Definir job em segundo plano). Crie um job, defina uma etapa que execute seu programa ABAP e configure um agendamento, por exemplo, todas as noites ou semanalmente fora dos horários de pico, para automatizar a extração.
- Recupere e formate o arquivo: Use a transação CG3Y ou peça ajuda ao administrador do sistema para baixar o arquivo gerado do servidor de aplicações para seu computador. Verifique se a codificação e o formato do arquivo são adequados para carregá-lo na ferramenta de mineração de processos.
Configuração
- Intervalo de datas: Definir um intervalo de datas é essencial para controlar a performance. Use a data de criação do documento (BKPF-CPUDT) como filtro principal. Para uma análise inicial, recomendamos um período de 3 a 6 meses. Para testes, use um intervalo de alguns dias em que você saiba que há dados.
- Filtro por código da empresa: Sempre filtre pelo código da empresa (BKPF-BUKRS). Extrair dados de todos os códigos de empresa de uma só vez pode consumir muitos recursos. Comece com um ou poucos códigos de empresa relevantes.
- Filtro por tipo de documento: Use o filtro de tipo de documento (BKPF-BLART) para limitar o escopo a tipos específicos de lançamentos contábeis, como 'SA' para documentos do razão, caso não seja necessário analisar todos os tipos de documento.
- IDs de tarefas do fluxo de trabalho: A lógica de extração dos eventos do fluxo de trabalho depende dos IDs de tarefas específicos usados no seu sistema para aprovação, rejeição e envio. Configure esses IDs no código-fonte do programa de acordo com as definições do fluxo de trabalho da sua empresa.
- Considerações de performance: O programa combina várias tabelas grandes, especialmente CDPOS e as tabelas de histórico do fluxo de trabalho. Executá-lo nos horários de pico pode afetar a performance do sistema. Agende-o sempre como job em segundo plano, fora dos horários de pico. Se a performance for um problema recorrente, considere criar índices secundários no banco de dados.
- Pré-requisitos: Este método exige um usuário com autorização para desenvolvimento ABAP (SE38) e permissão para criar e gerenciar jobs em segundo plano (SM36). O usuário ou job também precisa ter acesso de leitura a todas as tabelas financeiras, de fluxo de trabalho e do sistema relevantes (BKPF, BSEG, CDHDR, CDPOS, SWWLOGHIST etc.).
Consulta de exemplo abap
REPORT Z_PM_JE_EXTRACTION.
*&---------------------------------------------------------------------*
*& Data Structures for Final Event Log
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_event_log,
journalentryid TYPE string,
activityname TYPE string,
eventtime TYPE timestamp,
sourcesystem TYPE string,
lastdataupdate TYPE timestamp,
username TYPE uname,
companycode TYPE bukrs,
documenttype TYPE blart,
postingdate TYPE budat,
transactioncode TYPE tcode,
isreversed TYPE abap_bool,
END OF ty_event_log.
DATA: lt_final_log TYPE STANDARD TABLE OF ty_event_log.
DATA: ls_event TYPE ty_event_log.
*&---------------------------------------------------------------------*
*& Selection Screen Parameters
*&---------------------------------------------------------------------*
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs OBLIGATORY,
s_blart FOR bkpf-blart,
s_cpudt FOR bkpf-cpudt OBLIGATORY.
PARAMETERS: p_sysid TYPE sy-sysid DEFAULT sy-sysid.
*&---------------------------------------------------------------------*
*& Main Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
DATA(lv_last_update) = cl_abap_context_info=>get_system_timestamp( ).
" 1. Journal Entry Parked
SELECT CONCAT( a~bukrs, a~belnr, a~gjahr ) AS journalentryid,
'Journal Entry Parked' AS activityname,
a~cpudt, a~cputm,
a~usnam AS username,
a~bukrs AS companycode,
a~blart AS documenttype,
a~bldat AS postingdate,
a~tcode AS transactioncode
FROM bkpf AS a
WHERE a~bukrs IN s_bukrs
AND a~blart IN s_blart
AND a~cpudt IN s_cpudt
AND a~bstat = 'V' " Parked Document
INTO TABLE @DATA(lt_parked).
IF sy-subrc = 0.
LOOP AT lt_parked ASSIGNING FIELD-SYMBOL(<fs_parked>).
ls_event-journalentryid = <fs_parked>-journalentryid.
ls_event-activityname = <fs_parked>-activityname.
CONVERT DATE <fs_parked>-cpudt TIME <fs_parked>-cputm INTO TIME STAMP ls_event-eventtime TIME ZONE sy-zonlo.
ls_event-sourcesystem = p_sysid.
ls_event-lastdataupdate = lv_last_update.
ls_event-username = <fs_parked>-username.
ls_event-companycode = <fs_parked>-companycode.
ls_event-documenttype = <fs_parked>-documenttype.
ls_event-postingdate = <fs_parked>-postingdate.
ls_event-transactioncode = <fs_parked>-transactioncode.
APPEND ls_event TO lt_final_log.
ENDLOOP.
ENDIF.
" 2. Journal Entry Created (directly posted, not parked first)
" 9. Journal Entry Posted
" These two events happen at the same time for a direct posting.
SELECT CONCAT( bukrs, belnr, gjahr ) AS journalentryid,
cpudt, cputm, usnam, bukrs, blart, budat, tcode, stblg
FROM bkpf
WHERE bukrs IN s_bukrs
AND blart IN s_blart
AND cpudt IN s_cpudt
AND bstat = '' " Normal, posted document
INTO TABLE @DATA(lt_posted).
IF sy-subrc = 0.
LOOP AT lt_posted ASSIGNING FIELD-SYMBOL(<fs_posted>).
" Activity: Journal Entry Created
ls_event-journalentryid = <fs_posted>-journalentryid.
ls_event-activityname = 'Journal Entry Created'.
CONVERT DATE <fs_posted>-cpudt TIME <fs_posted>-cputm INTO TIME STAMP ls_event-eventtime TIME ZONE sy-zonlo.
ls_event-sourcesystem = p_sysid.
ls_event-lastdataupdate = lv_last_update.
ls_event-username = <fs_posted>-usnam.
ls_event-companycode = <fs_posted>-bukrs.
ls_event-documenttype = <fs_posted>-blart.
ls_event-postingdate = <fs_posted>-budat.
ls_event-transactioncode = <fs_posted>-tcode.
ls_event-isreversed = COND #( WHEN <fs_posted>-stblg IS NOT INITIAL THEN abap_true ELSE abap_false ).
APPEND ls_event TO lt_final_log.
" Activity: Journal Entry Posted
ls_event-activityname = 'Journal Entry Posted'.
APPEND ls_event TO lt_final_log.
ENDLOOP.
ENDIF.
" 3. Documentation Attached (via GOS)
SELECT a~instid_a, c~cr_timestamp
FROM srgbtbrel AS a
INNER JOIN sood AS b ON a~instid_b = b~objid
INNER JOIN socf AS c ON b~filid = c~filid
WHERE a~typeid_a = 'BKPF'
AND a~bukrs IN s_bukrs
INTO TABLE @DATA(lt_attachments).
IF sy-subrc = 0.
LOOP AT lt_attachments ASSIGNING FIELD-SYMBOL(<fs_attach>).
ls_event-journalentryid = |{ <fs_attach>-instid_a(4) }{ <fs_attach>-instid_a+4(10) }{ <fs_attach>-instid_a+14(4) }|.
ls_event-activityname = 'Documentation Attached'.
ls_event-eventtime = <fs_attach>-cr_timestamp.
" Other attributes may need to be looked up from BKPF if needed.
APPEND ls_event TO lt_final_log.
ENDLOOP.
ENDIF.
" 4, 5, 6, 7, 8: Workflow events (Submitted, Changes Requested, Corrected, Approved, Rejected)
" This is a simplified example. Real logic depends on specific workflow templates.
SELECT a~instid, b~wi_cd, b~wi_ct, b~wi_aagent, b~wi_text
FROM sww_wi2obj AS a
INNER JOIN swwloghist AS b ON a~wi_id = b~wi_id
WHERE a~typeid = 'BKPF'
AND a~catid = 'BO'
AND a~bukrs IN s_bukrs
AND b~wi_cd BETWEEN s_cpudt-low AND s_cpudt-high
INTO TABLE @DATA(lt_workflow).
IF sy-subrc = 0.
LOOP AT lt_workflow ASSIGNING FIELD-SYMBOL(<fs_wf>).
ls_event-journalentryid = |{ <fs_wf>-instid(4) }{ <fs_wf>-instid+4(10) }{ <fs_wf>-instid+14(4) }|.
ls_event-activityname = CASE <fs_wf>-wi_text. " Simplified logic based on work item text
WHEN '[Placeholder for Submit Text]' THEN 'Journal Entry Submitted'
WHEN '[Placeholder for Approve Text]' THEN 'Journal Entry Approved'
WHEN '[Placeholder for Reject Text]' THEN 'Journal Entry Rejected'
WHEN '[Placeholder for Rework Text]' THEN 'Journal Entry Changes Requested'
ELSE ''
ENDCASE.
IF ls_event-activityname IS NOT INITIAL.
CONVERT DATE <fs_wf>-wi_cd TIME <fs_wf>-wi_ct INTO TIME STAMP ls_event-eventtime TIME ZONE sy-zonlo.
ls_event-username = <fs_wf>-wi_aagent.
APPEND ls_event TO lt_final_log.
ENDIF.
ENDLOOP.
ENDIF.
" 10. Manual Entry Identified & 11. Cross-Company Posting Identified
SELECT bukrs, belnr, gjahr, tcode FROM bkpf
WHERE bukrs IN s_bukrs AND blart IN s_blart AND cpudt IN s_cpudt
INTO TABLE @DATA(lt_calc_base).
LOOP AT lt_calc_base ASSIGNING FIELD-SYMBOL(<fs_calc>).
ls_event-journalentryid = |{ <fs_calc>-bukrs }{ <fs_calc>-belnr }{ <fs_calc>-gjahr }|.
" Check for manual entry T-Codes
IF <fs_calc>-tcode = 'FB01' OR <fs_calc>-tcode = 'F-02' OR <fs_calc>-tcode = 'FB50'.
ls_event-activityname = 'Manual Entry Identified'.
APPEND ls_event TO lt_final_log.
ENDIF.
" Check for cross-company posting
SELECT SINGLE bukrs FROM bseg WHERE belnr = <fs_calc>-belnr AND gjahr = <fs_calc>-gjahr AND bukrs <> <fs_calc>-bukrs INTO @DATA(lv_cross_bukrs).
IF sy-subrc = 0.
ls_event-activityname = 'Cross-Company Posting Identified'.
APPEND ls_event TO lt_final_log.
ENDIF.
ENDLOOP.
" 12. Journal Entry Line Item Cleared
SELECT a~bukrs, a~belnr, a~gjahr, a~augdt, a~augbl
FROM bsas AS a " G/L Cleared Items
WHERE a~bukrs IN s_bukrs
AND a~budat IN s_cpudt
INTO TABLE @DATA(lt_cleared_gl).
IF sy-subrc = 0.
LOOP AT lt_cleared_gl ASSIGNING FIELD-SYMBOL(<fs_clr>).
ls_event-journalentryid = |{ <fs_clr>-bukrs }{ <fs_clr>-belnr }{ <fs_clr>-gjahr }|.
ls_event-activityname = 'Journal Entry Line Item Cleared'.
CONVERT DATE <fs_clr>-augdt INTO TIME STAMP ls_event-eventtime TIME ZONE sy-zonlo.
" User is often not directly available for clearing events
APPEND ls_event TO lt_final_log.
ENDLOOP.
ENDIF.
" 13. Parked Journal Entry Deleted & 6. Journal Entry Corrected
SELECT objectid, changenr, username, udate, utime FROM cdhdr
WHERE objectclas = 'BELEG'
AND udate IN s_cpudt
INTO TABLE @DATA(lt_cdhdr).
LOOP AT lt_cdhdr ASSIGNING FIELD-SYMBOL(<fs_cdhdr>).
SELECT SINGLE tcode FROM cdpos WHERE changenr = <fs_cdhdr>-changenr AND fname = 'BSTAT' AND value_new = 'Z' INTO @DATA(lv_deleted_tcode).
ls_event-journalentryid = |{ <fs_cdhdr>-objectid(4) }{ <fs_cdhdr>-objectid+4(10) }{ <fs_cdhdr>-objectid+14(4) }|.
CONVERT DATE <fs_cdhdr>-udate TIME <fs_cdhdr>-utime INTO TIME STAMP ls_event-eventtime TIME ZONE sy-zonlo.
ls_event-username = <fs_cdhdr>-username.
IF sy-subrc = 0.
ls_event-activityname = 'Parked Journal Entry Deleted'.
APPEND ls_event TO lt_final_log.
ELSE.
ls_event-activityname = 'Journal Entry Corrected'.
APPEND ls_event TO lt_final_log.
ENDIF.
ENDLOOP.
" 14. Journal Entry Reversal Processed
SELECT CONCAT( a~bukrs, a~belnr, a~gjahr ) AS journalentryid,
a~cpudt, a~cputm, a~usnam
FROM bkpf AS a
WHERE a~bukrs IN s_bukrs
AND a~blart IN s_blart
AND a~cpudt IN s_cpudt
AND a~stblg IS NOT NULL " Document is a reversal
INTO TABLE @DATA(lt_reversals).
IF sy-subrc = 0.
LOOP AT lt_reversals ASSIGNING FIELD-SYMBOL(<fs_rev>).
ls_event-journalentryid = <fs_rev>-journalentryid.
ls_event-activityname = 'Journal Entry Reversal Processed'.
CONVERT DATE <fs_rev>-cpudt TIME <fs_rev>-cputm INTO TIME STAMP ls_event-eventtime TIME ZONE sy-zonlo.
ls_event-username = <fs_rev>-usnam.
APPEND ls_event TO lt_final_log.
ENDLOOP.
ENDIF.
" Final step: Output to file
DATA(lv_filename) = |/tmp/je_extraction_{ sy-datum }_{ sy-uzeit }.csv|.
OPEN DATASET lv_filename FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
" Write header
DATA(lv_header) = 'JournalEntryId,ActivityName,EventTime,SourceSystem,LastDataUpdate,User,CompanyCode,DocumentType,PostingDate,TransactionCode,IsReversed'.
TRANSFER lv_header TO lv_filename.
LOOP AT lt_final_log INTO ls_event.
DATA(lv_line) = |"{ ls_event-journalentryid }","|
|{ ls_event-activityname }","|
|{ ls_event-eventtime }","|
|{ ls_event-sourcesystem }","|
|{ ls_event-lastdataupdate }","|
|{ ls_event-username }","|
|{ ls_event-companycode }","|
|{ ls_event-documenttype }","|
|{ ls_event-postingdate }","|
|{ ls_event-transactioncode }","|
|{ ls_event-isreversed }"|.
TRANSFER lv_line TO lv_filename.
ENDLOOP.
CLOSE DATASET lv_filename.
ENDIF. Etapas
- Estabeleça a conexão com o banco de dados: Obtenha credenciais somente de leitura para o banco de dados SAP ECC. Use um cliente SQL padrão, como DBeaver, SAP HANA Studio ou SQL Server Management Studio, para se conectar ao banco de dados.
- Prepare a consulta SQL: Copie a consulta SQL completa fornecida na seção 'query' deste documento para seu cliente SQL.
- Defina os parâmetros de extração: Antes de executar a consulta, configure os placeholders. Substitua '[START_DATE]' e '[END_DATE]' pelo intervalo de datas desejado no formato 'YYYYMMDD'. Substitua '[COMPANY_CODE_1]', '[COMPANY_CODE_2]' pelos códigos de empresa SAP que você quer analisar.
- Defina o sistema de origem: Na instrução
SELECTprincipal, substitua o placeholder '[Your SAP System ID]' pelo ID real do sistema SAP (SID) para identificar corretamente a origem dos dados. - Execute a consulta: Execute a consulta SQL configurada no banco de dados SAP. O tempo de execução varia conforme o intervalo de datas e o tamanho das tabelas do banco de dados.
- Revise os resultados iniciais: Quando a consulta terminar, confira rapidamente as linhas retornadas para garantir que os dados foram preenchidos como esperado. Verifique se há diferentes atividades e se campos importantes, como
JournalEntryIdeEventTime, não estão vazios. - Trate os registros de data e hora: A consulta concatena campos de data e hora em uma string no formato
YYYYMMDDHHMMSS. Verifique se o processamento posterior ou o sistema de destino consegue interpretar esse formato. Caso contrário, ajuste a função SQLCONCATpara usar um formato ISO 8601, comoYYYY-MM-DDTHH:MI:SS, se o banco de dados oferecer suporte. - Exporte os dados: Exporte todo o conjunto de resultados do cliente SQL para um arquivo CSV. Use a codificação UTF-8 para evitar problemas com caracteres especiais.
- Prepare os dados para carregamento: Antes de carregar os dados em uma ferramenta de mineração de processos, confirme se os cabeçalhos das colunas correspondem ao esquema de dados obrigatório.
JournalEntryId,ActivityNameeEventTimesão essenciais. Adicione a colunaLastDataUpdatee preencha-a com o registro de data e hora da extração. - Validação final: Siga as etapas descritas na seção 'validationSteps' para garantir que os dados extraídos estejam completos e corretos antes de iniciar a análise.
Configuração
- Autorizações do banco de dados: O usuário do banco de dados precisa ter acesso de leitura às seguintes tabelas SAP: BKPF, BSEG, CDHDR, CDPOS, T001 e V_USERNAME. Para atividades relacionadas ao fluxo de trabalho, também é necessário ter acesso a SWW_WI2OBJ e SWWLOGHIST. Esse nível de acesso costuma ser concedido apenas a equipes técnicas especializadas.
- Filtro por intervalo de datas: Filtrar os dados por um intervalo de datas específico é essencial para garantir a performance da consulta. A consulta fornecida usa placeholders para as datas inicial e final, aplicadas à data de criação do documento (
BKPF.CPUDT). Recomendamos um período de 3 a 6 meses para uma análise inicial. - Filtro por entidade: Para controlar o volume de dados e direcionar a análise, filtre sempre pelo código da empresa (
BKPF.BUKRS). Você também pode filtrar pelo tipo de documento (BKPF.BLART) para incluir apenas os tipos de lançamento contábil relevantes, como 'SA' para documentos do razão, e excluir documentos operacionais, como faturas ou pagamentos, se eles não fizerem parte do escopo. - Considerações de performance: Consultas diretas a tabelas principais, como BSEG e CDPOS, podem consumir muitos recursos. Recomendamos executá-las fora do horário comercial para evitar impactos na performance do sistema para os usuários finais. Evite extrair dados de mais de um ano em uma única execução.
- IDs de tarefas do fluxo de trabalho: A consulta contém placeholders como '[WF_TASK_ID_SUBMIT]' e '[WF_TASK_ID_APPROVE]'. Substitua-os pelos IDs de tarefas reais da configuração do fluxo de trabalho de lançamentos contábeis do seu sistema. Para identificá-los, consulte um especialista em SAP Workflow ou analise a definição técnica do fluxo de trabalho na transação PFTC.
Consulta de exemplo sql
WITH DOC_HEADERS AS (
SELECT
BUKRS,
BELNR,
GJAHR,
BLART,
BLDAT,
BUDAT,
CPUDT,
CPUTM,
USNAM,
TCODE,
BSTAT,
STBLG,
XRECH
FROM BKPF
WHERE CPUDT BETWEEN '[START_DATE]' AND '[END_DATE]'
AND BUKRS IN ('[COMPANY_CODE_1]', '[COMPANY_CODE_2]')
)
-- Event 1: Journal Entry Created (Directly Posted)
SELECT
CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AS "JournalEntryId",
'Journal Entry Created' AS "ActivityName",
TO_TIMESTAMP(CONCAT(H.CPUDT, H.CPUTM), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
H.TCODE AS "TransactionCode",
CASE WHEN H.STBLG IS NOT NULL AND H.STBLG <> '' THEN TRUE ELSE FALSE END AS "IsReversed"
FROM DOC_HEADERS H
LEFT JOIN V_USERNAME U ON H.USNAM = U.BNAME
WHERE H.BSTAT = '' OR H.BSTAT = 'U'
UNION ALL
-- Event 2: Journal Entry Parked
SELECT
CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AS "JournalEntryId",
'Journal Entry Parked' AS "ActivityName",
TO_TIMESTAMP(CONCAT(H.CPUDT, H.CPUTM), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
H.TCODE AS "TransactionCode",
FALSE AS "IsReversed"
FROM DOC_HEADERS H
LEFT JOIN V_USERNAME U ON H.USNAM = U.BNAME
WHERE H.BSTAT = 'V'
UNION ALL
-- Event 3: Journal Entry Posted (from Parked state)
SELECT
CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AS "JournalEntryId",
'Journal Entry Posted' AS "ActivityName",
TO_TIMESTAMP(CONCAT(C.UDATE, C.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
C.TCODE AS "TransactionCode",
CASE WHEN H.STBLG IS NOT NULL AND H.STBLG <> '' THEN TRUE ELSE FALSE END AS "IsReversed"
FROM DOC_HEADERS H
JOIN CDHDR C ON C.OBJECTCLAS = 'BELEG' AND C.OBJECTID = CONCAT(H.BUKRS, H.BELNR, H.GJAHR)
JOIN CDPOS P ON C.CHANGENR = P.CHANGENR AND P.OBJECTCLAS = 'BELEG' AND P.OBJECTID = C.OBJECTID
LEFT JOIN V_USERNAME U ON C.USERNAME = U.BNAME
WHERE H.BSTAT <> 'V'
AND P.TABNAME = 'BKPF'
AND P.FNAME = 'BSTAT'
AND P.VALUE_OLD = 'V'
AND P.VALUE_NEW <> 'V'
UNION ALL
-- Event 4: Parked Journal Entry Deleted
SELECT
CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AS "JournalEntryId",
'Parked Journal Entry Deleted' AS "ActivityName",
TO_TIMESTAMP(CONCAT(C.UDATE, C.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
C.TCODE AS "TransactionCode",
FALSE AS "IsReversed"
FROM DOC_HEADERS H
JOIN CDHDR C ON C.OBJECTCLAS = 'BELEG' AND C.OBJECTID = CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AND C.TCODE = 'FBV0'
JOIN CDPOS P ON C.CHANGENR = P.CHANGENR AND P.OBJECTCLAS = 'BELEG' AND P.OBJECTID = C.OBJECTID
LEFT JOIN V_USERNAME U ON C.USERNAME = U.BNAME
WHERE P.TABNAME = 'BKPF'
AND P.FNAME = 'BSTAT'
AND P.VALUE_OLD = 'V'
AND P.VALUE_NEW = 'Z'
UNION ALL
-- Event 5: Journal Entry Reversal Processed
SELECT
CONCAT(H.BUKRS, H.STBLG, H.GJAHR) AS "JournalEntryId", -- Linking to the original document
'Journal Entry Reversal Processed' AS "ActivityName",
TO_TIMESTAMP(CONCAT(H.CPUDT, H.CPUTM), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
H.TCODE AS "TransactionCode",
TRUE AS "IsReversed"
FROM DOC_HEADERS H
LEFT JOIN V_USERNAME U ON H.USNAM = U.BNAME
WHERE H.STBLG IS NOT NULL AND H.STBLG <> ''
UNION ALL
-- Event 6: Journal Entry Line Item Cleared
SELECT
CONCAT(B.BUKRS, B.BELNR, B.GJAHR) AS "JournalEntryId",
'Journal Entry Line Item Cleared' AS "ActivityName",
TO_TIMESTAMP(B.AUGDT, 'YYYYMMDD') AS "EventTime", -- Clearing date used as event time
U.NAME_TEXT AS "User",
B.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
NULL AS "TransactionCode", -- Clearing transaction is in the clearing document header, complex to retrieve here
CASE WHEN H.STBLG IS NOT NULL AND H.STBLG <> '' THEN TRUE ELSE FALSE END AS "IsReversed"
FROM BSEG B
JOIN DOC_HEADERS H ON B.BUKRS = H.BUKRS AND B.BELNR = H.BELNR AND B.GJAHR = H.GJAHR
LEFT JOIN V_USERNAME U ON H.USNAM = U.BNAME
WHERE B.AUGBL IS NOT NULL AND B.AUGBL <> '' AND B.AUGDT <> '00000000'
UNION ALL
-- Event 7: Journal Entry Corrected (changes to a parked document)
SELECT
CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AS "JournalEntryId",
'Journal Entry Corrected' AS "ActivityName",
TO_TIMESTAMP(CONCAT(C.UDATE, C.UTIME), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
C.TCODE AS "TransactionCode",
FALSE AS "IsReversed"
FROM DOC_HEADERS H
JOIN CDHDR C ON C.OBJECTCLAS = 'BELEG' AND C.OBJECTID = CONCAT(H.BUKRS, H.BELNR, H.GJAHR)
LEFT JOIN V_USERNAME U ON C.USERNAME = U.BNAME
WHERE H.BSTAT = 'V' AND C.TCODE IN ('FBV2', 'FBV4') -- FBV2 is change parked doc, FBV4 is change parked doc header
UNION ALL
-- Event 8: Documentation Attached (inferred from GOS attachment creation, requires configuration)
SELECT
CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AS "JournalEntryId",
'Documentation Attached' AS "ActivityName",
TO_TIMESTAMP(CONCAT(REL.RECDATE, '000000'), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
H.TCODE AS "TransactionCode",
FALSE AS "IsReversed"
FROM DOC_HEADERS H
JOIN SRGBTBREL REL ON REL.INSTID_A = CONCAT('BUS2081', H.BUKRS, H.BELNR, H.GJAHR) -- BUS2081 is object type for BKPF
LEFT JOIN V_USERNAME U ON REL.RECUNAM = U.BNAME
WHERE REL.TYPEID_A = 'BUS2081' AND REL.RELTYPE = 'ATTA'
UNION ALL
-- Events 9-13 from Workflow (Submitted, Changes Requested, Approved, Rejected) requires specific workflow config
-- This is a generic template. The WI_RH_TASK must be adapted to your system.
SELECT
CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AS "JournalEntryId",
CASE
WHEN LOG.WI_RH_TASK = '[WF_TASK_ID_SUBMIT]' THEN 'Journal Entry Submitted'
WHEN LOG.WI_RH_TASK = '[WF_TASK_ID_APPROVE]' AND LOG.METHOD = 'DECISION' AND LOG.EVT_ID = 'COMPLETED' THEN 'Journal Entry Approved'
WHEN LOG.WI_RH_TASK = '[WF_TASK_ID_REJECT]' AND LOG.METHOD = 'DECISION' AND LOG.EVT_ID = 'COMPLETED' THEN 'Journal Entry Rejected'
WHEN LOG.WI_RH_TASK = '[WF_TASK_ID_CHANGES_REQ]' AND LOG.METHOD = 'DECISION' AND LOG.EVT_ID = 'COMPLETED' THEN 'Journal Entry Changes Requested'
ELSE NULL
END AS "ActivityName",
TO_TIMESTAMP(CONCAT(LOG.EVT_DATE, LOG.EVT_TIME), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
NULL AS "TransactionCode",
FALSE AS "IsReversed"
FROM DOC_HEADERS H
JOIN SWW_WI2OBJ WIOBJ ON WIOBJ.INSTID = CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AND WIOBJ.TYPEID = 'BKPF'
JOIN SWWLOGHIST LOG ON WIOBJ.WI_ID = LOG.WI_ID
LEFT JOIN V_USERNAME U ON LOG.EXEC_USER = U.BNAME
WHERE LOG.WI_RH_TASK IN ('[WF_TASK_ID_SUBMIT]', '[WF_TASK_ID_APPROVE]', '[WF_TASK_ID_REJECT]', '[WF_TASK_ID_CHANGES_REQ]')
UNION ALL
-- Event 14: Manual Entry Identified
SELECT
CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AS "JournalEntryId",
'Manual Entry Identified' AS "ActivityName",
TO_TIMESTAMP(CONCAT(H.CPUDT, H.CPUTM), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
H.TCODE AS "TransactionCode",
CASE WHEN H.STBLG IS NOT NULL AND H.STBLG <> '' THEN TRUE ELSE FALSE END AS "IsReversed"
FROM DOC_HEADERS H
LEFT JOIN V_USERNAME U ON H.USNAM = U.BNAME
WHERE H.TCODE IN ('FB01', 'F-02', 'FB50', 'F-04', 'F-22', 'F-43', 'FB60', 'FB70', 'FV50', 'FV60', 'FV70')
UNION ALL
-- Event 15: Cross-Company Posting Identified
SELECT
CONCAT(H.BUKRS, H.BELNR, H.GJAHR) AS "JournalEntryId",
'Cross-Company Posting Identified' AS "ActivityName",
TO_TIMESTAMP(CONCAT(H.CPUDT, H.CPUTM), 'YYYYMMDDHH24MISS') AS "EventTime",
U.NAME_TEXT AS "User",
H.BUKRS AS "CompanyCode",
H.BLART AS "DocumentType",
H.BUDAT AS "PostingDate",
H.TCODE AS "TransactionCode",
CASE WHEN H.STBLG IS NOT NULL AND H.STBLG <> '' THEN TRUE ELSE FALSE END AS "IsReversed"
FROM DOC_HEADERS H
LEFT JOIN V_USERNAME U ON H.USNAM = U.BNAME
WHERE H.XRECH = 'X' Etapas
- Estabeleça a conexão com o SAP: Na ferramenta ETL de terceiros, configure uma nova conexão de origem com seu sistema SAP ECC. Em geral, você precisará dos dados do servidor de aplicação, do cliente, do número do sistema e de um usuário SAP dedicado com as autorizações RFC necessárias.
- Defina as fontes de dados: No projeto de extração, adicione as tabelas SAP necessárias como fontes de dados. As principais tabelas incluem BKPF (cabeçalho do documento contábil), BSEG (segmento do documento contábil), VBSEGK (cabeçalho do documento estacionado), CDHDR (cabeçalho do documento de alteração), CDPOS (itens do documento de alteração), SWW_WI2OBJ (vínculos entre Workflow e objeto), SWWLOGHIST (log do Workflow) e SRGBTBREL (relações de anexos do GOS).
- Extraia os eventos básicos (criado e estacionado): Crie o primeiro fluxo de dados para extrair os eventos iniciais. Para “Lançamento contábil estacionado”, use VBSEGK como fonte. Para “Lançamento contábil criado”, use BKPF e filtre os documentos que não sejam estornos nem tenham sido estacionados inicialmente. Para isso, você pode fazer uma junção anti com VBSEGK.
- Extraia os eventos do Workflow: Crie um fluxo de dados que una BKPF a SWW_WI2OBJ usando a chave do objeto (código da empresa + número do documento + exercício fiscal) para localizar o ID da instância do Workflow. Una esse resultado a SWWLOGHIST para extrair eventos como “Enviado”, “Aprovado”, “Rejeitado” e “Alterações solicitadas”, com base nos resultados das tarefas do Workflow e nas decisões dos usuários registradas no log.
- Extraia eventos de alteração e exclusão: Use as tabelas CDHDR e CDPOS para identificar alterações. Para “Lançamento contábil corrigido”, filtre as alterações feitas em documentos estacionados (classe de objeto “FIPP”). Para “Lançamento contábil estacionado excluído”, procure marcadores de exclusão nos logs de alteração dos documentos estacionados.
- Extraia eventos de anexos: Para capturar “Documentação anexada”, una BKPF a SRGBTBREL quando o tipo de objeto for “BKPF” e a relação for “[Seu tipo de relação de anexo]”. A data de criação do vínculo será o horário do evento.
- Extraia eventos de compensação e estorno: Para “Item de linha do lançamento contábil compensado”, consulte a tabela BSEG quando o campo do documento de compensação (AUGBL) estiver preenchido. O horário do evento é a data de lançamento do documento de compensação (AUGDT). Para “Estorno do lançamento contábil processado”, consulte BKPF e identifique os documentos de estorno pelo preenchimento do campo do documento estornado (STBLG).
- Derive os eventos calculados: Crie blocos de lógica separados para os eventos calculados. Para “Lançamento manual identificado”, filtre BKPF com base em uma lista de códigos de transação manuais (por exemplo, FB01, FB50, F-02). Para “Lançamento entre empresas identificado”, agrupe a tabela BSEG por ID do documento e identifique os documentos com mais de um código de empresa distinto.
- Combine todos os fluxos de eventos: Use uma transformação UNION na ferramenta ETL para combinar as saídas de cada fluxo de eventos (criado, estacionado, aprovado etc.) em uma única tabela de Event Log. Verifique se os nomes das colunas e os tipos de dados são consistentes em todos os fluxos.
- Mapeie para o esquema final: Mapeie os dados combinados para a estrutura necessária do Event Log, criando
JournalEntryId,ActivityName,EventTime,Usuárioe outros atributos obrigatórios e recomendados. Adicione colunas estáticas, comoSourceSystem, e use o horário de execução do job ETL emLastDataUpdate. - Configure o carregamento incremental: Para extrações recorrentes, configure uma estratégia de carregamento incremental. Use a última data de criação ou alteração (por exemplo, BKPF.CPUDT, CDHDR.UDATE) como marca d’água para buscar apenas os registros novos ou atualizados desde a última execução.
- Exporte para o ProcessMind: Agende o job de extração e configure a etapa final para salvar o Event Log como arquivo CSV ou Parquet em um local acessível ao ProcessMind para carregamento.
Configuração
- Pré-requisitos: Uma ferramenta ETL de terceiros licenciada (por exemplo, Theobald Xtract Universal, Informatica, Talend) com um conector SAP dedicado. Uma conta de usuário SAP com acesso RFC e autorização para ler tabelas financeiras (por exemplo, S_TABU_DIS para os grupos de tabelas F_00, F_WF), dados do Workflow e logs de alteração.
- Parâmetros de conexão: Você precisará do IP ou nome do host do servidor de aplicação SAP, do número do sistema e do ID do cliente. Use um método seguro para gerenciar as credenciais, incluindo o nome de usuário e a senha do SAP.
- Filtros principais: Sempre aplique filtros de código da empresa (BKPF.BUKRS) e exercício fiscal (BKPF.GJAHR) na origem para limitar o volume de dados. Também é altamente recomendável filtrar pela data de criação do documento (BKPF.CPUDT) para definir um período específico de extração, como os últimos 6 meses.
- Seleção do período: Para o carregamento inicial, selecione um período representativo, como 3 a 6 meses. Nos carregamentos delta seguintes, use uma marca d’água em um campo de data e hora, como
CPUDT, para buscar apenas os registros novos. - Considerações de performance: As junções em BSEG, CDPOS e nas tabelas do Workflow podem ser muito lentas. Sempre que possível, configure a ferramenta ETL para aplicar os filtros diretamente na origem SAP. Se a ferramenta permitir, extraia os dados em blocos ou pacotes menores, especialmente em carregamentos de grandes volumes históricos.
- Personalização do Workflow: A lógica para identificar atividades do Workflow, como “Aprovado” ou “Rejeitado”, depende muito dos seus modelos específicos de Workflow. Você precisará identificar no seu sistema os IDs corretos das tarefas do Workflow e as chaves de decisão dos usuários para usar nos filtros.
Consulta de exemplo sql
/*
This is a logical representation of the extraction configuration in a third-party ETL tool.
It is not executable SQL but defines the sources, joins, and transformations for each activity.
Placeholders like [Your SAP Source], [Date Filter], and [Company Code Filter] must be configured in the tool.
*/
-- Extraction block for 'Journal Entry Parked'
SELECT
CONCAT(v.BUKRS, v.VBELN, v.GJAHR) AS JournalEntryId,
'Journal Entry Parked' AS ActivityName,
CAST(CONCAT(v.CPUDT, v.CPUTM) AS TIMESTAMP) AS EventTime,
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
v.USNAM AS User,
v.BUKRS AS CompanyCode,
v.BLART AS DocumentType,
v.BUDAT AS PostingDate,
v.TCODE AS TransactionCode,
FALSE AS IsReversed
FROM [Your SAP Source].VBSEGK v
WHERE [Date Filter on v.CPUDT] AND [Company Code Filter on v.BUKRS]
UNION ALL
-- Extraction block for 'Journal Entry Created'
SELECT
CONCAT(h.BUKRS, h.BELNR, h.GJAHR) AS JournalEntryId,
'Journal Entry Created' AS ActivityName,
CAST(CONCAT(h.CPUDT, h.CPUTM) AS TIMESTAMP) AS EventTime,
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
h.USNAM AS User,
h.BUKRS AS CompanyCode,
h.BLART AS DocumentType,
h.BUDAT AS PostingDate,
h.TCODE AS TransactionCode,
FALSE AS IsReversed
FROM [Your SAP Source].BKPF h
LEFT JOIN [Your SAP Source].VBSEGK v ON h.AWKEY = CONCAT(v.BUKRS, v.VBELN, v.GJAHR)
WHERE h.BSTAT = '' AND v.VBELN IS NULL AND h.STBLG IS NULL
AND [Date Filter on h.CPUDT] AND [Company Code Filter on h.BUKRS]
UNION ALL
-- Extraction block for 'Journal Entry Posted' (from parked)
SELECT
CONCAT(h.BUKRS, h.BELNR, h.GJAHR) AS JournalEntryId,
'Journal Entry Posted' AS ActivityName,
CAST(CONCAT(h.CPUDT, h.CPUTM) AS TIMESTAMP) AS EventTime, -- Or a more precise posting time from change logs if available
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
h.USNAM AS User,
h.BUKRS AS CompanyCode,
h.BLART AS DocumentType,
h.BUDAT AS PostingDate,
h.TCODE AS TransactionCode,
FALSE AS IsReversed
FROM [Your SAP Source].BKPF h
JOIN [Your SAP Source].VBSEGK v ON h.AWKEY = CONCAT(v.BUKRS, v.VBELN, v.GJAHR)
WHERE [Date Filter on h.CPUDT] AND [Company Code Filter on h.BUKRS]
UNION ALL
-- Extraction block for 'Journal Entry Submitted', 'Approved', 'Rejected', 'Changes Requested'
SELECT
CONCAT(SUBSTRING(o.INSTID, 3, 4), SUBSTRING(o.INSTID, 7, 10), SUBSTRING(o.INSTID, 17, 4)) AS JournalEntryId,
CASE
WHEN wl.WI_TEXT LIKE '%Submit%' THEN 'Journal Entry Submitted'
WHEN wl.WI_TEXT LIKE '%Approve%' THEN 'Journal Entry Approved'
WHEN wl.WI_TEXT LIKE '%Reject%' THEN 'Journal Entry Rejected'
WHEN wl.WI_TEXT LIKE '%Request Changes%' THEN 'Journal Entry Changes Requested'
END AS ActivityName,
CAST(CONCAT(wl.WI_CD, wl.WI_CT) AS TIMESTAMP) AS EventTime,
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
wl.EXEC_USER AS User,
SUBSTRING(o.INSTID, 3, 4) AS CompanyCode,
NULL AS DocumentType,
NULL AS PostingDate,
NULL AS TransactionCode,
FALSE AS IsReversed
FROM [Your SAP Source].SWW_WI2OBJ o
JOIN [Your SAP Source].SWWLOGHIST wl ON o.WI_ID = wl.WI_ID
WHERE o.TYPEID = 'BKPF' AND o.CATID = 'BO'
AND wl.WI_TEXT IN ('[Your Submit Task Name]', '[Your Approve Task Name]', '[Your Reject Task Name]', '[Your Changes Request Task Name]')
AND [Date Filter on wl.WI_CD]
UNION ALL
-- Extraction block for 'Journal Entry Corrected'
SELECT
CONCAT(cd.OBJECTID_LONG_CHAR(3,4), cd.OBJECTID_LONG_CHAR(7,10), cd.OBJECTID_LONG_CHAR(17,4)) AS JournalEntryId,
'Journal Entry Corrected' AS ActivityName,
CAST(CONCAT(cd.UDATE, cd.UTIME) AS TIMESTAMP) AS EventTime,
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
cd.USERNAME AS User,
cd.OBJECTID_LONG_CHAR(3,4) AS CompanyCode,
NULL AS DocumentType,
NULL AS PostingDate,
cd.TCODE AS TransactionCode,
FALSE AS IsReversed
FROM [Your SAP Source].CDHDR cd
WHERE cd.OBJECTCLAS = 'FIPP' AND cd.CHANGE_IND = 'U'
AND [Date Filter on cd.UDATE]
UNION ALL
-- Extraction block for 'Parked Journal Entry Deleted'
SELECT
CONCAT(cd.OBJECTID_LONG_CHAR(3,4), cd.OBJECTID_LONG_CHAR(7,10), cd.OBJECTID_LONG_CHAR(17,4)) AS JournalEntryId,
'Parked Journal Entry Deleted' AS ActivityName,
CAST(CONCAT(cd.UDATE, cd.UTIME) AS TIMESTAMP) AS EventTime,
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
cd.USERNAME AS User,
cd.OBJECTID_LONG_CHAR(3,4) AS CompanyCode,
NULL AS DocumentType,
NULL AS PostingDate,
cd.TCODE AS TransactionCode,
FALSE AS IsReversed
FROM [Your SAP Source].CDHDR cd
WHERE cd.OBJECTCLAS = 'FIPP' AND cd.CHANGE_IND = 'D'
AND [Date Filter on cd.UDATE]
UNION ALL
-- Extraction block for 'Documentation Attached'
SELECT
CONCAT(SUBSTRING(r.INSTID_A, 3, 4), SUBSTRING(r.INSTID_A, 7, 10), SUBSTRING(r.INSTID_A, 17, 4)) AS JournalEntryId,
'Documentation Attached' AS ActivityName,
-- Note: A precise timestamp is often unavailable. Using document creation time as a proxy.
CAST(CONCAT(h.CPUDT, h.CPUTM) AS TIMESTAMP) AS EventTime,
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
h.USNAM AS User,
h.BUKRS AS CompanyCode,
h.BLART AS DocumentType,
h.BUDAT AS PostingDate,
h.TCODE AS TransactionCode,
FALSE AS IsReversed
FROM [Your SAP Source].SRGBTBREL r
JOIN [Your SAP Source].BKPF h ON h.BUKRS = SUBSTRING(r.INSTID_A, 3, 4) AND h.BELNR = SUBSTRING(r.INSTID_A, 7, 10) AND h.GJAHR = SUBSTRING(r.INSTID_A, 17, 4)
WHERE r.TYPEID_A = 'BKPF' AND r.RELTYPE = '[Configure based on your system]'
AND [Date Filter on h.CPUDT] AND [Company Code Filter on h.BUKRS]
UNION ALL
-- Extraction block for 'Journal Entry Reversal Processed'
SELECT
CONCAT(h.BUKRS, h.BELNR, h.GJAHR) AS JournalEntryId,
'Journal Entry Reversal Processed' AS ActivityName,
CAST(CONCAT(h.CPUDT, h.CPUTM) AS TIMESTAMP) AS EventTime,
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
h.USNAM AS User,
h.BUKRS AS CompanyCode,
h.BLART AS DocumentType,
h.BUDAT AS PostingDate,
h.TCODE AS TransactionCode,
TRUE AS IsReversed
FROM [Your SAP Source].BKPF h
WHERE h.STBLG IS NOT NULL AND h.STBLG <> ''
AND [Date Filter on h.CPUDT] AND [Company Code Filter on h.BUKRS]
UNION ALL
-- Extraction block for 'Is Reversed' flag on original document
SELECT
CONCAT(h_orig.BUKRS, h_orig.BELNR, h_orig.GJAHR) AS JournalEntryId,
'Is Reversed' AS ActivityName, -- This is an attribute update, modeled as an event
CAST(CONCAT(h_rev.CPUDT, h_rev.CPUTM) AS TIMESTAMP) AS EventTime,
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
h_rev.USNAM AS User,
h_orig.BUKRS AS CompanyCode,
h_orig.BLART AS DocumentType,
h_orig.BUDAT AS PostingDate,
h_orig.TCODE AS TransactionCode,
TRUE AS IsReversed
FROM [Your SAP Source].BKPF h_rev
JOIN [Your SAP Source].BKPF h_orig ON h_rev.STBLG = h_orig.BELNR AND h_rev.BUKRS = h_orig.BUKRS AND h_rev.GJAHR_S = h_orig.GJAHR
WHERE h_rev.STBLG IS NOT NULL AND h_rev.STBLG <> ''
AND [Date Filter on h_rev.CPUDT] AND [Company Code Filter on h_rev.BUKRS]
UNION ALL
-- Extraction block for 'Journal Entry Line Item Cleared'
SELECT
CONCAT(i.BUKRS, i.BELNR, i.GJAHR) AS JournalEntryId,
'Journal Entry Line Item Cleared' AS ActivityName,
CAST(i.AUGDT AS TIMESTAMP) AS EventTime,
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
NULL AS User, -- User who performed clearing is on the clearing document header
i.BUKRS AS CompanyCode,
NULL AS DocumentType,
NULL AS PostingDate,
NULL AS TransactionCode,
FALSE AS IsReversed
FROM [Your SAP Source].BSEG i
WHERE i.AUGBL IS NOT NULL AND i.AUGBL <> ''
AND [Date Filter on i.AUGDT] AND [Company Code Filter on i.BUKRS]
UNION ALL
-- Extraction block for 'Manual Entry Identified'
SELECT
CONCAT(h.BUKRS, h.BELNR, h.GJAHR) AS JournalEntryId,
'Manual Entry Identified' AS ActivityName,
CAST(CONCAT(h.CPUDT, h.CPUTM) AS TIMESTAMP) AS EventTime, -- Same time as creation
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
h.USNAM AS User,
h.BUKRS AS CompanyCode,
h.BLART AS DocumentType,
h.BUDAT AS PostingDate,
h.TCODE AS TransactionCode,
FALSE AS IsReversed
FROM [Your SAP Source].BKPF h
WHERE h.TCODE IN ('FB01', 'F-02', 'FB50', 'FV50', '[Add other manual T-Codes]')
AND [Date Filter on h.CPUDT] AND [Company Code Filter on h.BUKRS]
UNION ALL
-- Extraction block for 'Cross-Company Posting Identified'
SELECT
JournalEntryId,
'Cross-Company Posting Identified' AS ActivityName,
EventTime, -- Same time as creation
'SAP ECC' AS SourceSystem,
NOW() AS LastDataUpdate,
User,
CompanyCode,
DocumentType,
PostingDate,
TransactionCode,
IsReversed
FROM (
SELECT
CONCAT(h.BUKRS, h.BELNR, h.GJAHR) AS JournalEntryId,
CAST(CONCAT(h.CPUDT, h.CPUTM) AS TIMESTAMP) AS EventTime,
h.USNAM AS User,
h.BUKRS AS CompanyCode,
h.BLART AS DocumentType,
h.BUDAT AS PostingDate,
h.TCODE AS TransactionCode,
FALSE AS IsReversed,
(SELECT COUNT(DISTINCT i.BUKRS) FROM [Your SAP Source].BSEG i WHERE i.BELNR = h.BELNR AND i.BUKRS = h.BUKRS AND i.GJAHR = h.GJAHR) as CompanyCodeCount
FROM [Your SAP Source].BKPF h
WHERE [Date Filter on h.CPUDT] AND [Company Code Filter on h.BUKRS]
) AS CrossCompanyCheck
WHERE CompanyCodeCount > 1 Pronto para começar?
Use este Template de dados para dar início à mineração de processos de Record to Report - Lançamento contábil. Obtenha insights mais detalhados e aumente a eficiência das operações financeiras.
Otimize agora seu processo Record to Report - Lançamento contábil
Reduza em 30% o tempo de ciclo dos lançamentos contábeis e garanta relatórios precisos.
Não é necessário cartão de crédito. Comece a melhorar hoje.