Record to Report 기간 마감 및 조정 데이터 템플릿
Record to Report 기간 마감 및 조정 데이터 템플릿
- 수집 권장 속성
- 프로세스 분석을 위해 추적할 주요 활동
- 단계별 데이터 추출 안내
Record to Report 기간 마감 및 조정 속성
| 이름 | 설명 | ||
|---|---|---|---|
| 재무 기간 FinancialPeriod | 재무 보고 주기를 식별하는 고유 값입니다. 예를 들어 '2023-12'는 2023년 12월을 나타내며, 기간 말 마감 프로세스의 케이스로 사용됩니다. | ||
| 설명 재무 기간은 특정 기간의 장부 마감과 관련된 모든 활동을 묶는 주요 케이스 식별자입니다. 일반적으로 달력 기준 월이나 회계 기간을 나타내며, 각 재무 기간은 기간 말 프로세스의 전체 실행 1회를 의미합니다. process mining 분석에서는 이 속성을 사용해 기간 마감 시작부터 최종 보고까지 전체 흐름을 추적합니다. 기간별 주기 시간을 비교하고, 자주 나타나는 프로세스 경로를 찾으며, 월간·분기별·연간 마감 절차의 차이를 분석할 수 있습니다. 각 기간을 하나의 케이스로 보면 시간에 따른 성과를 측정하고 반복적으로 발생하는 병목을 찾을 수 있습니다. 중요한 이유 기간 마감 성과를 시기별로 비교하고 추세나 반복되는 문제를 찾을 수 있도록 분석 범위를 정하는 필수 케이스 식별자입니다. 확보 방법 일반적으로 BKPF와 같은 재무 문서 헤더 테이블에서 회계연도(GJAHR)와 전기 기간(MONAT) 필드를 결합해 생성합니다. 예시 2023-122024-032024년 1분기 | |||
| 시작 시각 EventTime | 특정 활동이 시작되었거나 시스템에 기록된 시점을 나타내는 타임스탬프입니다. | ||
| 설명 이벤트 시각은 활동이 발생한 정확한 날짜와 시간을 나타냅니다. 재무 전기의 경우 문서 생성 시각(CPUTM)이나 전기일(BUDAT)이 해당할 수 있습니다. 상태 변경이나 작업의 경우 변경 사항이 기록된 타임스탬프를 사용합니다. 이 속성은 활동을 시간순으로 정렬하는 기준이며, 시간 기반 분석의 토대입니다. 활동 간 주기 시간, 개별 작업의 소요 시간, 프로세스 전체의 처리 시간을 계산하는 데 사용됩니다. 평균 기간 마감 주기 시간 및 평균 대사 승인 시간과 같은 KPI에도 직접 활용됩니다. 중요한 이유 필수 타임스탬프인 이 값은 이벤트를 시간순으로 정렬하고 모든 소요 시간 및 성과를 계산하는 기준이 됩니다. 확보 방법 BKPF와 같은 테이블의 생성일(CPUDT) 및 생성 시각(CPUTM) 필드나 다양한 상태 테이블(예: CDHDR, CDPOS)의 변경일 필드에서 가져옵니다. 예시 2023-12-28T09:15:30Z2024-01-02T14:00:12Z2024-01-05T11:21:00Z | |||
| 활동 ActivityName | 기간 마감 프로세스에서 수행하는 특정 업무 단계나 작업의 이름입니다. 예를 들면 '조정 분개 전기' 또는 '전기 기간 마감'이 있습니다. | ||
| 설명 이 속성은 기간 마감 및 대사 프로세스 전체에서 발생하는 개별 이벤트나 작업을 나타냅니다. 활동은 프로세스 맵을 구성하는 단위로, 업무가 수행된 순서를 보여줍니다. 일반적으로 SAP S/4HANA의 트랜잭션 코드, 문서 유형, 상태 변경 정보를 조합해 생성합니다. 활동 분석은 process mining의 기본입니다. 프로세스 흐름을 시각화하고 표준 절차에서 벗어난 부분을 찾으며, 시간이 오래 걸리는 활동의 병목을 파악하고 작업의 빈도와 순서를 이해할 수 있습니다. 기간 마감 변형 분석 및 현재 기간 마감 상태와 같은 대시보드에도 이 분석이 활용됩니다. 중요한 이유 프로세스의 단계를 정의하며, 프로세스 맵의 기반이 됩니다. 이를 통해 프로세스 흐름, 편차, 병목을 분석할 수 있습니다. 확보 방법 트랜잭션 코드(TCODE), 문서 유형(BLART), 재무 마감 작업과 관련된 테이블의 상태 필드 등 다양한 출처에서 가져옵니다. 예를 들어 SAP Financial Closing Cockpit에서 확인할 수 있습니다. 예시 전기 기간 개시계정 대사 시작재무제표 생성회사 간 대사 시작 | |||
| 담당 사용자 ResponsibleUser | 활동을 수행했거나 작업을 담당하는 사람의 사용자 ID입니다. | ||
| 설명 이 속성은 분개 전기나 대사 승인과 같은 작업을 수행한 직원을 식별합니다. 일반적으로 시스템 로그와 문서 헤더에 사용자 ID로 기록됩니다. 사용자별 프로세스 분석은 업무량 분배, 개인별 성과, 교육 필요성을 파악하는 데 중요합니다. 리소스 배분 효율성 대시보드는 이 속성을 사용해 사용자별 활동 처리 시간을 시각화합니다. 여러 사용자가 반복적으로 수행하는 작업을 찾아 자동화 후보를 파악하는 데도 활용할 수 있습니다. 중요한 이유 프로세스 활동을 수행한 담당자와 연결해 업무량 분석, 리소스 최적화, 성과 관리를 지원합니다. 확보 방법 일반적으로 BKPF와 같은 문서 헤더 테이블의 USNAM(사용자 이름) 필드나 CDHDR와 같은 변경 문서 테이블의 USERNAME 필드에서 확인할 수 있습니다. 예시 ABROWNCSMITHDJOHNSON | |||
| 목표 완료일 TargetCompletionDate | 재무제표 작성과 같은 주요 활동을 완료하기로 계획한 날짜 또는 마감일입니다. | ||
| 설명 목표 완료일은 기간 마감 프로세스의 특정 마일스톤에 적용되는 내부 또는 외부 마감일입니다. 해당 작업을 완료할 것으로 예상되는 날짜를 뜻합니다. 일정 준수 여부와 마감일 기준 성과를 측정하는 데 필요한 속성입니다. '보고 마감일 준수' 대시보드와 '재무제표 정시 완료율' KPI는 이 목표일을 중요한 이유 마감일을 기준으로 성과를 분석해 주요 마감 활동의 정시 완료율을 측정하고 개선할 수 있습니다. 확보 방법 이 데이터는 SAP Financial Closing cockpit과 같은 작업 관리 또는 일정 관리 시스템에 있는 경우가 많습니다. 이 시스템에서 마감 작업 목록과 계획 종료일을 정의합니다. 예시 2024-01-05T23:59:59Z2024-04-04T23:59:59Z2024-07-05T23:59:59Z | |||
| 문서 번호 DocumentNumber | 분개와 같은 재무 문서를 고유하게 식별하는 번호입니다. | ||
| 설명 문서 번호는 SAP가 각 재무 전기에 부여하는 고유 키입니다. 마감 프로세스 활동을 구성하는 개별 거래를 추적하고 감사할 때 기본 참조값으로 사용됩니다. 문서 번호 자체가 케이스 ID는 아니지만, 원천 시스템의 거래와 연결하는 중요한 참조값입니다. 분석가는 문서 번호를 사용해 process mining 화면에서 SAP S/4HANA의 구체적인 거래 내역으로 이동하여 근본 원인을 분석할 수 있습니다. 특히 특정 수정 분개나 조정 전기를 조사할 때 유용합니다. 중요한 이유 SAP의 해당 거래를 직접 참조하므로 프로세스 모델에서 거래 내역으로 쉽게 이동하고 감사 추적성을 확보할 수 있습니다. 확보 방법 재무 문서 헤더 테이블 BKPF의 BELNR 필드와 BSEG 또는 ACDOCA 같은 개별 항목 테이블에 있습니다. 예시 100000045190000001300000023 | |||
| 조정 상태 ReconciliationStatus | 계정 조정 활동의 상태입니다. 예: '미결', '진행 중', '승인됨'. | ||
| 설명 이 속성은 특정 계정이나 작업의 조정 프로세스 상태를 추적합니다. 조정이 시작되었는지, 검토를 위해 제출되었는지, 승인 또는 거부되었는지를 나타냅니다. 상태 변경은 프로세스에서 중요한 이벤트입니다. '조정 재작업 분석' 대시보드에 꼭 필요한 속성입니다. 상태 변경 순서를 분석하면 '승인됨' 이후 추가 조정이 발생한 경우를 찾아 재작업 여부를 확인할 수 있습니다. 또한 거부나 재개 없이 승인된 조정을 파악해 '1차 조정 승인율' KPI를 산출하는 데도 활용됩니다. 중요한 이유 조정 작업의 진행 상황과 결과를 추적해 재작업을 파악하고, 승인율을 측정하며, 병목을 분석할 수 있습니다. 확보 방법 일반적으로 SAP Financial Closing cockpit이나 BlackLine의 SAP Account Substantiation and Automation 등 사용 중인 조정 도구와 관련된 테이블에 저장됩니다. 예시 시작 전준비 중승인됨거부됨 | |||
| 종료 시각 EndTime | 활동이 완료된 시점을 나타내는 타임스탬프입니다. | ||
| 설명 종료 시각은 작업이 완료된 시점을 나타냅니다. 시스템에 기록된 즉시 처리 이벤트의 경우 시작 시각과 같을 수 있습니다. 소요 시간을 측정할 수 있는 활동에서는 완료 타임스탬프를 의미합니다. 시작 시각과 함께 각 활동의 중요한 이유 활동 소요 시간(처리 시간)을 계산할 수 있어 성과 병목을 찾고 효율성을 분석하는 데 도움이 됩니다. 확보 방법 시작 시각과 마찬가지로 다양한 타임스탬프 필드에서 가져올 수 있습니다. 일부 활동은 시작 시각과 같을 수 있습니다. 그 외에는 애플리케이션 테이블이나 변경 로그(CDHDR, CDPOS)의 별도 '완료일' 또는 '변경일' 필드를 사용할 수 있습니다. 예시 2023-12-28T09:16:10Z2024-01-02T17:30:00Z2024-01-05T11:21:00Z | |||
| 총계정원장 계정 번호 GlAccountNumber | 총계정원장의 특정 계정을 식별하는 번호입니다. | ||
| 설명 총계정원장(GL) 계정 번호는 현금, 매입채무, 수익 등 금융 거래를 기록하는 개별 계정을 식별합니다. 조정 및 수정 분개와 같은 여러 기간 마감 활동은 특정 GL 계정과 직접 관련됩니다. 세부 재무 프로세스 분석에 꼭 필요한 속성입니다. '수정 분개 분석' 대시보드는 계정별 조정 건수를 보여 주어 문제가 있는 영역을 찾도록 돕습니다. '평균 GL 계정 조정 시간' KPI도 이 속성을 활용해 특정 계정과 관련된 지연을 파악합니다. 중요한 이유 프로세스 활동을 특정 재무 계정과 연결해 조정 및 분개를 자세히 분석하고 문제의 근본 원인을 찾을 수 있습니다. 확보 방법 재무 문서 개별 항목 테이블에서 확인할 수 있으며, 주로 BSEG의 HKONT 필드 또는 S/4HANA의 범용 분개장 테이블 ACDOCA에 있습니다. 예시 113100004000000073000000 | |||
| 회사 코드 CompanyCode | SAP 조직 내 법인 또는 회사를 식별하는 고유 값입니다. | ||
| 설명 Company Code는 기업 내 독립적인 회계 단위를 나타내며, 해당 단위별로 완전하고 독립적인 계정 집합을 만들 수 있습니다. 기간 마감 활동은 모두 Company Code 수준에서 수행됩니다. 재무 분석에서 기본이 되는 조직 차원입니다. process mining에서는 법인별 기간 마감 프로세스를 비교할 수 있습니다. '기간 마감 변형 분석' 대시보드는 Company Code를 기준으로 불일치를 파악하고 마감 절차의 표준화를 지원합니다. 중요한 이유 중요한 조직 정보를 제공하므로 법인별 프로세스를 비교해 차이와 모범 사례를 파악할 수 있습니다. 확보 방법 SAP의 거의 모든 재무 테이블에서 확인할 수 있으며, 특히 헤더 테이블 BKPF의 BUKRS 필드에 있습니다. 예시 10001710US01DE01 | |||
| 기간 마감 소요 시간 PeriodCloseCycleTime | 한 회계 기간의 첫 활동부터 마지막 활동까지 걸린 총시간입니다. | ||
| 설명 이 지표는 단일 케이스(회계 기간)의 기간 마감 프로세스 전체에 걸린 시간을 나타냅니다. 해당 기간의 첫 활동과 마지막 활동의 타임스탬프 차이로 계산합니다. 주요 성과 지표로, '기간 마감 소요 시간 개요' 대시보드와 '평균 기간 마감 소요 시간' KPI에 사용됩니다. 마감 프로세스의 전반적인 효율성과 속도를 파악하고, 시간에 따른 변화와 Company Code별 성과를 비교할 수 있습니다. 중요한 이유 전체 프로세스 소요 시간을 나타내는 주요 KPI로, 시간에 따른 효율성 개선을 전반적으로 추적할 수 있습니다. 확보 방법 케이스 수준에서 각 예시 P5D10H30MP7D2HP6D | |||
| 문서 금액 DocumentAmount | 문서 통화로 표시한 재무 전기의 총액입니다. | ||
| 설명 이 속성은 재무 문서에 기록된 금액을 나타냅니다. 기간 마감 조정의 경우 전기되는 발생액이나 수정 금액이 이에 해당합니다. 금액을 분석하면 중요도를 평가하는 데 도움이 됩니다. 재무 위험이 더 클 수 있는 고액 수정 분개를 우선 조사할 수 있습니다. 일정 금액을 초과하는 거래만 프로세스 맵에 표시하도록 필터링하면 중요한 활동에 집중할 수 있습니다. 중요한 이유 분석에 재무 관점을 더해 금액과 중요도를 기준으로 문제 조사 우선순위를 정할 수 있습니다. 확보 방법 일반적으로 BSEG 또는 ACDOCA 같은 개별 항목 테이블의 WRBTR 필드(문서 통화 금액)를 집계해야 합니다. 예시 15000.00250.75-500.00 | |||
| 문서 통화 DocumentCurrency | 재무 문서의 금액에 적용되는 통화 코드입니다. | ||
| 설명 이 속성은 거래가 기록된 통화를 지정합니다. 예: USD, EUR, JPY. 다국적 조직에서는 통화별 분석이 중요할 수 있습니다. 금액을 올바르게 해석하고, 집계 분석을 위해 단일 보고 통화로 환산할 때도 필요합니다. 이 정보가 없으면 중요한 이유 금액을 올바르게 해석하는 데 필요한 정보를 제공하며, 특히 여러 통화를 사용하는 환경에서 유용합니다. 확보 방법 재무 문서 헤더 테이블 BKPF의 WAERS 필드에 있습니다. 예시 USDEURJPY | |||
| 분개 유형 JournalEntryType | 전기되는 재무 문서의 유형으로, 일반 분개, 발생액, 조정 등을 구분합니다. | ||
| 설명 분개 유형은 SAP 용어로 문서 유형이라고도 하며, 회계 문서를 분류하는 키입니다. 문서를 전기할 수 있는 계정 유형을 제어하고, 공급업체 송장(KR), 총계정원장 전기(SA), 고객 입금(DZ) 등 서로 다른 업무 거래를 구분하는 데 사용됩니다. 기간 마감에서는 특정 활동 유형을 분리해 분석하는 데 중요한 속성입니다. 예를 들어 수정 분개를 기준으로 분석하면 '수정 분개 분석' 대시보드와 '수정 분개 건수' KPI를 지원할 수 있습니다. '수동 전기 비율'을 계산할 때도 활용됩니다. 중요한 이유 재무 거래를 유형별로 분류하므로 원활한 기간 마감에 중요한 수동 조정 등 특정 전기 유형에 초점을 맞춰 분석할 수 있습니다. 확보 방법 재무 문서 헤더 테이블 BKPF의 표준 필드인 BLART입니다. 예시 SAKRAB | |||
| 실제 완료일 ActualCompletionDate | 주요 활동 또는 전체 기간 마감이 실제로 완료된 날짜입니다. | ||
| 설명 이 속성은 주요 마일스톤이 실제로 완료된 날짜를 기록합니다. 재무제표 최종 승인 시점이나 전기 기간 마감 시점이 이에 해당합니다.
중요한 이유 마일스톤이 실제로 완료된 시점을 제공하므로 계획된 마감일 기준 성과를 측정하고 지연을 분석할 수 있습니다. 확보 방법 '재무제표 승인' 또는 '전기 기간 마감'과 같은 일련의 마지막 활동에서 EventTime을 가져옵니다. 예시 2024-01-06T10:00:00Z2024-04-05T17:00:00Z2024-07-04T11:00:00Z | |||
| 원천 시스템 SourceSystemId | 데이터를 추출한 SAP S/4HANA 인스턴스 또는 클라이언트를 식별하는 값입니다. | ||
| 설명 데이터가 생성된 시스템을 나타내는 속성입니다. 여러 SAP 인스턴스를 사용하는 환경에서는(예: 지역이나 사업부별 인스턴스) 데이터 출처를 구분하는 데 필요합니다. 주로 데이터 거버넌스와 감사, 데이터 무결성 확인에 사용됩니다. 여러 원천 시스템의 데이터를 하나의 process mining 모델에 통합한 경우, 이 속성으로 시스템별 프로세스를 비교할 수 있습니다. 중요한 이유 데이터의 출처와 맥락을 명확히 보여주는 데이터 계보 정보를 제공합니다. 특히 여러 시스템을 사용하는 환경에서 유용합니다. 확보 방법 일반적으로 데이터 추출 과정에서 추가하는 메타데이터입니다. SAP의 시스템 ID(SY-SYSID)나 클라이언트(SY-MANDT)에서 가져오는 경우가 많습니다. 예시 S4H_PROD_100S4H_QAS_200ECC_LEGACY_001 | |||
| 자동화 여부 IsAutomated | 활동을 시스템 사용자 또는 자동화된 프로세스가 수행했는지 나타내는 불리언 플래그입니다. | ||
| 설명 이 플래그는 사람이 직접 수행한 작업과 시스템이 자동으로 실행한 작업을 구분합니다. 예를 들어 예약된 환율 평가 배치 작업이나 자동 반제 실행이 이에 해당합니다. 일반적으로 이 속성은 마감 프로세스의 자동화 수준을 파악하는 데 중요합니다. 처리량이 많은 수동 작업을 찾아 추가 자동화 기회를 식별할 수 있습니다. 또한 수동 단계와 자동화 단계 중 어디에서 병목이 발생하는지 근본 원인을 분석할 때도 사용됩니다. 중요한 이유 사람이 수행한 활동과 시스템 활동을 구분하므로 자동화 기회를 찾고 각 활동의 효율성을 분석하는 데 중요합니다. 확보 방법 파생 속성으로, 일반적으로 'ResponsibleUser' 필드에 규칙을 적용해 산출합니다. 예를 들어 'BATCHUSER'와 같은 시스템 또는 배치 사용자 ID인지 확인하거나 트랜잭션 코드를 기준으로 판단합니다. 예시 truefalse | |||
| 정시 완료 여부 IsOnTime | 마일스톤이 목표일 당일 또는 그 전에 완료되면 참으로 설정되는 불리언 플래그입니다. | ||
| 설명 이 속성은 일정 준수 여부를 간단한 이진 결과로 나타냅니다. 재무제표 승인과 같은 특정 마일스톤의 '재무제표 정시 완료율' KPI의 기본 계산에 사용됩니다. 날짜 비교 결과를 '정시' 또는 '지연'으로 표시해 대시보드와 보고서에서 쉽게 확인할 수 있습니다. 마감 기간 단축을 위한 개선 활동의 효과를 측정하는 데도 도움이 됩니다. 중요한 이유 마감일 준수 여부를 명확한 성공 또는 실패 결과로 나타내 정시 완료 성과를 쉽게 추적하고 보고할 수 있습니다. 확보 방법 계산 필드: 예시 truefalse | |||
| 조정 재작업 여부 IsReconciliationRework | 조정 활동 이후 거부 또는 추가 조정이 발생하면 참으로 설정되는 불리언 플래그입니다. | ||
| 설명 이 계산 속성은 조정 하위 프로세스에서 재작업이 발생한 사례를 식별합니다. 조정이 거부되거나 제출 후 다시 열리는 경우, 또는 GL 계정 조정이 완료된 것으로 처리된 뒤 수정 분개가 전기된 경우를 표시합니다. '조정 재작업 분석' 대시보드와 '조정 재작업률' KPI를 위해 설계된 플래그입니다. 복잡한 프로세스 흐름을 측정 가능한 단일 속성으로 바꿔 재작업 규모를 파악하고, 팀이 첫 처리 품질을 개선하는 데 집중하도록 돕습니다. 중요한 이유 프로세스 비효율의 주요 원인인 재작업을 직접 수치화해 조정 품질을 집중적으로 분석하고 개선할 수 있습니다. 확보 방법 활동 순서를 기준으로 계산합니다. 예를 들어 같은 기간의 동일한 GL 계정에서 '조정 승인' 다음에 '수정 분개 전기'가 발생하면 참으로 설정합니다. 예시 truefalse | |||
| 최종 데이터 업데이트 LastDataUpdate | 원천 시스템에서 데이터를 마지막으로 새로 고치거나 추출한 시점을 나타내는 타임스탬프입니다. | ||
| 설명 이 속성은 가장 최근 데이터 추출의 날짜와 시간을 기록합니다. process mining 도구에서 분석하는 데이터가 얼마나 최신인지 보여줍니다. 주된 목적은 데이터 거버넌스와 사용자 안내입니다. 대시보드 사용자는 분석 데이터의 최신 시점을 확인할 수 있습니다. 특히 현재 기간 마감 상태와 같은 준실시간 모니터링 대시보드에서 중요합니다. 오늘, 어제 또는 지난주 데이터를 보고 있는지 파악하는 데 도움이 됩니다. 중요한 이유 데이터의 최신 시점을 사용자에게 알려 프로세스 분석 결과가 얼마나 최신인지 파악할 수 있도록 합니다. 확보 방법 데이터 추출 도구나 ETL 도구가 실행 시점에 데이터 세트에 생성해 기록하는 메타데이터입니다. 예시 2024-06-10T08:00:00Z2024-06-09T08:00:00Z | |||
| 트랜잭션 코드 TransactionCode | 활동을 실행하는 데 사용한 SAP 트랜잭션 코드(T-code)입니다. | ||
| 설명 트랜잭션 코드는 SAP에서 특정 기능이나 프로그램을 실행하는 바로 가기입니다. 예를 들어 FB01은 문서 전기에, FAGLB03은 GL 계정 잔액 조회에 사용됩니다. T-code를 보면 수행한 활동을 기술적으로 명확하게 파악할 수 있는 경우가 많습니다. 이 속성은 프로세스 모델의 활동 정의를 만드는 데 도움이 됩니다. 자동 활동과 수동 활동을 구분하고 시스템에서 작업이 어떻게 수행되었는지 파악하는 데 신뢰할 수 있는 기준입니다. T-code를 분석하면 직원이 사용하는 비표준 방식이나 비효율적인 방법을 발견할 수 있습니다. 중요한 이유 활동이 시스템에서 어떻게 수행되었는지 기술적 관점에서 보여 주므로 수동 단계와 자동화 단계, 비표준 절차를 식별하는 데 유용합니다. 확보 방법 재무 문서 헤더 테이블 BKPF의 TCODE 필드 또는 변경 문서 로그에서 확인할 수 있습니다. 예시 FB01FAGL_FCVF.13 | |||
Record to Report 기간 마감 및 조정 활동
| 활동 | 설명 | ||
|---|---|---|---|
| 계정 대사 승인 | 총계정원장 계정 대사의 최종 승인을 나타냅니다. 잔액이 입증되고 문제가 해결되었음을 확인하는 단계입니다. 대사 도구에서 상태가 '승인됨'으로 변경된 기록을 통해 판단합니다. | ||
| 중요한 이유 이 단계는 중요한 통제 활동의 완료를 나타냅니다. 승인 시간을 추적하면 검토 과정의 병목을 찾을 수 있으며, 재작업과 최초 통과 성공률을 측정하는 데도 필요합니다. 확보 방법 SAP Account Substantiation and Automation과 같은 대사 관리 시스템에서 최종 승인 상태의 타임스탬프를 추적해 확인합니다. 기록 대사 상태 필드가 최종 '승인됨' 상태로 변경된 시점을 확인합니다. 이벤트 유형 inferred | |||
| 계정 대사 시작 | 총계정원장 계정 잔액을 입증하는 수동 또는 반자동 프로세스의 시작을 나타냅니다. 대사 상태가 '신규'에서 '진행 중'으로 바뀌거나 담당자가 처음 작업한 기록이 남으면 시작으로 판단합니다. | ||
| 중요한 이유 이 시점은 대차대조표 잔액 입증에 필요한 시간과 노력을 파악하는 데 중요한 기준입니다. 대사를 늦게 시작하는 계정이나 부서를 찾을 수 있습니다. 확보 방법 일반적으로 SAP Account Substantiation and Automation by BlackLine과 같은 전용 대사 도구나 타사 시스템에서 확인합니다. 상태 변경 타임스탬프를 기준으로 시작 시점을 판단합니다. 기록 해당 총계정원장 계정 대사의 상태가 '시작 전'에서 처음 변경된 타임스탬프를 추적합니다. 이벤트 유형 inferred | |||
| 재무제표 생성 | 대차대조표와 손익계산서 등 공식 재무제표를 작성하는 활동입니다. 기간 말 회계 및 연결 프로세스의 최종 단계입니다. | ||
| 중요한 이유 Record to Report 주기의 주요 이정표입니다. 보고 기한을 준수하고 이해관계자에게 적시에 정보를 제공하려면 완료 시점이 중요합니다. 확보 방법 SAP Financial Closing Cockpit과 같은 재무 마감 관리 도구에서는 명시적 작업으로 기록되므로 가장 정확하게 확인할 수 있습니다. 해당 도구를 사용하지 않는 경우 보고서 생성 로그나 파일 생성 타임스탬프를 통해 판단해야 합니다. 기록 마감 도구에서 '재무제표 생성' 작업의 완료 상태를 추적하거나 보고서 실행 로그를 분석합니다. 이벤트 유형 inferred | |||
| 전기 기간 개시 | 재무 기간이 시작되면 거래를 기록할 수 있도록 전기 기간을 엽니다. 재무 관리자가 SAP에서 수행하는 명시적인 설정 변경으로, 변경 내역이 기록되며 새 기간의 분개가 가능해집니다. | ||
| 중요한 이유 이 활동은 기간 마감 프로세스의 주요 시작 이벤트입니다. 전체 주기 시간을 정확히 측정하고 프로세스 분석의 시작점을 명확히 설정하는 데 활용됩니다. 확보 방법 일반적으로 트랜잭션 OB52를 통해 수행되는 전기 기간 관리 테이블 T001B의 변경 내역을 기록하는 변경 문서(테이블 CDHDR 및 CDPOS)에서 이 이벤트를 확인합니다. 기록 테이블 T001B의 변경 로그에서 해당 회계연도와 기간에 관련된 항목을 필터링합니다. 이벤트 유형 explicit | |||
| 전기 기간 마감 | 주기의 마지막 활동으로, 추가 거래를 막기 위해 전기 기간을 공식적으로 마감합니다. 이 조치로 최종 재무 보고서의 데이터 무결성을 유지합니다. | ||
| 중요한 이유 이 활동은 프로세스의 명확한 종료 이벤트입니다. 전체 기간 마감 소요 시간을 계산하고 프로세스 완료 추이를 분석하는 데 필요합니다. 확보 방법 기간 개시와 마찬가지로, 트랜잭션 OB52를 통해 전기 기간 관리 테이블 T001B가 변경된 내역을 기록하는 변경 문서(테이블 CDHDR 및 CDPOS)에서 이 이벤트를 확인합니다. 기록 테이블 T001B의 변경 로그를 필터링해 해당 회계연도와 기간이 마감된 시점을 확인합니다. 이벤트 유형 explicit | |||
| 조정 분개 전기 | 초기 대사 후 검토 과정에서 발견된 차이를 수정하기 위해 입력하는 분개입니다. 총계정원장에 전기되는 명시적 거래입니다. | ||
| 중요한 이유 조정 분개가 자주 발생하면 상위 프로세스나 대사의 최초 처리 품질이 낮다는 신호일 수 있습니다. 해당 분개를 분석하면 오류의 근본 원인을 찾아 재작업을 줄일 수 있습니다. 확보 방법 테이블 ACDOCA 및 BKPF에 명시적 문서로 기록됩니다. 특정 문서 유형, 마감 주기 후반의 전기일 또는 특정 텍스트 설명을 기준으로 식별할 수 있습니다. 기록 문서 유형과 대사 활동을 기준으로 한 전기일을 조합해 BKPF의 분개를 필터링합니다. 이벤트 유형 explicit | |||
| 회사 간 대사 시작 | 같은 기업 그룹 내 여러 회사 코드 간 거래를 대조하고 대사하는 프로세스의 시작을 나타냅니다. SAP의 ICMR 도구에서 대사 작업을 실행하거나 새 대사 케이스를 생성해 시작하는 경우가 많습니다. | ||
| 중요한 이유 회사 간 대사는 복잡하고 시간이 오래 걸리는 경우가 많습니다. 소요 시간과 진행 흐름을 분석하면 그룹 마감을 간소화하고 연결 재무제표의 정확성을 높이는 데 도움이 됩니다. 확보 방법 SAP Intercompany Matching and Reconciliation(ICMR) 모듈의 상태 변경 또는 해당 기간의 첫 대사 문서 생성 내역을 통해 확인합니다. 기록 해당 기간의 ICMR 도구에서 대사 단위의 생성일 또는 상태 변경 타임스탬프를 추적합니다. 이벤트 유형 inferred | |||
| 미지급비용 및 충당금 전기 | 발생주의 회계에 따라 정확한 재무 보고를 위해 필요한 미지급비용, 이연 항목 및 기타 충당금의 수동 분개 생성을 기록합니다. 총계정원장에 전기되는 명시적 거래입니다. | ||
| 중요한 이유 이 전기 내역을 추적하면 수동 조정의 규모와 시점을 분석할 수 있습니다. 건수가 많다면 자동화하거나 상위 프로세스를 개선할 여지가 있음을 나타낼 수 있습니다. 확보 방법 통합 분개장 테이블 ACDOCA와 헤더 테이블 BKPF에 명시적 분개로 기록됩니다. 충당금에 설정된 특정 문서 유형으로 해당 항목을 식별할 수 있습니다. 기록 테이블 BKPF에서 문서 유형(예: 'SA' 또는 사용자 지정 유형)과 해당 기간의 전기일을 기준으로 문서를 필터링합니다. 이벤트 유형 explicit | |||
| 보조원장 데이터 전송 완료 | 매출채권, 매입채무, 자산 회계 등 보조원장의 요약 데이터를 총계정원장으로 전송하는 배치 작업이 완료된 상태입니다. 마감 절차를 시작하기 전에 관련 운영 거래가 모두 총계정원장에 반영되었는지 확인합니다. | ||
| 중요한 이유 보조원장 마감이 지연되면 전체 프로세스의 주요 병목이 될 수 있습니다. 이 활동을 추적하면 원천 시스템에서 데이터를 수집하고 통합하는 과정의 비효율을 찾을 수 있습니다. 확보 방법 원장 결산과 데이터 전송을 담당하는 특정 배치 작업의 성공 완료 상태를 통해 확인합니다. 작업 로그는 테이블 TBTCO 및 TBTCP에서 확인할 수 있습니다. 기록 SAP 작업 개요(트랜잭션 SM37)에서 관련 배치 작업의 완료 타임스탬프를 확인하고 모니터링합니다. 이벤트 유형 explicit | |||
| 시산표 작성 | 검토를 위해 시산표를 생성하고 저장했음을 나타냅니다. 최종 재무제표 작성 전의 주요 점검 단계입니다. 보고서 출력물을 저장하는 절차를 통해 이 이벤트를 확인하는 경우가 많습니다. | ||
| 중요한 이유 시산표 작성은 중요한 품질 점검 단계입니다. 작성 시점을 분석하면 최종 보고를 위한 준비 상태를 파악하고 이전 활동의 지연을 찾을 수 있습니다. 확보 방법 이 이벤트는 시스템에 명시적으로 기록되지 않는 경우가 많습니다. 사용자와 날짜가 포함된 변형이 저장되어 있다면 특정 보고 트랜잭션의 실행 기록으로 판단할 수 있습니다. SAP Financial Closing Cockpit과 같은 도구에서 프로세스를 관리하는 경우에도 확인할 수 있습니다. 기록 보고서 실행 로그나 마감 cockpit 작업 목록 등 신뢰할 수 있는 기록 방식이 있는지 시스템을 분석해야 합니다. 이벤트 유형 inferred | |||
| 연결 작업 실행 | SAP Group Reporting에서 환산, 재분류, 회사 간 이익 제거와 같은 연결 작업을 실행한 상태입니다. 일반적으로 연결 모니터에서 작업을 관리하고 기록합니다. | ||
| 중요한 이유 여러 법인을 보유한 조직에서 연결 프로세스는 마감의 주요 경로에 해당합니다. 작업을 모니터링하면 그룹 마감을 간소화하고 연결 보고를 제때 완료하는 데 도움이 됩니다. 확보 방법 SAP S/4HANA for Group Reporting의 Data Monitor 또는 Consolidation Monitor에 기록된 상태 로그에서 확인합니다. 각 작업에는 일반적으로 사용자, 타임스탬프, 상태가 포함됩니다. 기록 Group Reporting 연결 모니터의 기반 테이블에서 작업 실행 로그를 추출합니다. 이벤트 유형 explicit | |||
| 외화 평가 실행 | 기간 말 환율을 기준으로 외화 미결 항목과 잔액을 재평가하는 표준 월말 절차입니다. 프로그램을 실행하면 평가 차이가 전기됩니다. | ||
| 중요한 이유 회계 기준 준수를 지원하고 정확한 재무 현황을 제공합니다. 이 활동을 추적하면 모든 외화 평가가 제때 수행되는지 확인할 수 있습니다. 확보 방법 외화 평가 프로그램(예: FAGL_FCV)의 실행 로그에서 확인합니다. 작업 정보는 테이블 TBTCO 및 TBTCP에 저장됩니다. 기록 트랜잭션 FAGL_FCV 또는 해당 기반 프로그램과 관련된 작업의 실행 로그를 모니터링합니다. 이벤트 유형 explicit | |||
| 자동 반제 실행 | SAP에서 GR/IR(입고/송장 입고) 반제 실행과 같은 자동 반제 프로그램을 실행한 상태입니다. 이 작업은 특정 총계정원장 계정의 미결 항목을 대조하고 반제해 수동 대사 작업을 줄입니다. | ||
| 중요한 이유 이 활동을 통해 대사 프로세스의 자동화 수준을 확인할 수 있습니다. 실행 실패나 예외가 발생하면 수작업과 지연이 크게 늘어날 수 있습니다. 확보 방법 자동 반제용 F.13 또는 F.13E와 같은 특정 배치 작업의 실행 로그에서 확인합니다. 작업 실행 정보는 테이블 TBTCO 및 TBTCP에 기록됩니다. 기록 SAP 작업 로그에서 F.13과 같은 트랜잭션 관련 작업의 시작 및 종료 타임스탬프를 모니터링합니다. 이벤트 유형 explicit | |||
| 재무제표 승인 | 재무제표를 공표하기 전에 권한이 있는 경영진이 최종 승인하는 단계입니다. 오프라인으로 진행되는 경우가 많지만 공식 디지털 승인 절차가 있으면 기록할 수 있습니다. | ||
| 중요한 이유 최종 품질 및 통제 점검 단계입니다. 보고 기한 준수와 경영진 검토 주기의 전반적인 효율성을 파악하려면 승인 시점을 추적해야 합니다. 확보 방법 SAP Financial Closing Cockpit이나 문서 관리 시스템 등에 재무제표 승인 워크플로 또는 상태 필드가 있으면 이 이벤트를 확인할 수 있습니다. 기록 재무제표 패키지의 최종 승인 여부를 나타내는 데이터 필드와 타임스탬프를 확인합니다. 이벤트 유형 inferred | |||
데이터 추출 가이드
단계
- CDS 뷰 확인: SAP HANA Studio 또는 ADT가 설치된 Eclipse를 사용해 SAP S/4HANA 시스템에 로그인합니다. ABAP Development Tools에서 쿼리에 언급된 표준 CDS 뷰(I_JournalEntryItem, I_BatchJob, I_ConsolidationTaskLog 등)가 있는지 검색하고 확인합니다. Account Reconciliation과 같은 프로세스의 상태 변경을 추적하려면
Z_I_ACCOUNTRECONCILIATION과 같은 사용자 지정 CDS 뷰를 만들어야 할 수 있습니다. - OData를 통해 CDS 뷰 공개: SAP 백엔드에서
SEGW트랜잭션(Gateway Service Builder)을 사용해 새 프로젝트를 만듭니다. Data Model 폴더를 마우스 오른쪽 버튼으로 클릭하고 'Reference -> Data Source'를 선택한 다음 필요한 CDS 뷰를 추가합니다. 런타임 객체를 생성해 외부에서 사용할 수 있는 OData 서비스를 만듭니다. - OData 서비스 활성화: SAP Gateway 허브에서
/IWFND/MAINT_SERVICE트랜잭션을 실행합니다. 'Add Service'를 클릭하고 이전 단계에서 생성한 서비스를 찾아 추가합니다. 그러면 서비스가 활성화되어 조회할 수 있습니다. - 데이터 연결 설정: Python, Power BI 또는 전용 ETL 플랫폼과 같은 데이터 추출 도구에서 새로 만든 OData 서비스에 연결합니다. CDS 뷰에 액세스할 권한이 있는 인증 정보와 서비스 URL이 필요합니다.
- 쿼리 조정 및 실행: 제공된 SQL 쿼리를 복사합니다. 날짜 범위, 회사 코드, 사용자 지정 CDS 뷰 또는 배치 작업 이름의 자리표시자를 사용 중인 SAP 환경에 맞게 수정합니다. OData 서비스 엔드포인트에서 쿼리를 실행합니다. OData는
$filter,$select와 같은 다른 구문을 사용하므로 UNION ALL 쿼리의 로직을 활동별 개별 API 호출로 나눠 구현해야 할 수 있습니다. - 활동 데이터 통합: 일반적으로 OData는 복잡한 UNION ALL 쿼리를 한 번의 호출로 처리하지 못하므로 쿼리의 활동 블록마다 별도 요청을 실행합니다. 클라이언트 도구에서 각 요청의 결과를 하나의 데이터 세트나 테이블로 통합합니다.
- 데이터 변환 및 정리: 통합한 데이터를 검토합니다.
EventTime및EndTime열의 타임스탬프 형식이 일관적인지 확인합니다.FinancialPeriod가 'YYYY-MM' 형식인지 확인하고, 필요한 경우ResponsibleUser또는DocumentNumber와 같은 열의 NULL 값을 처리합니다. - 이벤트 로그로 내보내기: 통합한 최종 데이터 세트를 CSV 파일로 내보냅니다. 열 제목이
FinancialPeriod,ActivityName,EventTime,EndTime,ResponsibleUser등의 필수 속성과 일치하는지 확인합니다. 이제 이 파일을 ProcessMind에 업로드할 수 있습니다.
구성
- CDS 뷰: 쿼리는 표준 및 사용자 지정 CDS 뷰를 함께 사용합니다. 분개용
I_JournalEntryItem, 자동 실행용I_BatchJob과 같은 표준 뷰가 필요합니다. 표준 뷰에서 제공하지 않는 내부 프로세스 상태를 추적하려면Z_I_ACCOUNTRECONCILIATION과 같은 사용자 지정 뷰가 필요한 경우가 많습니다. - 날짜 범위: 데이터 양을 관리할 수 있도록 추출할 날짜 범위를 지정합니다. 쿼리의
[Start Date]및[End Date]자리표시자는 일반적으로 의미 있는 분석이 가능하도록 전체 회계 기간 3~6개를 포함해야 합니다. - 주요 필터: 성능과 분석 적합성을 위해 필터링이 중요합니다. 항상
CompanyCode로 필터링합니다. 그 밖에 주요 필터로는Ledger(예: 선도 원장인 '0L'),FiscalYear, 정기 전기·발생·조정을 구분하는 특정DocumentType값이 있습니다. - 사전 요건: 추출을 실행하는 사용자에게 지정된 CDS 뷰와 OData 서비스(예: 권한 객체
S_SERVICE,S_RFC)에 액세스할 수 있는 SAP 권한이 필요합니다. SAP Gateway 서비스도 설정하고 활성화해야 합니다. - 성능:
I_JournalEntryItem조회는 성능에 큰 영향을 줄 수 있습니다. 특히 날짜, 회사 코드, 원장에 선택적 필터를 적용합니다. 업무 외 시간에 추출을 실행하거나 지속적인 모니터링을 위해 증분 적재 방식을 고려합니다.
샘플 쿼리 sql
SELECT
CONCAT(CAST(PostingDate AS DATE FORMAT 'YYYY'), '-', CAST(PostingDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- This is a proxy; this activity is a configuration change often found in change logs (CDHDR/CDPOS for table T001B)
WHERE PostingPeriodVariant = '[Your Variant]' AND FiscalYear = '[Your Fiscal Year]' AND FromPostingPeriod = 1 AND AuthorizationGroup IS NOT NULL -- Logic to detect the opening event
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod, -- Infer period from Job Name if patterned, otherwise use job start date
'Subledger Data Transfer Completed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Subledger Job Prefix]%' AND JobStatus = 'F' -- 'F' for Finished
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(CreationDate AS DATE FORMAT 'YYYY'), '-', CAST(CreationDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Intercompany Reconciliation Started' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
CreatedByUser AS ResponsibleUser,
LeadingCompanyCode AS CompanyCode,
NULL AS GlAccountNumber,
ReconciliationCase AS DocumentNumber,
ReconciliationCaseStatus AS ReconciliationStatus,
NULL AS TargetCompletionDate,
NULL AS ProcessingTime
FROM I_ICRcnCase -- Part of SAP S/4HANA for group reporting
WHERE CreationDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Accrual Doc Type 1]', '[Accrual Doc Type 2]') -- e.g., 'SA', 'AC'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Automated Clearing Run Executed' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'SAPF124%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE 'FAGL_FCV%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on like SAP Account Substantiation and Automation.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
NULL AS EndTime,
ChangedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'In Progress' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'IN_PROGRESS' AND OldStatus = 'NEW'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
CAST(CreationDateTime AS TIMESTAMP) AS EventTime,
CAST(CreationDateTime AS TIMESTAMP) AS EndTime,
CreatedByUser AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
AccountingDocument AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_JournalEntryItem
WHERE DocumentType IN ('[Adjustment Doc Type 1]', '[Adjustment Doc Type 2]') -- e.g., 'AJ'
AND PostingDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- This activity often requires a custom view on a custom table or an add-on product.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Account Reconciliation Approved' AS ActivityName,
CAST(ChangedAt AS TIMESTAMP) AS EventTime,
CAST(ChangedAt AS TIMESTAMP) AS EndTime,
ApprovedBy AS ResponsibleUser,
CompanyCode,
GLAccountNumber,
ReconciliationID AS DocumentNumber,
'Approved' AS ReconciliationStatus,
PlannedCompletionDate AS TargetCompletionDate,
NULL AS ProcessingTime
FROM Z_I_ACCOUNTRECONCILIATION -- Placeholder for your custom reconciliation status view
WHERE Status = 'APPROVED'
AND ChangeDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(FiscalYear, '-', LPAD(FiscalPeriod, 2, '0')) AS FinancialPeriod,
'Consolidation Tasks Executed' AS ActivityName,
CAST(TaskExecutionUTCTimestamp AS TIMESTAMP) AS EventTime,
CAST(TaskCompletionUTCTimestamp AS TIMESTAMP) AS EndTime,
ExecutedByUser AS ResponsibleUser,
ConsolidationUnitCompanyCode AS CompanyCode, -- Assuming mapping exists
NULL AS GlAccountNumber,
DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(TaskExecutionUTCTimestamp AS TIMESTAMP), CAST(TaskCompletionUTCTimestamp AS TIMESTAMP)) AS ProcessingTime
FROM I_ConsolidationTaskLog
WHERE ConsolidationTaskStatus = 'S' -- Successful
AND TaskExecutionUTCDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Trial Balance Prepared' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Trial Balance Job Prefix]%' AND JobStatus = 'F' -- Example: FAGL_TRIAL_BALANCE_RUN
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(SUBSTRING(JobName, STRPOS(JobName, '_') + 1, 4), '-', SUBSTRING(JobName, STRPOS(JobName, '_') + 5, 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
CAST(JobStartDate || JobStartTime AS TIMESTAMP) AS EventTime,
CAST(JobEndDate || JobEndTime AS TIMESTAMP) AS EndTime,
JobCreatedByUser AS ResponsibleUser,
'[Configure based on your system]' AS CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
SECONDS_BETWEEN(CAST(JobStartDate || JobStartTime AS TIMESTAMP), CAST(JobEndDate || JobEndTime AS TIMESTAMP)) AS ProcessingTime
FROM I_BatchJob
WHERE JobName LIKE '[Fin Statement Job Prefix]%' AND JobStatus = 'F'
AND JobEndDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
-- Approval is often a manual step. This requires a custom solution to capture.
-- The following is a placeholder for such a custom view.
SELECT
CONCAT(ApprovalYear, '-', LPAD(ApprovalPeriod, 2, '0')) AS FinancialPeriod,
'Financial Statements Approved' AS ActivityName,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EventTime,
CAST(ApprovalTimestamp AS TIMESTAMP) AS EndTime,
ApproverUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
FinancialStatementVersion AS DocumentNumber,
'Approved' AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM Z_I_FINSTATEMENTAPPROVAL -- Placeholder for custom approval tracking view
WHERE ApprovalDate BETWEEN '[Start Date]' AND '[End Date]'
UNION ALL
SELECT
CONCAT(CAST(LastChangeDate AS DATE FORMAT 'YYYY'), '-', CAST(LastChangeDate AS DATE FORMAT 'MM')) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
CAST(LastChangeDateTime AS TIMESTAMP) AS EventTime,
CAST(LastChangeDateTime AS TIMESTAMP) AS EndTime,
LastChangedByUser AS ResponsibleUser,
CompanyCode,
NULL AS GlAccountNumber,
NULL AS DocumentNumber,
NULL AS ReconciliationStatus,
NULL AS TargetCompletionDate,
0 AS ProcessingTime
FROM I_FinPostingPeriodControl -- Proxy, see note on 'Period Opened'
WHERE PostingPeriodStatus = 'C' -- 'C' for Closed
AND LastChangeDate BETWEEN '[Start Date]' AND '[End Date]'; 단계
- 필요한 애플리케이션 테이블이 있는 SAP HANA 스키마에 직접 읽기 액세스할 수 있는지 확인하고 ACDOCA, TBTCO, CDHDR, CDPOS의 스키마 소유자를 확인합니다. 쿼리의 스키마 자리표시자를 승인된 스키마 이름으로 바꿉니다.
- 회계연도, 회계 기간, 회사 코드 범위, 추출 날짜 범위를 확인합니다. 일반적으로 전체 마감 주기를 포함하도록 3~6개월의 날짜 범위를 사용하고, 시스템에 맞는 값으로 날짜 매개변수를 바꿉니다.
- 전기 기간 설정 변경, 배치 작업 완료, 조정 상태 변경, 연결 실행, 보고서 생성, 승인 기록에 대한 로컬 필드 매핑을 검증합니다. 쿼리에는 모든 SAP S/4HANA 환경에 반드시 존재한다고 보장할 수 없는 원본 객체의 자리표시자가 포함되어 있습니다. 실행 전에 해당 자리표시자를 시스템에서 승인된 뷰나 테이블로 바꿉니다.
- 읽기 전용 데이터베이스 인증 정보로 쿼리를 실행합니다. 쿼리는 필요한 각 활동에 대해 이벤트 행을 하나씩 명시적으로 생성하며, 이벤트 순서를 바탕으로 추가 이벤트를 추론하지 않습니다.
- 반환된 열을 검토합니다. FinancialPeriod는 케이스 식별자, ActivityName은 이벤트 활동, EventTime은 필수 이벤트 타임스탬프입니다. 원본 레코드에 값이 있는 경우 EndTime, ResponsibleUser, CompanyCode, GlAccountNumber, DocumentNumber, ReconciliationStatus, TargetCompletionDate도 포함됩니다.
- 특정 기간에 원본 레코드가 없을 수 있는 활동을 포함해 필요한 활동이 모두 결과에 있는지 확인합니다. 누락된 활동 유형이 있으면 쿼리는 ActivityName이 Activity Coverage Validation으로 설정된 검증 행을 반환합니다. 대상 가져오기에 비즈니스 이벤트만 필요한 경우 ProcessMind에 업로드하기 전에 이 행을 제거하거나 별도로 처리합니다.
- 대표 이벤트를 SAP 애플리케이션 레코드 및 작업 로그와 대조합니다. 분개 이벤트는 ACDOCA 레코드와, 작업 이벤트는 TBTCO 레코드와, 변경 이벤트는 CDHDR 및 CDPOS 레코드 또는 설정된 조정 및 승인 데이터 원본과 일치하는지 확인합니다.
- 결과를 UTF-8 CSV 또는 ProcessMind에서 지원하는 다른 표 형식으로 내보냅니다. FinancialPeriod, ActivityName, EventTime 열 이름을 정확히 유지합니다. FinancialPeriod와 EventTime을 기준으로 정렬하고 명시적으로 추출한 이벤트마다 행 하나를 유지합니다.
- 이벤트 로그를 ProcessMind에 업로드하고 FinancialPeriod를 케이스 식별자, ActivityName을 활동, EventTime을 시작 타임스탬프로 설정합니다. EndTime이 있으면 종료 타임스탬프로 매핑하고, 나머지 열은 이벤트 또는 케이스 속성으로 매핑합니다.
중요한 데이터 원본 매핑 안내: SAP S/4HANA에는 모든 조정 도구, 연결 모니터, 보고서 아카이브, 승인 워크플로, 전기 기간 설정에 공통으로 적용되는 단일 테이블 구조가 없습니다. 쿼리의 각 [Your table name] 및 [Your column name] 자리표시자를 시스템에서 확인한 객체와 열로 바꿉니다. 자리표시자를 실행 가능한 SQL로 간주하지 마세요.
구성
- 데이터베이스 접근: ACDOCA, TBTCO, CDHDR, CDPOS와 전기 기간 관리, 조정, 연결 결산, 보고, 승인에 사용하도록 구성된 소스 객체에 SELECT 권한이 있는 읽기 전용 SAP HANA 데이터베이스 사용자를 사용합니다.
- 스키마 설정: [Your SAP schema]를 애플리케이션 객체가 포함된 실제 스키마 이름으로 바꿉니다. 객체가 테이블, 계산 View 또는 승인된 보고 View인지 확인합니다.
- 날짜 범위: 전체 마감 주기를 추출합니다. 일반적으로 3~6개월이 적절합니다. 기초 및 마감 활동, 지연 전기, 역분개, 승인, 마감 후 조정을 포함합니다.
- 회계 기간: 회사 코드에서 사용하는 회계연도와 회계 기간으로 필터링합니다. 회계연도 변형이 다를 수 있으므로 달력 연도 기준이라고 가정하지 마세요.
- 회사 코드: 선택한 법인으로 프로세스 범위가 한정되는 경우 회사 코드 필터를 적용합니다. 범위가 별도의 조직 매핑에 유지되는 경우 [Configure based on your system]을 사용합니다.
- 문서 유형: 발생액, 충당금, 조정, 평가, 반제 및 기타 마감 전기에 사용하는 문서 유형만 추출하도록 제한합니다. 필터를 적용하기 전에 로컬 문서 유형 설정을 확인합니다.
- 작업 상태: 완료 활동에는 완료 또는 정상 종료된 작업만 포함합니다. 상태 조건을 적용하기 전에 로컬 TBTCO 상태 값을 검증합니다.
- 변경 문서: 로컬 설정을 확인한 후 관련 객체 클래스와 변경 지표를 기준으로 CDHDR 및 CDPOS를 필터링합니다. 변경 문서만으로 모든 업무 활동을 식별하지 못할 수 있습니다.
- 조정 및 승인 소스: 조정 상태 변경, 작성자 작업, 승인, 목표 날짜, 전자 서명을 기록하는 검증된 소스 객체를 설정합니다. 이러한 소스는 배포된 SAP 구성 요소와 확장 기능에 따라 다릅니다.
- 성능: 회계연도, 회계 기간, 회사 코드, 전기 날짜, 이벤트 타임스탬프에 조건을 적용합니다. 각 UNION ALL 분기에 필터를 적용하고 ACDOCA 전체를 무제한으로 조회하지 않으며, 승인된 보고 시간대에 실행합니다.
- 데이터 유형: 타임스탬프의 시간대와 데이터 유형을 통일합니다. 빈 문자열은 NULL로 변환하고 회사 코드, 계정 번호, 문서 번호의 선행 0은 유지합니다.
- 사전 요건: 필요한 SAP 구성 요소, 조정 도구, 연결 결산 기능, 작업 로깅, 변경 문서 활성화, 보고서 또는 워크플로 감사 로그가 사용 가능하고 데이터가 기록되는지 확인합니다.
- 보안 및 규정 준수: 최소 권한 원칙을 적용하고 재무 및 사용자 데이터를 보호합니다. 추출 목적을 문서화하고 조직의 SAP 및 데이터베이스 감사 요건을 따릅니다.
샘플 쿼리 sql
WITH
params AS (
SELECT
TO_DATE('[Start date YYYY-MM-DD]') AS start_date,
TO_DATE('[End date YYYY-MM-DD]') AS end_date,
'[Fiscal year]' AS fiscal_year_filter,
'[Fiscal period]' AS fiscal_period_filter,
'[Company code filter]' AS company_code_filter
FROM DUMMY
),
base_events AS (
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0') AS FinancialPeriod,
'Accruals And Provisions Posted' AS ActivityName,
CAST(a.BUDAT AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(a.USNAM AS NVARCHAR(80)) AS ResponsibleUser,
CAST(a.RBUKRS AS NVARCHAR(20)) AS CompanyCode,
CAST(a.RACCT AS NVARCHAR(40)) AS GlAccountNumber,
CAST(a.BELNR AS NVARCHAR(40)) AS DocumentNumber,
CAST(NULL AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Accrual document type]', '[Provision document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Adjusting Journal Entry Posted',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Adjusting journal entry document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Foreign Currency Valuation Run',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Foreign currency valuation document type]')
UNION ALL
SELECT
TO_NVARCHAR(a.RYEAR) || '-' || LPAD(TO_NVARCHAR(a.POPER), 2, '0'),
'Automated Clearing Run Executed',
CAST(a.BUDAT AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(a.USNAM AS NVARCHAR(80)),
CAST(a.RBUKRS AS NVARCHAR(20)),
CAST(a.RACCT AS NVARCHAR(40)),
CAST(a.BELNR AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].ACDOCA a
CROSS JOIN params p
WHERE a.BUDAT >= p.start_date
AND a.BUDAT < ADD_DAYS(p.end_date, 1)
AND (p.fiscal_year_filter = '[Fiscal year]' OR TO_NVARCHAR(a.RYEAR) = p.fiscal_year_filter)
AND (p.fiscal_period_filter = '[Fiscal period]' OR TO_NVARCHAR(a.POPER) = p.fiscal_period_filter)
AND (p.company_code_filter = '[Company code filter]' OR TO_NVARCHAR(a.RBUKRS) = p.company_code_filter)
AND a.BLART IN ('[Automated clearing document type]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Subledger Data Transfer Completed',
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job end timestamp column] >= p.start_date
AND j.[Job end timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job status column] = '[Successful job status]'
AND j.[Job name column] IN ('[AR transfer job]', '[AP transfer job]', '[Asset Accounting transfer job]')
UNION ALL
SELECT
CAST(j.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(j.[Job start timestamp column] AS TIMESTAMP),
CAST(j.[Job end timestamp column] AS TIMESTAMP),
CAST(j.[Job user column] AS NVARCHAR(80)),
CAST(j.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(j.[Job name column] AS NVARCHAR(40)),
CAST(NULL AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your SAP schema].TBTCO j
CROSS JOIN params p
WHERE j.[Job start timestamp column] >= p.start_date
AND j.[Job start timestamp column] < ADD_DAYS(p.end_date, 1)
AND j.[Job name column] IN ('[Intercompany reconciliation job]')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Intercompany Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for intercompany reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('Started', 'In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Started',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Responsible user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] IN ('In Progress')
UNION ALL
SELECT
CAST(r.[Financial period column] AS NVARCHAR(20)),
'Account Reconciliation Approved',
CAST(r.[Status change timestamp column] AS TIMESTAMP),
CAST(NULL AS TIMESTAMP),
CAST(r.[Approver user column] AS NVARCHAR(80)),
CAST(r.[Company code column] AS NVARCHAR(20)),
CAST(r.[GL account column] AS NVARCHAR(40)),
CAST(r.[Reconciliation case column] AS NVARCHAR(40)),
CAST(r.[Status column] AS NVARCHAR(40)),
CAST(r.[Target completion date column] AS DATE)
FROM [Your table name for account reconciliation] r
CROSS JOIN params p
WHERE r.[Status change timestamp column] >= p.start_date
AND r.[Status change timestamp column] < ADD_DAYS(p.end_date, 1)
AND r.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(c.[Financial period column] AS NVARCHAR(20)),
'Consolidation Tasks Executed',
CAST(c.[Execution start timestamp column] AS TIMESTAMP),
CAST(c.[Execution end timestamp column] AS TIMESTAMP),
CAST(c.[Responsible user column] AS NVARCHAR(80)),
CAST(c.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(c.[Task identifier column] AS NVARCHAR(40)),
CAST(c.[Status column] AS NVARCHAR(40)),
CAST(c.[Target completion date column] AS DATE)
FROM [Your table name for consolidation execution] c
CROSS JOIN params p
WHERE c.[Execution start timestamp column] >= p.start_date
AND c.[Execution start timestamp column] < ADD_DAYS(p.end_date, 1)
AND c.[Status column] IN ('Completed', 'Successful')
UNION ALL
SELECT
CAST(t.[Financial period column] AS NVARCHAR(20)),
'Trial Balance Prepared',
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Report saved timestamp column] AS TIMESTAMP),
CAST(t.[Responsible user column] AS NVARCHAR(80)),
CAST(t.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(t.[Report identifier column] AS NVARCHAR(40)),
CAST(t.[Status column] AS NVARCHAR(40)),
CAST(t.[Target completion date column] AS DATE)
FROM [Your table name for trial balance output] t
CROSS JOIN params p
WHERE t.[Report saved timestamp column] >= p.start_date
AND t.[Report saved timestamp column] < ADD_DAYS(p.end_date, 1)
AND t.[Status column] IN ('Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Generated',
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Generation timestamp column] AS TIMESTAMP),
CAST(f.[Responsible user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement output] f
CROSS JOIN params p
WHERE f.[Generation timestamp column] >= p.start_date
AND f.[Generation timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] IN ('Generated', 'Saved', 'Completed')
UNION ALL
SELECT
CAST(f.[Financial period column] AS NVARCHAR(20)),
'Financial Statements Approved',
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approval timestamp column] AS TIMESTAMP),
CAST(f.[Approver user column] AS NVARCHAR(80)),
CAST(f.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(f.[Report identifier column] AS NVARCHAR(40)),
CAST(f.[Status column] AS NVARCHAR(40)),
CAST(f.[Target completion date column] AS DATE)
FROM [Your table name for financial statement approval] f
CROSS JOIN params p
WHERE f.[Approval timestamp column] >= p.start_date
AND f.[Approval timestamp column] < ADD_DAYS(p.end_date, 1)
AND f.[Status column] = 'Approved'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Opened For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Open'
UNION ALL
SELECT
CAST(x.[Financial period column] AS NVARCHAR(20)),
'Period Closed For Posting',
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Change timestamp column] AS TIMESTAMP),
CAST(x.[Changed by column] AS NVARCHAR(80)),
CAST(x.[Company code column] AS NVARCHAR(20)),
CAST(NULL AS NVARCHAR(40)),
CAST(x.[Change document number column] AS NVARCHAR(40)),
CAST(x.[New status column] AS NVARCHAR(40)),
CAST(NULL AS DATE)
FROM [Your table name for posting period changes] x
CROSS JOIN params p
WHERE x.[Change timestamp column] >= p.start_date
AND x.[Change timestamp column] < ADD_DAYS(p.end_date, 1)
AND x.[New status column] = 'Closed'
),
activity_list AS (
SELECT 'Period Opened For Posting' AS ActivityName FROM DUMMY
UNION ALL SELECT 'Subledger Data Transfer Completed' FROM DUMMY
UNION ALL SELECT 'Intercompany Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Accruals And Provisions Posted' FROM DUMMY
UNION ALL SELECT 'Automated Clearing Run Executed' FROM DUMMY
UNION ALL SELECT 'Foreign Currency Valuation Run' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Started' FROM DUMMY
UNION ALL SELECT 'Adjusting Journal Entry Posted' FROM DUMMY
UNION ALL SELECT 'Account Reconciliation Approved' FROM DUMMY
UNION ALL SELECT 'Consolidation Tasks Executed' FROM DUMMY
UNION ALL SELECT 'Trial Balance Prepared' FROM DUMMY
UNION ALL SELECT 'Financial Statements Generated' FROM DUMMY
UNION ALL SELECT 'Financial Statements Approved' FROM DUMMY
UNION ALL SELECT 'Period Closed For Posting' FROM DUMMY
),
missing_activities AS (
SELECT
CAST(NULL AS NVARCHAR(20)) AS FinancialPeriod,
'Activity Coverage Validation' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS TIMESTAMP) AS EndTime,
CAST(NULL AS NVARCHAR(80)) AS ResponsibleUser,
CAST(NULL AS NVARCHAR(20)) AS CompanyCode,
CAST(NULL AS NVARCHAR(40)) AS GlAccountNumber,
CAST(NULL AS NVARCHAR(40)) AS DocumentNumber,
CAST('Missing activity: ' || al.ActivityName AS NVARCHAR(40)) AS ReconciliationStatus,
CAST(NULL AS DATE) AS TargetCompletionDate
FROM activity_list al
LEFT JOIN base_events b ON b.ActivityName = al.ActivityName
WHERE b.ActivityName IS NULL
)
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM base_events
UNION ALL
SELECT
FinancialPeriod,
ActivityName,
EventTime,
EndTime,
ResponsibleUser,
CompanyCode,
GlAccountNumber,
DocumentNumber,
ReconciliationStatus,
TargetCompletionDate
FROM missing_activities
ORDER BY FinancialPeriod, EventTime, ActivityName 시작할 준비가 되셨나요?
이 데이터 템플릿을 활용해 조직의 효율성과 규정 준수를 높이세요. 지금 Record to Report 프로세스 개선을 시작할 수 있습니다.
지금 Record to Report 마감 및 조정 프로세스 최적화
비효율을 찾아 마감 주기를 최대 30% 단축하세요.
신용카드 없이 몇 분 만에 시작할 수 있습니다.