SAP 보증 유형별 회계처리 점검 — IFRS 15, 고장을 고쳐 주는 약속과 서비스를 파는 약속은 다르다
제품 보증을 확신유형과 용역유형으로 나눠, 충당부채와 계약부채로 제대로 처리했는지 청구·보증·원장 데이터로 먼저 확인해 둡니다
제품을 팔면서 붙이는 보증은 두 종류입니다. 제품이 규격대로 작동한다는 것을 보장하는 확신유형 보증은 판매와 별개의 서비스가 아니므로 예상 보증원가를 IAS 37 충당부채(K-IFRS 제1037호)에 따라 부채로 잡습니다. 고객이 따로 살 수 있는 연장보증처럼 추가 용역을 주는 용역유형 보증은 IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)의 별도 수행의무라서, 판매 대가 일부를 떼어 계약부채로 두고 보증기간에 걸쳐 수익으로 인식합니다.
두 유형은 처리가 정반대라 한 번 잘못 나누면 수익과 부채가 함께 틀어집니다. 표준 청구·통지·원장 구조를 그대로 이어받아 판매 건마다 유형에 맞는 기준 처리를 계산해 장부와 나란히 놓고, 유형 오분류와 누락을 가려내는 과정을 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 6종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 청구 — 청구 문서(
VBRK/VBRP)의 매출 금액을 그대로 사용 - 보증 청구 — 통지(
QMEL)의 보증 청구 실적으로 예상 보증원가율을 점검 - 표준 화면 — 청구 조회(VF03) · 통지 목록(IW59) · 수익성 보고서(KE30) · G/L 잔액(FS10N)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 수익 인식 |
| 관련 기준서 | IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) — 보증: 합의한 규격을 확신하는 보증(IAS 37 충당부채, K-IFRS 제1037호)과 추가 용역을 제공하는 보증(별도 수행의무, 거래가격 배분)의 구분 |
| Namespace | zui5.wtytype |
| 셸 구조 | 조회조건 영역(우측 조회) + 보증 회계처리 대사 요약 + 보증 판매 명세·보증 유형별·제품군별·판매월별·점검 예외 5개 탭, 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 |
| SAP 표준 T-code | VF03 · IW59 · KE30 · FS10N · FAGLL03(§7 참고) |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 충당부채·계약부채 조정 전표 기표는 화면 밖 프로세스 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 6종 둘러보기
회사코드·회계연도를 넣고 조회하면 보증 회계처리 대사 요약과 명세가 한 화면에 뜹니다 → 탭을 옮겨 보증 유형별·제품군별·판매월별 집계를 보고 → 점검 예외에서 확인이 필요한 건만 추려 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도를 넣습니다. 보증 유형·판매월·판정 상태는 비워 두면 전체가 조회됩니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 보증 회계처리 대사 요약에서 기준·장부의 수익·계약부채·보증충당부채와 처리 차이를 먼저 확인합니다.
- 탭을 옮겨 가며 보증 판매 명세 → 보증 유형별 → 제품군별 → 판매월별 → 점검 예외 순으로 좁혀 봅니다.
- 행을 누르면 보증기간·표준기간·개별판매가격·배분액과 기준·장부 금액이 상세 다이얼로그로 열립니다.
- 보증 판매 명세와 점검 예외 탭에서는 CSV 내려받기(UTF-8 BOM)로 결과를 저장할 수 있습니다.
고치는 약속인가, 파는 서비스인가 — 보증 처리 규칙
먼저 보증이 규격 보장에 그치는지, 추가 용역을 주는지를 가릅니다. 그다음 유형에 맞게 충당부채 또는 계약부채로 처리합니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 규격대로 작동함을 보장하는 보증(확신유형) | 충당부채 | 매출은 전액 수익, 예상 보증원가를 충당부채로 인식합니다. |
| 따로 살 수 있거나 추가 용역을 주는 보증(용역유형) | 계약부채 | 거래가격 일부를 용역에 배분하고 보증기간에 걸쳐 수익으로 인식합니다. |
| 확신유형인데 충당부채가 없음 | 점검 필요 | 예상 보증원가 산정과 충당부채 설정을 확인합니다. |
| 용역유형을 충당부채로 처리하고 매출 전액 수익 인식 | 점검 필요 | 용역 배분액을 계약부채로 옮겼는지 확인합니다. |
| 용역유형 배분액을 판매 시점에 모두 수익 인식 | 점검 필요 | 보증기간에 걸친 인식을 확인합니다. |
| 확신유형 보증기간이 업계 표준보다 김 | 확인 필요 | 추가 용역이 포함된 것은 아닌지 유형 판단을 다시 봅니다. |
이 화면이 대신 정하지 않는 것
판정 결과는 확인 대상을 알리는 표시이며, 기준서 충족 여부를 단정하지 않습니다. 보증이 추가 용역을 포함하는지는 법적 요구 여부, 보증기간, 제공하는 활동의 성격을 보고 회사가 판단합니다. 화면은 용역 수익을 보증기간 전체에 걸쳐 정액으로 인식한다고 가정한 참고 계산이며, 업계 표준기간은 확인 대상을 고르는 참고값입니다. 최종 판단은 기준서 원문에 따라 회사와 감사인이 합니다.
유형 판단에서 처리 대사까지 5단계 산출
| 단계 | 내용 |
|---|---|
| 1단계 | 보증 유형을 판단한다 — 규격 보장 → 확신유형 / 추가 용역·별도 판매 → 용역유형 |
| 2단계 | 확신유형 충당부채를 계산한다 — 충당부채 = 매출 × 예상 보증원가율 |
| 3단계 | 용역유형 거래가격을 배분한다 — 용역 배분액 = 매출 × 용역 SSP ÷ (제품 SSP + 용역 SSP) |
| 4단계 | 용역 수익과 계약부채를 계산한다 — 용역 수익 = 배분액 × 경과월 ÷ 보증기간 / 계약부채 = 배분액 − 용역 수익 |
| 5단계 | 장부와 대사한다 — 차이 = 장부 − 기준 (수익 · 계약부채 · 보증충당부채) |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 회계연도 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 보증 유형 | 선택 | 전체 / 확신유형 보증 / 용역유형 보증 |
| 판매월 | 선택 | YYYY-MM 형식으로 한 달만 좁혀 봅니다. |
| 판정 상태 | 선택 | 전체 / 정상 / 점검 필요 / 확인 필요 |
결과 컬럼
| 영역 | 컬럼 · 표시 |
|---|---|
| 보증 회계처리 대사 요약 | 판매 건수 · 용역유형 건수 · 매출 합계 · 기준/장부 수익 · 기준/장부 계약부채 · 기준/장부 보증충당부채 · 처리 차이 · 예외 건수 |
| 보증 판매 명세 | 보증번호 · 판매월 · 제품군 · 보증 유형 · 보증기간 · 매출 · 용역 배분액 · 기준/장부 수익 · 기준/장부 계약부채 · 기준/장부 보증충당부채 · 판정 |
| 보증 유형별 · 제품군별 · 판매월별 집계 | 구분 · 건수 · 매출 · 기준/장부 수익 · 기준 계약부채 · 기준 보증충당부채 |
| 점검 예외 | 예외번호 · 판매월 · 예외 유형 · 내용 · 차이 · 중요도 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 보증 유형별 처리 관점의 조회·검증을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
VF03 | 청구 문서 조회 | 보증이 붙은 판매의 매출 금액을 가져옵니다 |
IW59 | 통지 목록 조회 | 보증 청구 실적으로 예상 보증원가율을 점검합니다 |
KE30 | 수익성 보고서 | 제품군별 매출과 보증 관련 원가를 집계합니다 |
FS10N | G/L 계정 잔액 조회 | 보증충당부채·계약부채 계정 잔액을 기준과 대사합니다 |
FAGLL03 | G/L 개별항목 조회 | 보증 용역 수익 인식 전표를 건별로 확인합니다 |
IFRS 요구사항 매핑표
| 기준서 | 요구사항 | 이 화면의 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IFRS 15 (K-IFRS 제1115호) | 고객이 보증을 따로 살 수 있으면 별도 수행의무 | 용역유형 판정과 배분액 산출 | VBRK · VBRP | 별도 판매 여부는 가격표로 확인합니다. |
| IFRS 15 (K-IFRS 제1115호) | 규격 보장을 넘는 용역을 제공하는 보증은 수행의무 | 보증기간·표준기간 비교로 유형 재검토 대상 표시 | VBRP | 용역 포함 판단은 사용자 몫입니다. |
| IAS 37 (K-IFRS 제1037호) | 확신유형 보증은 충당부채로 회계처리 | 기준 보증충당부채 산출과 미설정 검출 | ACDOCA · QMEL | 보증원가율 추정은 청구 실적에 따릅니다. |
| IFRS 15 (K-IFRS 제1115호) | 용역유형 배분액은 용역 제공에 따라 수익 인식 | 용역 수익·계약부채 산출과 일시 인식 검출 | ACDOCA | 정액 인식을 참고 가정으로 씁니다. |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
VBRK / VBRP | VBELN · FKDAT · MATNR · NETWR | 보증이 붙은 판매 금액 |
QMEL | QMNUM · QMART · MATNR · ERDAT | 보증 청구 통지(보증원가율 점검) |
ACDOCA | RBUKRS · GJAHR · RACCT · HSL | 보증충당부채·계약부채·용역 수익 전표 |
MARA | MATNR · MATKL | 제품군 |
T001 | BUKRS · WAERS | 회사코드 통화 |
define view entity ZC_WarrantyItem
as select from I_BillingDocumentItem as bi
inner join ZI_WarrantyTerms as wt on wt.Product = bi.Product
{
key bi.BillingDocument as WtId,
bi.ProductGroup as ProdGroup,
wt.WarrantyType as WarrantyType,
wt.WarrantyMonths as WarrantyMonths,
bi.NetAmount as SalesAmt,
wt.ServiceStandalonePrice as ServiceSsp,
bi.TransactionCurrency as Waers
}
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · 대사 요약 패널 · sap.m.IconTabBar 5개 탭 |
| 데이터 연동 | 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 — sap.m.ObjectStatus로 판정 상태를 표준 ValueState 로만 표시 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon · lodash · moment, OData 서비스에 연결 |
Component.js | 화면 상태·조회조건 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.wtytype · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 대사 요약 · 5개 탭 |
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 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 12건의 보증 판매를 기준으로 수익·계약부채·보증충당부채가 원(KRW) 단위로 맞물리도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 확신유형: 제품 수익 = 매출 · 충당부채 = 매출 × 보증원가율 | 통과(차이 0) |
| 용역유형: 배분액 = 매출 × 용역 SSP ÷ (제품 SSP + 용역 SSP) | 통과(차이 0) |
| 제품 수익 + 용역 배분액 = 매출 | 통과(차이 0) |
| 용역 수익 = 배분액 × 경과월 ÷ 보증기간 | 통과(차이 0) |
| 계약부채 = 배분액 − 용역 수익 | 통과(차이 0) |
| 용역유형 충당부채 = 0 | 통과(차이 0) |
| 장부 수익 = 기준 | 통과(의도적 예외 제외 차이 0) |
| 장부 계약부채 = 기준 | 통과(의도적 예외 제외 차이 0) |
| 장부 보증충당부채 = 기준 | 통과(의도적 예외 제외 차이 0) |
| 보증 유형별 집계 = 명세 집계 | 통과(차이 0) |
| 제품군별 집계 = 명세 집계 | 통과(차이 0) |
| 판매월별 집계 = 명세 집계 | 통과(차이 0) |
| 대사 요약행 = 실제 집계 결과 | 통과(차이 0) |
| 금액 차이 건 = 예외 등록 건 | 통과(의도적 예외 제외 차이 0) |
| 확인 대상 건 안내 | 확신유형 충당부채 미설정 1건 · 용역유형을 충당부채로 처리 1건 · 용역 수익 일시 인식 1건 · 보증기간 검토 1건(의도적으로 구성한 케이스) |
| 조회 조건 전달 — 12건 → 6건 필터 · top 3 · 내림차순 정렬 · __count 12 확인 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세까지 실동작 후 캡처 | 6/6 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면의 판정이 곧 기준서 충족 여부인가요?
아닙니다. 이 화면은 보증 유형별 회계처리 결과를 집계·대사해 확인이 필요한 건을 가려내는 점검 도구입니다. 최종 판단은 기준서 원문에 따라 회사와 감사인이 합니다.
적용 시기와 범위는 어떻게 되나요?
IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)과 IAS 37 충당부채(K-IFRS 제1037호)는 이미 시행 중인 기준서입니다. 이 화면은 제품 판매에 붙는 보증을 다룹니다. 보증이 붙은 판매는 매달 생기므로 결산마다 점검할 대상입니다.
확신유형과 용역유형은 어떻게 구분하나요?
고객이 보증을 따로 살 수 있으면 용역유형입니다. 따로 살 수 없더라도 제품이 합의한 규격대로 작동한다는 보장을 넘어 추가 용역을 제공하면 그 부분은 용역유형입니다. 법으로 요구되는 보증인지, 보증기간이 얼마나 긴지, 회사가 무슨 활동을 해 주는지를 함께 보고 판단합니다.
한 보증에 두 성격이 섞여 있으면 어떻게 하나요?
규격 보장 부분과 추가 용역 부분을 나눌 수 있으면 규격 보장 부분은 충당부채로, 추가 용역 부분은 별도 수행의무로 처리합니다. 합리적으로 나눌 수 없으면 두 보증을 함께 하나의 수행의무로 회계처리합니다.