급여 처리 데이터 템플릿
급여 처리 데이터 템플릿
- 급여 분석에 필요한 주요 데이터 필드
- 프로세스 탐색을 위한 주요 단계
- 시스템별 데이터 추출 안내
급여 처리 속성
| 이름 | 설명 | ||
|---|---|---|---|
| 급여 레코드 PayrollRecord | 직원과 급여 기간을 결합한 고유 식별자입니다. | ||
| 설명 급여 레코드는 process mining 분석에서 중심이 되는 케이스 식별자입니다. 특정 급여 기간에 한 직원의 급여를 처리한 한 번의 주기를 나타내며, 최초 근무 시간표 제출부터 최종 세금 신고까지 모든 활동을 연결합니다. SAP SuccessFactors Employee Central Payroll에서는 일반적으로 사원 번호(PERNR), 급여 연도(PABRJ), 급여 기간(PABRP)을 결합해 생성하며, 여러 차례 실행을 구분하기 위해 순번(SEQNR)을 추가할 수도 있습니다. 이 수준으로 데이터를 구분하면 각 급여 주기를 별도의 사례로 분석할 수 있어 처리 시간과 오류를 정확하게 추적할 수 있습니다. 중요한 이유 케이스 ID로 사용되며, 지급된 각 급여의 전체 처리 경로를 재구성하는 데 필요한 이벤트를 하나로 묶습니다. 확보 방법 SAP 클러스터 B2(근태 평가 결과) 또는 PC_PAYRESULT 테이블의 PERNR, PABRJ, PABRP, SEQNR 필드로 구성합니다. 예시 10023499-2023-1088291022-2024-01-SEQ01US-10293-2023-52 | |||
| 이벤트 타임스탬프 EventTimestamp | 활동이 발생한 정확한 날짜와 시간입니다. | ||
| 설명 이 속성에는 이벤트가 발생한 정확한 날짜와 시간이 기록됩니다. 주기 시간, 리드 타임, 프로세스 단계 간 처리량 등 시간 기반 지표를 계산하는 데 필요합니다. SAP ECP에서는 변경 문서의 중요한 이유 이벤트 간 소요 시간을 계산해 성능 병목과 SLA 위반을 파악할 수 있습니다. 확보 방법 CDHDR-UDATE/UTIME, SWWLOGHIST-WI_CD/WI_CT 또는 특정 감사 로그의 타임스탬프입니다. 예시 2023-10-25T08:30:00Z2023-10-26T14:15:22Z2023-11-01T09:00:00Z | |||
| 활동 Activity | 급여 프로세스에서 발생하는 구체적인 작업 또는 이벤트입니다. | ||
| 설명 이 속성에는 실행 중인 프로세스 단계의 이름이 기록됩니다. 예를 들어 '근무 시간표 제출', '급여 시뮬레이션 실행', '지급 실행' 등이 있습니다. 프로세스 맵을 구성하는 기준이 되며, 급여 주기 동안 수행된 작업의 순서를 분석가가 시각적으로 확인할 수 있습니다. 이 데이터는 워크플로 로그(SWWLOGHIST), 인포타입 변경 로그(CDHDR/CDPOS), 급여 상태 테이블 등 여러 로그에서 수집합니다. 추출 과정에서 명명 규칙을 일관되게 적용해 기술 이벤트 코드를 업무 담당자가 이해하기 쉬운 활동명으로 변환합니다. 중요한 이유 프로세스 그래프의 노드를 정의해 프로세스 흐름과 반복, 변형 경로를 시각화할 수 있습니다. 확보 방법 SWWLOGHIST(워크플로), CDHDR(변경 문서) 또는 PA03(제어 레코드)의 상태 변경에서 가져옵니다. 예시 근무 시간표 제출총급여 계산감사 예외 표시지급 실행 | |||
| 원천 시스템 SourceSystem | 이벤트 데이터가 발생한 시스템입니다. | ||
| 설명 이 속성은 데이터가 추출된 SAP SuccessFactors Employee Central Payroll 인스턴스 또는 연결된 하위 시스템을 식별합니다. 여러 급여 시스템이나 하이브리드 환경을 운영하는 경우 데이터 계보와 추적성을 확보하는 데 사용됩니다. 지역별 설치 환경의 데이터를 분석하거나 기존 시스템과 마이그레이션된 시스템의 성능을 비교할 때 특히 유용합니다. 일반적으로 데이터 추출 설정 시 지정하는 고정 문자열입니다. 중요한 이유 여러 시스템을 사용하는 환경에서 데이터를 구분하고, 데이터 출처를 확인해 품질 문제를 해결하는 데 도움이 됩니다. 확보 방법 SAP 설치 또는 추출 설정의 시스템 ID(SID)입니다. 예시 SAP_ECP_NASAP_ECP_EMEASuccessFactors_Core | |||
| 최종 데이터 업데이트 LastDataUpdate | 가장 최근에 데이터를 추출한 시각입니다. | ||
| 설명 이 속성은 process mining 데이터 모델의 레코드가 마지막으로 갱신된 시점을 나타냅니다. 분석가는 데이터의 최신성을 확인하고 최신 정보를 바탕으로 인사이트를 도출할 수 있습니다. 프로세스 흐름 분석에 직접 사용되지는 않지만, 데이터 거버넌스와 검증에 중요합니다. 대시보드에 급여 시스템의 최신 상태가 반영되었는지 확인할 수 있습니다. 중요한 이유 데이터 반영 지연을 파악하고 보고된 지표가 최신 상태인지 확인할 수 있습니다. 확보 방법 실행 시 ETL 또는 추출 스크립트에서 생성합니다. 예시 2023-11-05T00:00:00Z2023-11-05T12:00:00Z | |||
| 급여 기간 PayPeriod | 회계연도 내 급여 기간의 순번입니다. | ||
| 설명 이 속성은 급여 기간의 순번을 나타냅니다(예: 1월 또는 첫 번째 격주 급여 주기의 경우 01). 시간에 따른 성능 추이를 살펴보고 처리 업무량의 계절적 변화를 파악할 수 있습니다.
중요한 이유 추이를 분석하고 연중 특정 시기에 발생하는 계절성 병목을 파악할 수 있습니다. 확보 방법 PA0001 테이블 또는 급여 결과 클러스터(RGDIR)의 PABRP 필드입니다. 예시 01122652 | |||
| 급여 담당자 PayrollSpecialist | 레코드를 처리하는 담당자의 사용자 ID 또는 이름입니다. | ||
| 설명 이 속성에는 수동 단계나 승인을 담당하는 급여 관리자의 신원이 기록됩니다. '담당자별 처리량 및 업무량' 대시보드의 주요 기준으로, 업무 분배와 개인별 생산성을 분석할 수 있습니다. 시스템 로그의 중요한 이유 업무량을 균형 있게 배분하고 프로세스에서 인력으로 인한 병목을 찾는 데 필요합니다. 확보 방법 CDHDR에 기록된 시스템 필드(SY-UNAME) 또는 워크플로 담당자 ID입니다. 예시 JSMITHKMILLER시스템 | |||
| 급여 영역 PayrollArea | 직원이 속한 급여 그룹을 지정합니다. | ||
| 설명 급여 영역은 같은 급여 실행에서 함께 처리되는 직원을 묶습니다. 급여 주기(예: 월급 또는 격주 급여)나 조직 구조를 기준으로 구분하는 경우가 많습니다. 이 속성을 기준으로 프로세스 분석을 나누면 직원 그룹별 처리 성능을 비교할 수 있습니다. SAP에서는 기술 필드 중요한 이유 시간제 직원과 월급제 직원 등 그룹별 급여 주기 성능을 비교할 수 있습니다. 확보 방법 PA0001 테이블(조직 배정)의 ABKRS 필드입니다. 예시 미국 격주 급여독일 월급임원 급여 | |||
| 급여 주기 유형 PayCycleFrequency | 정기 급여 실행인지 비정기 급여 실행인지 나타냅니다. | ||
| 설명 이 속성은 정기 일정에 따른 급여 실행과 수정 또는 긴급 지급을 위한 비정기 실행을 구분합니다. 비정기 실행이 많으면 프로세스 비효율을 나타낼 수 있으므로 '비정기 지급 건수 분석' 대시보드에서 추적합니다. 급여 클러스터 디렉터리의 비정기 실행 사유( 중요한 이유 '비정기 지급 비율' KPI를 측정하고 표준 절차를 벗어난 처리를 줄이는 데 중요합니다. 확보 방법 RGDIR 테이블(클러스터 디렉터리)의 OCRSN 또는 PAYTY 필드입니다. 예시 정기수정 A보너스 지급퇴직 | |||
| 세전 급여액 GrossPayAmount | 레코드에 계산된 세전 급여 총액입니다. | ||
| 설명 이 속성은 공제 전 세전 급여의 총액을 나타냅니다. 재무 검증에 필요한 기본 지표이며, 고액 지급이 감사 강화나 승인 지연과 관련이 있는지 분석하는 데 사용됩니다. 급여 결과 테이블(RT)에서 가져오며, 일반적으로 총 세전 급여를 나타내는 임금 유형(예: /101)을 사용합니다. 계산 기준 금액을 제공해 '복리후생 및 세금 계산 정확도' 분석을 지원합니다. 중요한 이유 지급액에 따라 프로세스가 어떻게 달라지는지 분석할 수 있습니다(예: 지급액이 클수록 승인이 오래 걸리는지 확인). 확보 방법 급여 결과 테이블(RT)의 임금 유형 /101 또는 이에 해당하는 필드입니다. 예시 5000.002500.5010500.00 | |||
| 자동 처리 여부 IsAutomated | 시스템 사용자가 활동을 수행했는지 나타내는 표시입니다. | ||
| 설명 이 불리언 속성은 특정 프로세스 단계를 백그라운드 작업 또는 시스템 사용자가 실행했는지, 사람이 실행했는지 구분합니다. '은행 이체 자동화 모니터'에서 무인 처리 비율을 계산하는 데 필요합니다. 일반적으로 사용자 ID를 알려진 시스템 계정 목록(예: 'BATCH', 'SAP_WORKFLOW')과 대조해 판별합니다. 중요한 이유 자동화 비율을 측정하고 수작업을 줄일 기회를 찾을 수 있습니다. 확보 방법 사용자 ID에서 판별합니다(예: 사용자가 'BATCH' 또는 'SYSTEM'이면 true). 예시 truefalse | |||
| 직원 유형 EmployeeType | 직원의 고용 유형입니다(예: 정규직, 계약직). | ||
| 설명 이 속성은 재직자, 퇴직자, 계약직 등 고용 관계에 따라 직원을 분류합니다. 급여 처리의 복잡성은 직원 유형에 따라 달라질 수 있으며, 일부 그룹은 수작업이 더 많이 필요하거나 별도의 규정 준수 검사를 거쳐야 합니다. SAP의 직원 그룹( 중요한 이유 프로세스 변형이나 지연이 특정 고용 유형에만 나타나는지 확인할 수 있습니다. 확보 방법 PA0001 테이블의 PERSG(그룹) 및 PERSK(하위 그룹) 필드입니다. 예시 재직 직원연수생연금 수급자시간제 계약직 | |||
| 코스트 센터 CostCenter | 직원과 연결된 코스트 센터입니다. | ||
| 설명 코스트 센터는 직원 비용이 배정되는 재무 부서 또는 조직 단위를 나타냅니다. '근무 시간표 승인 병목' 대시보드에서 부서를 구분하는 기준으로 활용해 급여 주기를 지연시키는 조직 단위를 찾을 수 있습니다. 조직 배정 인포타입(PA0001)의 중요한 이유 조직 단위별로 분석해 지연이나 재작업을 일으키는 부서를 찾을 수 있습니다. 확보 방법 PA0001 테이블의 KOSTL 필드입니다. 예시 CC-1000 재무CC-2000 ITCC-3000 영업 | |||
| SLA 처리 기한 SLAProcessingDeadline | 급여 실행을 완료해야 하는 목표 시각입니다. | ||
| 설명 이 속성은 급여를 제때 지급하기 위해 급여 처리를 완료해야 하는 내부 또는 외부 기한을 나타냅니다. 실제 '지급 실행' 타임스탬프와 비교해 'SLA 준수율' KPI를 계산합니다. SAP 테이블의 표준 필드가 아닌 경우가 많지만, 사용자 지정 제어 테이블에 저장하거나 급여 일정(예: 지급일 2일 전)을 기준으로 정의할 수 있습니다. 이 데이터 모델에서는 지급일에서 정해진 여유 기간을 빼서 계산하는 경우가 많습니다. 중요한 이유 정시 처리 여부와 SLA 준수 여부를 평가하는 기준이 됩니다. 확보 방법 지급일(T549S)에서 설정된 처리 일수를 빼서 계산합니다. 예시 2023-10-28T17:00:00Z2023-11-28T17:00:00Z | |||
| 감사 예외 여부 AuditExceptionFlag | 감사 예외가 발생했는지 나타내는 표시입니다. | ||
| 설명 이 속성은 급여 시뮬레이션 또는 계산 중 검증 규칙에 따라 예외나 경고가 발생한 케이스를 표시합니다. '감사 예외 발생 빈도' KPI의 주요 입력값입니다. 급여 로그나 특정 오류 메시지 테이블(FEHLER)에서 데이터를 가져오는 경우가 많습니다. 값이 true이면 프로세스 흐름에 예외 처리 경로가 포함된 것입니다. 중요한 이유 데이터 품질 문제와 수동 개입이 필요한 부분을 보여줍니다. 확보 방법 급여 로그에 오류 메시지가 있거나 특정 상태 코드가 있는지 확인해 판별합니다. 예시 truefalse | |||
| 과세 관할 구역 TaxJurisdiction | 직원에게 적용되는 과세 지역 또는 과세 당국입니다. | ||
| 설명 이 속성은 급여 레코드에 적용되는 과세 당국 또는 지역(예: 주, 도, 칸톤)을 식별합니다. '감사 예외 및 규정 준수 위험' 대시보드에서 지역별 규정 준수 문제를 파악하는 데 필요합니다. SAP 미국 급여에서는 중요한 이유 규제 지역별로 규정 준수 위험과 감사 예외를 구분해 분석할 수 있습니다. 확보 방법 PA0001 또는 PA0207/PA0208 테이블의 TXJCD 필드입니다. 예시 캘리포니아뉴욕텍사스NRW | |||
| 법인 LegalEntity | 직원의 회사 코드 또는 법인입니다. | ||
| 설명 이 속성은 급여 레코드와 연결된 법인(회사 코드)을 식별합니다. 자회사나 기업 내 법인별 급여 성과를 재무 보고 및 분석에 활용할 수 있습니다. 조직 배정 인포타입(PA0001)의 중요한 이유 회사 간 성과 비교와 재무 배분 분석에 활용할 수 있습니다. 확보 방법 PA0001 테이블의 BUKRS 필드입니다. 예시 US01DE011000 | |||
| 재작업 횟수 ReworkCount | 수정 작업을 수행한 횟수입니다. | ||
| 설명 이 계산 지표는 케이스 이력에 '데이터 수정 수행' 활동이 나타난 횟수를 셉니다. 프로세스 비효율을 직접 측정하며 '수동 수정 및 재작업 비율' 대시보드에 활용됩니다. 재작업 횟수가 많으면 데이터 품질 문제가 지속되거나 최초 검증을 통과하지 못하는 복잡한 케이스가 많다는 뜻입니다. 중요한 이유 오류 수정에 투입된 노력을 수치화하고 데이터 품질 개선 활동의 필요성을 뒷받침합니다. 확보 방법 CaseId별 '데이터 수정 수행' 활동 수를 세어 계산합니다. 예시 013 | |||
급여 처리 활동
| 활동 | 설명 | ||
|---|---|---|---|
| 근무 시간표 승인 | 관리자나 관리 담당자가 근무 시간 데이터를 공식 승인하는 이벤트입니다. 이 상태 변경으로 급여 엔진에 데이터를 전달할 수 있습니다. | ||
| 중요한 이유 근무 시간표 승인 소요 시간 KPI를 계산합니다. 이 단계의 병목은 관리자 지연이나 복잡한 승인 계층을 나타냅니다. 확보 방법 Employee Central Workflow Request 테이블(WfRequest)에서 상태가 COMPLETED 또는 APPROVED인 항목을 필터링합니다. 기록 워크플로 상태가 APPROVED로 변경될 때 기록됩니다. 이벤트 유형 explicit | |||
| 근무 시간표 제출 | 직원이나 관리자가 급여 기간의 근무 시간 데이터를 제출하는 이벤트입니다. ECP와 연결된 Employee Central 모듈의 워크플로 요청 로그에서 확인합니다. | ||
| 중요한 이유 데이터 수집 단계의 시작을 나타냅니다. 이 단계가 지연되면 이후 일정에도 영향을 주어 급여 처리 기간이 줄어듭니다. 확보 방법 Employee Central Workflow Request 테이블(WfRequest)에서 Time Sheet 또는 Time Off 범주를 필터링합니다. 기록 워크플로 상태가 SUBMITTED로 변경될 때 기록됩니다. 이벤트 유형 explicit | |||
| 급여 기록 승인 | 직원 또는 급여 그룹의 급여 결과를 공식 승인하는 단계입니다. PCC의 'Monitoring' 또는 'Sign Off' 단계에서 진행됩니다. | ||
| 중요한 이유 계산 및 검증 단계가 끝나고 지급이 승인되었음을 나타냅니다. 담당자 처리량 분석에 중요합니다. 확보 방법 Approval 또는 Confirmation 단계의 Payroll Control Center Step Instance 로그(PYC_D_STEP_INST)입니다. 기록 PCC 승인 단계 상태가 COMPLETED로 변경될 때 기록됩니다. 이벤트 유형 explicit | |||
| 급여 시뮬레이션 실행 | 결과를 데이터베이스에 반영하지 않고 오류를 찾기 위해 급여 드라이버를 시험 실행하는 단계입니다. PCC 검증 단계의 주요 절차입니다. | ||
| 중요한 이유 최초 계산 성공률을 계산하는 데 필요합니다. 시뮬레이션이 반복되면 데이터 품질 문제일 수 있습니다. 확보 방법 단계 유형이 Simulation인 Payroll Control Center Step Instance 로그(PYC_D_STEP_INST)입니다. 기록 PCC 시뮬레이션 단계 상태가 COMPLETED로 변경될 때 기록됩니다. 이벤트 유형 explicit | |||
| 급여 프로세스 초기화 | Payroll Control Center(PCC)에서 급여 프로세스 인스턴스를 생성하는 이벤트입니다. 특정 급여 영역의 급여 처리 주기가 공식적으로 시작됨을 나타냅니다. | ||
| 중요한 이유 전체 급여 처리 주기 소요 시간의 기준 시점을 설정합니다. 처리 대상 직원의 범위도 정의합니다. 확보 방법 새 프로세스 ID의 생성을 추적하는 Payroll Control Center 테이블(예: PYC_D_PY_PROC_INST)입니다. 기록 PCC 프로세스 인스턴스가 생성될 때 기록됩니다. 이벤트 유형 explicit | |||
| 세금 신고 완료 | 세금 신고 파일(예: 미국의 PU19)을 생성하거나 제3자 세금 신고 서비스 제공업체에 전달하는 단계입니다. | ||
| 중요한 이유 규정 준수를 보장합니다. 처리 순서에서 최종 규정 준수 단계를 추적합니다. 확보 방법 파일 생성 성공을 나타내는 Tax Reporter Log Manager 또는 B2A(Business to Administration) Manager 로그입니다. 기록 Tax Reporter 실행이 성공적으로 완료될 때 기록됩니다. 이벤트 유형 explicit | |||
| 은행 이체 파일 생성 | 예비 데이터 매체 교환(pre-DME) 파일 또는 최종 DME 파일을 생성하는 이벤트입니다. 이 파일에 은행 지급 지시가 담깁니다. | ||
| 중요한 이유 은행 이체 자동화 모니터링에 사용됩니다. 파일 생성 실패는 프로세스의 중대한 중단으로 이어질 수 있습니다. 확보 방법 DME 또는 Payment Medium Workbench(PMW) 실행 로그입니다. 일반적으로 TemSe나 특정 지급 처리 테이블(ReguH/ReguP)에 저장됩니다. 기록 지급 처리(F110/RPCIPE)에서 출력 파일을 생성할 때 기록됩니다. 이벤트 유형 explicit | |||
| 지급 실행 | 은행의 확인이나 F110 지급 처리 완료로 확인되는 지급 프로세스의 최종 단계입니다. | ||
| 중요한 이유 SLA 준수율을 계산하는 기본 종료 타임스탬프입니다. 직원에게 제때 지급했는지 판단합니다. 확보 방법 지급 처리 테이블(REGUH)의 처리 일자와 시간 또는 지급 가치일을 바탕으로 추론합니다. 기록 지급 처리 상태가 Posted 또는 Complete로 설정될 때 기록됩니다. 이벤트 유형 explicit | |||
| 총급여 계산 | 총급여 스키마 계산이 성공적으로 실행되는 이벤트입니다. 표준 처리에서는 급여 드라이버가 PCL2 클러스터에 기록할 때 발생합니다. | ||
| 중요한 이유 근무 시간과 급여율 데이터가 성공적으로 결합되었음을 나타내는 주요 단계입니다. 이 단계가 지연되면 총액에서 실수령액까지의 처리 효율성에 영향을 줍니다. 확보 방법 클러스터 PCL2(급여 결과), 특히 'For-Period'의 디렉터리 테이블(RGDIR) 타임스탬프입니다. 기록 급여 클러스터에 새 시퀀스 번호가 기록될 때 기록됩니다. 이벤트 유형 explicit | |||
| 감사 예외 표시 | Payroll Control Center의 정책 검사에서 검증 알림을 생성하는 이벤트입니다. 데이터 불일치나 규정 준수 위험을 알립니다. | ||
| 중요한 이유 감사 예외 발생 빈도 및 규정 준수 위험 대시보드에 직접 반영됩니다. 건수가 많으면 상위 단계의 데이터 품질 문제일 수 있습니다. 확보 방법 Payroll Control Center 알림 테이블(PYC_D_ALERT)로, 특정 오류 코드를 직원 기록과 연결합니다. 기록 PCC 알림 테이블에 새 항목이 생성될 때 기록됩니다. 이벤트 유형 explicit | |||
| 급여 명세서 게시 | 셀프서비스(ESS)를 통해 직원이 보상 명세서를 확인할 수 있도록 제공하는 작업입니다. | ||
| 중요한 이유 급여 명세서 전달 SLA 성과를 측정합니다. 지연되면 헬프데스크 문의가 발생합니다. 확보 방법 급여 명세서 mashup 서비스 로그의 'Print Date' 또는 제공일 설정을 바탕으로 추론합니다. 기록 급여일에 시스템 설정에 따른 지연 시간을 더해 계산합니다. 이벤트 유형 inferred | |||
| 데이터 수정 수행 | 감사 예외에 대응해 기준 데이터나 근무 시간 데이터를 수정하는 작업입니다. 급여 알림을 해소하기 위해 필요한 재작업을 나타냅니다. | ||
| 중요한 이유 수작업 수정률과 재작업률을 추적합니다. 프로세스 비효율을 일으키는 주요 활동입니다. 확보 방법 PCC 알림의 타임스탬프와 알림이 종료되기 전에 같은 직원에 대해 이후 발생한 감사 로그(PCL4) 변경 내역을 연결해 추론합니다. 기록 PCC 알림이 활성화된 동안 발생한 기준 데이터 업데이트를 찾습니다. 이벤트 유형 inferred | |||
| 복리후생 공제 적용 | 계산 스키마에서 복리후생 규칙을 처리하는 단계입니다. 기본 급여 처리의 일부지만 별도로 분석하면 설정 오류를 찾는 데 도움이 됩니다. | ||
| 중요한 이유 복리후생 및 세금 계산 정확도 분석에 활용됩니다. 복잡한 공제 규칙의 불일치를 조사하는 데 유용합니다. 확보 방법 급여 결과에 V0 분할이 있는지 확인하거나 상세 로그가 활성화된 경우 특정 로그 항목을 통해 추론합니다. 운영 환경에서는 상세 로그가 드문 편입니다. 기록 총급여 계산과 동시에 발생하지만 분석상 별도의 개념으로 구분합니다. 이벤트 유형 inferred | |||
| 인센티브 데이터 가져오기 | 보너스나 커미션과 같은 비정기 급여 데이터를 급여 시스템에 입력하는 과정입니다. 일반적으로 Infotype 0015 또는 2010에 데이터를 불러옵니다. | ||
| 중요한 이유 데이터를 늦게 가져오면 총급여를 정확하게 계산하기 어렵습니다. 이 과정을 분석하면 인센티브 데이터 통합 소요 시간을 줄일 수 있습니다. 확보 방법 Infotype 0015(추가 지급) 또는 2010(직원 보상 정보)에 기록이 생성된 내역을 보여주는 감사 로그(PCL4 또는 이에 준하는 로그)입니다. 기록 Infotype 생성 타임스탬프와 가져오기 작업 로그를 비교합니다. 이벤트 유형 inferred | |||
데이터 추출 가이드
단계
- 추출할 급여 영역과 기간 매개변수를 지정합니다. 주로 Payroll Control Center(PCC) 테이블(PYC_*)과 급여 클러스터 디렉터리(HRPY_RGDIR)에서 데이터를 추출합니다.
- SAP SuccessFactors Employee Central Payroll(ECP) 백엔드 스키마에 연결된 SQL 클라이언트 또는 SAP HANA Studio를 실행합니다.
- Query 섹션에 제공된 데이터 추출 스크립트를 실행합니다. 이 스크립트는 마스터 데이터 테이블, 급여 결과, PCC 감사 로그의 데이터를 취합합니다.
- 'Time Sheet Submitted' 및 'Time Sheet Approved' 활동을 매핑합니다. ECP는 대개 Employee Central에서 이 데이터를 받으므로, 테이블 PA2001의 생성 및 최종 수정 타임스탬프를 사용하거나, 사용 가능한 경우 PTREQ_HEADER와 같은 전용 시간 인터페이스 테이블을 사용합니다.
- Infotype 0015(추가 지급) 및 2010(직원 보수 정보)을 조회해 대상 급여 기간에 생성된 레코드를 찾고 'Incentive Data Imported'를 추출합니다.
- 테이블 PYC_D_PYP(프로세스 인스턴스) 및 PYC_D_BINST(단계 인스턴스)에서 PCC 프로세스 단계를 가져와 'Payroll Process Initialized', 'Payroll Simulation Executed', 'Payroll Record Approved', 'Pay Slip Published'를 기록합니다.
- 테이블 PYC_D_ALERT를 조회해 'Audit Exception Flagged' 이벤트를 찾습니다. 이 레코드는 특정 직원을 PCC 검사 단계에서 발견된 검증 오류와 연결합니다.
- 급여 처리 기간에 SAP 변경 문서 헤더 테이블(CDHDR)을 급여 관련 Infotype(예: 0008, 0015, 2001)과 조인해 'Data Correction Performed' 이벤트를 생성합니다.
- 테이블 HRPY_RGDIR을 사용해 'Gross Pay Calculated'가 발생한 정확한 시점을 찾습니다. 스키마 실행 중 동시에 발생하므로 같은 타임스탬프를 사용해 'Benefit Deductions Applied' 파생 이벤트를 생성합니다.
- 테이블 REGUH(정산 데이터) 및 REGUT(DME 관리)의 재무 데이터를 연결해 'Bank Transfer File Generated'와 'Payment Executed'를 기록합니다.
- 사례 ID가 고유하도록 'PayrollRecord' 열을 [EmployeeID]-[Period]-[Year] 형식으로 변환합니다.
- 최종 데이터 세트를 CSV 파일로 내보냅니다. 헤더가 계약에 정의된 속성과 일치하는지 확인한 뒤 ProcessMind에 업로드합니다.
구성
- 기간: 최근 6~12개월을 포함하는 이동 기간으로 추출하도록 설정합니다. 급여 프로세스는 주기적으로 반복되므로 이 범위에서 정기 및 비정기 급여 실행의 변화를 충분히 확인할 수 있습니다.
- 급여 영역(ABKRS): 유사한 프로세스 주기를 비교할 수 있도록 특정 급여 영역(예: US Monthly, DE Weekly)으로 필터링합니다.
- 언어: 활동 및 프로세스 단계 설명은 기본 시스템 언어(예: SPRAS = 'E')로 추출합니다.
- PCC 프로세스 ID: 관련 단계를 필터링할 수 있도록 PCC 설정에서 'Monitoring', 'Production', 'Off-Cycle'에 사용되는 프로세스 정의 ID(PYP_ID)를 확인합니다.
- 통화: 글로벌 급여 운영 데이터를 추출하는 경우 재무 금액(GrossPayAmount)을 단일 통화로 환산합니다.
- 권한: 데이터베이스 사용자는 인사(PA/PY) 테이블과 특히 클러스터 디렉터리(HRPY_RGDIR) 및 PCC 테이블(PYC_*)에 대한 읽기 권한이 필요합니다.
샘플 쿼리 sql
/* 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]' 단계
- ABAP 편집기에 접속합니다: SAP GUI를 통해 SAP SuccessFactors Employee Central Payroll(ECP) 시스템에 로그인합니다. 트랜잭션 코드 SE38(ABAP Editor)로 이동합니다.
- 프로그램을 만듭니다: 새 프로그램 이름을 입력합니다(예:
Z_PROCESSMINING_PAYROLL_EXT). 만들기를 클릭하고 유형으로 Executable program을 선택합니다. 테스트를 위해 로컬 객체(Package $TMP)로 저장합니다. - 코드를 입력합니다: 아래 Query 섹션에 제공된 ABAP 코드 전체를 복사해 편집기에 붙여 넣고, 기본 코드는 모두 바꿉니다.
- 확인하고 활성화합니다: 확인 버튼(Ctrl+F2)을 클릭해 구문을 검사합니다. 오류가 없으면 활성화(Ctrl+F3)를 클릭합니다.
- 추출을 실행합니다: Direct Processing(F8)을 눌러 보고서를 실행합니다.
- 선택 조건을 설정합니다: 선택 화면에서
Payroll Area(예: US, 99), 유효한Date Range(예: 최근 3개월)를 입력합니다. 테스트할 경우 특정Personnel Numbers(PERNR)로 필터링할 수도 있습니다. - 추출을 실행합니다: 보고서를 실행합니다. 시스템은 HRPY_RGDIR, CATSDB, PA0015, REGUH 테이블을 처리해 이벤트 로그를 구성합니다.
- 결과를 검토합니다: 보고서는
cl_demo_output을 사용해 결과를 화면에 표 형태로 표시하므로 바로 확인할 수 있습니다. - 데이터를 내보냅니다: 결과 표를 마우스 오른쪽 버튼으로 클릭하고 Spreadsheet를 선택한 뒤 CSV 또는 Excel 형식으로 저장합니다.
- ProcessMind에 맞게 형식을 지정합니다: 내보낸 파일을 엽니다.
EventTimestamp열이YYYY-MM-DD HH:MM:SS형식인지 확인합니다.PayrollRecord열이 각 케이스를 고유하게 식별하는지 확인합니다(일반적으로 PERNR-SEQNR). - 업로드합니다: 정리한 CSV 파일을 ProcessMind로 가져오고 열을 케이스 ID, 활동, 타임스탬프 및 속성에 맞게 매핑합니다.
구성
- 날짜 범위: ABAP 런타임 환경에서 메모리 시간 초과가 발생하지 않도록 3~6개월 단위로 데이터를 추출하는 것이 좋습니다.
- 급여 영역: 중요한 필터입니다(테이블 T549A). 프로세스 일관성을 위해 한 번에 하나의 급여 영역(예: 월급 또는 격주 급여)만 추출합니다.
- 설정 테이블: 스크립트는
HRPY_RGDIR(급여 디렉터리)을 기본 데이터 원본으로 사용합니다. 사용자에게 이 테이블에 대한S_TABU_DIS권한이 있는지 확인합니다. - 시간 데이터 원본: 스크립트는 시간표 데이터가
CATSDB에 있다고 가정합니다. CATS를 사용하지 않고 타사 근태 시스템을IT2001또는IT2010에 직접 연결하는 경우 시간표 활동이 비어 있을 수 있으므로 스크립트를 조정해야 합니다. - 지급 데이터: 스크립트는
REGUH(정산 데이터)를 통해 급여 실행과 지급 실행을 연결합니다. 지급 이벤트를 확인하려면 선택한 기간에F110지급 실행이 완료되었는지 확인합니다. - 성능: 직원 수가 많은 시스템(100,000명 이상)에서는
SELECT *로직을 커서 기반 조회로 바꾸거나 백그라운드 모드(F9)로 실행합니다.
샘플 쿼리 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 ). 시작할 준비가 되셨나요?
이 템플릿을 데이터 추출에 적용해 급여 프로세스를 효율화해 보세요. 체계적인 접근 방식으로 원시 데이터를 실행 가능한 인사이트로 빠르게 전환할 수 있습니다.
지금 급여 처리 성과를 개선하세요
급여 처리 시간을 30% 단축한 기업들과 함께하세요.
신용카드가 필요하지 않습니다. 몇 분이면 설정할 수 있습니다.