재무회계(FI)

SAP 계약서비스마진 인식 시기 구간별 점검 — IFRS 17, 기말 CSM을 잔여 보장단위 비중으로 기간 구간에 나눠 당기손익 인식 예상 시기를 다시 계산하고 공시 초안과 대조한다

구간별 인식 예상 · 집단별 구간 배분 · 집단·구간 명세 · 정합성 대사를 한 화면에서 점검합니다

개발 배경

이 앱을 사용해야 하는 이유

보험계약 공시에서 가장 손이 많이 가는 표 가운데 하나가 "남은 계약서비스마진이 언제 당기손익으로 인식될 것으로 예상되는가"를 기간 구간별로 보여 주는 표입니다. 기말 CSM 한 숫자를 앞으로의 보장 제공 속도에 맞춰 1년 이내, 1~2년, … 10년 초과로 쪼개야 하는데, 이때 쓰는 기준이 구간별 잔여 보장단위입니다. 보장단위는 계리 모델에서 나오고, 구간 금액은 회계 담당이 엑셀로 안분하고, 완성된 초안은 주석 양식에 옮겨 적습니다. 이 과정에서 구간 경계를 한 칸 잘못 적용하거나, 인접 구간 사이에서 금액이 옮겨 가도 합계는 그대로라 눈에 잘 띄지 않습니다.

SAP 표준 화면으로는 FAGLL03 에서 부채 계정의 개별 항목을, FAGLB03 에서 잔액을 볼 수 있지만, 남은 CSM이 언제 인식될지는 보이지 않습니다. 이 앱은 집단별 기말 CSM을 구간별 보장단위 비중으로 다시 나누고, 그 결과를 공시 초안의 구간별 금액과 맞춥니다. 검증용 샘플 데이터(포트폴리오 5개, 집단 13개, 구간 7개, 명세 91건)에서는 공시 초안 1년 이내 금액이 다시 계산한 값과 +12.3 백만원 다른 집단, 보장단위 합계가 맞지 않는 집단이 바로 걸러졌습니다.

관련 기준서는 IFRS 17 보험계약(K-IFRS 제1117호)입니다. 이 기준서는 보고기간 말 남은 계약서비스마진을 당기손익으로 인식할 것으로 예상하는 시기를 적절한 기간 구간별로 공시하도록 요구하고, 계약서비스마진은 보장단위에 따라 당기손익으로 인식하도록 합니다. 주로 결산 담당 회계 인력과 계리 인력이 분기·연말 공시 초안을 닫기 전에 씁니다.

앱 정보

항목내용
업무영역재무회계(FI) · 보험계약 부채 공시
관련 기준서IFRS 17 보험계약(K-IFRS 제1117호) — 계약서비스마진의 당기손익 인식 예상 시기 공시
Namespacezui5.csmband
화면조회 화면 1개(탭 4개) + 집단 상세 창 1개 (실행 화면 5종)
SAP 표준 T-codeFAGLL03 · FAGLB03
데이터 연동OData V2 서비스(검증용 샘플 데이터로 확인)
성격조회·점검 전용 — 원장에 쓰지 않음
테마sap_horizon

SAP 표준 기능을 그대로 이어받은 부분
원장 금액의 조회와 전표 추적은 SAP 표준 T-code 가 계속 담당합니다. 이 화면은 표준 데이터 구조(계정·회사코드·기간)를 그대로 이어받고, 그 위에 구간별 인식 예상 시기를 다시 계산하는 점검 관점을 더해 확장합니다.

핵심 판정 로직

판정 조건결과 상태사용자 조치
집단의 공시 초안 1년 이내 인식액과 재계산 1년 이내 인식액의 차이 절대값이 0.1 백만원 이상점검 필요초안에 쓴 보장단위 기준일과 구간 경계(1년) 적용 확인
집단의 총 잔여 보장단위(장부)와 구간별 보장단위 합계가 다름점검 필요보장단위 산정 갱신 시점과 구간 배분 누락 확인
포트폴리오·구간 또는 집단·구간에서 공시 초안 − 재계산 인식액이 0 이 아님점검 필요인접 구간 사이에서 금액이 옮겨졌는지 확인
위 조건에 해당하지 않음정상-

허용 기준은 샘플 기준이며 회사 정책에 맞게 바꿉니다. 판정 결과는 "점검 필요"로만 표시하고 원인을 단정하지 않습니다.

처리 단계

  1. 구간 비중(%) = 구간 잔여 보장단위 ÷ 집단 구간 보장단위 합계 × 100 (반올림 잔차는 가장 큰 구간에 반영해 합계 100%)
  2. 구간 인식 예상액 = 기말 CSM × 구간 비중 (잔차는 보장단위가 가장 큰 구간에 반영해 합계가 기말 CSM과 일치)
  3. 누적 인식액 = 해당 구간까지 인식 예상액의 합, 가중평균 인식시기 = Σ(구간 중간 시점 × 구간 비중)
  4. 공시 초안 − 재계산 차이를 집단·구간, 포트폴리오·구간, 집단 1년 이내 세 층에서 계산
  5. 6개 대사식으로 위 계산의 일관성 검산

실행 화면

실제로 렌더링한 화면 5종을 사용 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있습니다. 숫자는 모두 가상의 검증용 샘플 데이터(단위 백만원)입니다.

처음 열었을 때 — 조회조건과 요약 지표

처음 열었을 때 — 조회조건과 요약 지표
처음 열었을 때 — 조회조건과 요약 지표 — 조회조건 영역 오른쪽 끝에 조회·초기화 버튼이 있고 그 아래에 요약 지표 7개가 한 줄로 놓입니다.

화면을 열면 2026년·2026-09 기간으로 자동 조회하므로 처음부터 숫자가 채워져 있습니다. 가장 먼저 볼 곳은 "초안-재계산 차이 순합계"와 세 개의 "점검 필요·대사 차이 건수"입니다.

샘플에서는 집단 13개의 기말 CSM 합계가 32,100.8 백만원이고, 1년 이내 인식 비중은 16.4261%입니다. 공시 초안과 재계산의 차이 순합계는 +12.3, 집단 점검 필요 2건, 구간 점검 필요 2건, 대사 차이 2건이 잡힙니다. 대사 차이 2건은 의도적으로 넣은 점검 대상(보장단위 합계 불일치 1건, 초안 1년 이내 불일치 1건)이며 화면 계산이 틀렸다는 뜻이 아닙니다.

집단별 구간 배분

집단별 구간 배분
집단별 구간 배분 — 집단마다 기초 CSM에서 신규·이자 부리·추정 변동·당기 인식을 거쳐 기말 CSM에 이르는 과정을 한 줄에 보여줍니다.

기말 CSM = 기초 + 신규 계약 + 이자 부리 ± 추정 변동 − 당기 인식 으로 이어지고, 그 오른쪽에 총 잔여 보장단위와 구간 보장단위 합계, 1년 이내 재계산·공시 초안 금액이 놓입니다. 행을 누르면 집단 상세 창이 열립니다.

이 표에서는 두 가지를 먼저 봅니다. 증감 대사가 맞는지, 그리고 총 잔여 보장단위와 구간 보장단위 합계가 같은지입니다. 둘 중 하나라도 어긋나면 구간 배분의 출발점부터 틀린 것이므로 뒤의 구간 금액을 읽기 전에 원인을 찾아야 합니다.

집단·구간 명세

집단·구간 명세
집단·구간 명세 — 집단과 구간의 조합마다 잔여 보장단위, 구간 비중, 재계산 인식액, 공시 초안 인식액과 그 차이, 누적 인식액을 보여줍니다.

구간 합계로는 보이지 않는 "어느 집단의 어느 구간에서" 차이가 났는지를 여기서 확인합니다. 인접한 두 구간에 같은 크기의 반대 부호 차이가 있으면 구간 경계를 달리 적용해 금액이 옮겨진 흔적입니다.

샘플의 PF02 집단에서는 1구간에 +12.3, 2구간에 -12.3 이 나란히 나타나 합계는 변하지 않고 1년 이내 금액만 커진 모양을 보입니다. 이 패턴은 구간 합계만 맞추는 엑셀 대조로는 놓치기 쉽습니다.

정합성 대사

정합성 대사
정합성 대사 — 화면 계산이 서로 맞는지 6개 대사식의 좌변·우변·검사 건수·차이 건수·최대 차이로 확인합니다.

구간 보장단위 합계, 구간 인식액 합계, 구간 비중 합계, 공시 초안 1년 이내, 기말 CSM 증감, 집계 합계를 대사식으로 맞춥니다. 2026-09 기준 R001(보장단위)과 R004(초안 1년 이내)에서 각 1건의 차이가 보이고 나머지는 모두 0입니다.

이 두 건은 의도적으로 넣은 점검 대상입니다. 대사식이 차이를 보이는 이유(원천 보장단위 불일치, 초안 금액 이동)가 위 화면들의 점검 필요 항목과 같은 집단에서 나오는지 확인하면 점검 흐름이 닫힙니다.

집단 상세

집단 상세
집단 상세 — 행을 눌러 집단의 CSM 증감과 구간별 보장단위·인식 예상액을 한 창에서 봅니다.

위쪽에 집단 정보와 기초에서 기말까지의 CSM 증감, 1년 이내 재계산과 공시 초안 금액, 점검 결과가 놓이고, 아래 표에 7개 구간의 보장단위와 인식 예상액이 이어집니다.

샘플의 PF02-2022-N 집단은 1년 이내 재계산이 236.0 인데 공시 초안은 248.3 으로 +12.3 높고, 2구간은 반대로 -12.3 낮습니다. 누적 인식액이 2구간부터는 다시 맞아 들어가므로 금액이 한 구간 앞으로 당겨 적힌 것이라는 점까지 한 창에서 구분됩니다.

사용 방법

  1. 조회조건을 입력합니다. 회계연도는 필수(4자리)이고 기간·포트폴리오·인식 구간·기준일·점검 결과는 선택입니다.
  2. 조회 버튼은 조회조건 영역의 맨 오른쪽에 있습니다. 입력 칸에서 Enter 키를 눌러도 조회됩니다.
  3. 요약 지표에서 초안-재계산 차이 순합계와 점검 필요 건수를 확인합니다.
  4. 탭을 구간별 인식 예상 → 집단별 구간 배분 → 집단·구간 명세 → 정합성 대사 순서로 옮겨 갑니다.
  5. 집단·명세 탭의 행을 누르면 집단 상세 창이 열립니다.
  6. CSV 내려받기로 현재 탭의 조회 결과를 UTF-8 파일로 저장합니다.

조회조건

조건필수기본값설명
회계연도필수20264자리 숫자
기간선택2026-09전체·2026-08·2026-09
포트폴리오선택전체구간 집계·집단·명세에 적용
인식 구간선택전체1년 이내 ~ 10년 초과 7개 구간
기준일 시작/종료선택비움평가 기준일 범위
점검 결과선택전체정상 · 점검 필요

결과 컬럼

컬럼의미산출식
구간 비중(%)집단 보장단위 중 해당 구간의 몫구간 보장단위 ÷ Σ 구간 보장단위 × 100
재계산 인식액기말 CSM 중 해당 구간에 인식될 예상액기말 CSM × 구간 비중
공시 초안 인식액주석 초안에 적은 구간별 금액원천 값
초안-재계산 차이초안과 재계산의 차이공시 초안 − 재계산
누적 인식액해당 구간까지의 합Σ 재계산 인식액 (구간 번호 이하)
가중평균 인식시기(년)CSM이 인식되는 평균 시점Σ(구간 중간 시점 × 구간 비중 ÷ 100)

SAP 표준 기능 확장 포인트

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다. 표준 화면에서 이 화면으로, 이 화면에서 표준 화면으로 오가는 길은 아래와 같습니다.

표준 T-code표준 화면이 담당하는 일이 앱이 이어받는 데이터이 앱이 더하는 관점오가는 방법
FAGLL03G/L 계정 개별 항목 조회원장 전표 라인(계정·회사코드·기간·금액)그 금액이 앞으로 언제 인식될 것으로 예상되는지의 구간 배분집단별 구간 배분에서 점검 필요가 나온 집단의 부채 계정을 FAGLL03 으로 열어 개별 항목 확인
FAGLB03G/L 계정 잔액 조회계정별 기간 잔액집단별 기말 CSM 합계와 잔액을 맞춰 볼 출발점집단별 기말 CSM 합계를 FAGLB03 의 잔액과 대조하고 차이 금액을 이 화면의 증감 대사와 비교

요구사항 매핑

기준서요구사항대응 기능원천 데이터비고
IFRS 17 보험계약(K-IFRS 제1117호)보고기간 말 남은 계약서비스마진을 당기손익으로 인식할 것으로 예상하는 시기를 적절한 기간 구간별로 공시구간별 인식 예상 · 집단·구간 명세집단별 기말 CSM, 구간별 잔여 보장단위구간 폭과 공시 양식은 회사별로 확인 필요
IFRS 17 보험계약(K-IFRS 제1117호)계약서비스마진은 그 기간에 제공한 보험계약서비스를 반영하도록 보장단위에 따라 당기손익으로 인식구간 비중 산정(보장단위 비중 안분)구간별 잔여 보장단위보장단위 산정 방식은 회사 정책에 따르며 확인 필요
IFRS 17 보험계약(K-IFRS 제1117호)계약서비스마진의 기초에서 기말까지 변동 조정표 공시집단별 구간 배분(기말 CSM 증감 대사)기초·신규·이자 부리·추정 변동·당기 인식공시 형식은 확인 필요

CDS 구성

화면이 바라보는 서비스는 CDS 뷰 위에 게시하는 것을 전제로 만들었습니다. 아래는 계층별 코드 스케치이며, 뷰 이름은 기능을 뜻하는 영문으로 지었습니다. 보장단위와 CSM의 원천은 회사의 계리 시스템에 따라 달라 확인이 필요하고, 표준 CDS 뷰의 필드 이름은 릴리스에 따라 다를 수 있어 적용 전 확인이 필요합니다.

원천 테이블

원천용도비고
ACDOCA (표준 CDS: I_JournalEntryItem)보험계약 부채 계정의 원장 금액 — 기말 CSM 합계와 맞춰 볼 대조 대상표준
SKA1 · SKAT (표준 CDS: I_GLAccountInChartOfAccounts)G/L 계정 마스터와 텍스트표준
CSM 평가 결과 · 구간별 보장단위집단별 기말 CSM, 구간별 잔여 보장단위계리 시스템 결과 — 원천 확인 필요

필드 매핑

화면 프로퍼티원천 / 산출식
CovUnit구간별 잔여 보장단위(계리 평가 결과)
UnitRateCovUnit ÷ Σ CovUnit(집단) × 100
CsmRelCsmEnd × UnitRate ÷ 100 (반올림 잔차는 최대 구간)
RelGapDiscRel − CsmRel
CumRelΣ CsmRel (구간 번호 이하)
CsmEndCsmBeg + NewBiz + Accret + ChgAmt − RelCur
Rel1Calc / Rel1Disc / Rel1Rate1구간 CsmRel / 1구간 DiscRel / Rel1Calc ÷ CsmEnd × 100
AvgYearΣ(구간 중간 시점 × UnitRate ÷ 100)
(대조) 원장 금액ACDOCA 금액 합계 — 부채 계정·원장 0L 조건

① Basic(Interface) 뷰 — 구간별 보장단위

@AbapCatalog.viewEnhancementCategory: [#NONE]
@EndUserText.label: '구간별 잔여 보장단위 (기본)'
define view entity ZI_CsmCoverageBand
  as select from ZI_InsCsmCoverageUnit as u     -- 계리 평가 결과를 가져오는 기초 뷰 (원천은 확인 필요)
  association [1] to ZI_InsCsmGroup as _grp
    on  _grp.FiscalYear = u.FiscalYear and _grp.FiscalPeriod = u.FiscalPeriod
    and _grp.GroupCode  = u.GroupCode
{
  key u.FiscalYear,
  key u.FiscalPeriod,
  key u.GroupCode,
  key u.BandNo,
      u.PortfolioCode,
      u.CoverageUnit,
      cast( u.CoverageUnit * 100 / _grp.TotalCoverageUnit as abap.dec( 8, 4 ) )       as UnitRate,
      cast( _grp.CsmEnd * u.CoverageUnit / _grp.TotalCoverageUnit as abap.dec( 18, 1 ) ) as CsmRelease,
      u.DisclosedRelease                         -- 공시 초안 구간별 금액(원천 그대로)
}

구간별 보장단위를 집단의 총 보장단위에 연결해 비중과 인식 예상액을 한 곳에서 계산합니다. 공시 초안 금액은 원천 그대로 두어 차이 계산을 상위 뷰에서 합니다. 반올림 잔차를 가장 큰 구간에 모으는 규칙은 운영에서 별도 뷰 또는 함수로 구현합니다.

① Basic(Interface) 뷰 — 원장 잔액(대조용)

@AbapCatalog.viewEnhancementCategory: [#NONE]
@EndUserText.label: '보험계약 부채 원장 잔액 (대조용)'
define view entity ZI_CsmLedgerBalance
  as select from I_JournalEntryItem as j
{
  key j.CompanyCode,
  key j.FiscalYear,
  key j.FiscalPeriod,
  key j.GLAccount,
      @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
      sum( j.AmountInCompanyCodeCurrency ) as LedgerAmount,
      j.CompanyCodeCurrency
}
where j.Ledger = '0L'
group by j.CompanyCode, j.FiscalYear, j.FiscalPeriod, j.GLAccount, j.CompanyCodeCurrency

표준 CDS 위에서 부채 계정의 원장 금액을 계정·기간별로 모읍니다. 집단별 기말 CSM 합계와 맞춰 볼 기준 금액입니다.

② Composite 뷰 — 포트폴리오·구간 집계

@AbapCatalog.viewEnhancementCategory: [#NONE]
@EndUserText.label: '포트폴리오·구간 인식 예상 (조합)'
define view entity ZI_CsmBandSummary
  as select from ZI_CsmCoverageBand as b
{
  key b.FiscalYear,
  key b.FiscalPeriod,
  key b.PortfolioCode,
  key b.BandNo,
      sum( b.CoverageUnit )        as CoverageUnit,
      sum( b.CsmRelease )          as CsmRel,
      sum( b.DisclosedRelease )    as DiscRel,
      sum( b.DisclosedRelease ) - sum( b.CsmRelease ) as BandGap,
      case
        when sum( b.DisclosedRelease ) - sum( b.CsmRelease ) <> 0 then 'CHECK'
        else 'OK'
      end as CheckStatus
}
group by b.FiscalYear, b.FiscalPeriod, b.PortfolioCode, b.BandNo

같은 포트폴리오·구간의 명세를 합산하고 초안과 재계산의 차이가 0 이 아니면 점검으로 표시합니다. 누적 인식액과 누적 비중은 윈도 함수 대신 소비 뷰나 서비스 계층에서 구간 번호 순으로 계산하도록 남겼습니다.

② Composite 뷰 — 집단별 구간 배분

@AbapCatalog.viewEnhancementCategory: [#NONE]
@EndUserText.label: '집단별 구간 배분 (조합)'
define view entity ZI_CsmGroupBand
  as select from ZI_InsCsmGroup as g
  association [0..*] to ZI_CsmCoverageBand as _unit
    on  _unit.FiscalYear = g.FiscalYear and _unit.FiscalPeriod = g.FiscalPeriod
    and _unit.GroupCode  = g.GroupCode
{
  key g.FiscalYear, key g.FiscalPeriod, key g.GroupCode,
      g.PortfolioCode,
      g.CsmBeg, g.NewBiz, g.Accretion, g.EstChange, g.ReleaseCurrent,
      g.CsmBeg + g.NewBiz + g.Accretion + g.EstChange - g.ReleaseCurrent as CsmEnd,
      g.TotalCoverageUnit,
      _unit                                       -- 구간별 명세로 내려가는 연결
}

기말 CSM 증감식과 총 보장단위를 집단 한 줄에 놓고 구간 명세로 내려가는 연결을 노출합니다. 화면의 집단 상세 창이 이 연결을 읽습니다.

③ Consumption(Projection) 뷰

@EndUserText.label: '구간별 인식 예상 (소비)'
@Metadata.allowExtensions: true
@Search.searchable: true
define view entity ZC_CsmBandSummary
  as projection on ZI_CsmBandSummary
{
  @UI.lineItem: [{ position: 10 }]
  @Consumption.filter: { mandatory: true, selectionType: #SINGLE }
  key FiscalYear,
  @UI.lineItem: [{ position: 20 }]
  @Consumption.filter: { selectionType: #SINGLE }
  key FiscalPeriod,
  @UI.selectionField: [{ position: 10 }]
  @UI.lineItem: [{ position: 30 }]
  @Search.defaultSearchElement: true
  key PortfolioCode,
  @UI.selectionField: [{ position: 20 }]
  @UI.lineItem: [{ position: 40 }]
  key BandNo,
  @UI.lineItem: [{ position: 50 }]  CoverageUnit,
  @UI.lineItem: [{ position: 60 }]  CsmRel,
  @UI.lineItem: [{ position: 70 }]  DiscRel,
  @UI.lineItem: [{ position: 80, criticality: 'CheckCriticality' }]  BandGap,
  @UI.selectionField: [{ position: 30 }]
  CheckStatus
}

화면의 조회조건과 같은 필터를 @UI·@Consumption.filter 로 선언하고 검색 대상을 지정합니다. 회계연도는 필수 필터로 두었습니다.

④ 접근 제어(DCL)

@EndUserText.label: '구간별 인식 예상 접근 제어'
@MappingRole: true
define role ZI_CsmBandSummaryAccess {
  grant select on ZI_CsmBandSummary
    where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
-- 샘플은 회사가 하나라 CompanyCode 를 두지 않았습니다. 운영에서는 뷰의 키에 회사코드를 더합니다.

회사코드 권한 객체로 집계를 걸러 권한 없는 회사의 데이터가 합계에도 섞이지 않게 합니다.

⑤ 서비스 노출(Service Definition + Service Binding)

@EndUserText.label: 'CSM 인식 시기 점검 서비스'
define service ZUI_CsmBand {
  expose ZC_CsmBandSummary  as BandSet;
  expose ZC_CsmGroupBand    as GroupSet;
  expose ZC_CsmUnitDetail   as UnitSet;
  expose ZC_CsmBandRecon    as ReconSet;
}
-- Service Binding: ZUI_CsmBand_O2 / 바인딩 유형 OData V2 - UI / 게시 후 서비스 URL 을 앱 설정에 선언

소비 뷰를 엔티티셋 이름으로 노출하고 OData V2 로 게시합니다. 앱 설정의 서비스 경로만 이 주소로 바꾸면 화면이 그대로 붙습니다.

⑥ 함수 스케치

-- 초안-재계산 차이 순합계를 서비스 함수(GetRelGapNet)로 노출하려면 RAP 의 static function 으로 감쌉니다.
define behavior for ZC_CsmGroupBand alias Group
{
  static function GetRelGapNet
    parameter ZA_RelGapParam                      -- FiscalYear, FiscalPeriod, PortfolioCode(선택)
    result [1] abap.dec( 18, 1 );
}

함수는 조회조건과 같은 파라미터를 받아 집단별 1년 이내 차이의 합계를 돌려줍니다. 화면의 "초안-재계산 차이 순합계" 지표가 이 값을 씁니다.

실제 운영 시점에서 해야 할 작업

  1. CSM·보장단위 원천 확정 — 계리 시스템에서 집단별 CSM과 구간별 잔여 보장단위를 어떤 형태로 받을지 정하고 기초 뷰를 그에 맞게 만듭니다.
  2. 구간 정의·허용 기준 입력 — 샘플의 7개 구간과 1년 이내 허용 차이(0.1 백만원)를 회사의 공시 양식과 정책값으로 바꿉니다.
  3. 확장 필드 연결 — 회사코드·원장·계약 그룹 같은 확장 필드를 기초 뷰에 더하고 DCL 이 쓰는 키에 맞춥니다.
  4. 권한 롤 배정 — 회사코드 권한 객체(F_BKPF_BUK)를 조회 롤에 넣고 결산 담당자·계리 담당자·감사 대응 담당자에게 배정합니다.
  5. 성능 확인 — 기간 조건을 필수로 두고 구간 명세 뷰의 키 필터가 아래 계층까지 내려가는지 실행 계획으로 확인합니다.
  6. 서비스 활성화 — Service Binding 을 게시하거나 /IWFND/MAINT_SERVICE 로 서비스를 등록하고 메타데이터가 정상으로 열리는지 확인합니다.
  7. 앱 연결 — 앱 설정(manifest)의 서비스 주소를 운영 서비스 경로로 바꿉니다. 화면 코드는 바꾸지 않습니다.
  8. 이관(Transport) — 기초 뷰 → 조합 뷰 → 소비 뷰 → DCL → 서비스 정의·바인딩 순서로 한 이관 요청에 담아 옮깁니다.
  9. 운영 전 대사 검증 — ①집단별 기말 CSM 합계와 원장 잔액을 맞춰 보고 ②구간 보장단위 합계를 계리 모델의 총 보장단위와 비교하고 ③공시 초안 구간별 금액을 재계산과 대조하고 ④점검 필요 항목을 한 건씩 원인 분류해 감사인과 공유합니다.

OpenUI5 구성

앱은 서비스를 앱 설정의 데이터 소스로만 선언하고, 표 네 개가 각각 해당 엔티티셋에 바인딩됩니다. 조회조건은 필터 객체로 만들어 서비스 필터로 전달하며 "전체"는 그 조건 자체를 만들지 않습니다. 정렬과 스크롤은 서비스 정렬·페이징으로 처리하고 서비스 연결에 실패하면 별도 오류 처리기가 안내 창을 띄웁니다. 테마는 sap_horizon 입니다.

파일 구성

index.html · Component.js · manifest.json
controller/  BaseController.js · Main.controller.js
view/        Main.view.xml · DetailDialog.fragment.xml
model/       formatter.js · ErrorHandler.js
css/ · i18n/
odata/       서비스 정의(메타데이터·서비스 로직·엔티티셋별 데이터)

검증 결과

화면 안의 일관성은 6개 대사식으로 확인했습니다. 두 기간(2026-08, 2026-09) 모두 구간 비중 합계, 구간 인식액 합계(기말 CSM과 일치), 증감 대사, 집계 합계 대사에서 차이가 0 이고, 의도적으로 넣은 점검 대상(2026-09 기준 보장단위 합계 불일치 1건, 공시 초안 1년 이내 불일치 1건)만 대사 차이로 나타났습니다. 조회 버튼 위치, Enter 조회, 테마 sap_horizon, 행 클릭 상세, 연결 실패 안내를 실제 브라우저에서 확인했습니다.

대사식검사 건수(2026-09)차이 건수
R001 구간 보장단위 합계 = 총 잔여 보장단위131 (의도한 점검 대상)
R002 구간 인식액 합계 = 기말 CSM130
R003 구간 비중 합계 = 100%130
R004 공시 초안 1년 이내 = 재계산 1년 이내131 (의도한 점검 대상)
R005 기말 CSM 증감 대사130
R006 집계 합계 = 명세 합계350

자주 묻는 질문

이 점검은 어떤 기준서의 어떤 요구사항에 근거합니까?

IFRS 17 보험계약(K-IFRS 제1117호)은 보고기간 말 남은 계약서비스마진을 당기손익으로 인식할 것으로 예상하는 시기를 적절한 기간 구간별로 공시하도록 요구합니다. 또 계약서비스마진은 그 기간에 제공한 보험계약서비스를 반영하도록 보장단위에 따라 당기손익으로 인식합니다. 이 화면은 두 요구사항을 이어서 집단별 기말 CSM을 구간별 잔여 보장단위 비중으로 나누고, 그 결과를 공시 초안과 맞춰 보는 도구입니다. 보장단위를 어떻게 정할지와 구간 폭은 회사의 정책이며 이 화면이 대신 정하지 않습니다. 기준서 문단 번호와 세부 요건은 원문으로 확인할 사항입니다.

도입하면 어떤 직무가 언제 쓰게 됩니까?

결산 담당 회계 인력과 계리 인력이 분기·연말 공시 초안을 닫기 직전에 씁니다. 계리 모델의 보장단위 결과로 만든 구간별 금액을 주석 초안에 옮겨 적은 뒤, 1년 이내 금액이 다시 계산한 값과 같은지, 구간 사이에서 금액이 옮겨지지 않았는지를 한 번에 걸러 줍니다. 감사 대응 때는 "이 구간 금액은 어떤 보장단위로 나온 것인가"라는 질문에 집단 상세 창으로 바로 답할 수 있습니다. 샘플에서는 점검 필요 항목을 찾는 데 필터 두세 번이면 충분했습니다.

SAP 표준 T-code 와는 어떤 관계입니까?

원장 금액의 조회와 전표 추적은 FAGLL03 과 FAGLB03 같은 표준 T-code 가 계속 담당합니다. 이 화면은 표준 화면이 보여 주지 않는 "남은 CSM이 언제 인식될 것으로 예상되는가"를 더해 확장합니다. 이 화면에서 본 집단별 기말 CSM 합계를 FAGLB03 의 계정 잔액과 맞춰 보고, 차이가 나면 FAGLL03 에서 개별 항목으로 내려가는 순서로 오갑니다. 대조 금액을 어떻게 연결할지는 회사의 계정 체계에 따라 달라 확인이 필요합니다.

데이터 원천과 정합성은 어떻게 보장합니까?

화면의 숫자는 집단별 기말 CSM, 구간별 잔여 보장단위, 공시 초안 금액에서 나옵니다. 구간 비중과 인식 예상액은 보장단위에서 다시 계산하며 반올림 잔차는 가장 큰 구간에 모아 합계가 기말 CSM과 정확히 맞게 합니다. 화면 안의 일관성은 6개 대사식으로 확인하며 샘플 두 기간에서 의도적으로 넣은 점검 대상만 차이로 나타났습니다. 다만 보장단위와 CSM 자체가 계리 모델의 올바른 결과인지는 이 화면이 판단할 수 없고, 원천 자료의 적정성은 확인이 필요합니다.

운영 시스템에 연결하려면 무엇을 해야 합니까?

화면은 서비스 주소만 바꾸면 되도록 만들어져 있습니다. 운영에서는 CDS 뷰 위에 서비스를 게시하고 앱 설정의 서비스 경로를 그 주소로 바꿉니다. 실제 작업량은 집단별 CSM과 구간별 보장단위를 어디서 가져올지 정하는 데 있습니다. 계리 시스템의 평가 결과를 어떤 형태로 받을지, 평가 기준일과 결산 기간을 어떻게 맞출지를 먼저 정해야 하며 이 부분은 회사별로 달라 확인이 필요합니다.

권한과 보안은 어떻게 다룹니까?

조회 전용 화면이며 원장에 쓰지 않습니다. CDS 에 접근 제어를 붙여 회사코드 권한 객체를 따르게 하므로 권한 없는 회사의 집단은 목록에서도 보이지 않습니다. 포트폴리오·구간 집계에서 합계만 보이고 상세만 막으면 합계에서 남의 몫을 빼서 알아낼 수 있으므로 권한은 상세가 아니라 읽는 자리에 겁니다. CSV 내려받기는 화면에 보이는 범위만 내려받습니다.

집단 수와 구간이 많아지면 성능은 어떻습니까?

조회 조건은 모두 서비스의 필터로 전달되어 서비스 쪽에서 걸러진 결과만 내려오고, 표는 보이는 만큼만 읽어 옵니다. 샘플은 집단 13개 × 구간 7개 = 91건이지만 운영에서는 집단과 평가 기간이 늘어 명세가 크게 불어납니다. 기간 조건을 필수로 두고, 구간 배분은 화면이 아니라 CDS 에서 계산해 결과만 읽게 하는 것이 좋습니다.

구간 폭이나 허용 기준을 우리 회사 기준으로 바꿀 수 있습니까?

가능합니다. 이 화면의 7개 구간(1년 이내, 1~2년, 2~3년, 3~4년, 4~5년, 5~10년, 10년 초과)과 허용 기준(1년 이내 차이 0.1 백만원)은 샘플 기준입니다. 회사의 공시 양식에 맞는 구간 정의와 파라미터로 바꿔 넣으면 되고, 구간 수가 달라져도 화면 구조를 다시 만들 필요는 없습니다. 가중평균 인식시기에 쓰는 구간 중간 시점(특히 10년 초과 구간)은 샘플 가정이라 회사 기준으로 확인해야 합니다.

"점검 필요"가 나오면 회계처리가 잘못됐다는 뜻입니까?

그렇게 단정하지 않습니다. 공시 초안과 다시 구한 값이 다르거나 확인할 사항이 있는 행을 골라 보여 주는 표시입니다. 보장단위 기준일이 다르거나 구간 경계를 달리 적용해서 생기는 정당한 차이일 수 있어, 원인은 계리 자료와 초안 작성 방식을 함께 보아야 알 수 있습니다. 이 화면은 분류·집계·대사를 돕는 점검 도구이고 최종 판단은 회사와 감사인이 합니다.

기준서의 적용 시기와 이 화면의 범위는 어디까지입니까?

적용 시기와 경과규정은 기준서 원문으로 확인할 사항이며 이 화면은 시기를 판단하지 않습니다. 범위는 집단별 기말 CSM의 구간 배분, 공시 초안과의 구간별 대사, 기말 CSM 증감 대사의 조회입니다. 보장단위 산정 모델 자체의 검증, 할인율과 위험조정, 보험금융손익 분해는 범위에 넣지 않았습니다. 이들은 별도 점검 화면의 몫입니다.

#IFRS 17 #K-IFRS 1117 #계약서비스마진 #CSM 인식 시기 #보장단위 #공시 대사 #OpenUI5

보험계약마진의 인식 시기 공시를 닫기 전에 구간별로 대조하세요

계리 결과와 공시 초안이 여러 파일에 흩어져 있어 구간 금액을 맞춰 보느라 마감 때마다 시간이 든다면, 우리 회사 공시 양식에 맞춘 점검 화면이 필요하다면 문의해 주세요.

도입 문의