SAP 정기전표 실행 대사 점검 — 기표됐어야 할 전표, 실제로 다 올라갔습니까
정기전표 마스터의 주기·금액과 실제 기표 문서를 대사해 미실행·중복실행·금액차이를 결산 전에 가려냅니다
임차료·보험료·이자비용처럼 매월 같은 금액이 반복해서 기표되는 계정은 정기전표(반복 게시) 기능으로 미리 등록해 두고 주기마다 일괄 실행합니다. 문제는 등록해 둔 정기전표가 매번 빠짐없이, 중복 없이, 같은 금액으로 실제 기표까지 이어졌는지를 결산 때마다 눈으로 하나하나 확인하기는 쉽지 않다는 점입니다. 실행을 깜빡하고 넘어가거나, 배치를 두 번 돌려 중복 기표되거나, 템플릿 금액이 바뀐 줄 모르고 예전 금액대로 계속 나가는 일이 생깁니다.
정기전표 마스터의 주기·금액을 기준으로 "이번 기간까지 기표됐어야 할 건수·금액"을 계산하고, 실제 기표된 문서와 건수·금액으로 대사해 미실행·중복실행·금액차이 후보를 가려내는 화면을 OpenUI5로 구현했습니다. 소속(국내 본사·해외법인·계열사)별 집계와 점검 예외 목록을 한 화면에서 오가며 확인할 수 있고, 실제 구동 화면 5종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 정기전표 마스터 — 정기전표 입력(
FBD1)으로 등록한 주기·금액 구조를 그대로 사용 - 실행 — 정기전표 실행(
F.14)의 일괄 기표 결과(회계전표)를 그대로 사용 - 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무(FI) · 회계 결산 |
| 관련 기준서 | - |
| Namespace | zui5.recurcheck |
| 셸 구조 | 조회조건 영역(우측 조회) + 대사 요약 + 정기전표별 실행 현황·실행 이력·소속별 집계·점검 예외 4개 탭, 상세 Dialog |
| 화면 수 | 조회 화면 1개(탭 4개) + 상세 다이얼로그 |
| SAP 표준 T-code | FBD1 · F.14 · FBD3 · F.15 · FB03(§7 참고) |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 정기전표 실행(F.14)과 후속 처리는 화면 밖 프로세스 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 5종 둘러보기
회사코드·회계연도·조회기간을 넣고 조회하면 대사 요약과 정기전표별 실행 현황이 뜹니다 → 실행 이력·소속별 집계 탭을 오가며 세부 내역을 보고 → 점검 예외에서 확인이 필요한 건만 추려 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 회사코드·회계연도·조회기간(누계)을 입력합니다. 소속·판정 상태는 비워 두면 전체가 조회됩니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다. 화면을 처음 열면 기본값으로 자동 조회됩니다.
- 대사 요약에서 기대 실행 건수·실제 실행 건수·미실행·중복실행·금액차이 건수와 대사차이 금액을 먼저 확인합니다.
- 탭을 옮겨 가며 정기전표별 실행 현황 → 실행 이력 → 소속별 집계 → 점검 예외 순으로 좁혀 봅니다.
- 행을 누르면 템플릿 금액·기대/실행 건수·미실행/중복/금액차이·기대·실행 금액이 상세 다이얼로그로 열립니다.
- 정기전표별 실행 현황과 점검 예외 탭에서는 CSV 내려받기(UTF-8 BOM)로 결과를 저장할 수 있습니다.
기대 건수와 실제 건수를 가르는 판정 규칙
잣대는 정기전표 마스터가 정한 주기입니다. 이번 기간까지 기표됐어야 할 횟수와 실제 기표된 문서를 하나씩 맞춰 봅니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 기대 건수와 정상 실행 건수가 일치하고 금액차이·중복실행이 없음 | 정상 | 별도 조치 없음 |
| 기대 시점에 기표된 문서가 없음 | 점검 필요 | 정기전표 실행(F.14) 대상에서 누락 여부를 확인하고 필요 시 재실행 |
| 같은 기간에 문서가 2건 이상 기표됨 | 점검 필요 | 중복 기표 여부를 확인하고 필요 시 취소·역분개 |
| 기표금액이 정기전표 템플릿 금액과 다름 | 점검 필요 | 템플릿 변경 이력 또는 수기 수정 여부를 확인 |
이 화면이 대신 정하지 않는 것
판정 결과는 확인 대상을 알리는 표시이며, 회계 처리의 옳고 그름을 단정하지 않습니다. 미실행·중복실행·금액차이로 표시된 건의 원인 확정과 처리 방법은 회사와 담당자가 최종 판단합니다.
정기전표에서 대사까지 5단계 산출
| 단계 | 내용 |
|---|---|
| 1단계 | 기대 건수를 구한다 — 기대 건수 = 정상 + 금액차이 + 미실행 |
| 2단계 | 실행 건수를 구한다 — 실행 건수 = 정상 + 금액차이 + 중복실행 |
| 3단계 | 기대 금액을 구한다 — 기대 금액 합계 = Σ(템플릿 금액 × 기대 건수) |
| 4단계 | 실행 금액을 모은다 — 실행 금액 합계 = Σ 실제 기표 금액 |
| 5단계 | 대사한다 — 대사차이 = 기대 금액 합계 − 실행 금액 합계, 0이면 대사 일치 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 회계연도 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 조회기간(누계) | 필수 | 이 기간까지 누계 기준으로 기대·실행 건수를 대사합니다. |
| 소속 | 선택 | 전체 / 국내 본사 / 해외법인 A · B / 계열사 |
| 판정 상태 | 선택 | 전체 / 정상 / 점검 필요 |
결과 컬럼
| 영역 | 컬럼 · 표시 |
|---|---|
| 대사 요약 | 정기전표 건수 · 기대/실제 실행 건수 · 정상/미실행/중복/금액차이 건수 · 기대/실행 금액 합계 · 대사차이 · 예외 건수 |
| 정기전표별 실행 현황 | 정기전표 · 계정 · 코스트센터 · 소속 · 주기 · 템플릿 금액 · 기대/실행 건수 · 미실행/중복/금액차이 · 판정 |
| 실행 이력 | 정기전표 · 전표번호 · 기간 · 기표 금액 · 차이금액 · 상태 |
| 소속별 집계 | 소속 · 정기전표 건수 · 기대/실행 건수 · 미실행/중복/금액차이 |
| 점검 예외 | 예외번호 · 정기전표 · 예외 유형 · 내용 · 차이 · 중요도 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 대사 관점의 조회·검증을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
FBD1 | 정기전표 입력 | 이 화면이 대사하는 정기전표 템플릿(마스터)을 등록하는 표준 기능 |
FBD2 / FBD3 | 정기전표 변경 / 조회 | 정기전표 템플릿의 변경·조회 표준 기능. 이 화면의 템플릿 정보 원천 |
F.14 | 정기전표 실행(일괄 기표) | 정기전표를 실제 회계전표로 기표하는 표준 배치 기능. 이 화면이 대사하는 "실행" 행위 |
F.15 | 정기전표 목록 | 실행 대상·완료 목록을 조회하는 표준 기능 |
FB03 | 전표 조회 | 실제 기표된 개별 문서를 조회하는 표준 기능. 실행 이력 원문서 확인에 대응 |
분석 지표 정의표
| 지표명 | 정의(산출식) | 판단기준 | 원천데이터 | 비고 |
|---|---|---|---|---|
| 기대 실행 건수 | 템플릿 주기(매월·분기)로 정해진, 조회기간까지 기표됐어야 할 건수의 합 | 실제 실행 건수와 대조 | 정기전표 마스터(주기·시작일) | - |
| 미실행 건수 | 기대 시점에 기표되지 않은 건수 | 0 이면 정상 | 정기전표 마스터 대비 실행 이력 | - |
| 중복실행 건수 | 같은 기간에 2건 이상 기표된 건수 | 0 이면 정상 | 실행 이력(기간별 문서 수) | - |
| 금액차이 건수 | 기표금액이 템플릿 금액과 다른 건수 | 0 이면 정상 | 실행 이력 대 템플릿 금액 | 허용오차는 회사 기준에 따름 |
| 대사차이 | 기대 금액 합계 − 실행 금액 합계 | 0 이면 대사 일치 | 정기전표 마스터 · 실행 이력 | - |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
BKDF | BUKRS · GJAHR · HKONT | 정기전표(반복 게시) 문서 헤더 — 주기·시작일·종료일 |
BKPF | BUKRS · BELNR · GJAHR · MONAT | 실행으로 생성된 회계전표 헤더 |
BSEG | BELNR · HKONT · KOSTL · WRBTR | 회계전표 항목 — 계정·코스트센터·금액 |
define view entity ZC_RecurExecCheck
as select from ZI_RecurTemplate as tpl
left outer join ZI_JournalEntry as exec on exec.RefTemplateId = tpl.TemplateId
and exec.FiscalYear = tpl.FiscalYear
{
key tpl.TemplateId as TemplateId,
tpl.ExpectedCount as ExpectedCount,
count(exec.DocNo) as ExecutedCount
}
group by tpl.TemplateId, tpl.ExpectedCount
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · 대사 요약 패널 · sap.m.IconTabBar 4개 탭 |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로) — 화면 블록마다 엔티티셋에 직접 바인딩합니다. 모델 설정은 useBatch:false · defaultBindingMode:"OneWay" · defaultCountMode:"Inline" |
| 조회조건 | sap.m.Input · sap.m.ComboBox — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조회조건을 조립합니다. "전체"를 고른 조건은 필터를 만들지 않습니다. |
| 정렬 · 페이징 | sap/ui/model/Sorter와 모델의 페이징 기능으로 처리 — 전체를 받아 화면에서 걸러내지 않습니다. |
| 현황·이력·예외 표 | sap.ui.table.Table — 행 클릭 시 상세 다이얼로그 |
| 소속별 집계 표 | sap.m.Table — 판정 상태는 표준 ValueState 로만 표시 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon · lodash · moment, OData 서비스에 연결 |
Component.js | 화면 상태·조회조건 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.recurcheck · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 대사 요약 · 4개 탭 |
view/DetailDialog.fragment.xml | 상세 내역 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드 |
controller/BaseController.js | CSV 다운로드 공통 처리 |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 금액 · 상태 표시 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 정기전표 18건 · 실행 문서 120건을 기준으로 기대 건수·실행 건수·대사 금액이 항등식으로 맞물리도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 기대 건수 = 정상 + 금액차이 + 미실행 (정기전표 18건 전수) | 통과(불일치 0건) |
| 실행 건수 = 정상 + 금액차이 + 중복실행 (정기전표 18건 전수) | 통과(불일치 0건) |
| 소속별 집계 = 정기전표별 실행 현황 합계 | 통과(차이 0) |
| 대사 요약행 = 실제 집계 결과 | 통과(차이 0) |
| 대사차이 = 기대 금액 합계 − 실행 금액 합계 | 의도적 예외 6건 제외 차이 0, 예외 반영 시 5,872,282원 |
| 확인 대상 건 안내 | 미실행 2건 · 중복실행 2건 · 금액차이 2건(정기전표 5건, 개별 예외 6건) — 의도적으로 구성한 케이스 |
| 조회 조건 전달 — 회사코드·회계연도·기간 필터, 실행 이력 기간순 정렬 확인 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세까지 실동작 후 캡처 | 5/5 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면의 판정이 곧 회계 오류를 뜻하나요?
아닙니다. 이 화면은 정기전표 마스터와 실제 기표 문서를 건수·금액으로 대사해 확인이 필요한 후보를 가려내는 조회·점검 도구입니다. 미실행·중복실행·금액차이로 표시된 건의 원인 확정과 처리는 회사와 담당자가 최종 판단합니다.
적용 시기와 범위는 어떻게 되나요?
정기전표(반복 게시) 기능을 쓰는 회사코드·회계연도라면 조회 시점부터 바로 쓸 수 있습니다. 매 결산 마감 전, 정기전표를 쓰는 기간마다 점검할 대상입니다.
미실행·중복실행이 잡히면 화면에서 바로 고칠 수 있나요?
아닙니다. 이 화면은 조회 전용입니다. 재실행·취소·역분개 같은 실제 처리는 표준 트랜잭션(F.14, FB08 등)에서 담당자가 수행합니다.
금액차이의 허용 오차는 얼마인가요?
회사 내부 기준에 따라 달라질 수 있어 화면은 템플릿 금액과 기표 금액이 다른 모든 건을 우선 표시합니다. 허용 오차를 둘지, 얼마로 둘지는 회사가 정합니다.