솔루션 홈
IFRS 15

SAP 수행의무별 거래가격 배분 점검 — IFRS 15, 계약 금액을 의무별로 나눠 다시 맞춰본다

제품 공급·설치·유지보수가 한 계약에 섞여 있을 때 거래가격이 개별판매가격 비율대로 배분됐는지, 배분액 합계가 거래가격과 맞는지 원장·계약 데이터로 먼저 확인해 둡니다

계약 금액이 한 줄로 떨어져도, 그 안에 제품 공급·설치 용역·2년 유지보수처럼 이행 시점이 다른 의무가 섞여 있으면 이야기가 달라집니다. IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)은 거래가격을 수행의무별 개별판매가격 비율대로 배분하도록 요구합니다. 배분이 어긋나면 금액 총액은 같아도 수익을 인식하는 시점이 달라지고, 계약자산·계약부채 잔액도 함께 틀어집니다. 그런데 개별판매가격은 계약마다 산정 방법이 다르고, 성과보너스·반품 추정 같은 변동대가까지 끼면 거래가격 자체가 확정된 값이 아니라 추정치에서 제약을 뺀 값이 됩니다.

표준 판매문서·청구·원장 구조를 그대로 이어받아 계약별 수행의무와 개별판매가격을 한자리에 모으고, 배분 비율과 배분액 산출, 배분액 합계 대사, 개별판매가격 산정방법별 구성비, 변동대가 추정·제약 집계, 확인 대상 건 추출까지 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 5종을 함께 공개합니다.

SAP 표준 기능을 그대로 이어받은 부분

  • 계약·수행의무 원천 — 판매문서 헤더·품목(VBAK/VBAP) 구조를 그대로 사용
  • 청구·수익 — 청구문서(VBRK/VBRP)와 원장(ACDOCA) 금액을 그대로 집계
  • 표준 화면 — 판매오더 조회(VA03) · 판매계약 조회(VA43) · 청구문서 조회(VF03) · 가격 조건 레코드 조회(VK13)
항목내용
업무 영역재무회계(FI) · 수익 인식
관련 기준서IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) — 거래가격의 배분, 변동대가의 추정과 제약
Namespacezui5.poalloc
셸 구조조회조건 영역(우측 조회) + 배분 대사 요약 + 수행의무 명세·계약별 집계·개별판매가격 산정방법·변동대가·점검 예외 5개 탭, 상세 Dialog
화면 수조회 화면 1개 + 상세 다이얼로그
SAP 표준 T-codeVA03 · VA43 · VF03 · VK13 · FBL5N · FAGLL03(§7 참고)
데이터 연동 방식OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩
성격조회·대사·점검형 — 배분 확정과 전표 기표는 화면 밖 프로세스
UI 테마sap_horizon 단일 적용

실제 화면 5종 둘러보기

회사코드·회계연도를 넣고 조회하면 배분 대사 요약과 수행의무 명세가 한 화면에 뜹니다 → 탭을 옮겨 계약별 집계·산정방법·변동대가를 보고 → 점검 예외에서 확인이 필요한 건만 추려 봅니다.

아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.

Main.view.xml
거래가격 배분 점검 메인화면 — 조회조건과 배분 대사 요약, 계약별 수행의무 명세
메인화면 — 2026 회계연도 전체 조회 결과. 계약 8건·수행의무 22건의 배분 대사 요약(거래가격 65억 1,800만 원, 배분액 65억 1,500만 원, 차이 −300만 원)과 수행의무 명세가 한 화면에 뜹니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
조회조건 — Enter 키 조회
계약번호를 넣고 Enter 키를 눌러 한 계약의 수행의무만 좁혀 본 화면
조건 조회 — 계약번호를 입력하고 Enter 키만 눌러도 즉시 재조회됩니다. 제품 공급·설치 용역·유지보수 세 수행의무의 개별판매가격 비율(72%·12%·16%)과 배분액이 그대로 드러납니다.
계약별 집계
계약별 고정대가·변동대가·거래가격·배분액 합계·차이·비율 합계를 나란히 놓은 집계 화면
계약별 집계 — 고정대가에 변동대가 반영액을 더해 만든 거래가격과, 수행의무 배분액 합계를 한 줄에서 대사합니다. 차이가 0이 아닌 계약 한 건만 색으로 구분돼 바로 눈에 띕니다.
점검 예외
배분 차이·개별판매가격 미등록·잔여접근법 과다 사용·변동대가 제약 미적용 건을 모은 점검 예외 목록
점검 예외 — 확인이 필요한 건만 유형별로 모아 보여줍니다. 각 행에는 해당 계약·수행의무와 차이 금액, 무엇을 다시 봐야 하는지가 함께 적힙니다.
상세 내역
계약 행을 클릭하면 뜨는 거래가격·배분액 합계·차이·비율 합계 상세 다이얼로그
상세 내역 — 행을 클릭하면 그 계약의 거래가격 구성과 배분액 합계, 차이, 비율 합계가 항목별로 펼쳐집니다.

조작 방법

  1. 회사코드·회계연도를 지정하고, 고객·계약번호·판정 상태는 필요할 때만 넣습니다. 비워 두면 전체가 조회됩니다.
  2. 조회·초기화 버튼은 조회조건 입력 필드 줄의 오른쪽 끝에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
  3. 배분 대사 요약에서 거래가격 합계·배분액 합계·차이를 먼저 확인합니다. 차이가 0이 아니면 요약 오른쪽에 점검 안내가 붙습니다.
  4. 수행의무 명세에서 계약별 개별판매가격·배분비율·배분액과 청구액·인식수익을 나란히 봅니다.
  5. 계약별 집계에서 고정대가·변동대가·거래가격·배분액 합계·비율 합계를 계약 단위로 대사합니다.
  6. 개별판매가격 산정방법변동대가 탭에서 구성비와 추정·제약·반영액을 확인합니다.
  7. 점검 예외에서 확인이 필요한 건만 유형별로 추려 보고, 행을 클릭해 상세를 확인한 뒤 CSV 다운로드로 결과를 내려받습니다.

배분 비율과 확인 대상 판정 규칙

이 화면의 핵심 판정은 두 가지입니다. "거래가격이 개별판매가격 비율대로 남김없이 배분됐는가"와 "그 비율을 만든 개별판매가격·변동대가가 근거를 갖췄는가" 입니다.

판정 조건결과 상태사용자 조치
수행의무 배분액 합계 ≠ 계약 거래가격점검 필요배분 계산 기준과 단수 처리 방식을 확인 — 할인의 배분 대상이 빠지지 않았는지 점검
계약의 개별판매가격 비율 합계 ≠ 100%점검 필요비율 산출에서 빠진 수행의무가 없는지 확인
개별판매가격이 등록되지 않은 수행의무가 있음확인 필요관측가능 가격이 없을 때 쓸 추정 방법(시장평가 조정 · 예상원가와 이윤 · 잔여접근법)을 정한 뒤 재조회
계약의 모든 수행의무에 잔여접근법을 적용확인 필요잔여접근법 적용 요건에 해당하는지 확인 — 관측가능 가격이 있는 의무에 쓰이지 않았는지 점검
변동대가 추정액은 있는데 제약액이 0확인 필요수익 환원 가능성이 매우 높은 금액만 거래가격에 포함했는지 확인
위 조건에 해당하지 않음정상별도 조치 불요 — 배분 대사에 그대로 반영됩니다

이 화면이 대신 정하지 않는 것

수행의무를 어떻게 식별할지, 개별판매가격을 어떤 방법으로 추정할지, 변동대가에 어느 정도 제약을 둘지는 회사의 회계정책과 계약 사실관계로 정합니다. 이 화면은 그렇게 정해진 결과가 원장·계약 데이터와 정합적으로 대사되는지만 점검하며, 최종 배분·공시 판단은 기준서 원문에 따라 회사와 감사인이 내립니다.

거래가격 확정에서 배분 대사까지 5단계 산출

단계내용
1단계변동대가를 유형별로 추정하고 제약을 적용합니다 — 반영액 = 추정액 − 제약액
2단계고정대가에 변동대가 반영액을 더해 계약의 거래가격을 확정합니다 — 거래가격 = 고정대가 + 반영액
3단계계약 안 수행의무의 개별판매가격 합계 대비 구성비를 구합니다 — 비율 = 개별판매가격 ÷ Σ개별판매가격, 비율 합계는 100%
4단계거래가격을 그 비율대로 배분합니다 — 배분액 = 거래가격 × 비율, 배분액 합계는 거래가격과 일치
5단계산정방법별 구성비(합계 100%)와 전체 대사 요약을 만들고, 차이가 있는 계약을 확인 대상으로 제시합니다

조회조건

필드필수설명
회사코드필수대상 회사코드 — 대사 요약 조회의 키로도 씁니다
회계연도필수조회 대상 회계연도
고객선택비우면 전체 — 빈 값은 조회 조건으로 보내지 않습니다
계약번호선택한 계약만 좁혀 볼 때 사용
판정 상태선택전체 · 정상 · 점검 필요 · 확인 필요

결과 컬럼

영역컬럼 · 표시
배분 대사 요약계약 건수 · 수행의무 건수 · 거래가격 합계 · 배분액 합계 · 차이 · 예외 건수
수행의무 명세계약번호 · 수행의무 · 수행의무 내용 · 고객 · 품목 · 개별판매가격 산정방법 · 개별판매가격 · 배분비율 · 배분액 · 청구액 · 인식수익 · 판정
계약별 집계계약번호 · 고객 · 수행의무 수 · 고정대가 · 변동대가 추정 · 변동대가 제약 · 거래가격 · 배분액 합계 · 차이 · 비율 합계 · 판정
개별판매가격 산정방법산정방법 · 수행의무 수 · 배분액 · 구성비 · 점검 대상 건수
변동대가변동대가 유형 · 계약 수 · 추정액 · 제약액 · 반영액
점검 예외예외번호 · 계약번호 · 수행의무 · 예외 유형 · 내용 · 차이금액 · 중요도

SAP 표준 기능 매핑

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 배분 관점의 조회·검증을 더해 확장합니다.

표준 T-code표준 기능이 화면이 더한 것
VA03판매오더 조회오더 품목을 수행의무 단위로 모아 배분 비율을 붙입니다
VA43판매계약 조회계약 단위 거래가격과 배분액 합계를 한 줄에서 대사합니다
VF03청구문서 조회청구액을 배분액과 나란히 놓아 차이를 보여줍니다
VK13가격 조건 레코드 조회개별판매가격 산정방법별 배분액 구성비로 집계합니다
FBL5N고객 개별항목 조회고객 단위로 계약을 묶어 봅니다
FAGLL03G/L 개별항목 조회인식수익을 배분액과 대사합니다

IFRS 요구사항 매핑표

기준서요구사항이 화면의 대응 기능원천 데이터비고
IFRS 15
(K-IFRS 제1115호)
거래가격을 수행의무에 개별판매가격 비율로 배분수행의무 명세의 배분비율·배분액 산출과 합계 대사VBAK · VBAP단수 조정 방식은 회사 정책에 따릅니다
IFRS 15
(K-IFRS 제1115호)
개별판매가격의 추정(관측가능 가격이 없는 경우)산정방법별 배분액 구성비와 확인 대상 건수VBAP · 가격 조건잔여접근법 적용 요건 판단은 사용자 몫입니다
IFRS 15
(K-IFRS 제1115호)
변동대가의 추정과 제약변동대가 유형별 추정액·제약액·반영액 집계VBAK · ACDOCA제약 판단 근거 자체는 화면에 담지 않습니다
IFRS 15
(K-IFRS 제1115호)
청구와 수익인식의 시차배분액 대비 청구액·인식수익 비교 컬럼VBRK · VBRP · ACDOCA계약자산·계약부채 증감표는 별도 화면이 다룹니다

참고 CDS 뷰

원천 테이블주요 필드쓰임
VBAKVBELN · KUNNR · NETWR · WAERK계약 헤더와 고객, 고정대가
VBAPVBELN · POSNR · MATNR · NETWR · ARKTX수행의무 단위 품목과 금액
VBRK / VBRPVBELN · POSNR · NETWR · FKDAT청구액
ACDOCARBUKRS · GJAHR · RACCT · HSL · KUNNR인식수익
KNA1 / MARAKUNNR · NAME1 / MATNR고객명·품목 표기
define view entity ZC_PoAllocItem
  as select from    I_SalesDocumentItem as it
    inner join      I_SalesDocument     as hd on hd.SalesDocument = it.SalesDocument
{
  key it.SalesDocument       as ContractNo,
  key it.SalesDocumentItem   as PoNo,
      hd.SoldToParty         as Kunnr,
      it.Material            as Matnr,
      it.SalesDocumentItemText as PoDesc,
      it.NetAmount           as SspAmount,
      it.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(컬럼 13개·11개·7개) — 행 클릭 시 상세 다이얼로그
요약 표sap.m.Tablesap.m.ObjectStatus로 판정 상태를 표준 ValueState 로만 표시
공통 처리CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon · lodash · moment, OData 서비스에 연결
Component.js화면 상태·조회조건 모델 초기화, 전역 오류 처리기 연결
manifest.json앱 디스크립터 — zui5.poalloc · ko 로케일, OData 서비스와 모델 선언
view/Main.view.xml조회조건 · 대사 요약 · 5개 탭
view/DetailDialog.fragment.xml상세 내역 다이얼로그
controller/Main.controller.js조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드
controller/BaseController.jsCSV 다운로드 공통 처리
model/ErrorHandler.js전역 오류 처리
model/formatter.js금액 · 비율 · 상태 표시 서식
i18n/i18n_ko.propertiesko 로케일 리소스

운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.

검증 결과

화면 구성에 쓴 검증용 샘플 데이터는 계약 8건·수행의무 22건 기준으로 거래가격과 배분액이 원(KRW) 단위로 정확히 맞물리도록 구성했습니다.

검증 항목결과
거래가격 대사(고정대가 + 변동대가 추정 − 제약, 8건)통과(차이 0)
배분액 합계 = 거래가격(8건) · 비율 합계 = 100%(8건)통과(의도적 예외 제외 차이 0)
산정방법별 구성비 합계 100% · 금액 합계 = 배분 합계통과(차이 0)
변동대가 추정액 − 제약액 = 반영액(4건)통과(차이 0)
확인 대상 건 안내배분 차이 1건 · 개별판매가격 미등록 1건 · 잔여접근법 과다 사용 1건 · 변동대가 제약 미적용 1건(의도적으로 구성한 케이스)
조회 조건 전달 — 조회조건 22건 → 4건 필터, 정렬·건수 옵션 동작확인
표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출0건
화면 렌더링 — 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세까지 실동작 후 캡처5/5
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내확인

계약·고객·품목·금액은 모두 검증용으로 구성한 가상 데이터입니다.

자주 묻는 질문

IFRS 15 는 이미 시행 중인데, 왜 지금 이 점검이 필요한가요?

IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)은 이미 시행 중인 기준서입니다. 다만 거래가격의 배분은 계약 조건이 바뀌거나 수행의무가 추가될 때마다 다시 계산해야 하는 절차라, 시행 여부와 무관하게 결산·계약 변경 시점마다 반복되는 상시 점검 대상입니다. 이 화면은 새 기준서를 도입하기 위한 것이 아니라, 시행 중인 요구사항을 기존 계약·청구·원장 데이터로 다시 맞춰 보는 용도입니다.

화면의 "점검 필요" 표시는 회계처리 오류를 뜻하나요?

아닙니다. 이 화면은 배분 결과를 집계·대사해 확인이 필요한 건을 가려내는 점검 도구이며, 최종 배분·공시 판단은 기준서 원문에 따라 회사와 감사인이 내립니다.

배분액 합계가 거래가격과 몇 원 차이 납니다. 오류인가요?

배분 비율을 소수점 넷째 자리에서 끊으면 단수차이가 남습니다. 회사가 정한 단수 조정 방식(마지막 수행의무 흡수, 최대 금액 흡수 등)이 적용됐는지 먼저 확인하는 것이 순서입니다. 화면은 차이 금액을 그대로 보여줄 뿐 임의로 조정하지 않습니다.

개별판매가격이 등록되지 않은 수행의무는 어떻게 보이나요?

배분 비율이 0으로 잡히고 판정이 확인 필요로 표시되며, 점검 예외 목록에도 별도 행으로 올라옵니다. 관측가능한 개별판매가격이 없다면 시장평가 조정 접근법·예상원가와 이윤 접근법·잔여접근법 중 어떤 방법을 쓸지 정한 뒤 다시 조회합니다.

거래가격 배분, 결산 전에 숫자로 먼저 맞춰보세요

계약마다 수행의무와 개별판매가격을 손으로 다시 모으는 대신, 화면에서 배분 비율과 배분액 합계·변동대가 반영액을 미리 확인해 두면 수익 인식과 공시 준비가 한결 가벼워집니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

IFRS 15K-IFRS 1115거래가격 배분수행의무개별판매가격변동대가OpenUI5