GERADOR DE RELATÓRIOS SENIOR HCM: PROJETO PRÁTICO COM HISTÓRICOS, DATAS DE CORTE E QUEBRAS HIERÁRQUICAS
Aprenda a construir relatórios completos no Senior HCM utilizando tabelas de histórico salarial e funcional, filtros por data de corte e agrupamentos hierárquicos com quebras.
GERADOR DE RELATÓRIOS SENIOR HCM: PROJETO PRÁTICO COM HISTÓRICOS, DATAS DE CORTE E QUEBRAS HIERÁRQUICAS
A elaboração de relatórios corporativos no Senior HCM frequentemente demanda mais do que a leitura de dados cadastrais vigentes. Em auditorias, análises de folha e acompanhamentos sindicais, a extração de históricos de cargos, salários e movimentações organizacionais torna-se imprescindível para garantir conformidade e precisão analítica.
Trabalhar com dados históricos impõe desafios técnicos específicos, como o correto encadeamento de tabelas temporais, a aplicação de regras de corte por data de referência e a parametrização de quebras por estruturas de organograma. Um relacionamento configurado incorretamente pode exibir dados atuais no lugar de informações pretéritas ou duplicar registros desnecessariamente.
Neste artigo, será abordada a construção prática de relatórios completos no Gerador de Relatórios, cobrindo o uso de tabelas de histórico salarial e funcional, aplicação de filtros temporais via programação, inserção de variáveis de tela e configuração de quebras multiníveis com subtotais.
ARQUITETURA DE TABELAS HISTÓRICAS NO SENIOR HCM
A base de dados do módulo de Recursos Humanos separa registros cadastrais ativos das tabelas que mantêm o histórico de alterações contratuais. Compreender essa divisão é essencial para desenhar relacionamentos consistentes e extrair o dado desejado.
Principais tabelas envolvidas em relatórios funcionais:
- R034FUN: tabela mestre do contrato do colaborador, contendo identificação, matrícula e vínculos ativos.
- R038HSA: histórico de alterações salariais, guardando motivos de aumento, datas de vigência e novos valores.
- R038HCA: histórico de cargos do colaborador ao longo do tempo.
- R024CAR: cadastro dos cargos, onde constam as descrições e títulos formais.
- R038HLO: histórico de locais e postos de trabalho associados ao colaborador.
- R016ORN: estrutura dos organogramas corporativos e descrições dos departamentos.
A correta correlação entre essas tabelas impede anomalias comuns, como apresentar o salário de uma data passada associado à descrição do cargo recém-promovido.
EVOLUÇÃO HISTÓRICA COMPLETA VERSUS FOTO NA DATA DE CORTE
Existem duas abordagens analíticas ao trabalhar com históricos: listar toda a cronologia de movimentações do colaborador ou capturar a posição exata em uma data de referência específica.
Diferenças metodológicas de cada abordagem:
- Relatório de linha do tempo: exibe todos os aumentos, alterações de cargo ou transferências desde a admissão até o presente.
- Relatório pontual (data de corte): identifica exclusivamente o último cargo e salário vigentes até uma data informada pelo usuário.
- Complexidade de relacionamento: a listagem cronológica dispensa regras lógicas complexas de busca do último registro.
- Complexidade por data: exige o tratamento do registro com a maior data válida que seja menor ou igual à referência.
A definição entre uma abordagem ou outra deve preceder o desenho do modelo, pois orienta diretamente a necessidade de códigos em regras de seção.
RELACIONAMENTOS ENTRE TABELAS HISTÓRICAS E CADASTRAIS
Um erro comum no desenvolvimento de relatórios consiste em ligar tabelas complementares, como cargos ou centros de custos, diretamente à tabela de colaboradores quando se analisa um período histórico.
Boas práticas de relacionamento no modelo:
- Vínculo pela tabela de histórico: a tabela de cargos R024CAR deve ser associada à R038HCA, preservando o código ocupado na época.
- Prevenção de anacronismo: vincular R024CAR diretamente à R034FUN fará com que o cargo impresso seja sempre o atual, ignorando o contexto histórico.
- Chaves de ligação compostas: relacionamentos históricos exigem atenção ao número da empresa, tipo de colaborador e data do evento.
A consolidação correta das junções no editor de leiaute assegura que cada alteração salarial reflita fielmente o cargo exercido naquele momento.
FILTRO POR DATA DE REFERÊNCIA COM FUNÇÕES DE SISTEMA
Para relatórios que necessitam retornar o estado dos colaboradores em determinado dia, o Senior HCM disponibiliza funções especializadas que constroem filtros SQL em tempo de execução.
Mecanismos utilizados no controle temporal:
- MontaSqlHistorico: função nativa encarregada de filtrar a data máxima válida para determinada tabela de histórico até a data de corte.
- InsClausula: procedimento que injeta a condição SQL montada diretamente na seção de detalhe do relatório.
- Variável de data de corte: definição de um parâmetro de tela para que o operador defina o período analítico sem alterar o fonte.
- Tratamento de parâmetros nulos: validação para preencher a data atual do sistema caso o usuário deixe a entrada em branco.
Essa técnica dinamiza a emissão de relatórios retroativos, atendendo a demandas periciais e fechamentos contábeis de meses anteriores.
CUSTOMIZAÇÃO DE CABEÇALHOS E TÍTULOS VIA PARÂMETROS DE ENTRADA
A flexibilização das telas de entrada permite que o próprio usuário insira anotações e títulos contextuais na impressão do documento, sem depender de alterações no modelo.
Implementação de parâmetros descritivos:
- Criação de variáveis alfanuméricas: definição de campos do tipo caractere na tela de entrada para capturar textos livres.
- Inclusão no cabeçalho da página: posicionamento da variável no cabeçalho para exibir anotações de auditoria ou finalidade da emissão.
- Cancelamento condicional: configuração da propriedade de cancelamento da linha caso a variável não contenha dados digitados.
A inclusão desse tipo de controle melhora a experiência do usuário final e amplia o reuso de um único relatório para múltiplos propósitos.
CONFIGURAÇÃO DE QUEBRAS E TOTAIS POR ORGANOGRAMA
Relatórios agrupados por localidade ou departamento exigem a criação de quebras de página ou seções estruturais com base nos níveis do organograma corporativo.
Elementos fundamentais para segmentação de níveis:
- Seções de subtítulo e subtotal: bandas dedicadas a abrir a identificação do setor e fechar a contagem dos colaboradores alocados.
- Campos especiais de quebra: recursos como EspQbr e EspTot para parametrizar quais níveis de hierarquia disparam os agrupamentos.
- Cancelamento de subtotais desnecessários: regras que omitem quebras vazias quando o nível apurado não possui relevância analítica.
O domínio dessas estruturas viabiliza demonstrativos com subtotais por gerência, diretoria e filial em um fluxo ordenado.
DIAGNÓSTICO E CORREÇÃO DE PROBLEMAS DE ORDENAÇÃO
O sintoma de repetição de registros ou quebras que disparam de forma errática quase sempre decorre de divergências entre a ordem de leitura das tabelas e as quebras declaradas.
Diretrizes de ordenação para relatórios hierárquicos:
- Correspondência estrita: os campos configurados nas quebras devem constar nos primeiros níveis da lista de ordenação da seção.
- Posição hierárquica das chaves: a ordem de ordenação deve seguir a precedência correta, como empresa, estrutura de local e matrícula.
- Prevenção de duplicidade: campos de ordenação secundários incorretos podem fragmentar um colaborador em múltiplos blocos isolados.
Revisar criticamente a janela de ordenação reduz retrabalhos e soluciona a maioria das discrepâncias visuais em modelos agrupados.
Veja como esse conteúdo foi abordado na aula:
EXEMPLO PRÁTICO: CONSTRUÇÃO DE RELATÓRIO HISTÓRICO COM QUEBRA POR LOCAL
Acompanhe o passo a passo para criar um relatório que emita o histórico funcional e salarial dos colaboradores agrupado por organograma:
1. Acesse o Gerador de Relatórios e crie um novo modelo informando um código acima de 100 na categoria operacional.
2. Configure as seções estruturais do modelo: Cabeçalho da Página, Subtítulo 1, Detalhe 1, Subtotal 1 e Rodapé da Página.
3. Na tela de definição de tabelas do Detalhe 1, inclua R034FUN como base principal do colaborador.
4. Adicione as tabelas históricas R038HSA para salários, R038HCA para cargos e R038HLO para locais de trabalho.
5. Adicione a tabela cadastral de cargos R024CAR e relacione-a com a tabela R038HCA pelo código de cargo, garantindo integridade temporal.
6. Crie na tela de entrada a variável alfanumérica ECab para permitir anotações de cabeçalho e a variável EDatRef para a data de referência.
7. Na regra associada à seção Detalhe 1, utilize a função MontaSqlHistorico apontando para a data informada e aplique com InsClausula.
8. Configure a seção Subtítulo 1 vinculada ao campo de organograma da tabela R016ORN para exibir o nome do departamento.
9. Acesse a janela de ordenação e posicione o local de trabalho antes da matrícula do colaborador para garantir quebras ordenadas.
10. No Subtotal 1, insira os acumuladores de quantidade de colaboradores e somatório de salários por departamento.
11. Execute a pré-visualização informando uma data de referência e valide se os registros aparecem agrupados corretamente sem duplicidades.
CONSIDERAÇÕES FINAIS
A construção de relatórios no Senior HCM envolvendo dados históricos exige uma compreensão sólida tanto do modelo de dados quanto da lógica de execução das seções. Diferenciar a extração cronológica contínua da leitura pontual por data de corte é o primeiro passo para o sucesso do projeto.
A aplicação correta das funções internas de histórico e a amarração precisa das quebras por organograma transformam dados dispersos em visões analíticas de alto valor para a gestão de recursos humanos.
Por fim, a atenção rigorosa à ordem de leitura e relacionamentos entre tabelas garante que as entregas operacionais sejam estáveis, precisas e alinhadas às necessidades de governança da empresa.
