솔루션 홈
IFRS 15

SAP 본인·대리인 수익 표시 점검 — IFRS 15, 먼저 통제했는가가 수익 규모를 가른다

위탁판매·직배송·오픈마켓처럼 다른 공급자가 끼는 거래에서 본인은 총액, 대리인은 순수수료로 수익을 표시했는지 청구·구매·원장 데이터로 먼저 확인해 둡니다

같은 물건을 팔아도 회사가 그 물건을 먼저 통제했다면 판매 금액 전체가 수익이고, 다른 공급자가 파는 것을 연결만 해 줬다면 받은 수수료만 수익입니다. IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호)은 재화나 용역이 고객에게 넘어가기 전에 회사가 그것을 통제하는지로 본인과 대리인을 가르고, 재고위험·가격결정 재량·이행 1차 책임을 판단을 돕는 지표로 제시합니다.

판단에 따라 수익이 몇 배씩 달라지지만 매출총이익은 같아야 합니다. 표준 청구·구매·송장·원장 구조를 그대로 이어받아 거래마다 판단에 맞는 기준 수익을 계산해 장부와 나란히 놓고, 총액·순액 오표시와 판단 근거가 약한 건을 가려내는 과정을 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 6종을 함께 공개합니다.

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

  • 청구 — 청구 문서(VBRK/VBRP)의 고객 청구 금액을 그대로 사용
  • 구매 — 구매오더(EKKO/EKPO)와 송장(RBKP)의 공급자 조건·지급액을 그대로 사용
  • 표준 화면 — 청구 조회(VF03) · 구매오더 조회(ME23N) · 송장 조회(MIR4) · 수익성 보고서(KE30)
항목내용
업무 영역재무회계(FI) · 수익 인식
관련 기준서IFRS 15 고객과의 계약에서 생기는 수익(K-IFRS 제1115호) — 본인 대 대리인 고려사항: 재화·용역이 고객에게 이전되기 전 통제 여부 판단, 본인은 총액·대리인은 보수(수수료) 순액으로 수익 인식
Namespacezui5.prinagt
셸 구조조회조건 영역(우측 조회) + 수익 표시 대사 요약 + 거래 명세·거래 유형별·판단 결과별·판매월별·점검 예외 5개 탭, 상세 Dialog
화면 수조회 화면 1개 + 상세 다이얼로그
SAP 표준 T-codeVF03 · ME23N · MIR4 · KE30 · FAGLL03(§7 참고)
데이터 연동 방식OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩
성격조회·대사·점검형 — 수익 재분류 전표 기표는 화면 밖 프로세스
UI 테마sap_horizon 단일 적용

실제 화면 6종 둘러보기

회사코드·회계연도를 넣고 조회하면 수익 표시 대사 요약과 거래 명세가 한 화면에 뜹니다 → 탭을 옮겨 거래 유형별·판단 결과별·판매월별 집계를 보고 → 점검 예외에서 확인이 필요한 건만 추려 봅니다.

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

Main.view.xml
거래 명세 화면 — 조회조건과 수익 표시 대사 요약
메인화면 — 2026 회계연도 전체 조회 결과. 12건의 거래에 대해 판단 지표와 본인·대리인 판단, 기준·장부 수익과 매출총이익이 한 화면에 뜹니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
조회조건 — Enter 키 조회
판매월 조건으로 좁힌 조회 결과
조건 조회 — 판매월을 입력하고 Enter 키만 눌러도 즉시 재조회됩니다. 대리인 판단 위탁판매를 총액으로 잡은 건이 바로 드러납니다.
거래 유형별 집계
거래 유형별 집계
거래 유형별 집계 — 오픈마켓은 총거래액이 커도 수익은 수수료만 잡히므로, 기준 수익이 총거래액보다 훨씬 작습니다.
판단 결과별 집계
판단 결과별 집계
판단 결과별 집계 — 판단이 같아도 장부 수익이 기준과 어긋나는 쪽을 한 줄로 찾습니다.
점검 예외
점검 예외 목록
점검 예외 — 확인이 필요한 건만 유형별로 모아 보여줍니다.
상세 내역
상세 내역 다이얼로그
상세 내역 — 행을 클릭하면 판단 지표와 지지 지표 수, 기준·장부 수익·매출원가·매출총이익이 항목별로 펼쳐집니다.

사용 방법

  1. 회사코드와 회계연도를 넣습니다. 거래 유형·판매월·판정 상태는 비워 두면 전체가 조회됩니다.
  2. 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
  3. 수익 표시 대사 요약에서 기준·장부 수익과 매출총이익, 수익 차이를 먼저 확인합니다.
  4. 탭을 옮겨 가며 거래 명세 → 거래 유형별 → 판단 결과별 → 판매월별 → 점검 예외 순으로 좁혀 봅니다.
  5. 행을 누르면 판단 지표와 지지 지표 수, 기준·장부 수익·매출원가·매출총이익이 상세 다이얼로그로 열립니다.
  6. 거래 명세와 점검 예외 탭에서는 CSV 내려받기(UTF-8 BOM)로 결과를 저장할 수 있습니다.

먼저 통제했는가 — 본인·대리인 표시 규칙

판단의 기준은 통제입니다. 판단 결과에 따라 수익을 총액 또는 순액으로 표시하고, 어느 쪽이든 매출총이익은 같아야 합니다.

판정 조건결과 상태사용자 조치
고객에게 넘기기 전 회사가 통제(본인)총액총거래액을 수익으로, 공급자 지급액을 매출원가로 인식합니다.
다른 당사자가 제공하도록 주선만 함(대리인)순액총거래액에서 공급자 지급액을 뺀 수수료만 수익으로 인식합니다.
대리인인데 총액으로 수익 인식점검 필요수익이 공급자 지급액만큼 부풀려졌는지 확인합니다.
본인인데 순액으로 수익 인식점검 필요수익이 공급자 지급액만큼 줄었는지 확인합니다.
장부 매출총이익 ≠ 총거래액 − 공급자 지급액점검 필요수수료 계산이나 전표를 확인합니다.
판단을 뒷받침하는 지표가 1개 이하확인 필요통제 판단 근거를 다시 확인합니다.

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

판정 결과는 확인 대상을 알리는 표시이며, 기준서 충족 여부를 단정하지 않습니다. 재고위험·가격결정권·이행 1차 책임은 통제 판단을 돕는 지표일 뿐, 개수로 결론이 정해지지 않습니다. 화면의 '지표 1개 이하' 기준은 판단을 다시 볼 대상을 고르는 참고값입니다. 최종 판단은 기준서 원문에 따라 회사와 감사인이 합니다.

통제 판단에서 표시 대사까지 5단계 산출

단계내용
1단계거래마다 특정 재화·용역을 식별한다 — 고객에게 제공하는 대상은 무엇인가
2단계통제 여부를 지표로 판단한다 — 재고위험 · 가격결정권 · 이행 1차 책임
3단계판단 결과에 맞는 기준 수익을 정한다 — 본인 = 총거래액 / 대리인 = 총거래액 − 공급자 지급액
4단계기준 매출원가와 매출총이익을 정한다 — 매출총이익 = 총거래액 − 공급자 지급액 (표시 방식 무관)
5단계장부와 대사한다 — 차이 = 장부 − 기준 (수익 · 매출원가 · 매출총이익)

조회조건

필드필수설명
회사코드필수대사 요약 단건 조회의 키로도 씁니다.
회계연도필수대사 요약 단건 조회의 키로도 씁니다.
거래 유형선택전체 / 위탁판매 / 직배송 판매 / 오픈마켓 중개 / 자체 기획상품
판매월선택YYYY-MM 형식으로 한 달만 좁혀 봅니다.
판정 상태선택전체 / 정상 / 점검 필요 / 확인 필요

결과 컬럼

영역컬럼 · 표시
수익 표시 대사 요약거래 건수 · 대리인 판단 건수 · 총거래액 합계 · 기준/장부 수익 · 기준/장부 매출총이익 · 수익 차이 · 예외 건수
거래 명세거래번호 · 판매월 · 거래 유형 · 공급자 · 판단 지표 · 판단 · 총거래액 · 기준/장부 수익 · 기준/장부 매출총이익 · 판정
거래 유형별 · 판단 결과별 · 판매월별 집계구분 · 건수 · 총거래액 · 기준/장부 수익 · 기준/장부 매출총이익
점검 예외예외번호 · 판매월 · 예외 유형 · 내용 · 차이 · 중요도

SAP 표준 기능 매핑

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

표준 T-code표준 기능이 화면이 더한 것
VF03청구 문서 조회고객에게 청구한 총거래액을 가져옵니다
ME23N구매오더 조회공급자와의 계약 조건(재고위험·가격 결정)을 확인합니다
MIR4송장 문서 조회공급자 지급액을 대사합니다
KE30수익성 보고서거래 유형별 수익과 매출총이익을 집계합니다
FAGLL03G/L 개별항목 조회수익·매출원가·수수료 수익 계정 금액을 대사합니다

IFRS 요구사항 매핑표

기준서요구사항이 화면의 대응 기능원천 데이터비고
IFRS 15
(K-IFRS 제1115호)
재화·용역이 고객에게 이전되기 전 통제하면 본인판단 결과 표시와 총액 기준 수익 산출VBRK · EKKO통제 판단은 사용자 몫입니다.
IFRS 15
(K-IFRS 제1115호)
대리인은 기대하는 보수·수수료 금액을 수익으로 인식순수수료 기준 수익 산출과 총액 인식 검출VBRP · RBKP수수료 산정 방식은 계약에 따릅니다.
IFRS 15
(K-IFRS 제1115호)
통제 판단 지표 — 이행 1차 책임·재고위험·가격결정 재량지표 표시와 판단 지지 지표 수 산출EKKO · EKPO지표는 판단을 돕는 참고이며 결론을 정하지 않습니다.
IFRS 15
(K-IFRS 제1115호)
특정 재화·용역별로 판단거래 유형별 집계VBRP한 계약 안에서도 대상별로 판단이 다를 수 있습니다.

참고 CDS 뷰

원천 테이블주요 필드쓰임
VBRK / VBRPVBELN · FKDAT · MATNR · NETWR고객 청구 금액
EKKO / EKPOEBELN · LIFNR · BSART · NETPR공급자 계약 조건
RBKP / RSEGBELNR · LIFNR · RMWWR공급자 송장 금액
ACDOCARBUKRS · GJAHR · RACCT · HSL수익·매출원가·수수료 수익 전표
LFA1LIFNR · NAME1공급자 표기
define view entity ZC_PrincipalAgentItem
  as select from    I_BillingDocumentItem as bi
    inner join      ZI_DealAssessment     as da on da.Product = bi.Product
{
  key bi.BillingDocument       as PaId,
      da.DealType              as DealType,
      da.InventoryRisk         as InvRisk,
      da.PricingDiscretion     as PriceCtrl,
      da.PrimaryResponsibility as PrimResp,
      da.JudgedRole            as JudgedRole,
      bi.NetAmount             as GrossAmt,
      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.Tablesap.m.ObjectStatus로 판정 상태를 표준 ValueState 로만 표시
공통 처리CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon · lodash · moment, OData 서비스에 연결
Component.js화면 상태·조회조건 모델 초기화, 전역 오류 처리기 연결
manifest.json앱 디스크립터 — zui5.prinagt · 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 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.

검증 결과

화면 구성에 쓴 검증용 샘플 데이터는 12건의 거래를 기준으로 수익·매출원가·매출총이익이 원(KRW) 단위로 맞물리도록 구성했습니다.

검증 항목결과
본인: 수익 = 총거래액 · 매출원가 = 공급자 지급액통과(차이 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호)은 이미 시행 중인 기준서입니다. 이 화면은 다른 공급자가 관여하는 판매, 곧 위탁판매·직배송·오픈마켓 중개처럼 본인·대리인 판단이 필요한 거래를 다룹니다. 새 거래 구조가 생기거나 계약 조건이 바뀔 때마다 판단을 다시 볼 대상입니다.

재고위험·가격결정권·1차 책임 중 몇 개가 있어야 본인인가요?

개수로 정해지지 않습니다. 세 가지는 회사가 재화나 용역을 고객에게 넘기기 전에 통제하는지 판단을 돕는 지표일 뿐이고, 지표마다 무게도 거래에 따라 다릅니다. 화면은 판단을 뒷받침하는 지표가 1개 이하인 건을 다시 볼 대상으로 알려 줄 뿐입니다.

총액이냐 순액이냐가 이익에도 영향을 주나요?

매출총이익은 달라지지 않습니다. 본인이면 수익과 매출원가가 모두 크게, 대리인이면 둘 다 작게 표시될 뿐 차이는 같습니다. 다만 수익 규모와 매출총이익률이 크게 달라져 재무제표를 보는 사람의 판단에 영향을 주므로 표시가 중요합니다.

수익 규모, 결산 전에 판단부터 맞춰보세요

거래마다 총액인지 순액인지 손으로 다시 가르는 대신, 화면에서 판단에 맞는 기준 수익을 장부와 미리 대사해 두면 결산과 공시 준비가 한결 가벼워집니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

IFRS 15K-IFRS 1115본인 대 대리인총액·순액위탁판매오픈마켓OpenUI5