Seu Template de Dados da Folha
Seu Template de Dados da Folha
- Campos estratégicos para análise da folha
- Marcos principais para a descoberta do processo
- Guia de extração específica do sistema
Atributos de Processamento de Folha
| Nome | Descrição | ||
|---|---|---|---|
| Atividade Activity | Tarefa ou evento específico no processo de folha. | ||
| Descrição Captura o nome da etapa executada, como 'Horas Enviadas', 'Simulação Executada' ou 'Pagamento Realizado'. É a base do mapa de processos, permitindo visualizar a sequência de operações. Os dados vêm de logs de Workflow (SWWLOGHIST), histórico de Infotipos (CDHDR/CDPOS) e tabelas de status. Usamos convenções de nomenclatura para que códigos técnicos se transformem em nomes de atividades fáceis de entender. Por que é importante Define os nós no gráfico do processo, permitindo a visualização de fluxos, loops e variantes. Onde obter Derivado de mudanças de status em SWWLOGHIST (Workflow), CDHDR (Documentos de Alteração) ou PA03 (Registro de Controle). Exemplos Apontamento de Horas EnviadoSalário Bruto CalculadoExceção de Auditoria IdentificadaPagamento Executado | |||
| Event Timestamp EventTimestamp | A data e hora exatas em que a atividade ocorreu. | ||
| Descrição Registra o momento exato do evento (data e hora). Fundamental para calcular métricas de tempo, como tempos de ciclo e produtividade entre etapas. No SAP ECP, vem de campos como Por que é importante Permite o cálculo da duração entre eventos, o que é essencial para identificar gargalos de desempenho e violações de SLA. Onde obter CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT ou timestamps específicos de logs de auditoria. Exemplos 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| Registro de Folha PayrollRecord | Identificador único que combina funcionário e período. | ||
| Descrição O Registro da Folha é o identificador central (ID de caso) para a análise. Representa uma única execução para um funcionário em um período específico, ligando o envio de horas ao fechamento fiscal. No SAP SuccessFactors EC Payroll, ele é formado pela combinação de Matrícula (PERNR), Ano (PABRJ), Período (PABRP) e, às vezes, um número de sequência (SEQNR). Essa granularidade permite analisar cada ciclo de pagamento como uma instância única, garantindo precisão no cálculo de tempos e rastreio de erros. Por que é importante Serve como o Case ID, agrupando todos os eventos relevantes para reconstruir o caminho do processo ponta a ponta para cada pagamento emitido. Onde obter Construído a partir do SAP Cluster B2 (Resultados de Avaliação de Tempos) ou tabelas PC_PAYRESULT (PERNR, PABRJ, PABRP, SEQNR). Exemplos 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| Sistema de Origem SourceSystem | Sistema de origem dos dados do evento. | ||
| Descrição Identifica a instância específica do SAP SuccessFactors EC Payroll de onde os dados vieram. Em ambientes complexos com vários sistemas, garante a rastreabilidade. Útil para comparar performance entre regiões ou entre sistemas legados e migrados. Geralmente é um texto fixo definido na configuração da extração. Por que é importante Permite a segmentação de dados em ambientes multi-sistemas e ajuda a resolver problemas de qualidade de dados identificando a origem. Onde obter ID do Sistema (SID) da instalação SAP ou configuração de extração. Exemplos SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| Última Atualização de Dados LastDataUpdate | O timestamp da extração de dados mais recente. | ||
| Descrição Indica quando o registro foi atualizado no modelo de Process Mining. Ajuda a entender a atualidade dos dados e garante insights baseados em informações recentes. Essencial para governança e validação, garantindo que o dashboard reflita o estado atual do sistema de folha. Por que é importante Garante que os usuários estejam cientes da latência dos dados e ajuda a validar se as métricas reportadas estão atualizadas. Onde obter Gerado pelo script de ETL / extração em tempo de execução. Exemplos 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| Área de Folha de Pagamento PayrollArea | Define o grupo de folha de pagamento específico ao qual um funcionário pertence. | ||
| Descrição A Área de Folha agrupa funcionários processados juntos, geralmente por frequência (ex: mensal vs quinzenal). Esse atributo é vital para comparar performance entre diferentes grupos de funcionários. No SAP, corresponde ao campo técnico Por que é importante Permite a comparação do desempenho do ciclo de folha entre diferentes grupos (ex: Horistas vs. Mensalistas). Onde obter Tabela PA0001 (Atribuição Organizacional), campo ABKRS. Exemplos Quinzenal (EUA)DE MensalFolha de Executivos | |||
| Centro de Custo CostCenter | Centro de custo associado ao funcionário. | ||
| Descrição O Centro de Custo representa a unidade financeira onde os custos do funcionário são alocados. Ele funciona como um indicador de departamento no dashboard de 'Gargalos na Aprovação de Horas', ajudando a identificar quais áreas atrasam o ciclo. Encontrado no infotipo de Atribuição Organizacional (PA0001) como campo Por que é importante Permite o detalhamento organizacional para identificar departamentos específicos que causam atrasos ou retrabalho. Onde obter Tabela PA0001, campo KOSTL. Exemplos CC-1000 FinanceCC-2000 ITCC-3000 Sales | |||
| É Automatizado IsAutomated | Sinalização indicando se a atividade foi realizada por um usuário do sistema. | ||
| Descrição Atributo booleano que identifica se a etapa foi feita por um job de fundo (sistema) ou por um humano. Vital para o monitor de automação bancária para calcular o processamento 'touchless'. Derivado da verificação do ID do Usuário contra contas de sistema conhecidas (ex: 'BATCH', 'SAP_WORKFLOW'). Por que é importante Ajuda a medir as taxas de automação e a identificar oportunidades para reduzir o esforço manual. Onde obter Derivado do ID de Usuário (ex: se Usuário em ['BATCH', 'SYSTEM'], então verdadeiro). Exemplos verdadeirofalse | |||
| Especialista de Folha de Pagamento PayrollSpecialist | ID ou nome de quem processa o registro. | ||
| Descrição Este atributo identifica o administrador ou especialista responsável por etapas manuais ou aprovações. É essencial para o dashboard de 'Produtividade e Carga de Trabalho', permitindo analisar a distribuição de tarefas. Extraído do campo Por que é importante É essencial para o equilíbrio da carga de trabalho e identificação de gargalos humanos no processo. Onde obter Campos de sistema (SY-UNAME) no CDHDR ou ID do Ator do Workflow. Exemplos JSMITHKMILLERSISTEMA | |||
| Frequência do Ciclo de Pagamento PayCycleFrequency | Indica se a execução é regular ou off-cycle. | ||
| Descrição Diferencia execuções agendadas de execuções 'off-cycle' (ajustes ou pagamentos imediatos). Muitos off-cycles indicam ineficiência, monitorada no dashboard de 'Volume de Pagamentos Off-Cycle'. Derivado dos campos de Motivo de Off-Cycle ( Por que é importante É crítico para medir o KPI de 'Taxa de Pagamentos Off-Cycle' e focar na redução de processamentos não padronizados. Onde obter Tabela RGDIR (Diretório de Cluster), campo OCRSN ou PAYTY. Exemplos RegularCorreção APagamento de BônusRescisão | |||
| Período de Pagamento PayPeriod | Número do período específico dentro do ano fiscal. | ||
| Descrição Indica o número sequencial do período (ex: 01 para Janeiro). Permite acompanhar tendências e sazonalidades na carga de trabalho. Extraído do campo Por que é importante Permite a análise de tendências e a identificação de gargalos sazonais em épocas específicas do ano. Onde obter Tabela PA0001 ou Cluster de Resultados (RGDIR), campo PABRP. Exemplos 01122652 | |||
| Tipo de colaborador EmployeeType | Classificação do funcionário (ex: Permanente, Terceirizado). | ||
| Descrição Categoriza os funcionários pelo tipo de vínculo (ativo, aposentado, prestador). A complexidade do processamento costuma variar por tipo, com alguns grupos exigindo mais intervenções manuais. Fonte técnica: campos de Grupo de Empregados ( Por que é importante Ajuda a identificar se as variações ou atrasos no processo são específicos de certas categorias de emprego. Onde obter Tabela PA0001, campos PERSG (Grupo) e PERSK (Subgrupo). Exemplos Funcionário AtivoEstagiário/TraineeAposentadoTerceirizado por Hora | |||
| Valor do Salário Bruto GrossPayAmount | Total bruto calculado para o registro. | ||
| Descrição Representa o valor bruto total antes das deduções. É uma métrica base para validação financeira e para correlacionar pagamentos altos a uma auditoria mais rigorosa ou prazos de aprovação maiores. Extraído da tabela de resultados (RT), geralmente sob wage types de total bruto (ex: /101). Suporta a análise de precisão de cálculos fiscais. Por que é importante Permite a análise do comportamento do processo com base no valor do pagamento (ex: pagamentos maiores demoram mais para serem aprovados?). Onde obter Tabela de Resultados da Folha (RT), Wage Type /101 ou similar. Exemplos 5000.002500,5010500.00 | |||
| Alerta de Exceção de Auditoria AuditExceptionFlag | Sinalização indicando se ocorreu uma exceção de auditoria. | ||
| Descrição Sinaliza casos onde regras de validação geraram exceções ou avisos no cálculo. É a entrada principal para o KPI de 'Frequência de Exceções de Auditoria'. Vem dos logs da folha ou tabelas de erro (FEHLER). Um valor verdadeiro indica que o processo teve que passar por um caminho de tratamento de exceção. Por que é importante Destaca problemas de qualidade de dados e a necessidade de intervenção manual. Onde obter Derivado da presença de mensagens de erro no log de folha ou códigos de status específicos. Exemplos verdadeirofalse | |||
| Contagem de Retrabalho ReworkCount | Quantas vezes uma correção foi realizada. | ||
| Descrição Conta quantas vezes a atividade 'Correção de Dados Realizada' aparece no histórico. É uma medida direta de ineficiência e alimenta o dashboard de 'Taxas de Correção Manual e Retrabalho'. Números altos indicam problemas persistentes de qualidade de dados ou casos complexos que não passam na validação inicial. Por que é importante Quantifica o esforço perdido na correção de erros e ajuda a justificar iniciativas de qualidade de dados. Onde obter Calculado contando as atividades 'Data Correction Performed' por CaseId. Exemplos 013 | |||
| Entidade Jurídica LegalEntity | Código da empresa ou entidade legal do funcionário. | ||
| Descrição Identifica a entidade legal (Empresa) do registro. Permite relatórios financeiros e análise de performance entre diferentes subsidiárias. Extraído do campo Por que é importante Suporta o benchmarking entre empresas e a análise de alocação financeira. Onde obter Tabela PA0001, campo BUKRS. Exemplos US01DE011000 | |||
| Jurisdição Fiscal TaxJurisdiction | Região ou autoridade fiscal do funcionário. | ||
| Descrição Identifica a autoridade ou região fiscal (Estado, Província) do registro. Vital para o dashboard de 'Risco de Conformidade' para mapear problemas geograficamente. No SAP EUA, é o campo Por que é importante Permite a segmentação de riscos de conformidade e exceções de auditoria por região regulatória. Onde obter Tabela PA0001 ou PA0207/PA0208, campo TXJCD. Exemplos CANYTXNRW | |||
| Prazo de Processamento de SLA SLAProcessingDeadline | Timestamp alvo para concluir a execução da folha. | ||
| Descrição Representa o prazo limite para finalizar a folha e garantir o pagamento em dia. Usado no KPI de 'Taxa de Conformidade de SLA' comparando com o timestamp de 'Pagamento Realizado'. Pode vir de tabelas customizadas ou ser definido pelo calendário da folha (ex: 2 dias antes do pagamento). No modelo de dados, costuma ser a Data de Pagamento menos uma margem de segurança. Por que é importante Fornece o benchmark para avaliar a pontualidade e o cumprimento do SLA. Onde obter Derivado da Data de Pagamento (T549S) menos os dias de processamento configurados. Exemplos 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
| Tempo de Ciclo (Dias) CycleTimeDays | Duração total do processo de folha em dias. | ||
| Descrição Mede o tempo entre o início (ex: Horas Enviadas) e o fim do processo (ex: Pagamento Realizado). Dá uma visão geral da velocidade e alimenta o dashboard de 'Duração Total do Ciclo'. Calculado como a diferença entre o primeiro e o último timestamp de cada caso. Por que é importante É a métrica principal para avaliar a eficiência e velocidade geral do processo. Onde obter Calculado: Hora de Término - Hora de Início do caso. Exemplos 5.52.010.1 | |||
Atividades de Processamento de Folha
| Atividade | Descrição | ||
|---|---|---|---|
| Apontamento de Horas Aprovado | Aprovação formal das horas pelo gestor. Valida os dados para transferência para o motor da folha. | ||
| Por que é importante Calcula o KPI de Lead Time de Aprovação do Time Sheet. Gargalos aqui indicam atrasos gerenciais ou hierarquias de aprovação complexas. Onde obter Tabelas de Solicitação de Workflow do Employee Central (WfRequest), filtrando pelos status COMPLETED ou APPROVED. Captura Registrado quando o status do workflow muda para APPROVED Tipo de evento explicit | |||
| Apontamento de Horas Enviado | Evento onde o funcionário ou gestor envia os dados de horas do período. Capturado dos logs de workflow no Employee Central. | ||
| Por que é importante Marca o início da fase de acúmulo de dados. Atrasos aqui geram um efeito cascata, reduzindo a janela de processamento da folha. Onde obter Tabelas de Solicitação de Workflow do Employee Central (WfRequest), filtrando pelas categorias Time Sheet ou Time Off. Captura Registrado quando o status do workflow muda para SUBMITTED Tipo de evento explicit | |||
| Arquivo de Transferência Bancária Gerado | Criação do DME (Data Medium Exchange) preliminar ou final. Gera as instruções de pagamento para o banco. | ||
| Por que é importante Rastreia a automação de transferências bancárias. Falhas na geração de arquivos são paradas críticas. Onde obter Logs da execução do DME / Payment Medium Workbench (PMW), geralmente armazenados no TemSe ou em tabelas específicas de execução de pagamento (ReguH/ReguP). Captura Registrado quando a execução de pagamento (F110/RPCIPE) gera o arquivo de saída Tipo de evento explicit | |||
| Envio de Impostos Concluído | Geração de arquivos do tax reporter (ex: PU19) ou transferência para provedor externo. | ||
| Por que é importante Garante a conformidade regulatória. Rastreia a etapa final de conformidade na sequência. Onde obter Logs do Tax Reporter Log Manager ou B2A indicando geração de arquivo bem-sucedida. Captura Registrado quando a execução do Tax Reporter é concluída com sucesso Tipo de evento explicit | |||
| Pagamento Executado | Finalização do pagamento, geralmente confirmada pelo banco ou pela conclusão da execução F110. | ||
| Por que é importante Timestamp final principal para a Taxa de Conformidade de SLA. Determina se o pagamento foi pontual. Onde obter Tabelas de Execução de Pagamento (REGUH) Data e Hora, ou inferido pela Data Base. Captura Registrado quando o status da Execução de Pagamento é definido como Lançado/Concluído Tipo de evento explicit | |||
| Processo de Folha Inicializado | Criação de uma instância de processo no Payroll Control Center (PCC). Marca o início oficial do ciclo para uma área de folha específica. | ||
| Por que é importante Define a linha de base para a duração total do ciclo (ponta a ponta). Define o escopo de funcionários. Onde obter Tabelas do Payroll Control Center (ex: PYC_D_PY_PROC_INST), rastreando a criação de um novo ID de processo. Captura Registrado quando a Instância de Processo do PCC é criada Tipo de evento explicit | |||
| Registro de Folha Aprovado | Encerramento (sign-off) formal dos resultados da folha. Ocorre na etapa de 'Monitoramento' ou 'Sign Off' do PCC. | ||
| Por que é importante Marca o fim da fase de cálculo/validação e a liberação para pagamento. Crucial para análise de produtividade do especialista. Onde obter Logs de Instância de Etapa do Payroll Control Center (PYC_D_STEP_INST) para a etapa de Aprovação ou Confirmação. Captura Registrado quando o status da Etapa de Aprovação do PCC muda para COMPLETED Tipo de evento explicit | |||
| Salário Bruto Calculado | Execução bem-sucedida do cálculo bruto. No processamento padrão, ocorre quando o driver escreve no cluster PCL2. | ||
| Por que é importante Um marco importante que indica que os dados de tempo e as taxas foram combinados com sucesso. Atrasos aqui impactam a Eficiência do Processamento do Bruto ao Líquido. Onde obter Cluster PCL2 (Resultados de Folha), especificamente o timestamp da tabela de diretório (RGDIR) para o 'Período de Referência'. Captura Registrado quando um novo número de sequência é gravado no cluster de folha Tipo de evento explicit | |||
| Simulação da Folha Executada | Uma execução de teste do motor de folha para identificar erros sem gravar os resultados no banco de dados. Esta é uma etapa fundamental na fase de validação do PCC. | ||
| Por que é importante Essencial para calcular a Taxa de Cálculo de Primeira Passagem. Simulações repetidas indicam problemas de qualidade de dados. Onde obter Logs de Instância de Etapa do Payroll Control Center (PYC_D_STEP_INST) onde o tipo de etapa corresponde a Simulação. Captura Registrado quando o status da Etapa de Simulação do PCC muda para COMPLETED Tipo de evento explicit | |||
| Correção de Dados Realizada | Alterações feitas em dados mestres ou dados de tempo em resposta a uma exceção de auditoria. Isso representa o retrabalho necessário para limpar um alerta de folha. | ||
| Por que é importante Rastreia taxas de retrabalho e correção manual. Esta é a principal atividade que gera ineficiência no processo. Onde obter Inferido pela união dos timestamps de Alerta do PCC com as alterações subsequentes no Log de Auditoria (PCL4) para o mesmo funcionário antes do fechamento do alerta. Captura Identificar atualizações de dados mestres que ocorrem enquanto um alerta do PCC está ativo Tipo de evento inferred | |||
| Dados de Incentivos Importados | Ingestão de dados de pagamento não padrão (bônus, comissões). Geralmente via Infotipos 0015 ou 2010. | ||
| Por que é importante Importações atrasadas impedem cálculos precisos de salário bruto. Analisar isso ajuda a otimizar o Lead Time de Integração de Dados de Incentivo. Onde obter Log de Auditoria (PCL4 ou equivalente) mostrando a criação de registros no Infotipo 0015 (Pagamentos Adicionais) ou 2010 (Informações de Remuneração). Captura Comparar timestamps de criação de infotipos com logs de jobs de importação Tipo de evento inferred | |||
| Deduções de Benefícios Aplicadas | Etapa específica do esquema onde a lógica de benefícios é processada. Isolar isso ajuda a identificar erros de configuração. | ||
| Por que é importante Suporta a análise de precisão de cálculos de impostos e benefícios. Útil para debugar discrepâncias lógicas complexas. Onde obter Inferido pela existência da divisão V0 nos resultados da folha ou entradas de log específicas se o log detalhado estiver ativado (raro em produção). Captura Coincide com 'Gross Pay Calculated', mas é conceitualmente distinto para fins de análise Tipo de evento inferred | |||
| Exceção de Auditoria Identificada | Geração de alerta de validação pelas políticas do PCC. Identifica inconsistências ou riscos de conformidade. | ||
| Por que é importante Suporta diretamente os Dashboards de Frequência de Exceção de Auditoria e Risco de Conformidade. Volumes altos sugerem problemas de qualidade de dados na origem. Onde obter Tabelas de Alerta do Payroll Control Center (PYC_D_ALERT), vinculando códigos de erro ao registro do funcionário. Captura Registrado quando uma nova entrada é criada na tabela de Alertas do PCC Tipo de evento explicit | |||
| Holerite Publicado | Ato de disponibilizar o holerite para o colaborador via Autoatendimento (ESS). | ||
| Por que é importante Mede a performance do SLA de entrega do holerite. Atrasos nesta etapa geram chamados no suporte. Onde obter Inferido a partir da 'Data de Impressão' ou configuração da data de disponibilidade nos logs do serviço de mashup de holerites. Captura Calcular com base na Data de Pagamento + atraso de Configuração do Sistema Tipo de evento inferred | |||
Guias de Extração
Etapas
- Identifique a área de folha de pagamento alvo e os parâmetros de período para a extração. Você extrairá dados principalmente das tabelas do Payroll Control Center (PCC) (PYC_*) e do diretório do cluster de folha (HRPY_RGDIR).
- Inicie seu cliente SQL ou SAP HANA Studio conectado ao esquema de backend do SAP SuccessFactors Employee Central Payroll (ECP).
- Execute o script de extração de dados fornecido na seção de Consulta. Este script agrega dados de tabelas de dados mestres, resultados de folha e logs de auditoria do PCC.
- Mapeie as atividades 'Time Sheet Submitted' e 'Time Sheet Approved'. Como o ECP costuma receber esses dados do Employee Central, utilize os timestamps de criação e última modificação na tabela PA2001 ou nas tabelas de interface de tempo especializadas, como a PTREQ_HEADER, se disponíveis.
- Extraia 'Incentive Data Imported' consultando os Infotipos 0015 (Pagamentos Adicionais) e 2010 (Informações de Remuneração) para registros criados dentro do período de pagamento alvo.
- Recupere as etapas do processo do PCC das tabelas PYC_D_PYP (Instâncias de Processo) e PYC_D_BINST (Instâncias de Etapa) para capturar 'Payroll Process Initialized', 'Payroll Simulation Executed', 'Payroll Record Approved' e 'Pay Slip Published'.
- Consulte a tabela PYC_D_ALERT para identificar eventos de 'Audit Exception Flagged'. Esses registros vinculam funcionários específicos a erros de validação encontrados durante as etapas de verificação do PCC.
- Gere eventos de 'Data Correction Performed' unindo a tabela de Cabeçalho de Documento de Alteração do SAP (CDHDR) com os Infotipos relevantes da folha (ex: 0008, 0015, 2001) durante a janela ativa de folha.
- Utilize a tabela HRPY_RGDIR para identificar o momento exato de 'Gross Pay Calculated'. Crie um evento derivado para 'Benefit Deductions Applied' utilizando o mesmo timestamp, já que ocorrem simultaneamente durante a execução do esquema.
- Vincule os dados financeiros das tabelas REGUH (Dados de Liquidação) e REGUT (Administração de DME) para capturar 'Bank Transfer File Generated' e 'Payment Executed'.
- Transforme a coluna 'PayrollRecord' para seguir rigorosamente o formato [IDFuncionário]-[Período]-[Ano] para garantir a exclusividade do ID do caso.
- Exporte o conjunto de dados final como um arquivo CSV, garantindo que os cabeçalhos correspondam aos atributos definidos no contrato, e faça o upload para o ProcessMind.
Configuração
- Período: Configure a extração para cobrir uma janela móvel dos últimos 6 a 12 meses. Os processos de folha de pagamento são cíclicos, e esse intervalo captura variações suficientes em execuções regulares e off-cycle.
- Área de Folha (ABKRS): Filtre por áreas de folha específicas (ex: Mensal BR, Semanal DE) para garantir que a análise compare ciclos de processos semelhantes.
- Idioma: Certifique-se de que as descrições de Atividades e Etapas do Processo sejam extraídas no idioma principal do sistema (ex: SPRAS = 'P').
- IDs de Processo do PCC: Identifique os IDs de Definição de Processo (PYP_ID) específicos usados na sua configuração do PCC para 'Monitoramento', 'Produção' e 'Off-Cycle' para filtrar as etapas relevantes.
- Moeda: Normalize os valores financeiros (GrossPayAmount) para uma única moeda caso esteja extraindo dados de operações globais de folha.
- Autorização: O usuário do banco de dados precisa de acesso de leitura às tabelas de Recursos Humanos (PA/PY) e, especificamente, ao Diretório de Cluster (HRPY_RGDIR) e às Tabelas do PCC (PYC_*).
a Consulta de Exemplo config
/* Activity 1: Time Sheet Submitted */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Submitted' AS Activity,
T.BEGDA AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 2: Time Sheet Approved */
SELECT
CONCAT(T.PERNR, CONCAT('-', T.PABRJ, T.PABRP)) AS PayrollRecord,
'Time Sheet Approved' AS Activity,
T.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
T.PABRP AS PayPeriod,
CASE WHEN T.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'False' AS IsAutomated
FROM PA2001 AS T
LEFT JOIN PA0001 AS O ON T.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 3: Incentive Data Imported */
SELECT
CONCAT(I.PERNR, CONCAT('-', I.PABRJ, I.PABRP)) AS PayrollRecord,
'Incentive Data Imported' AS Activity,
I.AEDTM AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
I.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
I.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
I.BETRG AS GrossPayAmount,
I.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM PA0015 AS I
LEFT JOIN PA0001 AS O ON I.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE I.AEDTM BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 4: Payroll Process Initialized */
SELECT
CONCAT('N/A', CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payroll Process Initialized' AS Activity,
P.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
P.CREATED_BY AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_PYP AS P
WHERE P.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 5: Payroll Simulation Executed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Simulation Executed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Simulate%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 6: Audit Exception Flagged */
SELECT
CONCAT(A.RO_ID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Audit Exception Flagged' AS Activity,
A.CREATED_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
'SYSTEM' AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_ALERT AS A
JOIN PYC_D_PYP AS P ON A.PYP_ID = P.ID
WHERE A.CREATED_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 7: Data Correction Performed */
SELECT
CONCAT(C.OBJECTID, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Data Correction Performed' AS Activity,
TO_TIMESTAMP(CONCAT(C.UDATE, C.UTIME)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
C.USERNAME AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM CDHDR AS C
JOIN HRPY_RGDIR AS P ON C.OBJECTID = P.PERNR
WHERE C.TCODE IN ('PA30', 'PA40') AND C.UDATE BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 8: Gross Pay Calculated */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Gross Pay Calculated' AS Activity,
TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 9: Benefit Deductions Applied */
SELECT
CONCAT(R.PERNR, CONCAT('-', R.PABRJ, R.PABRP)) AS PayrollRecord,
'Benefit Deductions Applied' AS Activity,
ADD_SECONDS(TO_TIMESTAMP(CONCAT(R.RUNDT, R.RUNTM)), 1) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
R.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
R.PABRP AS PayPeriod,
CASE WHEN R.PABRP LIKE '9%' THEN 'Off-Cycle' ELSE 'Regular' END AS PayCycleFrequency,
0.00 AS GrossPayAmount,
R.UNAME AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM HRPY_RGDIR AS R
LEFT JOIN PA0001 AS O ON R.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE R.RUNDT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 10: Payroll Record Approved */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Payroll Record Approved' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'False' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Check%' AND S.STATUS = 'OK' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 11: Bank Transfer File Generated */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Bank Transfer File Generated' AS Activity,
TO_TIMESTAMP(CONCAT(T.TSDAT, T.TSTIM)) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
T.USRID AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUT AS T
JOIN REGUH AS H ON T.LAUFD = H.LAUFD AND T.LAUFI = H.LAUFI
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE T.TSDAT BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 12: Payment Executed */
SELECT
CONCAT(P.PERNR, CONCAT('-', P.PABRJ, P.PABRP)) AS PayrollRecord,
'Payment Executed' AS Activity,
TO_TIMESTAMP(CONCAT(H.LAUFD, '120000')) AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
P.ABKRS AS PayrollArea,
'Permanent' AS EmployeeType,
P.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
H.RBETR AS GrossPayAmount,
H.ZNME1 AS PayrollSpecialist,
O.KOSTL AS CostCenter,
'True' AS IsAutomated
FROM REGUH AS H
JOIN HRPY_RGDIR AS P ON H.PERNR = P.PERNR
LEFT JOIN PA0001 AS O ON P.PERNR = O.PERNR AND O.ENDDA = '99991231'
WHERE H.LAUFD BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 13: Pay Slip Published */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Pay Slip Published' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Remuneration%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]'
UNION ALL
/* Activity 14: Tax Filing Completed */
SELECT
CONCAT('N/A', CONCAT('-', S.PABRJ, S.PABRP)) AS PayrollRecord,
'Tax Filing Completed' AS Activity,
S.END_TS AS EventTimestamp,
'SAP_ECP' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
'ALL' AS PayrollArea,
NULL AS EmployeeType,
S.PABRP AS PayPeriod,
'Regular' AS PayCycleFrequency,
0.00 AS GrossPayAmount,
S.EXEC_USER AS PayrollSpecialist,
NULL AS CostCenter,
'True' AS IsAutomated
FROM PYC_D_BINST AS S
JOIN PYC_D_STEP AS D ON S.STEP_ID = D.ID
WHERE D.NAME LIKE '%Tax%' AND S.END_TS BETWEEN '[START_DATE]' AND '[END_DATE]' Etapas
- Acesse o Editor ABAP: Faça login no seu sistema SAP SuccessFactors Employee Central Payroll (ECP) via SAP GUI. Vá até o código de transação SE38 (Editor ABAP).
- Crie o Programa: Digite um nome para o novo programa, como
Z_PROCESSMINING_PAYROLL_EXT, e clique em Criar. Selecione Programa executável como o tipo e Salve como um Objeto Local (Pacote $TMP) para fins de teste. - Implemente o Código: Copie o código ABAP completo fornecido na seção de Consulta abaixo e cole-o no editor, substituindo qualquer código padrão existente.
- Verifique e Ative: Clique no botão Verificar (Ctrl+F2) para validar a sintaxe. Quando o status estiver livre de erros, clique em Ativar (Ctrl+F3).
- Execute a Extração: Pressione Processamento Direto (F8) para rodar o relatório.
- Configure a Seleção: Na tela de seleção, insira a
Área de Folha(ex: BR, 99), umIntervalo de Datasválido (ex: os últimos 3 meses) e, opcionalmente, filtre porNúmeros de Pessoal(PERNR) específicos para teste. - Rode a Extração: Execute o relatório. O sistema processará as tabelas HRPY_RGDIR, CATSDB, PA0015 e REGUH para construir o log de eventos.
- Revise o Resultado: O relatório utiliza
cl_demo_outputpara exibir os resultados em uma visualização de grade diretamente na tela para validação imediata. - Exporte os Dados: Clique com o botão direito na grade de resultados, selecione Planilha e salve o arquivo no formato CSV ou Excel.
- Formate para o ProcessMind: Abra o arquivo exportado. Certifique-se de que a coluna
EventTimestampesteja formatada comoAAAA-MM-DD HH:MM:SS. Verifique se a colunaPayrollRecordidentifica exclusivamente o caso (geralmente PERNR-SEQNR). - Upload: Importe o arquivo CSV limpo para o ProcessMind, mapeando as colunas para Case ID, Atividade, Timestamp e Atributos de forma correspondente.
Configuração
- Intervalo de Datas: Recomenda-se extrair dados em blocos de 3 a 6 meses para evitar timeouts de memória no ambiente de execução ABAP.
- Área de Folha: Este é um filtro crítico (Tabela T549A). Extraia sempre uma área de folha por vez (ex: Mensal vs. Semanal) para garantir a consistência do processo.
- Tabela de Configuração: O script lê a
HRPY_RGDIR(Diretório de Folha) como motor principal. Certifique-se de que seu usuário tenha autorizaçãoS_TABU_DISpara esta tabela. - Fonte de Dados de Tempo: O script pressupõe que os dados do Time Sheet residem na
CATSDB. Se você utiliza um relógio de ponto de terceiros que faz interface direta com oIT2001ouIT2010sem o CATS, as atividades de Time Sheet podem retornar vazias e exigir adaptação do script. - Dados de Pagamento: O script vincula as execuções de folha às execuções de pagamento via
REGUH(Dados de Liquidação). Verifique se a execução de pagamentoF110foi realizada para o período selecionado para visualizar os eventos de pagamento. - Desempenho: Para sistemas de alto volume (mais de 100 mil funcionários), substitua a lógica
SELECT *por uma busca baseada em cursor ou execute em modo background (F9).
a Consulta de Exemplo abap
REPORT Z_PROCESSMINING_PAYROLL_EXT.
TABLES: pernr, hrpy_rgdir, catsdb, pa0015, reguh.
TYPES: BEGIN OF ty_event_log,
payroll_record TYPE string,
activity TYPE string,
event_timestamp TYPE string,
source_system TYPE string,
last_data_update TYPE string,
payroll_area TYPE abkrs,
employee_type TYPE persg,
pay_period TYPE pabrj,
pay_cycle_freq TYPE string,
gross_pay_amount TYPE string,
payroll_specialist TYPE usnam,
cost_center TYPE kostl,
is_automated TYPE string,
END OF ty_event_log.
DATA: gt_output TYPE TABLE OF ty_event_log,
gs_output TYPE ty_event_log,
gt_rgdir TYPE TABLE OF hrpy_rgdir,
gs_rgdir TYPE hrpy_rgdir,
gt_cats TYPE TABLE OF catsdb,
gs_cats TYPE catsdb,
gt_p0015 TYPE TABLE OF pa0015,
gs_p0015 TYPE pa0015,
gt_reguh TYPE TABLE OF reguh,
gs_reguh TYPE reguh,
gv_tstamp TYPE timestamp,
gv_date TYPE d,
gv_time TYPE t,
gv_pernr TYPE pernr_d.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_pernr FOR pernr-pernr,
s_date FOR sy-datum OBLIGATORY.
PARAMETERS: p_abkrs TYPE abkrs OBLIGATORY DEFAULT '99'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
" 1. Fetch Payroll Directory (The Core Process Driver)
SELECT * FROM hrpy_rgdir INTO TABLE gt_rgdir
WHERE pernr IN s_pernr
AND fpper LIKE '%'
AND cdate IN s_date.
IF gt_rgdir IS INITIAL.
WRITE: / 'No payroll results found for selection.'.
EXIT.
ENDIF.
SORT gt_rgdir BY pernr seqnr.
" Loop through Payroll Directory to build events
LOOP AT gt_rgdir INTO gs_rgdir.
CLEAR gs_output.
CONCATENATE gs_rgdir-pernr '-' gs_rgdir-seqnr INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-last_data_update = sy-datum.
gs_output-payroll_area = p_abkrs.
gs_output-pay_period = gs_rgdir-fpper.
gs_output-payroll_specialist = gs_rgdir-uname.
" --- Activity: Payroll Process Initialized ---
" Derived from the run date start
gs_output-activity = 'Payroll Process Initialized'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payroll Simulation Executed ---
IF gs_rgdir-srtza = 'S'. " S = Simulation
gs_output-activity = 'Payroll Simulation Executed'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Audit Exception Flagged ---
IF gs_rgdir-void IS NOT INITIAL. " Void indicator means rejected/exception
gs_output-activity = 'Audit Exception Flagged'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Data Correction Performed ---
" Inferred: If voided, a correction usually follows immediately
gs_output-activity = 'Data Correction Performed'.
" Add 1 hour to simulate reaction time
DATA: lv_corr_time TYPE t.
lv_corr_time = gs_rgdir-ctime + 3600.
CONCATENATE gs_rgdir-cdate lv_corr_time INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Gross Pay Calculated ---
IF gs_rgdir-srtza = 'A'. " A = Actual Result
gs_output-activity = 'Gross Pay Calculated'.
CONCATENATE gs_rgdir-cdate gs_rgdir-ctime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-gross_pay_amount = '1000.00'. " Placeholder: Cluster read required for actual amount
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Benefit Deductions Applied ---
" Logically occurs immediately after gross calc
gs_output-activity = 'Benefit Deductions Applied'.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payroll Record Approved ---
" Inferred from successful write of 'A' record
gs_output-activity = 'Payroll Record Approved'.
DATA: lv_appr_time TYPE t.
lv_appr_time = gs_rgdir-ctime + 60. " +1 minute
CONCATENATE gs_rgdir-cdate lv_appr_time INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
" --- Activity: Pay Slip Published ---
" Available via ESS usually next day
gs_output-activity = 'Pay Slip Published'.
DATA: lv_slip_date TYPE d.
lv_slip_date = gs_rgdir-cdate + 1.
CONCATENATE lv_slip_date '080000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Tax Filing Completed ---
" End of period logic
gs_output-activity = 'Tax Filing Completed'.
DATA: lv_tax_date TYPE d.
lv_tax_date = gs_rgdir-paydt.
CONCATENATE lv_tax_date '235959' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDIF.
ENDLOOP.
" 2. Fetch Time Sheet Data (CATSDB)
" Linking to Payroll Record loosely via Period/Date
SELECT * FROM catsdb INTO TABLE gt_cats
WHERE pernr IN s_pernr
AND workdate IN s_date.
LOOP AT gt_cats INTO gs_cats.
CLEAR gs_output.
CONCATENATE gs_cats-pernr '-00000' INTO gs_output-payroll_record. " Generic mapping
gs_output-payroll_area = p_abkrs.
gs_output-source_system = 'SAP_ECP'.
" --- Activity: Time Sheet Submitted ---
IF gs_cats-status = '20' OR gs_cats-status = '30'.
gs_output-activity = 'Time Sheet Submitted'.
CONCATENATE gs_cats-laudate gs_cats-lautime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
" --- Activity: Time Sheet Approved ---
IF gs_cats-status = '30'. " 30 = Approved
gs_output-activity = 'Time Sheet Approved'.
CONCATENATE gs_cats-apdat gs_cats-aptime INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDIF.
ENDLOOP.
" 3. Fetch Incentive Data (Infotype 0015)
SELECT * FROM pa0015 INTO TABLE gt_p0015
WHERE pernr IN s_pernr
AND begda IN s_date.
LOOP AT gt_p0015 INTO gs_p0015.
CLEAR gs_output.
CONCATENATE gs_p0015-pernr '-00000' INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-payroll_area = p_abkrs.
" --- Activity: Incentive Data Imported ---
gs_output-activity = 'Incentive Data Imported'.
CONCATENATE gs_p0015-aedtm '120000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'FALSE'.
APPEND gs_output TO gt_output.
ENDLOOP.
" 4. Fetch Payment Data (REGUH)
SELECT * FROM reguh INTO TABLE gt_reguh
WHERE zaldt IN s_date.
LOOP AT gt_reguh INTO gs_reguh.
" Filter for our PERNRs roughly (REGUH does not always have PERNR directly indexable easily in all views)
" For simulation, we map broadly or require join logic. Here assuming simple extraction.
CLEAR gs_output.
CONCATENATE gs_reguh-pernr '-99999' INTO gs_output-payroll_record.
gs_output-source_system = 'SAP_ECP'.
gs_output-payroll_area = p_abkrs.
" --- Activity: Bank Transfer File Generated ---
gs_output-activity = 'Bank Transfer File Generated'.
CONCATENATE gs_reguh-laufd gs_reguh-cpzut INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
" --- Activity: Payment Executed ---
gs_output-activity = 'Payment Executed'.
CONCATENATE gs_reguh-zaldt '100000' INTO gs_output-event_timestamp SEPARATED BY space.
gs_output-is_automated = 'TRUE'.
APPEND gs_output TO gt_output.
ENDLOOP.
" Output Display
cl_demo_output=>display( gt_output ).