Record to Report: 기간 마감 및 조정 데이터 템플릿
Record to Report: 기간 마감 및 조정 데이터 템플릿
- 수집 권장 속성
- 추적할 주요 활동
- 데이터 추출 안내
Record to Report: 기간 마감 및 조정 속성
| 이름 | 설명 | ||
|---|---|---|---|
| 회계 기간 FinancialPeriod | 일반적으로 회계연도와 전기 기간을 조합해 표시하는 재무 보고 주기의 고유 식별자입니다. | ||
| 설명 회계 기간은 기본 케이스 식별자로, 특정 보고 주기의 계정 마감 및 대사와 관련된 모든 활동을 묶습니다. 예를 들어 2023년 12월은 '2023-12'로 표시할 수 있습니다. 이를 통해 각 기간의 시작부터 끝까지 전체 기간 마감 프로세스를 분석할 수 있습니다. 분석에서는 각 마감의 전체 주기 시간을 추적하고 기간별 성과를 비교하며 추세나 이상 징후를 찾을 수 있습니다. 회계 기간마다 고유한 케이스를 지정하면 시간에 따른 마감 프로세스의 효율성, 병목 및 편차를 시각화하고 측정할 수 있습니다. 중요한 이유 분석 범위를 정하는 필수 케이스 식별자입니다. 기간별 마감 주기 시간, 업무량 및 프로세스 규정 준수를 비교할 수 있습니다. 확보 방법 일반적으로 재무 문서 헤더, 예를 들어 BKPF 테이블의 회계연도(GJAHR)와 전기 기간(MONAT)을 결합해 산출합니다. 예시 2023-122024-032023년 4분기 | |||
| 소스 시스템 SourceSystem | 데이터를 추출한 소스 시스템의 식별자입니다. | ||
| 설명 이 속성은 특정 SAP ECC 인스턴스의 이름이나 ID처럼 이벤트 데이터의 출처를 나타냅니다. ERP 또는 재무 시스템을 여러 개 사용하는 조직에서는 소스별 데이터를 구분하는 데 필요합니다. 시스템이 하나뿐인 경우에도 데이터 거버넌스, 감사 및 문제 해결에 필요한 메타데이터로 활용됩니다. 데이터의 출처를 확인해 분석 결과에 대한 신뢰를 높이고 데이터 계보를 명확히 할 수 있습니다. 중요한 이유 데이터 거버넌스를 위해 데이터 출처를 확인하는 계보 정보를 제공하며, 여러 시스템을 사용하는 환경에서는 프로세스를 구분하는 데 필요합니다. 확보 방법 일반적으로 데이터 추출 과정에서 고정값으로 추가하며, 특정 SAP 클라이언트와 시스템 ID를 식별합니다(예: 테이블 T000에서 확인). 예시 ECC_PROD_100SAP_E74_200ECC_FINANCE | |||
| 이벤트 시각 EventTime | 활동 또는 이벤트가 발생한 시점을 나타내는 타임스탬프입니다. | ||
| 설명 이벤트 시각은 프로세스의 각 활동이 발생한 날짜와 시간을 정확히 나타내며, 분석의 시간 순서를 정하는 기준이 됩니다. 일반적으로 문서 생성 날짜와 시간을 조합해 산출합니다. 이 타임스탬프는 이벤트를 올바른 순서로 정렬해 프로세스 흐름을 재구성하는 데 필요합니다. 활동 간 주기 시간, 대기 시간, 전체 기간 마감 시간 등 시간 기반 지표를 계산하는 데 사용됩니다. 타임스탬프를 분석하면 지연과 업무의 시간대별 분포를 파악할 수 있습니다. 중요한 이유 필수 속성인 이벤트 시각은 이벤트의 시간 순서를 제공하므로 주기 시간을 계산하고 프로세스 병목을 찾는 데 필요합니다. 확보 방법 일반적으로 재무 문서의 경우 BKPF 테이블에 있는 문서 입력 날짜(CPUDT)와 입력 시간(CPUTM)을 사용합니다. 예시 2023-12-28T14:30:15Z2024-01-02T09:05:00Z2024-01-05T17:21:45Z | |||
| 최종 데이터 업데이트 LastDataUpdate | 소스 시스템에서 데이터를 마지막으로 새로 고치거나 추출한 시각입니다. | ||
| 설명 이 속성은 분석 중인 데이터의 최신성을 나타냅니다. 데이터 파이프라인이 마지막으로 실행된 날짜와 시간을 보여주므로 프로세스 분석 결과가 얼마나 최신인지 알 수 있습니다. 실시간 진행 상황을 추적하는 대시보드에서는 사용자가 최신 정보와 전날 데이터를 구분할 수 있도록 이 타임스탬프를 표시하는 것이 중요합니다. 데이터의 기준 시점을 명확히 해 분석 결과를 올바르게 해석할 수 있습니다. 중요한 이유 데이터의 최신성을 알려주므로 분석과 대시보드가 적시에 관련성 있는 정보를 제공하는지 확인할 수 있습니다. 확보 방법 각 데이터 적재가 끝날 때 데이터 추출 도구 또는 ETL 도구가 타임스탬프를 생성해 추가합니다. 예시 2024-05-21T04:00:00Z2024-05-20T04:00:00Z2024-05-19T04:00:00Z | |||
| 활동 ActivityName | 기간 마감 프로세스에서 수행한 구체적인 업무 이벤트 또는 작업의 이름입니다. | ||
| 설명 이 속성은 Record to Report 주기에서 수행한 개별 단계를 기록합니다. 예를 들어 '조정 분개 전기' 또는 '재무제표 생성'이 있습니다. 프로세스 맵의 기반이 되어 기간 마감을 구성하는 이벤트의 순서를 보여줍니다. 활동 분석은 process mining의 기본입니다. 프로세스 흐름을 시각화하고 작업 순서를 파악하며 프로세스 편차를 발견하고 각 단계의 빈도와 소요 시간을 측정할 수 있습니다. 이를 통해 병목, 표준에서 벗어난 경로, 표준화 또는 자동화 기회를 찾을 수 있습니다. 중요한 이유 기간 마감 작업의 순서를 시각화하고 분석하는 프로세스 맵을 구성하는 데 필요한 필수 속성입니다. 확보 방법 SAP 트랜잭션 코드(TCODE), 문서 유형(BLART) 또는 특정 프로그램 실행(예: 외화 평가용 FAGL_FCV)을 조합해 산출합니다. 예시 조정 분개 전기계정 대사 시작전기 기간 마감 | |||
| 담당 사용자 USNAM | 거래를 생성하거나 실행한 사람의 SAP 사용자 ID입니다. | ||
| 설명 이 필드에는 문서를 전기하거나 보고서를 실행하거나 마감 관련 프로그램을 실행한 사용자가 기록됩니다. 각 활동의 담당자를 식별할 수 있습니다. 사용자별 분석은 업무량 분포를 파악하고 교육 필요성을 확인하며 프로세스 편차를 조사하는 데 중요합니다. 사용자별 활동을 보여주는 대시보드에서 업무가 과중한 팀원이나 표준 절차를 따르지 않을 수 있는 사용자를 확인할 수 있습니다. 재무팀의 성과 관리와 리소스 배분에도 도움이 됩니다. 중요한 이유 업무량 분포와 팀 성과를 분석하고 특정 사용자와 관련된 프로세스 편차를 파악할 수 있습니다. 확보 방법 문서 생성 사용자는 BKPF 테이블(USNAM)에서 확인할 수 있습니다. 배치 작업의 경우 TBTCO 테이블(SDLUNAME)에 기록됩니다. 예시 JSMITHRDOEFIN_ADMIN | |||
| 문서 번호 BELNR | 회계연도와 회사 코드 내에서 회계 문서를 고유하게 식별하는 번호입니다. | ||
| 설명 회계 문서 번호는 SAP 재무 전기의 기본 키입니다. 각 분개, 송장 또는 지급 문서에는 고유 번호가 부여됩니다. 일반적으로 상위 수준의 프로세스 분석에는 사용하지 않지만, 세부 분석으로 이동할 때 유용합니다. process mining 대시보드에서 문서 번호를 사용하면 분석 담당자가 SAP의 해당 거래로 바로 이동해 큰 조정 분개나 대사가 지연된 항목과 같은 이상 징후를 자세히 조사할 수 있습니다. 분석 결과와 원본 거래를 직접 연결합니다. 중요한 이유 SAP의 원본 거래로 바로 연결해 프로세스 화면에서 특정 회계 항목을 상세히 분석할 수 있습니다. 확보 방법 BKPF 테이블의 기본 키(BELNR)로 저장됩니다. 예시 100000456719000001233000008901 | |||
| 문서 유형 BLART | 회계 문서의 유형을 구분하는 코드입니다. | ||
| 설명 SAP에서 문서 유형은 공급업체 송장(KR), 고객 지급(DZ), 총계정원장 전기(SA) 등 다양한 업무 거래를 구분하는 데 사용됩니다. 문서 번호 범위와 같은 속성도 제어합니다. 기간 말 마감 분석에서 문서 유형은 유용한 필터입니다. 미지급비용, 충당금 또는 역분개와 같은 특정 활동을 분리할 수 있습니다. 이를 통해 마감 관련 거래의 건수와 재무 영향을 분석하고 프로세스 모델의 활동을 정의할 수 있습니다. 중요한 이유 거래를 분류하고 필터링해 미지급비용, 역분개 또는 회사 간 전기와 같은 특정 활동을 분리해 분석할 수 있습니다. 확보 방법 문서 헤더 테이블 BKPF(BLART)에 있습니다. 예시 SAABKR | |||
| 분개 유형 JournalEntryType | 분개를 '일반', '조정', '미지급비용' 또는 '역분개' 등으로 분류합니다. | ||
| 설명 이 파생 속성은 마감 프로세스에서 재무 문서의 업무 목적을 기준으로 문서를 분류합니다. 일반적으로 문서 유형(BLART), 역분개 사유(STGRD), 사용된 특정 GL 계정을 조합해 결정합니다. 이 분류는 '조정 분개 건수 분석' 대시보드와 관련 KPI의 기반입니다. 조정 분개나 미지급비용 분개를 명확히 식별하면 건수와 금액을 측정하고 추세를 추적하며 해당 분개가 필요한 원인을 조사할 수 있습니다. 정기적인 운영 전기와 기간 말 조정을 구분하는 데도 도움이 됩니다. 중요한 이유 전기를 분류해 조정 및 미지급비용과 같은 주요 분개 유형을 추적하고 측정할 수 있습니다. 이러한 유형은 프로세스 상태를 파악하는 지표로 활용됩니다. 확보 방법 파생 필드입니다. 일반적으로 BKPF의 문서 유형(BLART)과 같은 필드를 사용해 업무 규칙에 따라 로직을 정의해야 합니다. 예시 조정미지급비용역분개일반 | |||
| 총계정원장 계정 HKONT | 개별 항목이 전기되는 총계정원장 계정 번호입니다. | ||
| 설명 총계정원장(GL) 계정은 거래를 분류하는 재무 마스터 데이터의 기본 요소입니다. 모든 재무 전기는 하나 이상의 GL 계정에 지정됩니다. 기간 마감에서는 GL 계정별 활동 분석이 '계정 대사 병목' 및 '조정 분개 건수 분석' 대시보드에 필요합니다. 대사가 어려운 계정, 조정이 많이 필요한 계정, 중요한 왜곡 표시 위험이 높은 영역을 파악할 수 있습니다. 이를 바탕으로 문제가 있는 계정에 우선순위를 두고 대응할 수 있습니다. 중요한 이유 대사와 조정 분개를 집중적으로 분석해 지연을 일으키거나 자주 수정이 필요한 계정을 찾을 수 있습니다. 확보 방법 재무 문서 개별 항목 테이블 BSEG(HKONT)에서 확인할 수 있습니다. 예시 113100400500750000 | |||
| 현지 통화 금액 DMBTR | 회사 코드의 현지 통화로 표시한 거래 개별 항목의 금액입니다. | ||
| 설명 이 속성은 재무 전기의 금액을 나타내며, 총계정원장에 미치는 거래 영향을 수치로 보여줍니다. 금액 분석은 문제의 우선순위를 정하고 재무 위험을 파악하는 데 중요합니다. 예를 들어 '조정 분개 건수 분석' 대시보드에서 금액을 함께 보면 금액이 적은 조정이 많은 경우와 금액이 큰 조정이 적은 경우를 구분할 수 있습니다. 재무적으로 중요한 거래에 집중할 수 있습니다. 중요한 이유 거래의 재무 영향을 수치화해 중요도에 따라 분석하고 금액이 큰 조정 분개를 식별할 수 있습니다. 확보 방법 문서 개별 항목 테이블 BSEG(DMBTR)에서 확인할 수 있습니다. 예시 1500.75-25000.00123456.00 | |||
| 회사 코드 BUKRS | 재무제표를 작성하는 법인을 나타내는 조직 단위입니다. | ||
| 설명 회사 코드는 SAP Financials의 기본 조직 단위입니다. 자체적으로 균형 잡힌 장부를 관리하는 독립 회사를 나타냅니다. 모든 재무 거래는 회사 코드 단위로 전기됩니다. process mining에서는 회사 코드별로 필터링해 기업 내 여러 법인의 기간 마감 프로세스를 비교할 수 있습니다. 이를 통해 성과가 우수한 법인의 모범 사례를 찾고, 지연이나 조정 건수 증가 또는 프로세스 편차로 어려움을 겪는 법인을 파악할 수 있습니다. 분석을 세분화하는 주요 기준입니다. 중요한 이유 법인별 기간 마감 성과와 규정 준수를 비교할 수 있어 그룹 차원의 재무 분석에 유용합니다. 확보 방법 SAP의 대부분 재무 문서 테이블에서 확인할 수 있으며, 주로 BKPF(헤더)와 BSEG(개별 항목)에 있습니다. 예시 10002000US01DE01 | |||
| 거래 상대방 VBUND | 회사 간 거래에 참여한 계열사의 식별자입니다. | ||
| 설명 거래 상대방 ID는 회사 간 거래에 참여하는 상대 회사 코드를 식별하는 데 사용됩니다. 관계 법인 간 계정 대사에 필요한 정보입니다. 이 속성은 '회사 간 대사 흐름' 대시보드와 '회사 간 대사 주기 시간' KPI를 지원합니다. 거래 상대방이 지정된 거래만 필터링하면 기간 마감에서 자주 문제가 되는 회사 간 대사 프로세스의 효율성과 적시성을 집중적으로 분석할 수 있습니다. 중요한 이유 회사 간 거래를 식별해 복잡하고 시간이 오래 걸리는 회사 간 대사 프로세스를 집중적으로 분석할 수 있습니다. 확보 방법 문서 개별 항목 테이블 BSEG(VBUND)에서 확인할 수 있습니다. 예시 1000US013000 | |||
| 기한 초과 여부 IsOverdue | 활동이 계획된 목표일 이후에 완료되었는지 나타내는 계산 플래그입니다. | ||
| 설명 이 불리언 속성은 활동의 실제 완료 시간(EventTime)과 계획된 기한(TargetCompletionDate)을 비교합니다. 이벤트 시간이 목표일보다 늦으면 플래그가 true로 설정됩니다. 이 속성은 '마감 규정 준수 및 기한 초과 작업' 대시보드와 '기간 마감 정시 완료율' KPI를 직접 지원합니다. 일정 이탈을 명확하고 즉시 파악할 수 있어 관리자는 지연된 작업을 빠르게 찾고 전체 일정에 미치는 영향을 파악하며, 팀이 기한을 준수하도록 관리할 수 있습니다. 중요한 이유 일정 미준수 여부를 명확히 보여주므로 지연된 작업을 빠르게 찾고 정시 성과를 측정할 수 있습니다. 확보 방법 계산된 속성입니다. process mining 도구에서 EventTime과 TargetCompletionDate를 비교해 계산합니다. 예시 truefalse | |||
| 대사 상태 ReconciliationStatus | '미결', '검토 중', '승인' 등 계정 대사의 현재 상태입니다. | ||
| 설명 이 속성은 계정 대사가 워크플로를 진행하는 동안 상태를 추적합니다. 대사가 시작되었는지, 검토를 위해 제출되었는지, 승인 또는 거부되었는지 나타냅니다. 대사 활동의 진행 상황을 실시간으로 모니터링하는 데 필요한 속성입니다. 대사 주기 시간 KPI를 지원하며, 어느 대사가 얼마나 오래 지연되고 있는지 파악할 수 있습니다. 승인 절차를 확인할 수 있어 대사 병목과 팀 업무량을 추적하는 대시보드에도 유용합니다. 중요한 이유 대사 워크플로의 진행 상황을 확인하고 병목을 찾으며 검토 및 승인 시간을 측정할 수 있습니다. 확보 방법 이 정보는 대개 별도의 조정 도구(예: BlackLine의 SAP Account Substantiation and Automation)나 사용자 정의 상태 필드에 저장됩니다. 일반적으로 BKPF/BSEG의 표준 필드에는 포함되지 않습니다. 예시 시작 전진행 중승인됨반려됨 | |||
| 목표 완료일 TargetCompletionDate | 활동 또는 전체 기간 마감의 계획된 기한입니다. | ||
| 설명 목표 완료일은 기간 마감 프로세스의 성과를 측정하는 기준 일정입니다. 특정 주요 단계나 최종 마감을 완료해야 하는 기한을 나타냅니다. 이 속성은 성과 및 규정 준수 분석에 필수적입니다. '기간 마감 정시 완료율' KPI를 계산하고 '마감 규정 준수 및 기한 초과 작업' 대시보드를 구성하는 데 사용됩니다. 실제 이벤트 시간과 목표일을 비교하면 작업이 일정대로 진행 중인지, 지연되었는지, 지연 위험이 있는지 파악할 수 있어 마감 프로세스를 선제적으로 관리할 수 있습니다. 중요한 이유 마감 활동의 정시 완료 여부를 측정할 기준을 제공해 규정 준수와 성과를 모니터링하고, 정시 완료 KPI를 지원합니다. 확보 방법 일반적으로 별도의 달력, 마감 관리 도구(예: SAP Financial Closing cockpit) 또는 스프레드시트에서 관리하는 기준 정보입니다. 거래 데이터에는 포함되지 않습니다. 예시 2023-12-29T23:59:59Z2024-01-03T17:00:00Z2024-01-02T12:00:00Z | |||
| 부서 Department | 활동 또는 거래를 담당하는 기능 부서나 코스트 센터입니다. | ||
| 설명 이 속성은 거래와 관련된 '재무', '영업', '물류' 등의 업무 부서를 식별합니다. 전기에 연결된 코스트 센터 마스터 데이터나 사용자 마스터 데이터를 바탕으로 산출하는 경우가 많습니다. 부서별 분석은 '마감 팀 업무량 분포' 대시보드를 지원합니다. 특히 이후 조정이나 대사가 필요할 수 있는 거래를 시작하는 업무를 중심으로 각 부서가 기간 말 업무량에 어떻게 기여하는지 파악할 수 있습니다. 재무팀 외부에서 마감 프로세스에 영향을 주는 영역도 확인할 수 있습니다. 중요한 이유 업무 기능별 업무량과 프로세스 준수 여부를 분석해 각 부서가 재무 마감 효율성에 미치는 영향을 파악할 수 있습니다. 확보 방법 BSEG의 코스트 센터(KOSTL) 또는 담당 사용자의 HR 마스터 데이터에서 산출하는 경우가 많습니다. 여러 테이블을 조인해야 할 수 있습니다. 예시 기업 재무매입채무FP&A | |||
| 역분개 사유 ReversalReason | 재무 문서를 역분개한 이유를 나타내는 코드입니다. | ||
| 설명 SAP에서 문서를 역분개할 때 사유 코드를 지정해 '당기 역분개' 또는 '잘못된 입력'과 같이 취소 이유를 설명할 수 있습니다. 이 속성은 재작업이 발생한 이유를 파악하는 데 필요한 정보를 제공합니다. 역분개 사유를 분석하면 잘못된 데이터 입력이나 날짜 오류와 같은 반복적인 문제를 찾을 수 있습니다. 이를 바탕으로 예방 조치를 마련하고 교육을 개선하거나 시스템 통제를 강화해 오류와 후속 역분개를 줄이고 마감 효율을 높일 수 있습니다. 중요한 이유 오류와 재작업의 근본 원인을 파악해 프로세스 개선 및 오류 예방 기회를 찾을 수 있습니다. 확보 방법 문서 헤더 테이블 BKPF(STGRD)에 있습니다. 예시 010205 | |||
| 자동화 여부 IsAutomated | 활동을 사용자가 수행했는지 자동화 시스템이 수행했는지 나타내는 플래그입니다. | ||
| 설명 이 불리언 속성은 수동 작업과 시스템이 자동으로 실행한 작업을 구분합니다. 예를 들어 외화 평가를 위한 예약 배치 작업이나 반복 분개를 입력하는 봇이 이에 해당합니다. 거래와 연결된 사용자 이름(예: 'BATCHUSER')을 분석해 자동화 여부를 판별하는 경우가 많습니다. 자동화 수준을 파악하면 효율을 높일 기회를 찾을 수 있습니다. 이 속성을 분석하면 프로세스에서 수동으로 처리되는 부분과 자동화 가능성이 있는 부분을 시각화할 수 있습니다. 또한 시스템이 생성한 활동을 제외해 실제 인력의 업무량을 정확하게 평가하는 데 도움이 됩니다. 중요한 이유 수동 활동과 시스템이 처리하는 활동을 구분합니다. 자동화 기회를 찾고 수작업량을 정확히 측정하는 데 중요합니다. 확보 방법 계산된 속성입니다. 일반적으로 사용자 이름(USNAM)을 기준으로 판별하며, 알려진 시스템 또는 배치 사용자 ID 목록에 해당하면 자동화된 작업으로 간주합니다. 예시 truefalse | |||
| 재작업 여부 IsRework | 취소 또는 반려된 조정처럼 재작업에 해당하는 활동을 식별하는 계산 플래그입니다. | ||
| 설명 이 불리언 속성은 프로세스에서 비효율적인 반복이나 수정이 발생했음을 보여주는 이벤트 또는 이벤트 순서를 표시합니다. 예를 들어 같은 계정에서 '조정 검토' 활동 후 '조정 분개 전기'가 다시 발생하면 재작업으로 표시할 수 있습니다. 이 속성은 프로세스 낭비를 정량화하는 데 필수적이며, '조정 재작업 건수' 대시보드와 '조정 재작업률' KPI를 지원합니다. 재작업을 분리해 분석하면 팀에서 근본 원인을 조사하고 주기 시간에 미치는 영향을 측정하며, 처음부터 정확하게 처리하기 위한 프로세스 개선 활동의 효과를 추적할 수 있습니다. 중요한 이유 수정이나 반복에 해당하는 활동을 표시해 프로세스 비효율을 정량화하고, 낭비되는 노력을 측정하고 줄이는 데 도움을 줍니다. 확보 방법 계산된 속성입니다. process mining 도구에서 특정 활동 순서(예: 반복)나 속성(예: ReversalReason이 null이 아님)을 기준으로 로직을 정의합니다. 예시 truefalse | |||
| 회계연도 GJAHR | 거래가 전기된 회계연도입니다. | ||
| 설명 회계연도는 재무 데이터를 구성하는 기본 요소입니다. Financial Period 케이스 ID의 주요 구성 요소이며 모든 거래를 이해하는 데 필요한 맥락을 제공합니다. 회계연도가 케이스 ID에 포함되는 경우가 많지만, 별도 속성으로 두면 장기 추세 분석에 유용합니다. 마감 주기 시간, 조정 건수 및 기타 KPI를 연도별로 비교해 여러 해에 걸친 성과 개선이나 저하를 파악할 수 있습니다. 중요한 이유 시간적 맥락을 제공하고 마감 프로세스의 연도별 성과 비교를 지원합니다. 확보 방법 문서 헤더 테이블 BKPF에서 확인할 수 있습니다(GJAHR). 예시 202320242022 | |||
Record to Report: 기간 마감 및 조정 활동
| 활동 | 설명 | ||
|---|---|---|---|
| 계정 대사 시작 | 해당 기간의 총계정원장 계정 집합에 대한 대사 프로세스가 시작되는 시점을 나타냅니다. 표준 SAP ECC에서는 별도의 이벤트로 기록되지 않으며, 관련 보고서를 처음 실행한 시점과 같은 활동을 바탕으로 추론합니다. | ||
| 중요한 이유 이 활동은 전체 대사 단계의 소요 시간을 측정하는 기준점입니다. 계정 대사 주기 시간 KPI를 산출하려면 대사가 언제 시작되는지 파악해야 합니다. 확보 방법 이 이벤트는 명시적으로 기록되지 않습니다. FAGLB03 또는 FS10N과 같은 잔액 조회 보고서의 최초 실행 기록을 시스템 감사 로그(트랜잭션 STAD) 등에서 찾아 추론해야 합니다. 기록 시스템 로그에서 관련 보고서 트랜잭션(예: FAGLB03)의 최초 실행을 찾아 추론합니다. 이벤트 유형 inferred | |||
| 외화 평가 실행 | 기간 말 환율을 적용해 외화로 기록된 미결 항목과 잔액을 재평가하는 프로그램의 실행을 나타냅니다. 일반적으로 기간 말 마감 단계의 일부로 배치 작업을 실행합니다. | ||
| 중요한 이유 다국적 조직의 정확한 재무 보고를 위해 필요한 단계입니다. 실행 시점과 소요 시간을 분석하면 자동화 및 성능 최적화 기회를 찾을 수 있습니다. 확보 방법 FAGL_FCV 또는 F.05와 같은 외화 평가 프로그램의 실행 로그에서 확인합니다. TBTCO 및 TBTCP 등의 테이블에 있는 배치 작업 정보로 실행 시각을 파악할 수 있습니다. 기록 프로그램 FAGL_FC_VALUATION 또는 SAPF100의 배치 작업 로그(테이블 TBTCO)에서 확인합니다. 이벤트 유형 explicit | |||
| 재무제표 생성 | 손익계산서와 대차대조표 같은 공식 재무제표가 생성된 시점을 나타냅니다. 일반적으로 특정 보고 프로그램의 실행 내역을 추적해 확인합니다. | ||
| 중요한 이유 데이터 처리가 끝나고 최종 검토 및 승인 단계가 시작되는 주요 시점입니다. 이 이벤트부터 승인까지 걸린 시간은 중요한 KPI입니다. 확보 방법 가장 흔하게는 트랜잭션 F.01인 재무제표 생성 프로그램의 실행 내역을 기록하는 STAD 등의 시스템 감사 로그에서 추론합니다. 기록 재무제표 트랜잭션 F.01의 실행 내역을 추적하는 시스템 로그(STAD)에서 확인합니다. 이벤트 유형 inferred | |||
| 전기 기간 마감 | 전기 기간을 공식적으로 마감하여 추가 운영 분개를 막는 작업입니다. 마감된 기간의 재무 데이터 무결성을 보장하며, 설정을 명시적으로 변경합니다. | ||
| 중요한 이유 기간 마감 프로세스의 최종 종료 이벤트입니다. 전체 기간 마감 주기 시간을 정확히 계산하고 정시 완료 여부를 측정하는 데 필요합니다. 확보 방법 트랜잭션 OB52를 통한 기간 마감 내역이 기록됩니다. 설정 테이블 T001B의 변경 문서(테이블 CDHDR 및 CDPOS)를 분석해 변경 사항을 확인할 수 있습니다. 기록 테이블 T001B의 변경 문서(CDHDR/CDPOS)에서 추출합니다. 이벤트 유형 explicit | |||
| 전기 기간 시작 | 회계 기간을 공식적으로 시작하여 총계정원장에 거래를 전기할 수 있도록 합니다. 권한이 있는 사용자가 하나 이상의 회사 코드에서 특정 기간의 전기를 허용하도록 설정을 명시적으로 변경하는 작업입니다. | ||
| 중요한 이유 이 활동은 기간 마감 프로세스 케이스의 시작 이벤트를 확정합니다. 이 시점부터 걸린 시간을 분석하면 회계 기간의 전체 흐름을 파악할 수 있습니다. 확보 방법 트랜잭션 OB52를 통한 전기 기간 변경은 로그에 기록됩니다. 일반적으로 변경 문서 테이블 CDHDR 및 CDPOS에서 설정 테이블 T001B의 변경 내역을 분석해 추출할 수 있습니다. 기록 테이블 T001B의 변경 문서(CDHDR/CDPOS)에서 추출합니다. 이벤트 유형 explicit | |||
| 조정 분개 전기 | 해당 기간의 초기 거래 처리가 끝난 뒤 계정 잔액을 바로잡기 위해 조정 분개를 전기합니다. SAP에서는 일반 재무 문서 전기로 기록됩니다. | ||
| 중요한 이유 조정 분개 건수 분석에 필요한 활동입니다. 조정이 많다면 상위 프로세스의 정확성에 문제가 있을 수 있으며, 프로세스 개선을 위해 우선 살펴볼 영역입니다. 확보 방법 테이블 BKPF 및 BSEG에서 확인합니다. 일반적으로 조정 전용 문서 유형(BKPF-BLART)이나 13~16과 같은 특별 마감 기간에 전기된 문서를 기준으로 식별합니다. 기록 특별 기간에 전기되었거나 조정 문서 유형을 사용하는 문서를 기준으로 BKPF를 필터링합니다. 이벤트 유형 explicit | |||
| GR/IR 반제 실행 | 입고/송장 수취 계정의 자동 반제 프로그램 실행을 나타냅니다. 이 프로그램은 서로 대응하는 입고와 송장 수취 내역을 대조하고 각 항목을 상계합니다. | ||
| 중요한 이유 GR/IR 계정은 대사 문제가 자주 발생하는 영역입니다. 이 활동을 모니터링하면 자동화 단계가 제대로 실행되는지 확인하고 수동 후속 조치가 필요한 예외 건수를 파악할 수 있습니다. 확보 방법 실행 내역은 배치 작업 로그(트랜잭션 SM37)에 기록됩니다. 일반적으로 프로그램 SAPF124를 트랜잭션 F.13으로 실행합니다. TBTCO와 같은 작업 로그 테이블에서 필요한 시각 정보를 확인할 수 있습니다. 기록 반제 프로그램 SAPF124의 배치 작업 로그(테이블 TBTCO)에서 확인합니다. 이벤트 유형 explicit | |||
| 대사 검토 | 특정 계정 또는 계정 그룹의 대사를 검토하고 확인했음을 나타냅니다. 표준 SAP ECC에서는 명시적 이벤트로 기록되지 않으며, 오프라인 통제나 사용자 지정 솔루션으로 관리하는 경우가 많습니다. | ||
| 중요한 이유 검토 시점을 추적하면 마감 프로세스의 통제 및 감독 단계에서 발생하는 병목을 파악할 수 있습니다. 관리자 일정이나 재작업으로 인한 지연도 확인할 수 있습니다. 확보 방법 표준 ECC 테이블에서는 이 정보를 확인할 수 없습니다. 사용자 지정 Z 테이블의 상태 필드, 간단한 워크플로 또는 전문 타사 대사 도구와의 연동 등 별도 솔루션이 필요합니다. 기록 구현된 경우 사용자 지정 워크플로 또는 Z 테이블에서 상태 변경을 기록합니다. 이벤트 유형 inferred | |||
| 미지급비용 또는 충당금 전기 | 기간 말에 주로 전기되는 미지급비용, 이연 항목 또는 충당금의 분개 기록을 나타냅니다. SAP에 별도의 이벤트 유형으로 기록되지는 않으며, 특성에 따라 특정 분개를 식별해 추론합니다. | ||
| 중요한 이유 이 분개를 분리하면 추정 항목 관리 하위 프로세스를 분석할 수 있습니다. 미지급비용이 많거나 조정이 잦다면 프로세스 개선이 필요한 영역일 수 있습니다. 확보 방법 재무 문서 테이블 BKPF 및 BSEG를 바탕으로 추론합니다. 문서 유형(BKPF-BLART), 특정 총계정원장 계정(BSEG-HKONT), 헤더 텍스트의 키워드(BKPF-BKTXT) 등을 기준으로 분개를 식별할 수 있습니다. 기록 문서 유형, 특정 총계정원장 계정 또는 텍스트 필드를 기준으로 BKPF/BSEG 테이블을 필터링합니다. 이벤트 유형 inferred | |||
| 시산표 보고서 생성 | 시산표를 생성하는 보고서의 실행을 나타냅니다. 공식 재무제표를 작성하기 전에 차변 합계와 대변 합계가 일치하는지 확인하는 단계입니다. | ||
| 중요한 이유 최종 보고 전에 거치는 중요한 품질 확인 단계입니다. 보고서를 반복 실행한다면 기초 데이터의 문제를 찾아 수정하는 과정이 진행 중일 수 있으며, 이로 인해 지연이 발생할 수 있습니다. 확보 방법 트랜잭션 STAD와 같은 시스템 감사 로그에서 추론합니다. 로그에는 S_ALR_87012277 또는 F.01과 같은 시산표 보고 트랜잭션의 실행 내역이 기록될 수 있습니다. 기록 보고 트랜잭션 코드의 실행 내역을 추적하는 시스템 로그(STAD)에서 확인합니다. 이벤트 유형 inferred | |||
| 역분개 전기 | 오류 수정 등을 위해 이전에 전기한 분개를 취소하는 문서의 전기를 기록합니다. SAP는 역분개 문서와 원본 문서 간의 연결을 명시적으로 생성합니다. | ||
| 중요한 이유 역분개가 많다면 데이터 입력 정확성이나 프로세스 통제에 문제가 있을 수 있습니다. 이 이벤트를 추적하면 최초 처리 정확도를 측정하고 개선이 필요한 영역을 찾을 수 있습니다. 확보 방법 역분개 문서는 BKPF 테이블에서 확인할 수 있습니다. FB08 트랜잭션으로 생성되는 경우가 많으며, BKPF-STBLG 필드에 취소 대상 문서 번호가 기록됩니다. 기록 BKPF-STBLG 필드가 채워져 있거나 역분개 T-code로 생성된 문서를 식별합니다. 이벤트 유형 explicit | |||
| 회사 간 문서 반제 | 서로 다른 두 회사 코드 간 미결 항목이 반제되었음을 나타냅니다. 회사 간 거래가 정산 또는 대사된 시점입니다. SAP에서는 일반적으로 반제 문서가 생성되는 명시적 재무 전기로 기록됩니다. | ||
| 중요한 이유 회사 간 항목의 반제가 지연되는 경우는 마감 프로세스에서 흔히 발생하는 병목입니다. 이 활동을 추적하면 회사 간 대사 소요 시간을 측정하고 개선하는 데 도움이 됩니다. 확보 방법 BKPF 및 BSEG의 재무 문서에서 식별합니다. 반제 문서는 미결 항목을 연결하고 마감하며, 반제일(BSEG-AUGDT)을 이벤트 시각으로 사용합니다. 회사 간 거래는 거래 상대방 필드로 식별합니다. 기록 거래 상대방이 포함된 항목과 관련된 BKPF/BSEG의 반제 문서를 식별합니다. 이벤트 유형 explicit | |||
데이터 추출 가이드
단계
- SAP Query 도구에 접속: SAP ECC 시스템에 로그인합니다. 트랜잭션 코드
SQVI(QuickViewer)로 이동합니다. 2. 새 쿼리 생성: 쿼리 이름을 입력합니다. 예:Z_R2R_PERIOD_CLOSE. 'Create'를 클릭합니다. 팝업에서 'Record to Report 기간 마감 추출'과 같이 설명이 포함된 제목을 입력합니다. 'Data source'에서 'Table join'을 선택합니다. 3. 테이블 조인 정의: 기본 테이블BKPF(회계 문서 헤더)를 추가한 다음BSEG(회계 문서 세그먼트)를 추가합니다. SAP에서 조인 조건(MANDT, BUKRS, BELNR, GJAHR)을 자동으로 제안합니다. 조건을 확인하고 적용합니다. 기간 시작 및 마감 활동에는CDHDR와CDPOS를 조인하는 별도의 쿼리가 필요합니다. 4. 출력 필드 선택(목록 필드): 'List fld. select.' 탭으로 이동합니다. 사용 가능한 테이블에서 이벤트 로그에 필요한 필드를 선택합니다. 여기에는BKPF-BUKRS,BKPF-BELNR,BKPF-GJAHR,BKPF-MONAT,BKPF-CPUDT,BKPF-CPUTM,BKPF-USNAM,BKPF-BLART,BSEG-HKONT,BSEG-DMBTR등이 포함됩니다. 5. 입력 매개변수 정의(선택 필드): 'Selection fields' 탭으로 이동합니다. 실행 중 데이터를 필터링할 필드를 선택합니다. 가장 중요한 필드는BKPF-BUKRS(회사 코드)와BKPF-GJAHR(회계연도)입니다.BKPF-MONAT(전기 기간)과BKPF-BLART(문서 유형)도 추가할 수 있습니다. 6. 활동별 변형 생성: SQVI는 SQL UNION처럼 서로 다른 데이터 선택을 결합할 수 없으므로 쿼리를 여러 번 실행해야 합니다. 각 활동(예: '미지급비용 또는 충당금 전기')에 대해 쿼리를 실행하고 선택 화면에서 해당 활동에 필요한 문서 유형 목록 등 필터 값을 입력합니다. 이 선택 기준을 변형으로 저장합니다. 추출 가능한 각 활동에 대해 반복합니다. 7. 쿼리 실행 및 데이터 추출: 생성한 각 변형에 대해 쿼리를 실행합니다. 활동별 필터가 적용됩니다. 8. 결과 내보내기: 결과 화면에서 데이터를 로컬 파일로 내보냅니다. 일반적으로 'Spreadsheet' 형식을 사용합니다. 각 변형에 대해 내보내기를 반복합니다. 9. 데이터 결합 및 변환: 내보낸 파일을 스프레드시트 프로그램이나 스크립트 도구로 엽니다. 모든 파일의 데이터를 하나의 통합 파일로 직접 결합합니다. 10. 상수 및 계산 열 추가: 통합 파일에 SAP 테이블에서 직접 추출하지 않는 열을 추가합니다. 여기에는ActivityName(데이터가 추출된 변형을 기준으로 직접 입력),FinancialPeriod(회계연도와 기간을 결합),EventTime(날짜와 시간 필드를 결합),SourceSystem,LastDataUpdate가 포함됩니다. 11. 업로드 형식 지정: 최종 파일을 프로세스 마이닝 도구에서 요구하는 열 이름에 맞춰 CSV 또는 Excel 형식으로 저장합니다. 업로드 전에 데이터 유형과 형식을 확인합니다.
구성
- 데이터 소스: SAP Query(SQVI)의 테이블 조인입니다. 주요 테이블은 BKPF, BSEG, CDHDR, CDPOS입니다. * 날짜 범위: 패턴을 파악할 수 있도록 최소 3~6개 회계 기간 전체의 데이터를 추출하는 것이 좋습니다.
BKPF-GJAHR(회계연도)와BKPF-MONAT(기간)에 필터를 설정합니다. * 회사 코드 필터: 데이터량을 제한하고 특정 법인에 분석을 집중할 수 있도록 항상BKPF-BUKRS(회사 코드)로 필터링합니다. 모든 회사 코드를 한 번에 추출하는 것은 권장하지 않습니다. * 문서 유형 필터: 미지급비용, 조정 또는 취소와 같은 특정 활동을 분리하려면BKPF-BLART(문서 유형)를 필터링합니다. 조직에서 사용하는 문서 유형을 확인해야 합니다. * 사전 요건: 추출을 실행하는 사용자에게SQVI트랜잭션 사용 권한과 관련 재무 테이블 조회 권한(예: 권한 객체 S_TABU_DIS)이 필요합니다. * 성능 고려 사항: BKPF와 BSEG를 조인하면 리소스 사용량이 많을 수 있습니다. 업무량이 적은 시간대에 추출을 실행합니다. 날짜 범위를 지나치게 넓게 설정하거나 회사 코드 필터를 지정하지 않으면 메모리 부족이나 시간 초과가 발생할 수 있습니다.
샘플 쿼리 sql
/*
LOGICAL REPRESENTATION FOR SAP QUERY (SQVI)
This is not a single executable script. Due to limitations in SQVI, you must create a base query joining BKPF and BSEG, then run it multiple times using different selection screen variants to extract each activity below. The results must be combined manually.
A separate query joining CDHDR and CDPOS is needed for period open/close activities.
*/
-- Activity 1: Period Opened For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW > CDPOS.VALUE_OLD;
UNION ALL
-- Activity 2: Accrual Or Provision Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Accrual' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('SA', '[Your Accrual Doc Type]'); -- Filter by document types used for accruals
UNION ALL
-- Activity 3: Intercompany Document Cleared
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.AUGBL AS BELNR, -- The clearing document number
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BSEG.AUGBL IS NOT NULL AND BSEG.VBUND IS NOT NULL; -- Identify cleared items with an intercompany trading partner
UNION ALL
-- Activity 4: Foreign Currency Valuation Run
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Valuation' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('FAGL_FCV', 'FBB1'); -- Filter by FCV transaction code
UNION ALL
-- Activity 5: GR/IR Clearing Run Executed
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Clearing' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.TCODE IN ('F.13', 'F13E'); -- Filter by automated clearing transaction codes
UNION ALL
-- Activity 6: Account Reconciliation Started (Proxy)
-- This is a proxy. It takes the earliest adjusting journal entry timestamp for the period.
SELECT
A.FinancialPeriod,
'Account Reconciliation Started' AS ActivityName,
MIN(A.EventTime) AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
A.BUKRS,
NULL AS BELNR,
NULL AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM (
SELECT CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
BKPF.BUKRS
FROM BKPF
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]')
) AS A
GROUP BY A.FinancialPeriod, A.BUKRS;
UNION ALL
-- Activity 7: Adjusting Journal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Adjusting' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.BLART IN ('AB', '[Your Adjusting Doc Type]'); -- Filter by document types for adjustments
UNION ALL
-- Activity 8: Reversal Entry Posted
SELECT
CONCAT(BKPF.GJAHR, BKPF.MONAT) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
TO_TIMESTAMP(CONCAT(BKPF.CPUDT, BKPF.CPUTM), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
BKPF.BUKRS AS BUKRS,
BKPF.BELNR AS BELNR,
BKPF.USNAM AS USNAM,
BSEG.HKONT AS HKONT,
BKPF.BLART AS BLART,
BSEG.DMBTR AS DMBTR,
'Reversal' AS JournalEntryType
FROM BKPF
JOIN BSEG ON BKPF.BUKRS = BSEG.BUKRS AND BKPF.BELNR = BSEG.BELNR AND BKPF.GJAHR = BSEG.GJAHR
WHERE BKPF.STBLG IS NOT NULL; -- STBLG (Reversed Document Number) is populated for reversals
UNION ALL
-- Activity 9: Period Closed For Posting
-- Required Query: Join CDHDR and CDPOS in SQVI.
SELECT
CONCAT(T001B.VONJ1, T001B.POPER) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
TO_TIMESTAMP(CONCAT(CDHDR.UDATE, CDHDR.UTIME), 'YYYYMMDDHH24MISS') AS EventTime,
'[SAP ECC SID]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
T001B.BUKRS AS BUKRS,
NULL AS BELNR,
CDHDR.USERNAME AS USNAM,
NULL AS HKONT,
NULL AS BLART,
NULL AS DMBTR,
NULL AS JournalEntryType
FROM CDHDR
JOIN CDPOS ON CDHDR.CHANGENR = CDPOS.CHANGENR
JOIN T001B ON SUBSTRING(CDPOS.TABKEY, 4, 4) = T001B.BUKRS
WHERE CDHDR.OBJECTCLAS = 'DEBI_BUKRS' AND CDPOS.TABNAME = 'T001B' AND CDPOS.FNAME = 'OFPER' AND CDPOS.VALUE_NEW < CDPOS.VALUE_OLD;
/*
-- Activities Not Extractable via this Method
-- The following activities are not data postings and cannot be reliably extracted by querying finance tables BKPF/BSEG.
-- Extraction would require analyzing application logs (SLG1), system logs (STAT), or custom-built logging solutions.
-- Activity: Trial Balance Report Generated
-- Activity: Financial Statements Generated
-- Activity: Reconciliation Reviewed
*/ 단계
- 프로그램 범위 및 설계: 필요한 12개 활동을 각각 식별하는 로직을 정의합니다. 업무 프로세스 책임자 및 SAP 기능 분석가와 협의해 해당 SAP ECC 환경에서 기간 마감 활동에 사용되는 문서 유형, 총계정원장 계정 및 프로그램 이름을 확인합니다.
- ABAP 프로그램 생성: 트랜잭션
SE38(ABAP Editor)에서 새 실행 프로그램을 만듭니다. 예:Z_PM_R2R_EXTRACTION. 설명이 포함된 제목을 입력하고 프로그램 유형으로 'Executable Program'을 설정합니다. - 선택 화면 정의: 프로그램에서
PARAMETERS와SELECT-OPTIONS를 사용해 선택 화면을 정의합니다. 이 화면에서 회사 코드(BUKRS), 회계연도(GJAHR), 전기 기간(MONAT) 등 추출 범위를 지정할 수 있습니다. 데이터량을 제어하는 데 중요합니다. - 데이터 구조 선언: 최종 이벤트 로그 데이터를 저장할 내부 테이블 구조를 정의합니다.
FinancialPeriod,ActivityName,EventTime,SourceSystem,LastDataUpdate,BUKRS,BELNR,USNAM,HKONT,BLART,DMBTR,JournalEntryType등 필수 및 권장 속성을 포함해야 합니다. - 데이터 추출 로직 구현: 12개 활동 각각의 데이터를 선택하는 핵심 ABAP 로직을 작성합니다. 활동별로 관련 SAP 테이블(예: BKPF, BSEG, TBTCO, CDHDR)을 조회하고 중간 내부 테이블에 데이터를 채웁니다. 함께 제공된 ABAP 쿼리 섹션의 로직을 참고용으로 사용합니다.
- 추론 활동 식별: '계정 조정 시작' 또는 '조정 검토'처럼 SAP 표준 로그에 명시적으로 기록되지 않는 활동에는 합의된 추론 로직을 구현합니다. 특정 보고서의 최초 실행을 확인하거나 사용자 정의 'Z 테이블'이 있는 경우 이를 조회할 수 있습니다.
- 이벤트 데이터 통합: 개별 활동의 데이터를 모두 추출한 뒤 각 중간 테이블의 레코드를 최종 통합 내부 테이블에 추가합니다. 문서 전기 날짜 및 시간이나 작업 시작 날짜 및 시간 등 관련 소스 필드에서
EventTime을 올바르게 채웁니다. - 데이터 표준화 및 형식 지정: 출력 전에 주요 필드의 형식을 표준화합니다. 회계연도와 기간을 결합해
FinancialPeriod식별자를 만듭니다.SourceSystem과LastDataUpdate에는 고정값을 설정합니다. 타임스탬프 형식도 일관되게 맞춥니다. - 출력 기능 개발: 최종 내부 테이블을 내보내는 기능을 프로그램에 추가합니다. 일반적으로
OPEN DATASET을 사용해 SAP Application Server에 CSV 또는 탭으로 구분된 파일을 작성하거나, 함수 모듈GUI_DOWNLOAD를 사용해 사용자의 로컬 컴퓨터로 직접 다운로드합니다. - 테스트 및 검증: 여러 회사 코드와 기간을 포함하는 대표 데이터로 프로그램을 충분히 테스트합니다. 검증 절차를 통해 데이터의 정확성과 완전성을 확인합니다. 기능 전문가의 의견을 반영해 선택 로직을 조정합니다.
- 실행 예약(선택 사항): 검증이 끝나면 트랜잭션
SM36을 통해 프로그램을 백그라운드 작업으로 예약할 수 있습니다. 이를 통해 수동 개입 없이 이벤트 로그를 정기적으로 자동 추출할 수 있습니다.
구성
- 선택 기준: 프로그램에 데이터 필터링을 위한 선택 화면이 있어야 합니다. 주요 필터는 다음과 같습니다.
회사 코드 (BUKRS): 관련 법인으로 범위를 제한하기 위해 필수입니다.회계연도 (GJAHR): 추출할 기준 연도를 지정하기 위해 필수입니다.전기 기간 (MONAT): 특정 회계 기간을 선택하기 위해 필수입니다.
- 활동별 설정: 여러 선택 항목은 SAP 구성에 따라 달라집니다. 프로그램의 매개변수나 상수로 설정할 수 있어야 합니다.
미지급비용/충당금 문서 유형: 미지급비용 및 충당금 전기를 식별하는 데 사용하는 문서 유형(BLART) 목록입니다.조정 분개 문서 유형: 조정 분개를 식별하는 데 사용하는 문서 유형 목록입니다.백그라운드 작업/프로그램 이름: 외화 평가(예:FAGL_FCV), GR/IR 정산(예:SAPF124), 시산표 보고서 및 재무제표 생성(예:RFBILA00)에 사용하는 프로그램의 기술 이름입니다.
- 날짜 범위: 기본 선택 기준은 회계연도와 기간이지만, 내부 로직에서는 이벤트의 전체 날짜와 시간을 고려해야 합니다. 초기 분석에는 최근 완료된 회계 기간 3~6개의 데이터를 추출하는 것이 좋습니다.
- 성능: 대규모 SAP 환경에서는 프로그램 성능이 중요합니다. 특히
BKPF와BSEG같은 테이블에서 인덱스 필드를 사용해 데이터베이스를 조회해야 합니다. 모든 필드를 선택하는 방식(SELECT *)은 피하고, 필요한 경우 데이터를 적절한 크기의 묶음으로 처리합니다. - 권한: 프로그램을 실행하는 사용자 또는 서비스 계정에는 조회 대상 테이블(
BKPF,BSEG,TBTCO,TBTCP,CDHDR,CDPOS)에 접근하고 개발용SE38, 예약 및 모니터링용SM37/SM36등의 트랜잭션을 실행할 권한이 필요합니다.
샘플 쿼리 abap
REPORT Z_PM_R2R_EXTRACTION.
" ====================================================================
" DATA DECLARATIONS
" ====================================================================
TYPES: BEGIN OF ty_event_log,
FinancialPeriod TYPE string,
ActivityName TYPE string,
EventTime TYPE timestamp,
SourceSystem TYPE string,
LastDataUpdate TYPE timestamp,
BUKRS TYPE bukrs,
BELNR TYPE belnr_d,
USNAM TYPE usnam,
HKONT TYPE hkont,
BLART TYPE blart,
DMBTR TYPE dmbtr,
JournalEntryType TYPE string,
END OF ty_event_log.
DATA: lt_final_log TYPE STANDARD TABLE OF ty_event_log,
ls_log_entry LIKE LINE OF lt_final_log.
DATA: lv_source_system TYPE string VALUE 'SAP ECC'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_bukrs FOR ls_log_entry-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_monat FOR bkpf-monat OBLIGATORY.
PARAMETERS: p_accrl TYPE blart DEFAULT 'SA', " Example Doc Type for Accruals
p_adjst TYPE blart DEFAULT 'AJ', " Example Doc Type for Adjustments
p_fcv TYPE btcjob DEFAULT 'FAGL_FCV*', " Program for FC Valuation
p_grir TYPE btcjob DEFAULT 'SAPF124*', " Program for GR/IR Clearing
p_fs TYPE btcjob DEFAULT 'RFBILA00'. " Program for Fin. Statements
" ====================================================================
" MAIN LOGIC
" ====================================================================
START-OF-SELECTION.
" --- 1. Period Opened For Posting ---
" Note: This is complex. This example queries change documents for posting period config (T001B).
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_open)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_open INTO DATA(ls_period_open).
" Further logic needed to parse OBJECTID and check CDPOS for opening a period.
" This is a simplified placeholder for a complex logic.
ls_log_entry-ActivityName = 'Period Opened For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" --- 2. Accrual Or Provision Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_accrual)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_accrl.
LOOP AT lt_accrual INTO DATA(ls_accrual).
CLEAR ls_log_entry.
CONVERT DATE ls_accrual-cpudt TIME ls_accrual-cputm INTO TIME STAMP ls_log_entry-EventTime TIME ZONE sy-zonlo.
CONCATENATE ls_accrual-gjahr ls_accrual-monat INTO ls_log_entry-FinancialPeriod.
ls_log_entry-ActivityName = 'Accrual Or Provision Posted'.
ls_log_entry-BUKRS = ls_accrual-bukrs.
ls_log_entry-BELNR = ls_accrual-belnr.
ls_log_entry-USNAM = ls_accrual-usnam.
ls_log_entry-HKONT = ls_accrual-hkont.
ls_log_entry-BLART = ls_accrual-blart.
ls_log_entry-DMBTR = ls_accrual-dmbtr.
ls_log_entry-JournalEntryType = 'Accrual'.
GET TIME STAMP FIELD ls_log_entry-LastDataUpdate.
ls_log_entry-SourceSystem = lv_source_system.
APPEND ls_log_entry TO lt_final_log.
ENDLOOP.
" --- 3. Intercompany Document Cleared ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_ic_clear)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat
AND h~blart = 'AB' AND i~vbund <> space.
LOOP AT lt_ic_clear INTO DATA(ls_ic_clear).
" Populate ls_log_entry and append to lt_final_log, setting ActivityName = 'Intercompany Document Cleared'
ENDLOOP.
" --- 4. Foreign Currency Valuation Run ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fcv_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fcv AND j~status = 'F'. " F = Finished
LOOP AT lt_fcv_jobs INTO DATA(ls_fcv_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Foreign Currency Valuation Run'
ENDLOOP.
" --- 5. GR/IR Clearing Run Executed ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_grir_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_grir AND j~status = 'F'.
LOOP AT lt_grir_jobs INTO DATA(ls_grir_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'GR/IR Clearing Run Executed'
ENDLOOP.
" --- 6. Account Reconciliation Started (Inferred) ---
" Note: Inferring this by first run of a report, e.g., FAGLB03. Requires custom logging or complex logic.
" Placeholder: Query a custom log table if available.
" SELECT ... FROM zreco_log ...
" --- 7. Adjusting Journal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_adjust)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~blart = @p_adjst.
LOOP AT lt_adjust INTO DATA(ls_adjust).
" Populate ls_log_entry and append, setting ActivityName = 'Adjusting Journal Entry Posted', JournalEntryType = 'Adjusting'
ENDLOOP.
" --- 8. Reversal Entry Posted ---
SELECT h~bukrs, h~belnr, h~gjahr, h~monat, h~blart, h~usnam, h~cputm, h~cpudt, i~hkont, i~dmbtr
FROM bkpf AS h JOIN bseg AS i ON h~belnr = i~belnr AND h~bukrs = i~bukrs AND h~gjahr = i~gjahr
INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_reversal)
WHERE h~bukrs IN @s_bukrs AND h~gjahr IN @s_gjahr AND h~monat IN @s_monat AND h~stblg <> space.
LOOP AT lt_reversal INTO DATA(ls_reversal).
" Populate ls_log_entry and append, setting ActivityName = 'Reversal Entry Posted', JournalEntryType = 'Reversal'
ENDLOOP.
" --- 9. Trial Balance Report Generated (Inferred from Job) ---
" Similar to other jobs, query TBTCO for Trial Balance report programs.
" SELECT ... FROM tbtco ... WHERE jobname LIKE '[Your Trial Balance Program]'.
" --- 10. Financial Statements Generated ---
SELECT j~jobname, j~sdlstrtda, j~sdlstrttm, j~sdluname
INTO TABLE @DATA(lt_fs_jobs)
FROM tbtco AS j
WHERE j~jobname LIKE @p_fs AND j~status = 'F'.
LOOP AT lt_fs_jobs INTO DATA(ls_fs_job).
" Populate ls_log_entry, deriving FinancialPeriod from date, setting ActivityName = 'Financial Statements Generated'
ENDLOOP.
" --- 11. Reconciliation Reviewed (Inferred) ---
" Note: This activity is almost always managed outside of SAP or in a custom solution.
" Placeholder: Query a custom approval/log table if available.
" SELECT ... FROM zreco_approval ...
" --- 12. Period Closed For Posting ---
" Note: Similar to 'Period Opened', this is very complex. Query change documents for T001B.
SELECT h~objectid, h~udate, h~utime, h~username
INTO TABLE @DATA(lt_period_close)
FROM cdhdr AS h
WHERE h~objectclas = 'V_T001B' AND h~change_ind = 'U'.
LOOP AT lt_period_close INTO DATA(ls_period_close).
" Further logic needed to parse OBJECTID and check CDPOS for closing a period.
ls_log_entry-ActivityName = 'Period Closed For Posting'.
" Populate other fields... append to lt_final_log
ENDLOOP.
" ... Code to display or download the lt_final_log internal table ...
ENDFORMS. 단계
- 사전 요건 확인: SAP ECC의 기본 데이터베이스에 대한 읽기 전용 접속 정보를 확보합니다. 데이터베이스 관리자가 제공하는 올바른 데이터베이스 스키마를 확인합니다. 일반적으로
SAPSR3또는 이와 유사한 이름입니다. - 시스템 구성 확인: SAP 재무팀과 협의해 분석할 회사 코드(BUKRS)와 회계 기간을 확인합니다. 특히 시스템에서 '미지급비용 또는 충당금 전기', '조정 분개 전기', '관계사 간' 거래에 사용하는 문서 유형(BLART)을 확인해야 합니다.
- 프로그램 및 작업 이름 확인: 외화 평가(예:
FAGL_FCV), GR/IR 정산(예:SAPF124), 시산표 보고서(예:RFBILA00), 재무제표 생성(예:RFBILA00) 등 주요 배치 작업의 프로그램 이름을 확인합니다. 트랜잭션SM37에서 예약된 작업을 확인할 수 있습니다. - SQL 쿼리 수정: 제공된 SQL 쿼리를 텍스트 편집기나 SQL 클라이언트에 복사합니다. 자리표시자
{{start_date}},{{end_date}},{{company_codes}}를 분석에 사용할 실제 값으로 바꿉니다. 앞 단계에서 확인한 정보를 바탕으로 문서 유형과 프로그램 이름 목록도 수정합니다. - 데이터베이스 연결: DBeaver, SQL Server Management Studio, Oracle SQL Developer와 같은 표준 SQL 클라이언트 도구를 사용해 확보한 인증 정보로 SAP 데이터베이스에 연결합니다.
- 쿼리 실행: 수정한 SQL 쿼리를 데이터베이스에서 실행합니다. 날짜 범위와 재무 테이블의 크기에 따라 실행에 상당한 시간이 걸릴 수 있습니다.
- 초기 결과 검토: 쿼리가 끝나면 결과를 간단히 확인합니다. 행 수가 적절한지, 모든 열이 있는지, 여러
ActivityName값이 결과에 포함되었는지 확인합니다. - 데이터 내보내기: SQL 클라이언트에서 전체 결과를 CSV 파일로 내보냅니다. 문자 인코딩 문제를 방지하려면 UTF-8로 저장합니다.
- 업로드 준비: process mining 도구에 업로드하기 전에 CSV 파일의 열 이름이 필수 속성 이름(
FinancialPeriod,ActivityName,EventTime등)과 정확히 일치하는지 확인합니다.EventTime열의 타임스탬프 형식도YYYY-MM-DD HH:MI:SS처럼 일관되게 맞춥니다.
구성
- 데이터베이스 인증 정보: SAP 재무 및 시스템 핵심 테이블에 접근할 수 있는 읽기 전용 데이터베이스 사용자가 필요합니다. 대상 테이블에는
BKPF,BSEG,TBTCO,CDHDR,CDPOS등이 포함됩니다. - 날짜 범위: 의미 있는 프로세스 변화를 파악할 수 있도록 최소 3~6개 회계 기간 전체의 데이터를 추출하는 것이 좋습니다. 날짜 범위가 넓어지면 쿼리 실행 시간이 크게 늘어날 수 있습니다.
- 회사 코드(
BUKRS): 항상 특정 회사 코드 목록으로 필터링합니다. 대규모 시스템에서 모든 회사 코드를 대상으로 쿼리를 실행하는 것은 현실적이지 않으며 성능 문제를 일으킬 수 있습니다. - 문서 유형(
BLART): 미지급비용 및 조정과 같은 분개 유형의 식별은 조직의 SAP 구성에 따라 달라집니다. 활동을 정확히 분류하려면 쿼리의WHERE절에 올바른 문서 유형 코드를 지정해야 합니다. - 프로그램 및 작업 이름: 쿼리는 자동 마감 단계에 흔히 사용하는 프로그램 이름을 기준으로 합니다. 시스템에서 사용자 정의 래퍼 프로그램이나 다른 작업 이름을 사용할 수 있습니다. 트랜잭션
SM37에서 확인한 뒤 쿼리를 수정합니다. - 성능 고려 사항: 이 쿼리는 특히
BSEG와CDPOS처럼 규모가 큰 테이블에 접근합니다. 시스템 성능에 영향을 주지 않도록 업무 시간 외에 추출하는 것이 좋습니다. 실행 시간을 관리하는 가장 효과적인 방법은 날짜와 회사 코드의 범위를 좁혀 필터링하는 것입니다.
샘플 쿼리 sql
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Opened For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'FRPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(b.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', b.MONAT), 2)) AS FinancialPeriod,
'Period Closed For Posting' AS ActivityName,
c.UDATE + c.UTIME AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
p.TABKEY AS CompanyCode,
NULL AS DocumentNumber,
c.USERNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM CDHDR c
JOIN CDPOS p ON c.OBJECTCLAS = p.OBJECTCLAS AND c.OBJECTID = p.OBJECTID AND c.CHANGENR = p.CHANGENR
WHERE c.OBJECTCLAS = 'V_T001B'
AND p.TABNAME = 'T001B'
AND p.FNAME = 'TOPE1'
AND c.UDATE BETWEEN '{{start_date}}' AND '{{end_date}}'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Accrual Or Provision Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Accrual' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('SA', '[Your Accrual Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Intercompany Document Cleared' AS ActivityName,
h.AUGDT AS EventTime, -- Clearing Date
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Clearing' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.AUGDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Intercompany Doc Type]')
AND h.AUGBL IS NOT NULL
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Foreign Currency Valuation Run' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'FAGL_FCV' OR p.PROGNAME = 'SAPF100'
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F' -- Finished
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'GR/IR Clearing Run Executed' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'SAPF124' -- Program for F.13
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Account Reconciliation Started' AS ActivityName, -- Proxy event
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('FAGLL03', 'FBL3N') -- Common reconciliation reports
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Adjusting Journal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Adjusting' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.BLART IN ('[Your Adjusting Doc Type]')
UNION ALL
SELECT
CONCAT(CAST(h.GJAHR AS VARCHAR(4)), '-', RIGHT(CONCAT('00', h.MONAT), 2)) AS FinancialPeriod,
'Reversal Entry Posted' AS ActivityName,
h.CPUDT + h.CPUTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
h.BUKRS AS CompanyCode,
h.BELNR AS DocumentNumber,
h.USNAM AS ResponsibleUser,
d.HKONT AS GLAccount,
h.BLART AS DocumentType,
d.DMBTR AS AmountInLocalCurrency,
'Reversal' AS JournalEntryType
FROM BKPF h
JOIN BSEG d ON h.MANDT = d.MANDT AND h.BUKRS = d.BUKRS AND h.BELNR = d.BELNR AND h.GJAHR = d.GJAHR
WHERE h.BUDAT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND h.BUKRS IN ({{company_codes}})
AND h.STBLG IS NOT NULL -- STBLG links to the reversed document
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Trial Balance Report Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME IN ('RFSSLD00', 'S_ALR_87012310')
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
UNION ALL
SELECT
CONCAT(CAST(YEAR(j.SDLSTRTDT) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(j.SDLSTRTDT)), 2)) AS FinancialPeriod,
'Financial Statements Generated' AS ActivityName,
j.SDLSTRTDT + j.SDLSTRTTM AS EventTime,
'SAP_ECC' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
NULL AS CompanyCode,
j.JOBNAME AS DocumentNumber,
j.SDLUNAME AS ResponsibleUser,
NULL AS GLAccount,
NULL AS DocumentType,
NULL AS AmountInLocalCurrency,
NULL AS JournalEntryType
FROM TBTCO j
JOIN TBTCP p ON j.JOBNAME = p.JOBNAME AND j.JOBCOUNT = p.JOBCOUNT
WHERE p.PROGNAME = 'RFBILA00' -- Program for F.01
AND j.SDLSTRTDT BETWEEN '{{start_date}}' AND '{{end_date}}'
AND j.STATUS = 'F'
-- UNION ALL
-- Note: 'Reconciliation Reviewed' is typically not a standard, logged event in SAP ECC.
-- This activity often happens offline or in a custom tool.
-- The following is a placeholder to be adapted if a custom (Z-table) log exists.
-- SELECT
-- CONCAT(CAST(YEAR(z.REVIEW_DATE) AS VARCHAR(4)), '-', RIGHT(CONCAT('00', MONTH(z.REVIEW_DATE)), 2)) AS FinancialPeriod,
-- 'Reconciliation Reviewed' AS ActivityName,
-- z.REVIEW_DATE AS EventTime,
-- 'SAP_ECC' AS SourceSystem,
-- CURRENT_TIMESTAMP AS LastDataUpdate,
-- z.BUKRS AS CompanyCode,
-- z.HKONT AS DocumentNumber, -- Using GL Account as a proxy identifier
-- z.REVIEWER_USER AS ResponsibleUser,
-- z.HKONT AS GLAccount,
-- NULL AS DocumentType,
-- NULL AS AmountInLocalCurrency,
-- NULL AS JournalEntryType
-- FROM ZRECON_LOG z -- Replace with your custom table for reconciliation status
-- WHERE z.REVIEW_DATE BETWEEN '{{start_date}}' AND '{{end_date}}'
-- AND z.STATUS = 'Reviewed'
; 시작할 준비가 되셨나요?
이 데이터 템플릿으로 process mining을 시작하고 재무 마감 운영에 관한 유용한 정보를 확인하세요. 지금 Record to Report 프로세스 최적화를 시작해 보세요.
Record to Report 마감 최적화, 주기 시간 단축
병목을 없애고 Record to Report 마감 주기를 30% 단축하세요.
신용카드가 필요하지 않습니다. 14일 무료 체험을 시작하세요.