SAP 대손충당금 설정 — 경과기간별 대손율로 당기 충당금 잡기
채권의 경과기간에 대손율을 적용해 당기 충당금을 산정하고, 확정하면 당월 전표와 익월 반대분개까지 만드는 화면입니다.
대손충당금은 결산마다 다시 계산합니다. 채권이 한 달 더 밀리면 대손율 구간이 바뀌고 충당금도 달라지기 때문입니다.
계산만 하는 것이 아니라 전월과의 증감으로 전표를 만들어야 하고, 다음 달에는 반대분개로 되돌려야 합니다. 이 흐름을 한 화면에서 처리하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 채권 — 전표·고객·계정과 발생잔액
- 기준일자 — 작업월 말일 기준 경과일수와 경과기간
- 대손율 — 설정기준(
ZTFIF0040)의 구간별 비율 - 충당금 이력 — 생성일 기준(
ZTFIF0050) · 회수일 기준(ZTFIF0060) - 전표 — 확정 시 생성되는 전표번호(
ZTFIF0070)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 일반회계 · 결산 |
| Namespace | zui5.allowance |
| 셸 구조 | 조회조건 영역(우측 조회) + 채권 목록 + 계정별 합계 |
| 화면 수 | 조회·확정 화면 1개 + 상세 |
| 산정 기준 | 채권 생성일 기준 / 채권 회수일 기준 |
| 조회 단위 | 개별 채권 조회 / 계정별 합계 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회계연도·작업월·산정 기준으로 조회하면 경과기간과 대손율이 나옵니다 → 대손율을 조정해 충당금을 확인하고 → 저장한 뒤 확정하면 전표가 만들어집니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드·회계연도·작업월을 넣습니다. 작업월 말일이 경과기간 계산의 기준일입니다.
- G/L 계정으로 대손충당금 대상 채권계정을 고릅니다.
- 산정 기준을 정합니다. 채권 생성일 기준과 회수일 기준이 있습니다.
- 조회 단위를 고릅니다. 개별 채권과 계정별 합계입니다.
- 대손율을 확인합니다. 화면에서 수정할 수 있습니다.
- 증감을 봅니다. 당기충당금에서 전월충당금을 뺀 값입니다.
- 저장 후 확정합니다. 저장하지 않고 확정하면 막힙니다.
- 잘못 확정한 건은 확정취소로 되돌립니다.
산정 규칙
기준에 따라 경과기간의 출발점이 달라집니다.
경과기간(생성일 기준) = 작업월 말일 − 전기일자(BUDAT)
경과기간(회수일 기준) = 작업월 말일 − 기산일(ZFBDT)
대손율 = 설정기준(ZTFIF0040)의 경과기간 구간별 비율 (화면 수정 가능)
당기충당금 = 발생잔액 × 대손율
증감 = 당기충당금 − 전월충당금 (HISTORY)
확정 당월 말일자 비용(차변 40) / 충당(대변 50) 전표
익월 1일자 반대분개 전표 (취소가 아님)
전표유형 CC, 코스트센터 재무팀
익월에 취소가 아니라 반대분개를 만드는 이유
취소 전표는 원 전표를 무효로 만들어 이력이 사라집니다. 반대분개는 별도 전표로 남아 "이번 달에 이만큼 잡았고 다음 달에 이만큼 풀었다" 가 장부에 그대로 보입니다. 매월 새로 산정하는 방식에서는 이 기록이 남아야 추이를 확인할 수 있습니다.
대손충당금 설정기준
| 코드 | 경과기간 | 일수 구간 | 대손율 |
|---|---|---|---|
| T1 | 90일 이내 | 0 ~ 90일 | 1.0 % |
| T2 | 91~180일 | 91 ~ 180일 | 5.0 % |
| T3 | 181~365일 | 181 ~ 365일 | 20.0 % |
| T4 | 1년 초과 | 366 ~ 일 | 50.0 % |
대손충당금 계정
| 채권계정 | 비용계정 | 충당계정 |
|---|---|---|
| 11050101 외상매출금-국내 | 51301000 대손상각비 | 11059000 대손충당금-매출채권 |
| 11050102 외상매출금-수출 | 51301000 대손상각비 | 11059000 대손충당금-매출채권 |
| 11060101 미수금 | 51302000 기타대손상각비 | 11069000 대손충당금-미수금 |
조회조건
| 항목 | 필수 | 설명 |
|---|---|---|
| 회사코드 / 회계연도 / 작업월 | 필수 | 작업월 말일이 경과기간 계산의 기준일 |
| G/L 계정 | 선택 | 대손충당금 대상 채권계정 |
| 산정 기준 | 필수 | 채권 생성일 기준 / 채권 회수일 기준 |
| 조회 단위 | 필수 | 개별 채권 조회 / 계정별 합계 |
결과 컬럼
개별 채권
| 컬럼 | 의미 |
|---|---|
| 전표 · 고객 · 계정 | 채권 식별 |
| 기준일자 | 경과 계산 기준 |
| 경과일수 · 경과기간 | T1~T4 구간 |
| 발생잔액 | 채권 금액 |
| 대손율 | 구간별 비율. 수정 가능 |
| 당기충당금 | 발생잔액 × 대손율 |
| 전월충당금 | HISTORY 기준 |
| 증감 | 당기 − 전월. 부호 색 |
계정별 합계
| 컬럼 | 의미 |
|---|---|
| 계정 | 채권계정 단위 |
| 건수 · 고객수 | 집계 규모 |
| 발생잔액 · 충당금 | 계정 합계 |
| 비용계정 · 충당계정 | 전표 생성 대상 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
ZTFIF0040 | 설정기준 테이블 | 구간별 대손율 |
ZTFIF0050 · ZTFIF0060 | 충당금 HISTORY | 생성일·회수일 기준 |
ZTFIF0070 | 전표번호 등록 | 확정 결과 |
BSID · BSAD | 고객 미결·반제 | 채권 원천 |
FB01 | 전표 입력 | 확정 전표 생성 |
도입 시 확인이 필요한 부분
대손율을 화면에서 고칠 수 있게 할지 정해야 합니다. 개별 사정을 반영할 수 있어 편하지만 근거 없이 낮추면 감사에서 문제가 됩니다. 수정 시 사유를 남기게 하거나 권한을 제한하는 편이 안전합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCALLOWANCE'
@EndUserText.label: '대손충당금 설정 (Z)'
define view Z_C_ALLOWANCE_SETUP
with parameters p_keydate : dats
as select from bsid as Item
left outer join kna1 as Customer on Item.kunnr = Customer.kunnr
{
key Item.bukrs, key Item.belnr, key Item.gjahr, key Item.buzei,
Item.kunnr, Customer.name1 as CustomerName,
Item.hkont as Account,
Item.budat as PostingDate,
Item.zfbdt as BaselineDate,
Item.dmbtr as OpenAmount,
// 경과기간(생성일) = 기준일 − BUDAT, (회수일) = 기준일 − ZFBDT
dats_days_between( Item.budat, :p_keydate ) as AgingByCreate,
dats_days_between( Item.zfbdt, :p_keydate ) as AgingByDue
// 대손율은 ZTFIF0040 구간과 조인, 당기충당금 = 잔액 × 대손율
// 전월충당금은 HISTORY(ZTFIF0050/0060)에서 조회해 증감 산출
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 채권 목록 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 채권 목록 | sap.ui.table.Table — 대손율 인라인 편집 |
| 증감 표시 | sap.m.ObjectNumber — 부호 색 |
| 확정 버튼 | 생성일 기준 + 개별 채권 조회일 때만 표시 |
확정 버튼을 조건부로 노출하는 이유
계정별 합계 화면에서는 어느 채권에서 온 금액인지 특정되지 않고, 회수일 기준은 전표 생성 대상이 아닙니다. 그런데 버튼이 늘 보이면 눌러 보게 됩니다. 조건이 맞을 때만 나타나면 잘못 실행할 여지가 없습니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.allowance) · ko 로케일 |
view/Main.view.xml | 조회조건과 채권 목록 |
controller/Main.controller.js | 조회 · 충당금 산정 · 저장 · 확정 |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 비율 · 증감 색 포맷터 |
localdata/allowance.json | 채권과 충당금 이력 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 당기충당금 = 발생잔액 × 대손율 (전 건) | 통과 |
| 증감 = 당기충당금 − 전월충당금 | 통과 |
| 경과기간이 설정기준 구간과 일치 | 통과 |
| 확정 시 당월 전표와 익월 반대분개 쌍으로 생성 | 통과 |
| 대손율 수정 후 미저장 상태에서 확정 차단 | 통과 |
| 계정별 합계 = 개별 채권 합계 | 통과 |
| 화면 렌더링 — 실브라우저 조회 → 확정 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
생성일 기준과 회수일 기준 중 무엇을 쓰나요?
회사 정책에 따릅니다. 회수일 기준이 실제 연체를 반영해 보수적이고, 생성일 기준은 지급조건과 무관하게 일관됩니다.
대손율을 화면에서 고쳐도 되나요?
개별 사정을 반영할 때 씁니다. 다만 근거 없이 낮추면 감사에서 지적받으므로 사유를 남기는 것이 좋습니다.
확정취소는 무엇을 되돌리나요?
작업월 전표와 익월 반대분개 전표를 모두 취소하고 전표번호 등록도 지웁니다. 두 전표가 쌍으로 처리됩니다.
SAP 표준 기능과 어떻게 이어지나요?
채권 데이터는 표준 미결 구조에 있고 전표 생성도 표준 전기입니다. 이 화면은 경과기간 산정과 대손율 적용, 확정 전표 생성을 한 흐름으로 묶은 확장입니다.