SAP 라이선스·로열티 수익인식 점검 — IFRS 15, 파는 것이 접근권인지 사용권인지부터 가른다
라이선스가 접근권인지 사용권인지 먼저 가르고, 사용료 기준 로열티는 실제 사용·매출이 난 만큼만 인식했는지 계약·매출 데이터로 확인해 둡니다
IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)은 지적재산 라이선스를 부여하는 계약에 대해, 그 라이선스가 고객에게 "접근권"을 주는지 "사용권"을 주는지부터 가르도록 합니다. 접근권은 라이선스 기간에 걸쳐 수익을 배분 인식하고, 사용권은 부여 시점에 한 번에 인식합니다. 여기에 더해 사용료(매출·사용량 기준) 로열티가 있는 계약은, 실제 사용·매출이 발생하기 전까지는 그만큼의 수익을 앞당겨 인식할 수 없다는 별도 제약이 붙습니다.
이 두 가지 판단을 계약 등록 시 한 번만 하고 그 뒤로는 건드리지 않는 경우가 많아, 최소보증액이 있는 계약에서 사용료가 최소보증에 못 미치는 기간에 인식액을 과다 계상하거나, 판정과 실제 원장 처리가 어긋난 채 넘어가는 사례가 나옵니다. 표준 수주·빌링 구조를 그대로 이어받아 계약마다 판정과 사용료 대사를 나란히 계산하는 과정을 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 계약 — 수주(
VBAK/VBAP)의 라이선스 조건(기간·통화·고정대가)을 그대로 사용 - 사용실적 — 빌링(
VBRK/VBRP)의 기간별 청구 금액을 그대로 사용 - 표준 화면 — 수주 조회(VA03) · 빌링 문서 조회(VF03) · 수익회계 계약 조회(FARR_CONTRACT_DISP)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 수익인식 |
| 관련 기준서 | IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) — 라이선스: 접근권 대 사용권 판정, 사용료 기준 로열티의 제약 |
| Namespace | zui5.licrev |
| 셸 구조 | 조회조건 영역(우측 조회) + 대사 요약 + 라이선스 명세·사용료 대사·인식방법별 요약 3개 탭, 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 |
| SAP 표준 T-code | VA03 · VF03 · FARR_CONTRACT_DISP · FARR_RAI_MON |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 라이선스 계약 등록·수익 전표 기표는 화면 밖 프로세스 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
조회조건을 두고 조회하면 대사 요약과 라이선스 명세가 한 화면에 뜹니다 → 사용료 대사 탭에서 기간별 계산 로열티·최소보증 배분액·원장 인식액을 나란히 보고 → 행을 클릭해 상세 다이얼로그에서 재계산까지 해 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 거래처명·IP 유형·인식방법(판정)·점검결과·사용료기준 계약을 지정합니다. 비워 두거나 "전체"를 고르면 그 조건은 걸리지 않습니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 거래처명 입력 후 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 대사 요약에서 전체 계약 건수와 총 인식수익을 먼저 확인합니다.
- 탭을 옮겨 가며 라이선스 명세 → 사용료 대사 → 인식방법별 요약 순으로 살펴봅니다.
- 행을 누르면 계약 상세와 기간별 사용료 실적이 다이얼로그로 열리고, [요율 재계산]으로 즉시 재계산해 원장 인식액과 비교할 수 있습니다.
접근권 vs 사용권 — 판정 규칙
IP 유형과 라이선스 기간 중 기업 활동이 그 IP 에 미치는 영향을 근거로 후보를 가르고, 사용료기준 계약에는 별도 제약을 더합니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 상징적(Symbolic) IP + 라이선스 기간 동안 기업의 지속적 활동이 IP 에 유의적으로 영향 | 접근권(기간 배분) | 계약기간에 걸쳐 배분 인식되는지 확인 |
| 기능적(Functional) IP + 부여 시점에 그 자체로 상당한 독립 기능 | 사용권(시점 인식) | 부여 시점 인식과 사용료 제약 적용 여부를 확인 |
| 사용료기준(매출·사용량 기준) 로열티 계약 | 사용료 제약 적용 대상 | 실제 사용·매출이 난 기간에만 인식됐는지 대사 |
| 판정방법과 원장기록방법이 다름 | 점검 필요 | 계약 조건을 재검토해 분류를 확정하거나 원장 처리를 정정 |
| 판정방법과 원장기록방법이 같음 | 정상 | 추가 조치 없음 |
이 화면이 대신 정하지 않는 것
판정 결과는 확인 대상을 알리는 표시이며, 기준서 충족 여부를 단정하지 않습니다. 계약서의 세부 조건, 지적재산의 실질, 사용료 산정 방식은 계약마다 다르므로 최종 분류 판단은 회사와 감사인이 합니다.
사용료 대사 4단계 산출
| 단계 | 내용 |
|---|---|
| 1단계 | 기간 사용실적금액을 집계한다. |
| 2단계 | 계산 로열티를 구한다 — 계산 로열티 = 사용실적금액 × 로열티요율 |
| 3단계 | 최소보증 배분액과 비교한다 — 적용액 = max(계산 로열티, 최소보증 배분액) |
| 4단계 | 원장과 대사한다 — 차이 = 원장 인식액 − 적용액 |
조회조건
| 필드 | 설명 |
|---|---|
| 거래처명 | 거래처명에 포함된 문자열로 검색(부분일치) |
| IP 유형 | 상징적(Symbolic) / 기능적(Functional) / 전체 |
| 인식방법(판정) | 접근권(기간 배분) / 사용권(시점 인식) / 전체 |
| 점검결과 | 정상 / 점검 필요 / 전체 |
| 사용료기준 계약 | 예 / 아니오 / 전체 |
결과 컬럼
| 영역 | 컬럼 · 표시 |
|---|---|
| 라이선스 명세 | 계약번호 · 거래처명 · IP 유형 · 인식방법(판정) · 원장기록방법 · 점검결과 · 고정대가 · 요율(%) · 계약시작일 · 계약종료일 · 통화 |
| 사용료 대사 | 계약번호 · 기간 · 사용실적금액 · 요율(%) · 계산 로열티 · 최소보증 배분액 · 적용액 · 원장 인식액 · 차이여부 |
| 인식방법별 요약 | 인식방법 · 계약건수 · 고정대가 합계 · 로열티 인식 합계 · 총 인식수익 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 라이선스 수익인식 판정·사용료 대사 관점의 조회·검증을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
VA03 | 수주 조회 | 라이선스 계약 조건(기간·통화·고정대가)을 가져옵니다 |
VF03 | 빌링 문서 조회 | 기간별 사용실적금액을 집계합니다 |
FARR_CONTRACT_DISP | 수익회계 계약 조회 | 계약의 수익인식 조건을 참고합니다 |
FARR_RAI_MON | 수익회계 인터페이스 항목 모니터 | 원장에 반영된 인식액을 대사합니다 |
IFRS 요구사항 매핑표
| 기준서 | 요구사항 | 이 화면의 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IFRS 15 (K-IFRS 제1115호) | 라이선스 — 접근권 대 사용권 판단 | 인식방법 판정 로직, 라이선스 명세 | VBAK · VBAP | 화면은 판단을 보조하는 점검 도구이며 최종 판단은 회사와 감사인이 합니다 |
| IFRS 15 (K-IFRS 제1115호) | 사용료 기준 로열티의 제약(사용·매출 발생 시 인식) | 사용료 대사, 계산 로열티·최소보증 배분액·적용액 대사 | VBRK · VBRP | - |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
VBAK / VBAP | VBELN · KUNNR · NETWR | 라이선스 계약 헤더/조건 |
VBRK / VBRP | VBELN · NETWR · FKDAT | 기간별 사용실적금액 |
KNA1 | KUNNR · NAME1 | 거래처 표기 |
define view entity ZC_LicenseRoyaltyRecon
as select from I_SalesContract as sc
inner join I_BillingDocumentItem as bi on bi.SalesDocument = sc.SalesContract
{
key sc.SalesContract as ContractId,
sc.SoldToParty as CustomerCode,
sum(bi.NetAmount) as UsageAmt,
sc.Currency as Waers
}
group by sc.SalesContract, sc.SoldToParty, sc.Currency
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · 대사 요약 패널 · sap.m.IconTabBar 3개 탭 |
| 데이터 연동 | manifest.json 의 OData V2 서비스 선언(상대 경로) — 화면 블록마다 엔티티셋에 직접 바인딩합니다 |
| 조회조건 | sap.m.Input · sap.m.Select — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조회조건을 조립합니다. "전체"를 고른 조건은 필터를 만들지 않습니다 |
| 명세·대사 표 | sap.ui.table.Table — 행 클릭 시 상세 다이얼로그 |
| 요약 표 | sap.m.Table — sap.m.ObjectStatus 로 점검결과를 표준 ValueState 로만 표시 |
| 공통 처리 | 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패를 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결 |
Component.js | 화면 상태 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.licrev · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 대사 요약 · 3개 탭 |
view/DetailDialog.fragment.xml | 계약 상세 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · 재계산 호출 |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 금액 · 상태 표시 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 34건의 라이선스 계약과 138건의 기간별 사용료 실적을 기준으로 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 인식방법 분류 = 접근권 + 사용권 = 전체 계약 건수 | 통과(차이 0) |
| 계산 로열티 = 사용실적금액 × 요율 | 통과(차이 0) |
| 적용액 = max(계산 로열티, 최소보증 배분액) | 통과(차이 0) |
| 원장 인식액 = 적용액 | 통과(의도적 예외 제외 차이 0) |
| 인식방법별 요약 = 명세 재계산 | 통과(차이 0) |
| 판정↔원장 불일치 건 안내 | 34건 중 5건(의도적으로 구성한 점검 대상) |
| 사용료 대사 차이 건 안내 | 138건 중 3건(의도적으로 구성한 점검 대상, 나머지는 계산과 100% 일치) |
| 조회 조건 전달 — 접근권만 필터·정렬·상위 3건·총건수 확인 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세 → 재계산까지 실동작 후 캡처 | 3/3 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면의 판정이 곧 접근권·사용권을 확정하나요?
아닙니다. 이 화면은 IP 유형과 지속적 활동 영향 등 조건으로 후보를 가려내는 조회·점검 도구이며, 계약 조건 전체를 검토한 최종 분류 판단은 회사와 감사인이 합니다.
적용 시기와 범위는 어떻게 되나요?
IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)은 이미 시행 중인 기준서이며, 라이선스를 부여하는 모든 계약에 적용됩니다. 개별 계약의 적용 시기·경과조치는 계약 체결일과 전환 규정을 원문으로 확인해야 합니다.
최소보증액이 있으면 로열티를 어떻게 계산하나요?
기간별 계산 로열티(사용실적×요율)와 계약기간 균등 배분한 최소보증 배분액을 비교해 큰 값을 적용액으로 봅니다. 원장 인식액과 이 적용액을 대조해 차이 여부를 표시합니다.
[점검 필요]로 표시된 계약은 오류인가요?
아닙니다. 판정방법과 원장기록방법이 다르거나 사용료 대사에 차이가 있어 재검토가 필요하다는 뜻이며, 기준서 위반이나 오류를 단정하지 않습니다. 사유 확인과 최종 판단은 회사와 감사인의 몫입니다.