SAP 계약 식별 요건 점검 — IFRS 15, 다섯 요건을 못 채운 계약의 받은 대가는 수익이 아니라 부채인지부터 맞춰본다
승인·권리·지급조건·상업적 실질·회수가능성 다섯 요건으로 계약을 가르고, 요건을 못 채운 계약의 받은 대가를 부채로 뒀는지 장부·원장과 맞춰 봅니다
고객이 주문서를 보냈고 대금 일부도 입금됐는데, 그 계약을 회계상 “고객과의 계약”으로 봐도 될까요? IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)은 계약이 당사자의 승인·확약, 이전할 재화·용역과 관련된 각 당사자의 권리 식별, 지급조건 식별, 상업적 실질, 대가 회수가능성이 높음이라는 다섯 요건을 모두 충족할 때에만 고객과의 계약으로 회계처리하도록 하고, 요건을 충족하지 못한 계약에서 받은 대가는 종결조건을 충족할 때까지 수익이 아니라 부채로 인식하도록 합니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다.
실무에서는 서명이 끝나지 않은 계약이나 회수가능성이 낮아진 고객의 대금을 입금 즉시 매출로 잡거나, 이미 요건이 갖춰졌는데 받은 대가가 부채로 남아 있거나, 증빙이 부족해 성격이 애매한 건이 섞이곤 합니다. 계약마다 다섯 요건의 충족 여부를 읽어 기준 수익·부채를 구하고 장부 수익·부채·원장 수익 잔액과 견주는 과정을 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 7종을 함께 공개합니다.
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) — 수익(판매) |
| 관련 기준서 | IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) — 고객과의 계약 식별 요건 |
| Namespace | zui5.ctident |
| 셸 구조 | 단일 페이지 + 5개 탭 |
| 화면 수 | 메인 1 · 상세 다이얼로그 1 |
| SAP 표준 T-code | VA43 · VA03 · VF03 · FBL5N · FAGLL03 · FD33 |
| 데이터 연동 방식 | OData V2 (조회조건 전부 $filter) |
| 성격 | 조회·재계산·대사·점검형 |
| 테마 | sap_horizon · 한국어 |
| 요약 | 내용 |
|---|---|
| 점검 대상 | 계약 건별 다섯 요건 판정과 기준 수익·부채, 장부 수익·부채·기타 계정, 제품·용역군별 원장 수익 잔액 |
| 핵심 산식 | 기준 수익·부채 = 식별됨은 이행분 수익과 나머지 대가(부채), 식별 안 됨은 종결조건 충족이면 수령 대가 전액 수익·아니면 전액 부채 · 수령 대가 = 장부 수익 + 장부 부채 + 장부 기타 계정 |
| 결과 표시 | 정상 / 점검 필요 / 확인 필요 |
실제 화면 7종 둘러보기







사용 방법
- 조회조건 입력 — 회계연도는 필수이고(기본 2026), 회사코드는 목록에서 고릅니다(기본 1000). 점검 결과와 계약 번호는 선택입니다. 계약 번호는 대소문자를 가리지 않고 입력합니다.
- 조회 — 조회 버튼은 조회조건 영역의 입력 칸들 오른쪽 끝에 있고 초기화 버튼이 그 옆에 있습니다. 입력 칸에서 Enter 키를 눌러도 조회됩니다. 화면이 열릴 때는 기본 조건으로 한 번 자동 조회합니다.
- 요약 KPI 확인 — 판정 계약 건수, 점검 필요·확인 필요 건수, 요건 미충족 계약 수령 대가 합계, 확인 필요 계약 수령 대가 합계, 장부·기준 수익 차이 절대값 합계를 봅니다.
- 탭 이동 순서 — 계약 건별 식별 판정 → 요건별 충족 현황 → 제품·용역군별 수익·부채 증감표 → 판정 구분별 요약 → 대사 결과 순으로 봅니다.
- 행 클릭 상세 — 계약 건별 탭의 행을 누르면 계약 요약과 다섯 요건 판정 내역(증빙 요약 포함)이 상세 창에 나타납니다. 닫기 버튼으로 닫습니다.
- CSV 내려받기 — 현재 탭과 같은 조건의 자료를 UTF-8 BOM CSV 로 내려받습니다. 파일 이름은 한글 기능명입니다.
계약 식별을 가르는 다섯 요건과 판정 규칙
계약마다 다섯 요건(① 승인·확약 ② 권리 식별 ③ 지급조건 식별 ④ 상업적 실질 ⑤ 회수가능성)의 판정을 읽어 계약 식별 여부를 정하고, 장부 수익·부채를 기준 수익·부채와 비교합니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 다섯 요건 모두 충족 → 식별됨, 장부 수익 = 이행분 수익, 장부 부채 = 수령 대가 − 이행분 수익 | 정상 | 조치 없음 |
| 식별됨이나 장부 수익 ≠ 이행분 수익 | 점검 필요 | 이행 진행 자료와 부채의 수익 대체 여부, 이행분 초과 계상 여부 확인 |
| 미충족 요건 1개 이상 → 식별 안 됨, 종결조건 미충족, 장부 수익 0 · 장부 부채 = 수령 대가 | 정상 | 조치 없음(요건 재평가 사실이 생기면 재조회) |
| 식별 안 됨, 종결조건 미충족인데 장부에 수익 계상 | 점검 필요 | 요건 재평가 사실이 있는지, 받은 대가를 부채로 분류해야 하는지 확인 |
| 식별 안 됨, 종결조건 충족, 장부 수익 = 수령 대가 | 정상 | 조치 없음 |
| 식별 안 됨, 종결조건 충족인데 받은 대가가 부채로 남음 | 점검 필요 | 수익 전환 여부 확인 |
| 장부 기타 계정에 받은 대가가 남음 | 점검 필요 | 수익·부채 계정으로의 분류 확인 |
| 미충족 요건은 없으나 일부 요건의 증빙이 없음 | 확인 필요 | 증빙 확인 후 재조회(기준 수익·부채는 산정하지 않음) |
| 제품·용역군에 점검 필요 계약이 있음 / 없고 확인 필요 계약만 있음 | 점검 필요 / 확인 필요 | 해당 군의 계약 건 확인 |
판정 결과는 확인 대상을 알리는 표시이며, 최종 판단은 회사와 감사인이 합니다.
요건 판정에서 수익·부채 대사까지의 순서
- 충족 요건 수 = 요건 판정 Y 의 개수. 5요건 모두 Y 이면 식별됨, N 이 하나라도 있으면 식별 안 됨, N 없이 확인 필요(U)가 있으면 판정 보류 (대사식 R2)
- 종결조건 = (남은 이전 의무 없음 · 대가를 거래가격의 90% 이상 수령 · 환불 불가) 또는 (계약 종료 · 환불 불가). 90% 는 “대부분”을 뜻하는 가상 설정값입니다(확인 필요)
- 기준 수익·부채 = 식별됨은 이행분 수익과 나머지 수령 대가(부채), 식별 안 됨은 종결조건 충족이면 수령 대가 전액 수익·아니면 전액 부채, 판정 보류는 산정하지 않음 → 수령 대가 = 기준 수익 + 기준 부채 (R3)
- 수익 차이 = 장부 수익 − 기준 수익, 부채 차이 = 장부 부채 − 기준 부채 (판정 완료 건)
- 수령 대가 = 장부 수익 + 장부 부채 + 장부 기타 계정 (R1)
- 요건별 충족 + 미충족 + 확인 필요 건수 = 계약 수 (R4)
- 제품·용역군 장부 수익 = Σ 계약 장부 수익 = 원장 수익 잔액 (R5)
- 요약 합계 = Σ 구분별 행, 구분별 건수 = 정상 + 점검 필요 + 확인 필요 (R6)
금액은 원 단위이며, 고객·계약·금액은 모두 가상 설정값입니다.
조회조건
| 조회조건 | 입력 방식 | 필수 여부 | 전달 방식 |
|---|---|---|---|
| 회사코드 | 목록(1000 · 2000) | 선택(기본 1000) | CompanyCode eq |
| 회계연도 | 직접 입력 | 필수(기본 2026) | FiscalYear eq |
| 점검 결과 | 목록(전체 · 정상 · 점검 필요 · 확인 필요) | 선택 | ResultText eq — '전체'이면 조건을 만들지 않음 (계약 건별 탭) |
| 계약 번호 | 직접 입력 | 선택 | ContractNo eq (계약 건별 탭) |
결과 컬럼
| 탭 | 주요 컬럼 |
|---|---|
| 계약 건별 식별 판정 | 계약 번호 · 점검 결과 · 고객 · 제품·용역군 · 계약일 · 거래가격 · 수령 대가 · 요건 ①~⑤ 충족 여부 · 충족 요건 · 계약 식별 판정 · 남은 이전 의무 · 받은 대가 환불 가능 · 계약 종료 · 종결조건 충족 · 기준 수익·부채 · 장부 수익·부채·기타 계정 · 수익 차이 · 부채 차이 · 비고 |
| 요건별 충족 현황 | 판정 요건 · 충족·미충족·확인 필요 건수 · 미충족 계약 거래가격 · 미충족 계약 장부 수익 · 미충족 중 점검 필요 건수 |
| 제품·용역군별 수익·부채 증감표 | 제품·용역군 · 점검 결과 · 계약·점검 필요 건수 · 수령 대가 · 기준 수익·부채 · 확인 필요 수령 대가 · 장부 수익·부채·기타 계정 · 수익 차이 합계 · 원장 수익 잔액 · 원장 차이 |
| 판정 구분별 요약 | 판정 구분(식별됨 · 식별 안 됨 종결조건 미충족/충족 · 판정 보류 · 합계) · 건수(정상/점검 필요/확인 필요) · 수령 대가·요건 미충족 수령 대가·기준 수익·기준 부채·장부 수익·장부 부채 합계 · 수익 차이 절대값 합계 |
| 대사 결과 | 대사식 · 대사 항목 · 산식 · 검사 건수 · 차이 건수 · 최대 차이 금액 |
SAP 표준 기능 매핑
SAP 표준 T-code 매핑
| 표준 T-code | 표준 기능 | 이 화면과의 관계 |
|---|---|---|
| VA43 | 판매 계약 조회 | 계약 조건(승인·인도·지급 조건)을 확인할 때 이어서 사용 |
| VA03 | 판매오더 조회 | 계약에 묶인 오더의 품목·인도 조건 확인 |
| VF03 | 청구문서 조회 | 청구된 수령 대가의 근거 확인 |
| FBL5N | 고객 개별 항목 조회 | 고객별 입금·미결 항목으로 수령 대가 확인 |
| FAGLL03 | G/L 계정 개별 항목 조회 | 수익·부채 계정의 장부 금액과 이 화면의 집계를 대조 |
| FD33 | 고객 신용 관리 조회 | 대가 회수가능성 판단 자료(신용 정보) 확인 |
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다.
IFRS 요구사항 매핑
| 기준서 | 요구사항 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) | 계약이 승인·확약, 권리 식별, 지급조건 식별, 상업적 실질, 대가 회수가능성 요건을 모두 충족할 때 고객과의 계약으로 회계처리 | 계약 건별 식별 판정 탭의 요건 ①~⑤ 와 충족 요건 수 | 판매 계약·오더의 계약 점검표 | 요건 재평가 시점은 미반영(확인 필요) |
| IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) | 요건을 충족하지 못한 계약에서 받은 대가는 종결조건을 충족할 때까지 부채로 인식 | 기준 부채 · 종결조건 충족 여부 | 고객 입금 내역, 계약 종료·환불 조건 | “대부분” 기준은 가상 설정값(확인 필요) |
| IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) | 요건을 충족한 계약은 이행한 만큼 수익으로 인식하고 받은 대가 중 남은 부분은 부채 | 기준 수익·기준 부채, 수익·부채 차이 | 이행 진행 자료, 수익·부채 원장 | 최종 판단은 회사와 감사인 |
참고 CDS 뷰
원천테이블
| 원천테이블 | 설명 | 사용 필드 |
|---|---|---|
| VBAK · VBAP | 판매 계약·오더 헤더·품목 | 계약 번호, 계약일, 고객, 순금액(거래가격) |
| VBRK · VBRP | 청구 헤더·품목 | 청구 금액 |
| BSID · BSAD | 고객 미결·반제 개별 항목 | 수령 대가(입금 반제분) |
| ACDOCA | 유니버설 저널 항목 | 수익 계정·부채 계정·기타 계정 금액(장부) |
| KNA1 | 고객 마스터 | 고객 코드·이름 |
필드 매핑
| OData 엔티티.프로퍼티 | 원천테이블.필드 / 산식 |
|---|---|
| ContSet.ContractNo · ContractDate · CustomerName | VBAK-VBELN · VBAK-AUDAT · KNA1-NAME1 |
| ContSet.TransPrice | VBAP-NETWR 계약 합계 |
| ContSet.ConsRecv | BSAD 고객 입금 반제 금액 합(수령 대가) |
| ContSet.Crit1 ~ Crit5 | 계약 점검표 값(가상 설정값: Y 충족 · N 미충족 · U 증빙 확인 필요, 확인 필요) |
| ContSet.MetCount · IdentText | Y 개수 · 5→식별됨 / N 1개 이상→식별 안 됨 / 그 외→판정 보류 (파생) |
| ContSet.ExpRev · ExpLiab | 식별됨: 이행분 수익(가상 진행 자료, 확인 필요) · ConsRecv − ExpRev / 식별 안 됨: ConsRecv 또는 0 (파생) |
| ContSet.BookRev · BookLiab · BookOther | ACDOCA 수익 계정 · 계약부채 계정 · 기타 계정 금액 합 |
| ContSet.RevDiff · LiabDiff | BookRev − ExpRev · BookLiab − ExpLiab (파생) |
| CritSet.* | 계약 점검표의 요건별 판정·증빙 요약(가상 설정값) |
| CritSumSet.* · RollSet.* · SumSet.* | ContSet 을 요건·제품·용역군·판정 구분으로 집계한 값, 원장 수익 잔액은 ACDOCA 집계 |
CDS 뷰 스케치
define view entity ContractIdentCheck
as select from vbak as h
inner join vbap as i on i.vbeln = h.vbeln
inner join kna1 as c on c.kunnr = h.kunnr
{
key h.vbeln as ContractNo,
h.audat as ContractDate,
c.name1 as CustomerName,
sum( i.netwr ) as TransPrice,
case when Crit1 = 'Y' and Crit2 = 'Y' and Crit3 = 'Y' and Crit4 = 'Y' and Crit5 = 'Y' then '식별됨'
when Crit1 = 'N' or Crit2 = 'N' or Crit3 = 'N' or Crit4 = 'N' or Crit5 = 'N' then '식별 안 됨'
else '판정 보류' end as IdentText
}스케치이며 요건 판정(Crit1~Crit5)과 종결조건 값은 별도 계약 점검표에서 받는 값으로 가정합니다(확인 필요).
OpenUI5 구성
| 구성 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 수익(판매) |
| 화면 구성 | 조회조건 영역(우측 조회) + 요약 줄 + 계약 건별 판정·요건별 충족·군별 증감표·구분별 요약·대사 5개 탭, 상세 Dialog |
| 데이터 모델 | OData V2 모델을 앱 설정(manifest)에서 선언하고, 표마다 해당 엔티티셋에 직접 바인딩 |
| 조회조건 처리 | 필터 객체로 만들어 서버 조회 조건($filter)으로 전달하며 "전체"는 조건을 만들지 않음 |
| 정렬·페이징 | 정렬 객체로 서버 정렬($orderby), 목록 범위 읽기로 페이징($top·$skip), 총건수는 인라인 건수 |
| 집계 | 요약 값은 서비스 집계 엔티티셋에서 읽고, 금액 문자열은 숫자로 변환해 표시·비교 |
| 표 구성 | 건수가 많고 컬럼이 많은 계약 건별 탭은 sap.ui.table.Table, 나머지 탭과 상세 창은 sap.m.Table |
| 실패 안내 | 서비스 연결 실패와 요청 실패, 빈 응답을 구분해 사용자 메시지로 안내 |
| 테마 | sap_horizon · 한국어 |
파일 구성
| 구분 | 내용 |
|---|---|
| 앱 본체 | index.html · manifest.json · Component.js · controller · view · model · i18n · css |
| 데이터 서비스 | OData 서비스 정의와 엔티티셋별 데이터 |
| 검증 전용 | 앱 본체와 분리된 검증용 샘플 데이터 구성 |
| 설명서 | readme.html (13개 절) |
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 가상 계약 57건(회사 1000 42건 · 회사 2000 15건)과 요건 판정 285행을 기준으로 원 단위로 맞물리도록 구성했습니다.
| 대사식 | 검사 | 결과 | 차이 건수 |
|---|---|---|---|
| 수령 대가 = 장부 수익 + 장부 부채 + 장부 기타 계정 | 42 | 일치 | 0 |
| 충족 요건 수와 식별 판정(5→식별됨 / N 있음→식별 안 됨 / 그 외→판정 보류) | 42 | 일치 | 0 |
| 수령 대가 = 기준 수익 + 기준 부채 (판정 완료 건) | 37 | 일치 | 0 |
| 요건별 충족 + 미충족 + 확인 필요 건수 = 계약 수 | 5 | 일치 | 0 |
| 군별 장부 수익 = Σ 계약 장부 수익 = 원장 수익 잔액 | 4 | 일치 | 0 |
| 요약 합계 = Σ 구분별 행, 구분별 건수 = 정상 + 점검 필요 + 확인 필요 | 5 | 일치 | 0 |
회사 1000 은 “점검 필요” 계약 9건(요건 미충족 계약에 수익 계상 3건, 종결조건 충족 후에도 부채 잔존 2건, 요건 충족 후에도 부채 잔존 2건, 이행분 초과 수익 계상 1건, 기타 계정 잔존 1건)과 “확인 필요” 계약 5건(일부 요건 증빙 확인 필요)이 예외이고, 회사 2000 에도 같은 유형의 예외를 소수 넣었습니다. 이는 점검 화면의 동작을 보이기 위해 의도적으로 구성한 케이스이며 대사 차이와 분리해 기록했습니다. 기준 수익·부채는 별도 스크립트로 다시 계산해 판정 완료 37건을 전수 비교했고 대사 차이는 0건이었으며, 화면의 요약 지표(회사 1000: 판정 계약 42건 · 점검 필요 9 · 확인 필요 5 · 요건 미충족 계약 수령 대가 2,238,500,000원)도 스크립트 결과와 일치했습니다.
자주 묻는 질문
이 화면의 “점검 필요”는 회계처리가 틀렸다는 뜻인가요?
아닙니다. 이 화면은 계약 식별 여부에서 기대되는 수익·부채를 장부와 맞춰 차이가 나는 건을 가려내는 점검 도구입니다. 차이의 원인과 최종 회계 판단은 기준서 원문과 회사의 회계정책에 따라 회사와 감사인이 합니다.
적용 시기와 범위는 어떻게 되나요?
이 화면은 IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) 중 고객과의 계약을 식별하는 다섯 요건과 요건을 충족하지 못한 계약의 받은 대가 처리만 다룹니다. 회사별 적용 시점과 경과규정, 문단번호는 원문으로 확인하지 못해 확인 필요로 두었고, 수행의무 식별·거래가격 배분 등 다른 단계는 범위에 넣지 않았습니다.
요건 중 일부만 증빙이 있으면 어떻게 보이나요?
미충족 요건은 없으나 일부 요건의 증빙이 없으면 계약이 식별되는지 이 화면이 판정하지 않고 “확인 필요”로 표시합니다. 증빙을 확인해 요건 판정을 보완하고 다시 조회하면 판정됩니다.
요건을 나중에 다시 평가하는 경우도 반영되나요?
반영하지 않았습니다. 이 화면은 조회 시점의 요건 판정값만 쓰는 가상 설정이며, 사실과 상황이 유의적으로 바뀐 경우의 재평가와 그 이후 회계처리 반영 방식은 확인 필요입니다.
수주 직후 입금분의 수익 인식, 계약 요건부터 건별로 확인해 두세요
서명이 덜 끝난 계약이나 회수가능성이 흔들리는 고객의 입금분이 매출로 잡혀 있으면 감사 시기에 계약서와 입금 내역을 엑셀로 다시 대조하게 됩니다. 화면에서 다섯 요건과 장부 수익·부채가 다른 계약을 미리 가려 두면 결산과 감사 대응이 한결 가벼워집니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.