Seu Template de Dados para Record to Report - Fechamento de Período e Reconciliação
Seu Template de Dados para Record to Report - Fechamento de Período e Reconciliação
- Atributos recomendados para coletar
- Atividades-chave a monitorizar
- Orientação para Extração
Atributos de Record to Report - Fechamento de Período e Conciliação
| Nome | Descrição | ||
|---|---|---|---|
| Período Financeiro FinancialPeriod | Um identificador exclusivo para o ciclo de relatório financeiro, geralmente combinando o exercício fiscal e o período de lançamento. | ||
| Descrição O Período Financeiro serve como o principal identificador de caso, agrupando todas as atividades relacionadas ao fechamento e conciliação de contas para aquele ciclo de reporte específico, como '2023-12' para dezembro de 2023. Isso permite uma análise abrangente de todo o processo de fechamento, do início ao fim, para cada período distinto. Na análise, ele permite acompanhar o tempo de ciclo de ponta a ponta para cada fechamento, comparar o desempenho entre diferentes períodos e identificar tendências ou anomalias. Ao definir cada período financeiro como um caso único, é possível visualizar e medir a eficiência, os gargalos e as variações no processo de fechamento ao longo do tempo. Por que é importante É o identificador de caso essencial que estrutura a análise, permitindo comparações período a período dos tempos de ciclo de fechamento, cargas de trabalho e conformidade do processo. Onde obter Este atributo é normalmente derivado da concatenação do Ano Fiscal (GJAHR) e do Período de Lançamento (MONAT) dos cabeçalhos dos documentos financeiros, por exemplo, da tabela BKPF. Exemplos 2023-122024-032023-T4 | |||
| Atividade ActivityName | O nome do evento de negócio específico ou tarefa realizada durante o processo de fechamento de período. | ||
| Descrição Este atributo registra as etapas distintas realizadas dentro do ciclo de Record to Report, como 'Lançamento Contábil de Ajuste Realizado' ou 'Demonstrações Financeiras Geradas'. Ele forma a espinha dorsal do mapa do processo, mostrando a sequência de eventos que constituem o fechamento do período. A análise de atividades é fundamental para o Process Mining. Ela ajuda a visualizar o fluxo do processo, identificar a sequência de tarefas, descobrir variações do processo e medir a frequência e a duração de cada etapa. Isso é crucial para localizar gargalos, caminhos de processo fora do padrão e oportunidades de padronização ou automação. Por que é importante Este atributo é obrigatório para a construção do mapa do processo, permitindo a visualização e análise da sequência de tarefas no fechamento do período. Onde obter Isso é derivado de uma combinação de códigos de transação SAP (TCODE), tipos de documentos (BLART) ou execuções de programas específicos (ex: FAGL_FCV para Avaliação de Moeda Estrangeira). Exemplos Lançamento de Ajuste RealizadoReconciliação de Contas IniciadaPeríodo Fechado para Lançamento | |||
| Sistema de Origem SourceSystem | O identificador do sistema de origem de onde os dados foram extraídos. | ||
| Descrição Este atributo especifica a origem dos dados do evento, como o nome ou ID da instância específica do SAP ECC. Em organizações com vários ERPs ou sistemas financeiros, este campo é crítico para distinguir dados de diferentes fontes. Mesmo em um ambiente de sistema único, ele serve como uma peça crucial de metadados para governança de dados, auditoria e solução de problemas. Confirma a procedência dos dados, o que é essencial para criar confiança na análise e garantir que a linhagem dos dados esteja clara. Por que é importante Fornece a linhagem de dados essencial, confirmando a origem das informações para governança, sendo fundamental em ambientes de múltiplos sistemas para diferenciar processos. Onde obter Geralmente é um valor estático adicionado durante o processo de extração de dados, identificando o mandante SAP específico e o ID do sistema (ex: da tabela T000). Exemplos ECC_PROD_100SAP_E74_200ECC_FINANCE | |||
| Tempo do Evento EventTime | O timestamp que indica quando uma atividade ou evento ocorreu. | ||
| Descrição O Event Time fornece a data e hora precisas para cada atividade no processo, servindo como a base cronológica para a análise. Geralmente é uma combinação da data e hora de criação do documento. Este timestamp é essencial para ordenar os eventos corretamente e reconstruir o fluxo do processo. Ele é usado para calcular todas as métricas baseadas em duração, incluindo tempos de ciclo entre atividades, tempos de espera e a duração total do fechamento do período. A análise dos timestamps ajuda a identificar atrasos e entender a distribuição temporal do trabalho. Por que é importante Como atributo obrigatório, fornece a ordem cronológica dos eventos, necessária para calcular tempos de ciclo e descobrir gargalos no processo. Onde obter Normalmente, isso é extraído da data de entrada do documento (CPUDT) e da hora de entrada (CPUTM) na tabela BKPF para documentos financeiros. Exemplos 2023-12-28T14:30:15Z2024-01-02T09:05:00Z2024-01-05T17:21:45Z | |||
| Última Atualização de Dados LastDataUpdate | O registro de data/hora de quando os dados foram atualizados ou extraídos pela última vez do sistema de origem. | ||
| Descrição Este atributo indica a atualização dos dados que estão sendo analisados. Ele mostra a data e a hora em que o pipeline de dados foi executado pela última vez, fornecendo contexto sobre o quão recentes são os insights do processo. Para dashboards, especialmente aqueles que acompanham o progresso em tempo real, este timestamp é vital para que os usuários entendam se estão visualizando informações de última hora ou dados de um dia anterior. Ele gerencia as expectativas do usuário e é crucial para interpretar a análise corretamente. Por que é importante Informa os usuários sobre a atualização dos dados, o que é fundamental para garantir que as análises e dashboards sejam oportunos e relevantes. Onde obter Este timestamp é gerado e adicionado pela ferramenta de extração de dados ou ETL ao final de cada processo de carga de dados. Exemplos 2024-05-21T04:00:00Z2024-05-20T04:00:00Z2024-05-19T04:00:00Z | |||
| Código da Empresa BUKRS | A unidade organizacional que representa uma entidade legal para a qual as demonstrações financeiras são geradas. | ||
| Descrição A Empresa (Company Code) é uma unidade organizacional fundamental no SAP Financials. Representa uma empresa independente com seu próprio conjunto de livros contábeis equilibrados. Todas as transações financeiras são lançadas no nível da empresa. No Process Mining, filtrar pela Empresa é essencial para comparar o processo de fechamento de período entre diferentes entidades legais dentro de uma corporação. Isso permite identificar as melhores práticas em entidades de alto desempenho e localizar as que enfrentam dificuldades com atrasos, altos volumes de ajuste ou desvios de processo. É uma dimensão fundamental para segmentar a análise. Por que é importante Permite a comparação do desempenho e conformidade do fechamento entre diferentes entidades legais, o que é crucial para análises financeiras em nível de grupo. Onde obter Este campo está disponível em quase todas as tabelas de documentos financeiros no SAP, principalmente BKPF (Cabeçalho) e BSEG (Item de Linha). Exemplos 10002000US01DE01 | |||
| Conta Contábil HKONT | O número da conta contábil na qual um item de linha é lançado. | ||
| Descrição A Conta Contábil (GL Account) é um elemento central dos dados mestres financeiros que classifica as transações. Cada lançamento financeiro é atribuído a uma ou mais contas contábeis. No contexto do fechamento do período, a análise de atividades por conta contábil é essencial para os dashboards de 'Gargalos na Conciliação de Contas' e 'Análise de Volume de Lançamentos de Ajuste'. Ela ajuda a identificar quais contas são mais difíceis de conciliar, quais exigem mais ajustes e onde o risco de distorção material pode ser maior. Esse foco permite que as equipes priorizem seus esforços nas contas problemáticas. Por que é importante Permite a análise direcionada de reconciliações e lançamentos de ajuste, ajudando a identificar contas problemáticas que causam atrasos ou exigem correções frequentes. Onde obter Disponível na tabela de itens de documento financeiro, BSEG (HKONT). Exemplos 113100400500750000 | |||
| Montante em Moeda Local DMBTR | O valor financeiro de um item de linha da transação, expresso na moeda local da empresa. | ||
| Descrição Este atributo representa o valor monetário associado a um lançamento financeiro. É a principal medida quantitativa do impacto de uma transação na contabilidade geral. Analisar o montante é crucial para priorizar problemas e entender o risco financeiro. Por exemplo, o dashboard 'Análise de Volume de Lançamentos de Ajuste' torna-se muito mais poderoso quando pode distinguir entre um alto volume de ajustes de baixo valor e um baixo volume de ajustes de alto valor. Isso ajuda a focar a atenção em transações que são financeiramente relevantes. Por que é importante Quantifica o impacto financeiro das transações, permitindo análises baseadas em materialidade, como a identificação de lançamentos de ajuste de alto valor. Onde obter Disponível na tabela de itens de documento, BSEG (DMBTR). Exemplos 1500.75-25000.00123456.00 | |||
| Número do Documento BELNR | O identificador exclusivo para um documento contábil dentro de um ano fiscal e empresa. | ||
| Descrição O Número do Documento Contábil é a chave primária para lançamentos financeiros no SAP. Cada lançamento de diário, fatura ou documento de pagamento recebe um número exclusivo. Embora não seja normalmente usado para análises de alto nível, o número do documento é inestimável para recursos de drill-down. A partir de um dashboard de Process Mining, os analistas podem usar o número do documento para navegar diretamente de volta à transação específica no SAP para uma investigação detalhada de anomalias, como um grande lançamento de ajuste ou um item de conciliação atrasado. Ele fornece um link direto do insight para a transação de origem. Por que é importante Fornece um link direto para a transação de origem no SAP, permitindo uma análise detalhada (drill-down) da visão do processo para lançamentos contábeis específicos. Onde obter Localizado na tabela BKPF (BELNR) como chave primária. Exemplos 100000456719000001233000008901 | |||
| Tipo de Documento BLART | Um código que classifica diferentes tipos de documentos contábeis. | ||
| Descrição O Tipo de Documento é usado no SAP para distinguir entre várias transações comerciais, como faturas de fornecedores (KR), pagamentos de clientes (DZ) e lançamentos de contabilidade geral (SA). Ele também controla propriedades como o intervalo de numeração do documento. Para a análise de fechamento de fim de período, o tipo de documento é um filtro poderoso. Pode ser usado para isolar tipos específicos de atividades, como provisões (accruals) ou lançamentos de estorno. Isso ajuda a analisar o volume e o impacto financeiro de diferentes transações relacionadas ao fechamento e pode ser usado para definir atividades específicas no modelo de processo. Por que é importante Ajuda a classificar e filtrar transações, permitindo isolar e analisar atividades específicas como provisões, estornos ou lançamentos intercompany. Onde obter Localizado na tabela de cabeçalho do documento, BKPF (BLART). Exemplos SAABKR | |||
| Tipo de Lançamento Contábil JournalEntryType | Uma classificação dos lançamentos contábeis, como 'Padrão', 'Ajuste', 'Provisão' ou 'Estorno'. | ||
| Descrição Este é um atributo derivado que categoriza documentos financeiros com base em seu propósito de negócio dentro do processo de fechamento. Geralmente é determinado por uma combinação de Tipo de Documento (BLART), Motivo de Estorno (STGRD) ou contas contábeis específicas sendo utilizadas. Esta classificação é fundamental para o dashboard 'Análise de Volume de Lançamentos de Ajuste' e KPIs relacionados. Ao identificar explicitamente lançamentos de ajuste ou provisão, os analistas podem medir seu volume e valor, acompanhar tendências ao longo do tempo e investigar as causas raízes de sua necessidade. Ajuda a diferenciar os lançamentos operacionais rotineiros dos ajustes de fim de período. Por que é importante Categoriza os lançamentos para análises direcionadas, permitindo rastrear e medir tipos principais de entradas, como ajustes e provisões, que são indicadores da saúde do processo. Onde obter Este é um campo derivado. A lógica precisa ser definida com base em regras de negócio, normalmente usando campos como Tipo de Documento (BLART) da BKPF. Exemplos AjusteApropriaçãoEstornoPadrão | |||
| Usuário Responsável USNAM | O ID de usuário SAP da pessoa que criou ou executou a transação. | ||
| Descrição Este campo captura o usuário que realizou um lançamento, gerou um relatório ou executou um programa relacionado ao fechamento. Ele identifica o indivíduo responsável por uma determinada atividade. A análise por usuário é crítica para entender a distribuição da carga de trabalho, identificar necessidades de treinamento e investigar desvios de processo. Dashboards que mostram atividades por usuário podem destacar membros da equipe sobrecarregados ou indivíduos que podem estar seguindo procedimentos fora do padrão. Também auxilia na gestão de desempenho e alocação de recursos dentro da equipe financeira. Por que é importante Permite a análise da distribuição de carga de trabalho, desempenho da equipe e identificação de desvios de processo vinculados a indivíduos específicos. Onde obter Disponível na tabela BKPF (USNAM) para criação de documentos. Para jobs em lote, pode ser encontrado em TBTCO (SDLUNAME). Exemplos JSMITHRDOEFIN_ADMIN | |||
| Data prevista de conclusão TargetCompletionDate | O prazo planejado ou data de vencimento para uma atividade ou para todo o fechamento do período. | ||
| Descrição A Data de Conclusão Prevista representa o cronograma em relação ao qual o processo de fechamento do período é medido. É o prazo final pelo qual marcos específicos ou o fechamento definitivo devem ser concluídos. Este atributo é essencial para qualquer análise relacionada a desempenho ou conformidade. É usado para calcular o KPI 'Taxa de Fechamento de Período no Prazo' e alimentar o dashboard 'Conformidade de Fechamento e Tarefas Atrasadas'. Ao comparar o tempo real do evento com esta data prevista, o sistema pode determinar se as tarefas estão no caminho certo, atrasadas ou em risco de atraso, permitindo a gestão proativa do processo de fechamento. Por que é importante Permite o monitoramento de conformidade e desempenho, fornecendo uma base para medir se as atividades de fechamento são concluídas no prazo, apoiando os KPIs de entrega pontual. Onde obter Normalmente, esses são dados mestres mantidos em um calendário à parte, em uma ferramenta de cockpit de fechamento (como o SAP Financial Closing cockpit) ou em uma planilha. Não faz parte dos dados transacionais. Exemplos 2023-12-29T23:59:59Z2024-01-03T17:00:00Z2024-01-02T12:00:00Z | |||
| Departamento Department | O departamento funcional ou centro de custo responsável pela atividade ou transação. | ||
| Descrição Este atributo identifica o departamento de negócio, como 'Financeiro', 'Vendas' ou 'Logística', associado a uma transação. Isso geralmente é derivado dos dados mestres de Centro de Custo vinculados a um lançamento ou dos dados mestres do usuário. A análise por departamento suporta o dashboard 'Distribuição de Carga de Trabalho da Equipe de Fechamento'. Ajuda a entender como diferentes funções de negócio contribuem para a carga de trabalho de fim de período, particularmente em termos de início de transações que podem exigir ajustes ou conciliações posteriores. Pode destacar áreas fora da equipe principal de finanças que impactam o processo de fechamento. Por que é importante Ajuda a analisar a carga de trabalho e a adesão ao processo em diferentes funções de negócio, revelando como cada departamento impacta a eficiência do fechamento. Onde obter Frequentemente derivado do Centro de Custo (KOSTL) em BSEG ou dos dados mestres de RH do usuário responsável. Isso pode exigir a união de várias tabelas. Exemplos Finanças CorporativasContas a PagarFP&A | |||
| É Automatizado IsAutomated | Um sinalizador que indica se uma atividade foi realizada por um usuário humano ou por um sistema automatizado. | ||
| Descrição Este atributo booleano distingue entre tarefas manuais e aquelas executadas automaticamente pelo sistema, como um job em lote agendado para avaliação de moeda estrangeira ou um bot lançando entradas recorrentes. Isso geralmente é determinado analisando o nome de usuário associado à transação (ex: 'BATCHUSER'). Entender o nível de automação é fundamental para identificar oportunidades de ganho de eficiência. A análise desse atributo ajuda a visualizar quais partes do processo são manuais e potencialmente aptas para automação. Também ajuda a avaliar com precisão a carga de trabalho humana, excluindo atividades geradas pelo sistema. Por que é importante Distingue entre atividades manuais e automáticas, o que é fundamental para identificar oportunidades de automação e medir com precisão a carga de trabalho manual. Onde obter Este é um atributo derivado. A lógica baseia-se normalmente no Nome de Usuário (USNAM), onde uma lista de IDs de usuário de sistema ou de lote conhecidos indica uma tarefa automatizada. Exemplos verdadeirofalse | |||
| É Retrabalho IsRework | Um sinalizador calculado que identifica atividades que representam retrabalho, como um estorno ou uma reconciliação rejeitada. | ||
| Descrição Este atributo booleano sinaliza eventos ou sequências de eventos que indicam loops ineficientes ou correções no processo. Por exemplo, uma atividade de 'Conciliação Revisada' seguida por outro 'Lançamento Contábil de Ajuste Realizado' na mesma conta pode ser sinalizada como retrabalho. Este atributo é essencial para quantificar o desperdício do processo e suporta o dashboard 'Instâncias de Retrabalho de Conciliação' e o KPI 'Taxa de Retrabalho de Conciliação'. Ao isolar o retrabalho, as equipes podem investigar as causas raízes, medir o impacto no tempo de ciclo e acompanhar a eficácia das iniciativas de melhoria de processo que visam acertar logo na primeira vez. Por que é importante Quantifica a ineficiência do processo sinalizando atividades que são correções ou repetições, ajudando a medir e reduzir o esforço desperdiçado. Onde obter Este é um atributo calculado. A lógica é definida na ferramenta de Process Mining com base em sequências de atividades específicas (ex: loops) ou atributos (ex: ReversalReason não é nulo). Exemplos verdadeirofalse | |||
| Está Vencido IsOverdue | Um sinalizador calculado que indica se uma atividade foi concluída após a data prevista. | ||
| Descrição Este atributo booleano compara o tempo de conclusão real de uma atividade (EventTime) com seu prazo planejado (TargetCompletionDate). Se o tempo do evento for posterior ao previsto, o sinalizador é definido como verdadeiro. Este atributo suporta diretamente o dashboard 'Conformidade de Fechamento e Tarefas Atrasadas' e o KPI 'Taxa de Fechamento de Período no Prazo'. Ele fornece um sinal claro e imediato de desvios no cronograma, permitindo que os gestores identifiquem rapidamente tarefas atrasadas, entendam o impacto no cronograma geral e responsabilizem as equipes pelo cumprimento dos prazos. Por que é importante Fornece um indicador claro de não conformidade com os cronogramas, permitindo a identificação rápida de tarefas atrasadas e a medição do desempenho de pontualidade. Onde obter Este é um atributo calculado, computado na ferramenta de Process Mining comparando o EventTime com a Data de Conclusão Prevista (TargetCompletionDate). Exemplos verdadeirofalse | |||
| Exercício GJAHR | O ano fiscal em que a transação foi lançada. | ||
| Descrição O Ano Fiscal é um elemento fundamental para organizar os dados financeiros. É um componente essencial do ID de caso do Período Financeiro e fornece o contexto necessário para todas as transações. Embora muitas vezes faça parte do ID do caso, ter o Ano Fiscal como um atributo separado é útil para análises de tendências de longo prazo. Ele permite comparações ano a ano dos tempos de ciclo de fechamento, volumes de ajuste ou outros KPIs, ajudando a identificar melhorias ou degradações no desempenho ao longo de vários anos. Por que é importante Fornece o contexto temporal essencial e permite comparações de desempenho ano a ano do processo de fechamento. Onde obter Disponível na tabela de cabeçalho de documento, BKPF (GJAHR). Exemplos 202320242022 | |||
| Motivo do Estorno ReversalReason | Um código que indica o motivo pelo qual um documento financeiro foi estornado. | ||
| Descrição Quando um documento é estornado no SAP, um código de motivo pode ser atribuído para explicar o propósito do estorno, por exemplo, "Estorno no período atual" ou "Entrada incorreta". Este atributo fornece um contexto crítico sobre o motivo do retrabalho. Analisar os motivos de estorno ajuda a identificar padrões em erros, como entrada de dados incorreta ou datas erradas. Esse insight pode ser usado para implementar medidas preventivas, melhorar o treinamento ou aprimorar os controles do sistema para reduzir o número de erros e estornos subsequentes, levando a um fechamento mais eficiente. Por que é importante Oferece uma visão direta das causas raízes de erros e retrabalho, ajudando a identificar oportunidades para melhoria de processos e prevenção de erros. Onde obter Localizado na tabela de cabeçalho do documento, BKPF (STGRD). Exemplos 010205 | |||
| Parceiro Comercial VBUND | O identificador da empresa afiliada do grupo envolvida em uma transação intercompany. | ||
| Descrição O ID do Parceiro de Negócios (Trading Partner) é usado para identificar a outra empresa que participa de uma transação intercompany. Isso é essencial para a conciliação de contas entre entidades legais relacionadas. Este atributo suporta diretamente o dashboard 'Fluxo de Conciliação Intercompany' e o KPI 'Tempo de Ciclo de Conciliação Intercompany'. Ao filtrar transações onde um Parceiro de Negócios está presente, a análise pode se concentrar especificamente na eficiência e pontualidade do processo de conciliação intercompany, que costuma ser um grande ponto problemático durante o fechamento do período. Por que é importante Identifica especificamente as transações intercompany, permitindo uma análise focada no processo de conciliação intercompany, que costuma ser complexo e demorado. Onde obter Encontrado na tabela de itens de documento, BSEG (VBUND). Exemplos 1000US013000 | |||
| Status da Conciliação ReconciliationStatus | O status atual de uma conciliação de conta, como 'Aberto', 'Em Revisão' ou 'Aprovado'. | ||
| Descrição Este atributo rastreia o estado de uma conciliação de conta à medida que ela se move pelo seu fluxo de trabalho. Indica se uma conciliação foi iniciada, submetida para revisão, aprovada ou rejeitada. Este é um atributo fundamental para monitorar o progresso das atividades de conciliação em tempo real. Ajuda a identificar quais conciliações estão travadas e por quanto tempo, suportando KPIs como 'Tempo de Ciclo de Conciliação de Contas'. Ele oferece visibilidade sobre o processo de aprovação e é crucial para dashboards que rastreiam gargalos de conciliação e carga de trabalho da equipe. Por que é importante Proporciona visibilidade sobre o fluxo de conciliação, permitindo o acompanhamento do progresso, a identificação de gargalos e a medição dos tempos de revisão e aprovação. Onde obter Esta informação geralmente reside em uma ferramenta de conciliação separada (ex: SAP Account Substantiation and Automation by BlackLine) ou em um campo de status personalizado. Normalmente não é um campo padrão em BKPF/BSEG. Exemplos Não iniciadoEm ProgressoAprovadoRejeitado | |||
| Tempo de Ciclo de Fechamento do Período PeriodCloseCycleTime | O tempo total decorrido do início ao fim do processo de fechamento de um único período financeiro. | ||
| Descrição Esta métrica calculada mede a duração de ponta a ponta de todo o fechamento para um período financeiro. Geralmente é calculada como a diferença de tempo entre a primeira e a última atividade registrada naquele período. Este é um indicador chave de desempenho (KPI) primário para o processo de Record to Report. Ele fornece uma medida de alto nível da eficiência geral do fechamento. Dashboards que visualizam essa métrica ao longo do tempo são essenciais para acompanhar o progresso em direção a metas estratégicas, como a aceleração do fechamento. Por que é importante Este é um KPI crítico que mede a eficiência e a velocidade geral do fechamento financeiro, apoiando diretamente os objetivos estratégicos de encurtar os ciclos de fechamento. Onde obter Esta é uma métrica calculada, computada dentro da ferramenta de Process Mining pela diferença entre o EventTime máximo e mínimo para cada Período Financeiro (CaseId). Exemplos 5 dias 4 horas 30 minutos6,2 dias120,5 horas | |||
Atividades de Record to Report - Fechamento de Período e Conciliação
| Atividade | Descrição | ||
|---|---|---|---|
| Demonstrações Financeiras Geradas | Isso representa o momento em que as demonstrações financeiras oficiais, como a Demonstração de Resultados (DRE) e o Balanço Patrimonial, são geradas. Essa atividade costuma ser capturada pelo monitoramento da execução de um programa de relatório específico. | ||
| Por que é importante Este é um marco importante que marca o fim do processamento de dados e o início da fase final de revisão e aprovação. O tempo desde este evento até a aprovação é um KPI fundamental. Onde obter Inferido a partir dos logs de auditoria do sistema, como a STAD, que registra a execução do programa de geração de demonstrações financeiras, mais comumente a transação F.01. Captura Dos logs de sistema (STAD) rastreando a execução da transação de demonstração financeira F.01. Tipo de evento inferred | |||
| Execução de Avaliação de Moeda Estrangeira | Isso representa a execução de um programa para reavaliar itens em aberto e saldos registrados em moedas estrangeiras, utilizando as taxas de câmbio do final do período. Geralmente, é executado como um job em lote como parte das etapas de fechamento de período. | ||
| Por que é importante Esta é uma etapa crítica para garantir relatórios financeiros precisos em organizações multinacionais. Analisar seu momento e duração ajuda a identificar oportunidades de automação e otimização de desempenho. Onde obter Capturado dos logs de execução do programa de avaliação de moeda estrangeira, como FAGL_FCV ou F.05. Detalhes de jobs em lote das tabelas como TBTCO e TBTCP fornecem os timestamps de execução. Captura Dos logs de jobs em lote (tabela TBTCO) para o programa FAGL_FC_VALUATION ou SAPF100. Tipo de evento explicit | |||
| Lançamento de Ajuste Realizado | Um lançamento de ajuste é realizado para corrigir saldos de conta após a conclusão do processamento inicial das transações do período. Este evento é capturado como um lançamento de documento financeiro padrão no SAP. | ||
| Por que é importante Isso é essencial para a Análise de Volume de Lançamentos de Ajuste. Um volume alto de ajustes sugere problemas de precisão nos processos anteriores e é um alvo principal para iniciativas de melhoria de processos. Onde obter Encontrados nas tabelas BKPF e BSEG. Essas entradas são normalmente identificadas por um tipo de documento específico (BKPF-BLART) reservado para ajustes, ou por serem lançadas em períodos especiais de fechamento, como de 13 a 16. Captura Filtre a BKPF para documentos lançados em períodos especiais ou com tipos de documento de ajuste. Tipo de evento explicit | |||
| Período Aberto para Lançamento | Isso marca o início oficial de um período financeiro, permitindo que as transações sejam lançadas no livro razão. Trata-se de uma alteração de configuração explícita realizada por um usuário autorizado para abrir um período de lançamentos em uma ou mais empresas (company codes). | ||
| Por que é importante Esta atividade serve como o evento de início definitivo para o caso do processo de fechamento de período. Analisar o tempo a partir deste ponto ajuda a entender o ciclo de vida completo do período financeiro. Onde obter Mudanças nos períodos de lançamento via transação OB52 são registradas. Essas alterações podem ser extraídas analisando os documentos de modificação da tabela de configuração T001B, geralmente usando as tabelas CDHDR e CDPOS. Captura Extraia dos documentos de modificação (CDHDR/CDPOS) para a tabela T001B. Tipo de evento explicit | |||
| Período Fechado para Lançamento | Representa o fechamento formal de um período de lançamento, o que impede novos lançamentos contábeis operacionais. Isso garante a integridade dos dados financeiros do período fechado e é uma mudança de configuração explícita. | ||
| Por que é importante Este é o evento final definitivo do processo de fechamento de período. Ele é fundamental para calcular com precisão o Tempo de Ciclo Total do Fechamento de Período e medir o desempenho de pontualidade. Onde obter O fechamento de períodos via transação OB52 é registrado. Essas alterações podem ser encontradas analisando os documentos de modificação (tabelas CDHDR e CDPOS) para a tabela de configuração T001B. Captura Extraia dos documentos de modificação (CDHDR/CDPOS) para a tabela T001B. Tipo de evento explicit | |||
| Reconciliação de Contas Iniciada | Representa o início do processo de conciliação para um conjunto de contas contábeis do período. No SAP ECC padrão, este não é um evento discreto e geralmente é inferido de atividades relacionadas, como a execução de um relatório importante pela primeira vez. | ||
| Por que é importante Esta atividade estabelece um marco importante para medir a duração de toda a fase de conciliação. Entender quando a conciliação começa é fundamental para o KPI de Tempo de Ciclo de Conciliação de Contas. Onde obter Este evento não é registrado explicitamente. Ele deve ser inferido de outras fontes de dados, como o log de auditoria do sistema (transação STAD) para a primeira execução de um relatório de exibição de saldo, como FAGLB03 ou FS10N. Captura Inferir a partir da primeira execução de transações de relatório relevantes (ex: FAGLB03) nos logs do sistema. Tipo de evento inferred | |||
| Conciliação Revisada | Indica que uma reconciliação para uma conta ou grupo de contas foi revisada e confirmada. No SAP ECC padrão, este não é um evento registrado explicitamente e costuma ser gerenciado por controles offline ou soluções customizadas. | ||
| Por que é importante Monitorar o cronograma das revisões é importante para entender os gargalos nas etapas de controle e supervisão do processo de fechamento. Isso pode evidenciar atrasos causados pela disponibilidade da gestão ou retrabalho. Onde obter Esta informação não está disponível nas tabelas padrão do ECC. Exigiria uma solução personalizada, como um campo de status em uma tabela Z customizada, um workflow simples ou a integração com uma ferramenta de conciliação de terceiros especializada. Captura Capture a mudança de status a partir de um workflow customizado ou tabela Z, se implementado. Tipo de evento inferred | |||
| Documento Intercompany Compensado | Esta atividade marca a compensação de um item em aberto entre duas empresas diferentes, significando que uma transação intercompany foi liquidada ou reconciliada. Isso é registrado como um lançamento financeiro explícito no SAP, normalmente um documento de compensação. | ||
| Por que é importante Atrasos na compensação de itens intercompany são um gargalo comum no fechamento. Rastrear essa atividade é crítico para medir e melhorar o tempo de ciclo da reconciliação intercompany. Onde obter Identificado a partir de documentos financeiros em BKPF e BSEG. Um documento de compensação vincula e encerra itens em aberto, e sua data de compensação (BSEG-AUGDT) serve como o timestamp do evento. Transações intercompany são identificadas pelos campos de parceiro de negócios. Captura Identifique documentos de compensação em BKPF/BSEG que envolvam itens com parceiros de negócios. Tipo de evento explicit | |||
| Execução de Compensação EM/EF Realizada | A execução do programa de compensação automática para a conta de Entrada de Mercadorias/Entrada de Faturas (GR/IR). Este programa concilia as entradas de mercadorias correspondentes com as faturas recebidas e compensa os itens entre si. | ||
| Por que é importante A conta GR/IR é uma fonte frequente de problemas de conciliação. O monitoramento dessa atividade garante que a etapa automatizada seja executada corretamente e ajuda a quantificar o volume de exceções que exigem acompanhamento manual. Onde obter A execução é capturada nos logs de jobs em lote (transação SM37). O programa geralmente é o SAPF124, executado via transação F.13. As tabelas de log de job, como TBTCO, fornecem os timestamps necessários. Captura Dos logs de jobs em lote (tabela TBTCO) para o programa de compensação SAPF124. Tipo de evento explicit | |||
| Lançamento de Estorno Realizado | Esta atividade captura o lançamento de um documento que estorna um lançamento de diário realizado anteriormente, muitas vezes para corrigir um erro. O SAP cria um link explícito entre o documento de estorno e o documento original. | ||
| Por que é importante Um número elevado de estornos aponta para potenciais problemas na precisão da entrada de dados ou nos controles do processo. Rastrear esses eventos ajuda a medir as taxas de acerto na primeira tentativa e identificar áreas que precisam de melhoria. Onde obter Os documentos de estorno são encontrados na tabela BKPF. Eles são frequentemente criados com a transação FB08 e contêm uma referência ao número do documento estornado no campo BKPF-STBLG. Captura Identifique documentos onde BKPF-STBLG está preenchido ou criados via transações de estorno. Tipo de evento explicit | |||
| Provisão Lançada | Isso representa o registro de um lançamento contábil de uma provisão, diferimento ou acúmulo, que geralmente são lançados no final de um período. Não é um tipo de evento distinto no SAP, mas é inferido pela identificação de lançamentos específicos com base em suas características. | ||
| Por que é importante Isolar essas entradas ajuda a analisar o subprocesso de gestão de estimativas. Um alto volume ou ajustes frequentes em provisões (accruals) podem indicar áreas para melhoria do processo. Onde obter Inferido a partir das tabelas de documentos financeiros BKPF e BSEG. As entradas podem ser identificadas filtrando por um tipo de documento específico (BKPF-BLART), uma conta contábil única (BSEG-HKONT) ou palavras-chave no texto do cabeçalho (BKPF-BKTXT). Captura Filtre as tabelas BKPF/BSEG por tipo de documento, contas contábeis específicas ou campos de texto. Tipo de evento inferred | |||
| Relatório de Balancete Gerado | Marca a execução de um relatório para gerar o balancete. Este é um passo fundamental para verificar se o total de débitos é igual ao total de créditos antes de criar as demonstrações financeiras oficiais. | ||
| Por que é importante Este é um marco de qualidade crítico antes do reporte final. Execuções repetidas deste relatório podem indicar que problemas nos dados subjacentes estão sendo encontrados e corrigidos, o que pode causar atrasos. Onde obter Inferido a partir dos logs de auditoria do sistema, como a transação STAD, que pode registrar a execução de transações de balancete como S_ALR_87012277 ou F.01. Captura Dos logs de sistema (STAD) rastreando a execução de códigos de transação de relatórios. Tipo de evento inferred | |||
Guias de Extração
Etapas
- Acesse a Ferramenta SAP Query: Faça login no seu sistema SAP ECC. Vá para o código de transação
SQVI(QuickViewer). 2. Crie uma Nova Consulta: Digite um nome para sua consulta, por exemplo,Z_R2R_PERIOD_CLOSE, e clique em 'Criar'. No pop-up, forneça um título descritivo como 'Extração de Fechamento de Período Record to Report'. Para a 'Fonte de dados', selecione 'Junção de tabelas'. 3. Defina as Junções de Tabelas: Adicione a tabela primáriaBKPF(Cabeçalho de Documento Contábil). Em seguida, adicione a tabelaBSEG(Segmento de Documento Contábil). O SAP proporá as condições de junção automaticamente (MANDT, BUKRS, BELNR, GJAHR), as quais você deve verificar e aceitar. Para atividades de abertura e fechamento de período, você precisará de uma consulta separada unindoCDHDReCDPOS. 4. Selecione os Campos de Saída (List Fields): Navegue até a aba 'Seleção de campos da lista'. Selecione os campos necessários para o log de eventos das tabelas disponíveis. Isso incluiBKPF-BUKRS,BKPF-BELNR,BKPF-GJAHR,BKPF-MONAT,BKPF-CPUDT,BKPF-CPUTM,BKPF-USNAM,BKPF-BLART,BSEG-HKONT,BSEG-DMBTRe outros conforme necessário. 5. Defina os Parâmetros de Entrada (Selection Fields): Navegue até a aba 'Campos de seleção'. Escolha os campos que serão usados para filtrar os dados durante a execução. Os campos mais importantes sãoBKPF-BUKRS(Empresa) eBKPF-GJAHR(Exercício Fiscal). Você também pode adicionarBKPF-MONAT(Período de Lançamento) eBKPF-BLART(Tipo de Documento). 6. Crie Variantes para Cada Atividade: Como o SQVI não pode combinar diferentes seleções de dados (como um SQL UNION), você deve executar a consulta várias vezes. Para cada atividade (ex: 'Provisão Lançada'), execute a consulta e insira valores de filtro específicos na tela de seleção, como uma lista de tipos de documento relevantes. Salve este conjunto de critérios como uma variante. Repita este processo para cada atividade extraível. 7. Execute e Extraia os Dados: Execute a consulta para cada variante criada. Isso rodará a consulta com os filtros específicos para aquela atividade. 8. Exporte os Resultados: Na tela de resultados, exporte os dados para um arquivo local. O formato mais comum é 'Planilha'. Repita a exportação para cada variante. 9. Combine e Transforme os Dados: Abra os arquivos exportados em um programa de planilhas ou use uma ferramenta de script. Combine manualmente os dados de todos os arquivos em um único arquivo mestre. 10. Adicione Colunas Constantes e Calculadas: No arquivo combinado, adicione as colunas que não são extraídas diretamente das tabelas SAP. Isso incluiActivityName(defina manualmente com base na variante de origem),FinancialPeriod(concatenando Exercício e Período),EventTime(combinando os campos de data e hora),SourceSystemeLastDataUpdate. 11. Formate para Upload: Certifique-se de que o arquivo final seja salvo no formato CSV ou Excel com os cabeçalhos de coluna corretos exigidos pela sua ferramenta de Process Mining. Verifique os tipos de dados e a formatação antes de fazer o upload.
Configuração
- Fonte de Dados: Junção de tabelas no SAP Query (SQVI). As principais tabelas são BKPF, BSEG, CDHDR e CDPOS. * Intervalo de Datas: Recomenda-se extrair dados de um período de pelo menos 3 a 6 períodos financeiros completos para identificar padrões. Configure o filtro em
BKPF-GJAHR(Exercício Fiscal) eBKPF-MONAT(Período). * Filtro de Código da Empresa: Sempre filtre porBKPF-BUKRS(Empresa) para limitar o volume de dados e focar a análise em entidades legais específicas. Não recomendamos a extração para todas as empresas de uma só vez. * Filtro de Tipo de Documento: Use filtros emBKPF-BLART(Tipo de Documento) para isolar atividades específicas como provisões, ajustes ou estornos. Você precisará obter os tipos de documento relevantes para sua organização. * Pré-requisitos: O usuário que executa a extração precisa de autorização para usar a transaçãoSQVIe acesso de visualização às tabelas financeiras relevantes (ex: objeto de autorização S_TABU_DIS). * Considerações de Performance: Unir BKPF e BSEG pode consumir muitos recursos. Execute a extração em horários de pouco movimento. Evite usar intervalos de datas muito amplos ou deixar o filtro de Empresa aberto, pois isso pode causar problemas de memória ou timeouts.
a Consulta de Exemplo config
/*
LOGICAL REPRESENTATION FOR SAP QUERY (SQVI)
This is not a single executable script. Due to limitations in SQVI, you must create a base query joining BKPF and BSEG, then run it multiple times using different selection screen variants to extract each activity below. The results must be combined manually.
A separate query joining CDHDR and CDPOS is needed for period open/close activities.
*/
-- Activity 1: Period Opened For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW > CDPOS.VALUE_OLD;
UNION ALL
-- Activity 2: Accrual Or Provision Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Accrual' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('SA', '[Your Accrual Doc Type]'); -- Filter by document types used for accruals
UNION ALL
-- Activity 3: Intercompany Document Cleared
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.AUGBL AS BELNR, -- The clearing document number
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BSEG.AUGBL IS NOT NULL AND BSEG.VBUND IS NOT NULL; -- Identify cleared items with an intercompany trading partner
UNION ALL
-- Activity 4: Foreign Currency Valuation Run
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Valuation' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('FAGL_FCV', 'FBB1'); -- Filter by FCV transaction code
UNION ALL
-- Activity 5: GR/IR Clearing Run Executed
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('F.13', 'F13E'); -- Filter by automated clearing transaction codes
UNION ALL
-- Activity 6: Account Reconciliation Started (Proxy)
-- This is a proxy. It takes the earliest adjusting journal entry timestamp for the period.
SELECT
A.FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
MIN(A.EventTime) AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
A.BUKRS,
NULL AS BELNR,
NULL AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM (
SELECT CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
BKPF.BUKRS
FROM BKPF
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]')
) AS A
GROUP BY A.FinancialPeriod, A.BUKRS;
UNION ALL
-- Activity 7: Adjusting Journal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Adjusting' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]'); -- Filter by document types for adjustments
UNION ALL
-- Activity 8: Reversal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Reversal' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.STBLG IS NOT NULL; -- STBLG (Reversed Document Number) is populated for reversals
UNION ALL
-- Activity 9: Period Closed For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW < CDPOS.VALUE_OLD;
/*
-- Activities Not Extractable via this Method
-- The following activities are not data postings and cannot be reliably extracted by querying finance tables BKPF/BSEG.
-- Extraction would require analyzing application logs (SLG1), system logs (STAT), or custom-built logging solutions.
-- Activity: Trial Balance Report Generated
-- Activity: Financial Statements Generated
-- Activity: Reconciliation Reviewed
*/ Etapas
- Escopo e Design do Programa: Defina a lógica específica para identificar cada uma das 12 atividades exigidas. Consulte os donos dos processos de negócio e analistas funcionais SAP para confirmar os tipos de documento, contas contábeis e nomes de programas associados às atividades de fechamento no seu ambiente SAP ECC específico.
- Crie o Programa ABAP: Usando a transação
SE38(ABAP Editor), crie um novo programa executável, por exemplo,Z_PM_R2R_EXTRACTION. Forneça um título descritivo e defina o tipo como 'Programa Executável'. - Defina a Tela de Seleção: No programa, defina uma tela de seleção usando
PARAMETERSeSELECT-OPTIONS. Isso permitirá especificar o escopo da extração, incluindo Empresa (BUKRS), Exercício Fiscal (GJAHR) e Período de Lançamento (MONAT), o que é crucial para controlar o volume de dados. - Declare as Estruturas de Dados: Defina uma estrutura de tabela interna para os dados do log de eventos. Ela deve incluir todos os atributos exigidos:
FinancialPeriod,ActivityName,EventTime,SourceSystem,LastDataUpdate,BUKRS,BELNR,USNAM,HKONT,BLART,DMBTReJournalEntryType. - Implemente a Lógica de Extração: Escreva a lógica ABAP para selecionar dados das 12 atividades. Para cada uma, consulte as tabelas SAP relevantes (ex: BKPF, BSEG, TBTCO, CDHDR) e popule uma tabela interna intermediária. Use a lógica da seção de consulta ABAP como modelo.
- Identifique Atividades Inferidas: Para atividades não registradas explicitamente no SAP padrão, como 'Início da Reconciliação de Conta', implemente a lógica de inferência acordada. Isso pode envolver verificar a primeira execução de um relatório específico ou consultar tabelas customizadas ('Tabelas Z').
- Consolide os Dados de Eventos: Após extrair os dados de todas as atividades individuais, anexe os registros em uma tabela interna consolidada final. Garanta que o campo
EventTimeseja preenchido corretamente a partir do campo de origem relevante (data/hora de lançamento ou do job). - Padronize e Formate os Dados: Antes da saída, padronize os campos principais. Combine o exercício e o período no identificador
FinancialPeriod. Defina valores estáticos paraSourceSystemeLastDataUpdate. Garanta timestamps em formato consistente. - Desenvolva a Funcionalidade de Saída: Adicione funcionalidade para exportar a tabela interna final. O método mais comum é gravar em um arquivo CSV no Servidor de Aplicação SAP (usando
OPEN DATASET) ou permitir o download direto para a máquina local (usando o módulo de funçãoGUI_DOWNLOAD). - Teste e Valide: Teste o programa rigorosamente com um conjunto de dados representativo de várias empresas e períodos. Use as etapas de validação para garantir precisão e integridade. Refine a lógica conforme o feedback dos especialistas funcionais.
- Agende a Execução (Opcional): Após validado, o programa pode ser agendado para rodar em background via transação
SM36, permitindo a extração periódica e automatizada do log de eventos.
Configuração
- Critérios de Seleção: O programa deve ter uma tela de seleção para filtrar os dados. Os principais filtros incluem:
Company Code (BUKRS): Obrigatório para limitar o escopo às entidades legais relevantes.Fiscal Year (GJAHR): Obrigatório para definir o ano principal da extração.Posting Period (MONAT): Obrigatório para selecionar os períodos financeiros específicos.
- Configuração Específica da Atividade: Muitas seleções dependem da sua configuração específica do SAP. Elas devem ser configuráveis como parâmetros ou constantes dentro do programa:
Accrual/Provision Document Types: Uma lista de tipos de documento (BLART) usados para identificar lançamentos de provisões.Adjusting Entry Document Types: Uma lista de tipos de documento usados para identificar lançamentos de ajuste.Background Job/Program Names: Os nomes técnicos dos programas usados para Avaliação de Moeda Estrangeira (ex:FAGL_FCV), Compensação de EM/EF (ex:SAPF124), relatórios de Balancete e geração de Demonstrações Financeiras (ex:RFBILA00).
- Intervalo de Datas: Embora a seleção primária seja por exercício fiscal e período, a lógica subjacente deve considerar a data e hora completas dos eventos. Para uma análise inicial, recomenda-se extrair dados dos últimos 3 a 6 períodos financeiros concluídos.
- Performance: Para ambientes SAP de grande porte, o desempenho do programa é crítico. Certifique-se de que as seleções de banco de dados usem campos de índice, especialmente em tabelas como
BKPFeBSEG. Evite selecionar todos os campos (SELECT *) e processe os dados em pacotes gerenciáveis, se necessário. - Autorizações: O usuário ou conta de serviço que executa este programa precisa de autorização para acessar todas as tabelas consultadas (
BKPF,BSEG,TBTCO,TBTCP,CDHDR,CDPOS) e para executar transações comoSE38(para desenvolvimento) eSM37/SM36(para agendamento e monitoramento).
a Consulta de Exemplo abap
REPORT Z_PM_R2R_EXTRACTION.
" ====================================================================
" DATA DECLARATIONS
" ====================================================================
TYPES: BEGIN OF ty_event_log,
FinancialPeriod TYPE string,
ActivityName TYPE string,
EventTime TYPE timestamp,
SourceSystem TYPE string,
LastDataUpdate TYPE timestamp,
BUKRS TYPE bukrs,
BELNR TYPE belnr_d,
USNAM TYPE usnam,
HKONT TYPE hkont,
BLART TYPE blart,
DMBTR TYPE dmbtr,
JournalEntryType TYPE string,
END OF ty_event_log.
DATA: lt_final_log TYPE STANDARD TABLE OF ty_event_log,
ls_log_entry LIKE LINE OF lt_final_log.
DATA: lv_source_system TYPE string VALUE 'SAP ECC'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_bukrs FOR ls_log_entry-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_monat FOR bkpf-monat OBLIGATORY.
PARAMETERS: p_accrl TYPE blart DEFAULT 'SA', " Example Doc Type for Accruals
p_adjst TYPE blart DEFAULT 'AJ', " Example Doc Type for Adjustments
p_fcv TYPE btcjob DEFAULT 'FAGL_FCV*', " Program for FC Valuation
p_grir TYPE btcjob DEFAULT 'SAPF124*', " Program for GR/IR Clearing
p_fs TYPE btcjob DEFAULT 'RFBILA00'. " Program for Fin. Statements
" ====================================================================
" MAIN LOGIC
" ====================================================================
START-OF-SELECTION.
" --- 1. Period Opened For Posting ---
" Note: This is complex. This example queries change documents for posting period config (T001B).
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_open)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_open INTO DATA(ls_period_open).
" Further logic needed to parse OBJECTID and check CDPOS for opening a period.
" This is a simplified placeholder for a complex logic.
ls_log_entry-ActivityName = 'Period Opened For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" --- 2. Accrual Or Provision Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_accrual)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_accrl.
LOOP AT lt_accrual INTO DATA(ls_accrual).
CLEAR ls_log_entry.
CONVERT DATE ls_accrual-cpudt TIME ls_accrual-cputm INTO TIME STAMP ls_log_entry-EventTime TIME ZONE sy-zonlo.
CONCATENATE ls_accrual-gjahr ls_accrual-monat INTO ls_log_entry-FinancialPeriod.
ls_log_entry-ActivityName = 'Accrual Or Provision Posted'.
ls_log_entry-BUKRS = ls_accrual-bukrs.
ls_log_entry-BELNR = ls_accrual-belnr.
ls_log_entry-USNAM = ls_accrual-usnam.
ls_log_entry-HKONT = ls_accrual-hkont.
ls_log_entry-BLART = ls_accrual-blart.
ls_log_entry-DMBTR = ls_accrual-dmbtr.
ls_log_entry-JournalEntryType = 'Accrual'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
ls_log_entry-SourceSystem = lv_source_system.
APPEND ls_log_entry TO lt_final_log.
ENDLOOP.
" --- 3. Intercompany Document Cleared ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_ic_clear)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat
AND h~blart = 'AB' AND i~vbund <> space.
LOOP AT lt_ic_clear INTO DATA(ls_ic_clear).
" Populate ls_log_entry and append to lt_final_log, setting ActivityName = 'Intercompany Document Cleared'
ENDLOOP.
" --- 4. Foreign Currency Valuation Run ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fcv_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fcv AND j~status = 'F'. " F = Finished
LOOP AT lt_fcv_jobs INTO DATA(ls_fcv_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Foreign Currency Valuation Run'
ENDLOOP.
" --- 5. GR/IR Clearing Run Executed ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_grir_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_grir AND j~status = 'F'.
LOOP AT lt_grir_jobs INTO DATA(ls_grir_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'GR/IR Clearing Run Executed'
ENDLOOP.
" --- 6. Account Reconciliation Started (Inferred) ---
" Note: Inferring this by first run of a report, e.g., FAGLB03. Requires custom logging or complex logic.
" Placeholder: Query a custom log table if available.
" SELECT ... FROM zreco_log ...
" --- 7. Adjusting Journal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_adjust)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_adjst.
LOOP AT lt_adjust INTO DATA(ls_adjust).
" Populate ls_log_entry and append, setting ActivityName = 'Adjusting Journal Entry Posted', JournalEntryType = 'Adjusting'
ENDLOOP.
" --- 8. Reversal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_reversal)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~stblg <> space.
LOOP AT lt_reversal INTO DATA(ls_reversal).
" Populate ls_log_entry and append, setting ActivityName = 'Reversal Entry Posted', JournalEntryType = 'Reversal'
ENDLOOP.
" --- 9. Trial Balance Report Generated (Inferred from Job) ---
" Similar to other jobs, query TBTCO for Trial Balance report programs.
" SELECT ... FROM tbtco ... WHERE jobname LIKE '[Your Trial Balance Program]'.
" --- 10. Financial Statements Generated ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fs_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fs AND j~status = 'F'.
LOOP AT lt_fs_jobs INTO DATA(ls_fs_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Financial Statements Generated'
ENDLOOP.
" --- 11. Reconciliation Reviewed (Inferred) ---
" Note: This activity is almost always managed outside of SAP or in a custom solution.
" Placeholder: Query a custom approval/log table if available.
" SELECT ... FROM zreco_approval ...
" --- 12. Period Closed For Posting ---
" Note: Similar to 'Period Opened', this is very complex. Query change documents for T001B.
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_close)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_close INTO DATA(ls_period_close).
" Further logic needed to parse OBJECTID and check CDPOS for closing a period.
ls_log_entry-ActivityName = 'Period Closed For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" ... Code to display or download the lt_final_log internal table ...
ENDFORMS. Etapas
- Reúna os Pré-requisitos: Obtenha credenciais de acesso apenas de leitura para o banco de dados subjacente do SAP ECC. Identifique o esquema de banco de dados correto, que normalmente é
SAPSR3ou um nome similar fornecido pelo administrador do banco de dados. - Identifique a Configuração do Sistema: Consulte sua equipe de Finanças SAP para determinar os
Códigos de Empresa(BUKRS) e os períodos financeiros específicos que você precisa analisar. Crucialmente, identifique osTipos de Documento(BLART) usados para 'Lançamento de Provisão', 'Lançamento de Ajuste' e transações 'Intercompany' no seu sistema. - Verifique os Nomes de Programas e Jobs: Confirme os nomes dos programas para os principais jobs em lote, como Avaliação de Moeda Estrangeira (ex:
FAGL_FCV), Compensação EM/EF (ex:SAPF124), relatórios de Balancete (ex:RFBILA00) e geração de Demonstrações Financeiras (ex:RFBILA00). Eles podem ser encontrados verificando os jobs agendados na transaçãoSM37. - Customize a Consulta SQL: Copie a consulta SQL fornecida em um editor de texto ou cliente SQL. Substitua as variáveis
{{start_date}},{{end_date}}e{{company_codes}}pelos valores reais para sua análise. Atualize as listas de tipos de documento e nomes de programas com base nas informações coletadas nas etapas anteriores. - Conecte-se ao Banco de Dados: Use uma ferramenta de cliente SQL padrão, como DBeaver, SQL Server Management Studio ou Oracle SQL Developer, para se conectar ao banco de dados SAP usando as credenciais obtidas.
- Execute a Consulta: Execute a consulta SQL customizada no banco de dados. Dependendo do intervalo de datas e do tamanho de suas tabelas financeiras, essa consulta pode levar um tempo considerável para ser concluída.
- Revise os Resultados Iniciais: Quando a consulta terminar, faça uma revisão rápida dos resultados. Verifique se há um número razoável de linhas, se todas as colunas estão presentes e se os diferentes valores de
ActivityNameestão incluídos. - Exporte os Dados: Exporte o conjunto completo de resultados do seu cliente SQL para um arquivo CSV. Certifique-se de salvar o arquivo com codificação UTF-8 para evitar problemas de caracteres.
- Prepare para o Upload: Antes de carregar para a ferramenta de Process Mining, confirme se os cabeçalhos das colunas no arquivo CSV correspondem exatamente aos nomes de atributos exigidos (
FinancialPeriod,ActivityName,EventTime, etc.). Verifique também se a colunaEventTimeestá em um formato de timestamp consistente, comoYYYY-MM-DD HH:MI:SS.
Configuração
- Credenciais do Banco de Dados: É necessário um usuário de banco de dados com acesso apenas de leitura às tabelas centrais de finanças e de sistema do SAP. Isso inclui tabelas como
BKPF,BSEG,TBTCO,CDHDReCDPOS. - Intervalo de Datas: Recomendamos extrair dados de pelo menos 3 a 6 períodos financeiros completos para capturar variações significativas do processo. Esteja ciente de que intervalos de datas maiores aumentarão significativamente o tempo de execução da consulta.
- Códigos de Empresa (
BUKRS): Sempre filtre por uma lista específica de empresas. Executar a consulta para todas as empresas em um sistema de grande porte não é viável e provavelmente causará problemas de performance. - Tipos de Documento (
BLART): A identificação de tipos de lançamento contábil, como provisões e ajustes, depende inteiramente da configuração específica do SAP da sua organização. Você deve fornecer os códigos de tipo de documento corretos nas cláusulasWHEREda consulta para uma classificação precisa das atividades. - Nomes de Programas e Jobs: A consulta usa nomes de programas comuns para etapas de fechamento automatizadas. Seu sistema pode usar programas customizados ou nomes de jobs diferentes. Verifique-os na transação
SM37e atualize a consulta conforme necessário. - Considerações de Performance: Esta consulta acessa tabelas muito grandes, especialmente
BSEGeCDPOS. É altamente recomendável executar esta extração fora do horário comercial para evitar impactos no desempenho do sistema. Aplicar filtros estreitos de data e empresa é a maneira mais eficaz de gerenciar o tempo de execução.
a Consulta de Exemplo sql
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'FRPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'TOPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Accrual' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('SA', '[Your Accrual Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
h.AUGDT AS EventTime, -- Clearing Date
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Clearing' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.AUGDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Intercompany Doc Type]')
AND h.AUGBL IS NOT NULL
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'FAGL_FCV' OR p.PROGNAME = 'SAPF100'
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F' -- Finished
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'SAPF124' -- Program for F.13
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName, -- Proxy event
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('FAGLL03', 'FBL3N') -- Common reconciliation reports
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Adjusting' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Adjusting Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Reversal' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.STBLG IS NOT NULL -- STBLG links to the reversed document
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Trial Balance Report Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('RFSSLD00', 'S_ALR_87012310')
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'RFBILA00' -- Program for F.01
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
-- UNION ALL
-- Note: 'Reconciliation Reviewed' is typically not a standard, logged event in SAP ECC.
-- This activity often happens offline or in a custom tool.
-- The following is a placeholder to be adapted if a custom (Z-table) log exists.
-- SELECT
-- CONCAT(CAST(YEAR(z.REVIEW_DATE) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(z.REVIEW_DATE)), 2)) AS FinancialPeriod,
-- 'Reconciliation Reviewed' AS ActivityName,
-- z.REVIEW_DATE AS EventTime,
-- 'SAP_ECC' AS SourceSystem,
-- CURRENT_TIMESTAMP AS LastDataUpdate,
-- z.BUKRS AS CompanyCode,
-- z.HKONT AS DocumentNumber, -- Using GL Account as a proxy identifier
-- z.REVIEWER_USER AS ResponsibleUser,
-- z.HKONT AS GLAccount,
-- NULL AS DocumentType,
-- NULL AS AmountInLocalCurrency,
-- NULL AS JournalEntryType
-- FROM ZRECON_LOG z -- Replace with your custom table for reconciliation status
-- WHERE z.REVIEW_DATE BETWEEN '{{start_date}}' AND '{{end_date}}'
-- AND z.STATUS = 'Reviewed'
;