SAP 결산 이연·발생비용 전표 — 역분개 예정일을 놓치지 않기
결산에 계상한 선급비용과 미지급비용 전표를 모아, 역분개 예정일까지 남은 일수와 지연 여부를 관리하는 화면입니다.
결산에서 기간 귀속을 맞추려고 계상한 전표는 다음 기에 반드시 되돌려야 합니다. 되돌리지 않으면 같은 비용이 두 번 잡힙니다.
문제는 역분개가 자동이 아니라 별도 실행이라는 점입니다. 예정일이 지나도 아무 경고가 없어 다음 결산에서야 발견됩니다. 표준 이연·발생 전표 구조를 그대로 이어받아 예정일까지 남은 일수를 보여 주도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 전표 — 전표번호(
Belnr)와 전기일(Budat) - 계상 유형 — 이연(DEFERRAL) · 발생(ACCRUAL) 구분(
AccrualType) - 계정 쌍 — 비용 계정(
Hkont)과 상대 계정(CounterHkont) - 역분개 — 예정일(
RevDate)과 실제 역분개 전표(RevBelnr) - 귀속 — 코스트센터(
Kostl)와 명칭
| 항목 | 내용 |
|---|---|
| 대응 T-code | FBS1 (역분개 전표 입력) · F.81 (역분개 실행) |
| 업무 영역 | 재무회계(FI) · 결산 |
| Namespace | zui5.accrual |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 계상 전표 목록, 행 선택 시 분개 시뮬레이션 |
| 화면 수 | 조회 화면 1개 + 분개 미리보기 |
| 데이터 | 계상 전표 71건 · 계정 10건 · 코스트센터 8건 |
| 성격 | 조회·시뮬레이션형 — 역분개 실행은 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·계상유형·기간으로 조회하면 계상 전표가 모입니다 → 역분개 예정일까지 남은 일수로 우선순위를 잡고 → 행을 눌러 원분개와 역분개 분개를 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 기간을 고릅니다.
- 계상유형으로 이연(선급)과 발생(미지급)을 나눕니다.
- 계정과 코스트센터로 범위를 좁힐 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 잔여일수가 음수인 건부터 봅니다. 예정일이 지났는데 역분개가 안 된 건입니다.
- 역분개 전표 열이 비어 있으면 아직 처리되지 않은 것입니다.
- 행을 선택하면 원분개와 역분개 분개가 나란히 열립니다.
- 결과는 CSV 다운로드로 내려받아 결산 체크리스트로 씁니다.
역분개 판정 규칙
계상은 반드시 짝이 되는 역분개를 갖습니다.
잔여일수 = 역분개 예정일(RevDate) − 오늘
잔여일수 > 0, 역분개 전표 없음 → 예정 — 대기
잔여일수 ≤ 0, 역분개 전표 없음 → 지연 — 즉시 처리 필요
역분개 전표 있음 → 완료
이연(DEFERRAL) 차변: 선급비용 대변: 비용 → 역분개 시 반대
발생(ACCRUAL) 차변: 비용 대변: 미지급 → 역분개 시 반대
잔여일수를 보여 주는 이유
역분개 예정일만 있으면 오늘과 비교하는 계산을 사람이 합니다. 전표가 수십 건이면 그 계산을 수십 번 하게 되고, 한두 건은 놓칩니다. 잔여일수로 바꿔 두면 음수만 찾으면 되고, 작은 양수는 곧 처리할 건으로 미리 준비할 수 있습니다.
계상과 역분개 4단계
| 단계 | 내용 | 결과 |
|---|---|---|
| ① 계상 | 결산 시 기간 귀속 맞춤 | 계상 전표 · 역분개 예정일 |
| ② 대기 | 예정일까지 잔액 유지 | 재무제표에 반영 |
| ③ 역분개 | 예정일에 반대 분개 생성 | 역분개 전표 |
| ④ 실거래 | 실제 청구·지급 발생 | 정상 비용 인식 |
③이 빠지면 ④에서 비용이 이중 계상됩니다. 그래서 예정일 관리가 핵심입니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
계상유형 AccrualType | 선택 | 이연(DEFERRAL) / 발생(ACCRUAL) |
비용계정 Hkont | 선택 | 소모품비 등 |
코스트센터 Kostl | 선택 | 귀속 부서 |
기간 Budat | 선택 | 계상 전기일 From~To |
| 상태 | 선택 | 전체 / 미처리 / 지연 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
계상 ID AccrualId | 계상 건 식별자 |
전표번호 Belnr · 전기일 Budat | 계상 전표 |
계상유형 AccrualType | 이연 / 발생 |
비용계정 Hkont · HkontText | 손익 계정 |
상대계정 CounterHkont · CounterHkontText | 선급비용 · 미지급비용 |
코스트센터 Kostl · KostlText | 귀속 부서 |
금액 Amount · 통화 Waers | 계상 금액 |
역분개 예정일 RevDate | 되돌릴 날짜 |
| 잔여일수 | 예정일 − 오늘. 음수면 경고 색 |
역분개 전표 RevBelnr | 처리 완료 시 전표번호 |
비고 Remark | 계상 사유 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FBS1 | 역분개 전표 입력 | 예정일과 잔여일수를 계산해 관리 |
F.81 | 역분개 실행 | 실행 전 대상 목록과 분개 미리보기 |
BKPF · BSEG | 전표 헤더와 라인 | 계상 전표 원천 |
SKA1 | 계정 마스터 | 계정 명칭 |
CSKS · CSKT | 코스트센터 마스터 | 귀속 부서 명칭 |
도입 시 확인이 필요한 부분
역분개 예정일은 전표 입력 시 지정합니다. 보통 다음 달 1일로 잡지만 실제 거래 발생 시점에 맞추는 곳도 있어 운영 기준을 통일해야 관리가 단순해집니다. 또 이연은 여러 기간에 걸쳐 안분하는 경우가 있어, 한 번에 되돌리는 방식인지 월할 대체 방식인지 구분해야 합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCACCRUAL'
@EndUserText.label: '이연·발생비용 계상 현황 (Z)'
define view Z_C_ACCRUAL_STATUS
as select from bkpf as Header
inner join bseg as Line on Header.bukrs = Line.bukrs
and Header.belnr = Line.belnr
and Header.gjahr = Line.gjahr
left outer join skat as AcctText on Line.hkont = AcctText.saknr
and AcctText.spras = 'K'
{
key Header.bukrs,
key Header.gjahr,
key Header.belnr,
key Line.buzei,
Header.budat,
Header.stgrd as ReversalReason,
Header.stodt as RevDate,
Header.stblg as RevBelnr,
Line.hkont,
AcctText.txt50 as HkontText,
Line.kostl,
Line.dmbtr as Amount,
Header.waers
// 잔여일수 = 역분개 예정일 − 오늘 (소비 뷰에서 계산)
}
where Header.stodt <> '00000000'
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 계상 전표 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 전표 테이블 | sap.m.Table — 계정 쌍을 인접 배치 |
| 잔여일수 | sap.m.ObjectNumber — 음수면 경고 색 |
| 시뮬레이션 | sap.m.Dialog — 원분개와 역분개 대칭 표시 |
원분개와 역분개를 나란히 보여 주는 이유
역분개는 원분개의 차대를 뒤집은 것입니다. 나란히 두면 계정이 맞게 뒤집혔는지 눈으로 확인되고, 잘못된 계정으로 역분개되는 실수를 실행 전에 잡을 수 있습니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.accrual) · ko 로케일 |
view/Main.view.xml | 조회조건과 계상 전표 테이블 |
controller/Main.controller.js | 조회 · 잔여일수 계산 · 분개 시뮬레이션 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 일자 · 잔여일수 색 포맷터 |
localdata/accrual.json | 계상 전표 71건 |
localdata/hkont.json | 계정 10건 |
localdata/kostl.json | 코스트센터 8건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 잔여일수 = 역분개 예정일 − 기준일 (전 건) | 통과 |
| 역분개 전표가 있으면 완료 상태와 정합 | 통과 |
| 원분개 차대 = 역분개 차대 (부호 반대) | 통과 |
| 계상유형과 계정 쌍 정합 (이연↔선급비용) | 통과 |
| 계정·코스트센터 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 시뮬레이션 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
역분개를 놓치면 어떻게 되나요?
실제 거래가 발생했을 때 비용이 두 번 잡힙니다. 계상분과 실제분이 모두 남기 때문입니다. 다음 결산에서 계정 잔액이 이상하게 남아 발견되는 경우가 많습니다.
이연과 발생은 무엇이 다른가요?
이연은 이미 돈을 냈지만 비용은 나중 기간에 속하는 경우(선급비용)이고, 발생은 비용은 이번 기간에 속하지만 아직 청구가 오지 않은 경우(미지급비용)입니다. 계정 쌍이 반대로 구성됩니다.
여러 달에 걸쳐 안분해야 하면요?
한 번에 되돌리는 대신 월할로 대체하는 방식이 필요합니다. 이 화면은 단일 역분개를 전제로 하므로, 월할 대체가 필요한 항목은 별도 처리 구조를 둡니다.
SAP 표준 기능과 어떻게 이어지나요?
계상과 역분개는 FBS1·F.81 이 담당합니다. 이 화면은 그 전표를 모아 예정일까지 남은 일수를 계산하고 원분개와 역분개를 나란히 보여 줘, 누락과 계정 오류를 실행 전에 잡는 확장입니다.