SAP 차입원가 자본화 기간 점검 — IAS 23, 개시·중단·종료 날짜를 요건으로 다시 따져 장부 자본화 일수와 금액을 대조한다
기대 개시일 · 연장 기간 중단 판정 · 사용 가능일에 따른 종료 · 월별 일수와 금액 대조 · 정합성 대사 — 소개 영상과 실제 화면 6종, 그리고 CDS 코드까지
소개 영상0분 46초8개 장면점검 목적 → 처음 화면 → 점검 코드 필터 → 중단 구간 → 월별 일수 → 대사 → 상세 → 마무리
도입 포인트 — 이 앱을 사용해야 하는 이유
건설중인 자산에 붙는 차입원가는 언제부터, 어느 기간 빼고, 언제까지 자본화했느냐에 따라 금액이 달라집니다. 이 세 날짜는 프로젝트 시스템, 자산 마스터, 담당자의 메모에 흩어져 있어 결산 때마다 “이 프로젝트는 왜 이 날짜에 시작했지”를 사람이 다시 찾아봅니다. 이 앱은 세 날짜를 요건에서 거꾸로 다시 구해 장부와 나란히 놓습니다.
핵심 포인트 여섯 가지
| 포인트 | 얻는 것 | 지금 방식이라면 |
|---|---|---|
| ① 세 요건에서 거꾸로 구한 개시일 | 지출 최초일·차입원가 최초일·준비활동 개시일 중 가장 늦은 날을 기대 개시일로 두고 장부 개시일과 비교합니다. | 프로젝트별로 담당자가 날짜를 찾아 엑셀에 옮기고 눈으로 비교합니다. |
| ② 중단 구간을 하나씩 판정 | 중단 일수가 회사 기준을 넘는 연장 기간인지, 적극적 개발이 멈춘 것인지, 필요한 기술·행정 작업이나 일시 지연인지를 구간마다 가립니다. | 중단 여부를 프로젝트 담당자 기억에 의존합니다. |
| ③ 사용 가능일이 곧 종료 기준 | 사용 가능일이 지났는데 장부가 계속 자본화하거나, 반대로 일찍 끝낸 경우를 가려 냅니다. 일부가 먼저 완성된 경우도 따로 봅니다. | 자산 대체 시점과 자본화 종료 시점을 따로 확인합니다. |
| ④ 일수 차이를 금액으로 | 월별 일 차입원가를 곱해 기대 자본화액과 장부액의 차이를 월·프로젝트 단위로 보여 줍니다. | 차이가 있다는 것까지만 알고 금액은 따로 계산합니다. |
| ⑤ 스스로 맞는지 검산 | 월별 합계와 프로젝트 합계가 같은지 등 대사 5건은 차이 0이어야 하고, 장부 점검 대사 2건은 의도한 예외만 차이로 나옵니다. | 합계가 맞는지 확인하는 데 별도 시간이 듭니다. |
| ⑥ 표준 OData 서비스 | 엔티티셋 4개와 펑션 2개를 표준 OData V2 계약으로 노출해 다른 화면과 보고서가 그대로 읽습니다. | 화면마다 다른 조회 로직을 따로 만듭니다. |
사용 방법
화면은 조회조건, 요약 지표, 네 개의 탭으로 되어 있습니다. 조회조건 오른쪽 끝의 조회 버튼을 누르거나 입력칸에서 Enter 를 누르면 조건이 서비스로 전달됩니다.
- 범위를 정합니다. 회사 코드·자산 유형·프로젝트명·기대 개시일 기간·기준 연월·점검 코드·점검 결과를 고릅니다. 비워 두면 전체입니다.
- 요약을 봅니다. 프로젝트 수, 점검 필요 건수, 기대·장부 일수와 금액, 차이, 대사 차이 건수가 먼저 나옵니다.
- 탭을 옮겨 갑니다. 프로젝트별 기간 판정 → 중단 구간 판정 → 월별 자본화 → 대사 결과 순서로 좁혀 보면 됩니다.
- 행을 눌러 상세를 엽니다. 세 요건 날짜, 중단 구간, 월별 일수·금액이 한 창에 열립니다.
- CSV 로 내려받습니다. 지금 보이는 탭의 결과를 그대로 내려받아 증빙에 붙입니다.
사례로 보는 효과 — 한 프로젝트가 만든 8억 3,490만 원
예시 자료는 가상의 프로젝트 12개, 2026년 1월부터 9월까지입니다. 기대 자본화액 합계는 101억 4,690만 원, 장부는 116억 510만 원이고 차이는 +14억 5,820만 원입니다. 이 차이의 절반 이상이 한 프로젝트에서 나옵니다. 중단 구간이 121일 이어졌는데 장부는 중단하지 않고 자본화를 이어 간 건으로, 월별 탭에서 보면 해당 기간의 장부 일수가 기대보다 계속 큽니다. 프로젝트 합계만 봐서는 보이지 않던 부분이 월별로 내려가면 드러납니다.
같은 자료에서 개시가 이른 건, 개시가 늦은 건, 예외 사유로 중단된 건, 종료가 늦거나 이른 건, 부분 완성 건이 하나씩 점검 필요로 올라옵니다. 일곱 건 모두 원인을 단정하지 않고 “무엇을 확인하면 되는지”를 점검 내용에 적어 둡니다.
실행 화면
실제로 돌아가는 화면 6종을 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있고, 화면마다 무엇을 하는 자리인지 아래에 적었습니다. 숫자는 모두 같은 자료에서 나온 것이라 화면끼리 맞춰 보셔도 됩니다.

요약 지표가 먼저 차고 아래에 프로젝트 12개의 기대·장부 개시와 일수, 금액 차이가 한 줄씩 놓입니다. 점검 필요인 줄은 색으로 먼저 눈에 들어옵니다.

조건을 바꾸면 표와 요약이 같은 조건으로 다시 읽힙니다. 요약만 따로 계산하지 않으므로 표와 어긋날 일이 없습니다.

연장 기간 여부는 중단 일수를 회사 기준 일수와 비교해 정합니다. 기준 일수는 회사 정책 가정값이며 화면에서 실제 정책에 맞춰 바꿀 수 있게 서비스가 값을 내려 줍니다.

프로젝트 합계에서 차이가 난 이유를 월 단위로 좁혀 가는 자리입니다. 월 일수를 넘는 값은 대사에서 걸러집니다.

앞의 5건은 앱이 스스로 맞는지 보는 항목이라 차이 0이 정상입니다. 뒤의 2건은 장부와 기대의 차이를 세는 항목이라 차이 건수가 곧 점검 대상 규모입니다.

목록에서 본 차이를 상세에서 날짜 근거로 되짚습니다. 같은 조회 서비스를 쓰므로 목록과 상세의 숫자가 갈라지지 않습니다.
SAP 표준 기능 확장 포인트
표준 SAP 에도 건설중인자산을 정산하고 이자를 계산하는 기능은 있습니다. 이 앱은 그 기능을 대체하지 않고, 표준이 다루지 않는 “기간이 요건에 맞는가”라는 점검을 위에 얹습니다.
표준 화면과 맞춰 보는 자리
| 표준 T-code | 이름 | 이 화면과 맞춰 보는 지점 |
|---|---|---|
| AS03 | 자산 조회 | 건설중인자산의 상태와 정산 이력 |
| AW01N | 자산 탐색기 | 자산의 가치와 거래 내역 |
| AIAB | 건설중인자산 분배 규칙 관리 | 정산 분배 규칙 |
| AIBU | 건설중인자산 정산 | 정산 실행 결과 |
| CJ88 | 프로젝트 정산 | WBS 요소 정산 결과 |
| FAGLL03 | G/L 계정 라인 아이템 조회 | 자본화 대체 전표의 원천 |
기준서 요구사항과 대응
| 요구사항(IAS 23, K-IFRS 제1023호) | 이 앱의 대응 | 비고 |
|---|---|---|
| 자본화 개시 — 적격자산 지출, 차입원가 발생, 준비활동 착수가 모두 갖춰질 때 | 세 날짜 중 가장 늦은 날을 기대 개시일로 구해 장부 개시일과 비교 | 세 날짜의 증빙 필드는 회사마다 달라 연결 지점 확인 필요 |
| 자본화 중단 — 적극적인 개발활동이 연장된 기간 중단되면 중단, 필요한 작업이나 일시 지연은 계속 | 구간별 연장 여부·적극적 중단·필요 작업 여부를 판정해 기대 중단 일수를 계산 | 연장 기준 일수는 회사 정책 가정 60일 |
| 자본화 종료 — 의도한 용도로 사용할 수 있는 상태가 되기 위한 활동이 실질적으로 완료된 때 | 사용 가능일을 기대 종료일로 보고 장부 종료일과 비교 | 사용 가능일 증빙은 회사와 감사인이 확인 |
| 부분 완성 — 일부가 별도로 사용 가능하면 그 부분은 완성 시점에 종료 | 부분 완성 표시 프로젝트의 사용 가능일 이후 장부 종료 여부 확인 | 부분 원가 안분은 범위 밖 |
OData 서비스 계약
| 항목 | 내용 |
|---|---|
| 서비스 이름 | capperiod_srv (OData V2) |
| 엔티티셋 | ProjSet(키 ProjNo) · SuspSet(키 ProjNo+SuspNo) · IntSet(키 ProjNo+Period) · ReconSet(키 ReconNo) |
| 펑션 | MaxSuspDays(ProjNo) → Edm.Int32 · TotalDiffAmt(ProjNo) → Edm.Decimal |
| 조회 옵션 | $filter · $orderby · $top · $skip · $select · $inlinecount, 날짜 칸은 datetime 리터럴로 필터 |
| 메타데이터 | ./odata/capperiod_srv/$metadata |
CDS 구성
예시 화면은 12개 프로젝트의 작은 자료를 서비스가 그대로 돌려줍니다. 운영에서는 프로젝트 마스터, 자본화 대체 전표, 일 차입원가를 CDS 로 모아 같은 모양의 엔티티를 내려 주면 화면은 바뀌지 않습니다. 아래 코드는 스케치이며, 필드와 표준 뷰 이름은 릴리스와 환경에 따라 다르므로 View Browser(F2170) 에서 실제 이름을 확인한 뒤 씁니다. 확인이 필요한 자리는 주석에 적었습니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 |
|---|---|---|
| 기준 | ZI_CapProject | 프로젝트(WBS) 마스터와 회사 코드 |
| 달력 | ZI_CapDay | 일 단위 달력과 월 일수 |
| 중단 | ZI_CapSuspension | 중단 구간과 연장 여부 판정 |
| 월별 | ZI_CapMonth | 월별 기대·장부 일수와 금액 |
| 쿼리 | ZC_CapPeriodQuery | 화면이 읽는 프로젝트 단위 결과 |
| 권한 | ZI_CAPPROJECT (DCL) | 회사 코드 기준 접근 제한 |
① 프로젝트 기준 뷰
프로젝트와 회사 코드를 한곳에서 읽는 뷰입니다. 세 요건 날짜는 회사별 관리 필드라 연결 자리를 주석으로 남깁니다.
@AbapCatalog.viewEnhancementCategory: [#NONE]
@EndUserText.label: '자본화 기간 점검 - 프로젝트 기준'
define view entity ZI_CapProject
as select from prps
{
key prps.posid as ProjNo,
prps.post1 as ProjName,
prps.pbukr as CompCode
// 지출 최초일·차입원가 최초일·준비활동 개시일은
// 회사별 관리 필드를 연결 (확인 필요)
}
② 일 단위 달력
월별 일수를 세려면 날짜를 하루씩 펼친 달력이 있어야 합니다. 조회 구간 안의 날만 담습니다.
@EndUserText.label: '자본화 기간 점검 - 일 단위 달력'
define view entity ZI_CapDay
as select from I_CalendarDate
{
key CalendarDate,
CalendarYear,
CalendarMonth,
concat( CalendarYear, CalendarMonth ) as Period
}
where CalendarDate >= $parameters.p_from
and CalendarDate <= $parameters.p_to
③ 기대 개시일 계산
세 날짜 중 가장 늦은 날이 기대 개시일입니다. 비교는 날짜 칸끼리만 하고 비어 있으면 아직 요건이 갖춰지지 않은 것으로 봅니다.
define view entity ZI_CapStart
as select from ZI_CapProject as p
{
key p.ProjNo,
case
when p.ExpDate is initial or p.BorrowDate is initial
or p.ActDate is initial then cast( '00000000' as abap.dats )
when p.ExpDate >= p.BorrowDate and p.ExpDate >= p.ActDate
then p.ExpDate
when p.BorrowDate >= p.ActDate then p.BorrowDate
else p.ActDate
end as ExpCapStart
}
④ 중단 구간 판정
중단 일수가 기준 일수 이상이면 연장 기간이고, 적극적 개발이 멈췄으며 필요 작업이 아닐 때만 기대 중단으로 봅니다.
define view entity ZI_CapSuspension
as select from zcap_susp as s
{
key s.proj_no as ProjNo,
key s.susp_no as SuspNo,
dats_days_between( s.susp_start, s.susp_end ) + 1 as SuspDays,
case when dats_days_between( s.susp_start, s.susp_end ) + 1
>= $parameters.p_thresh then 'X' else '' end as Extended,
case when s.active_stop = 'X' and s.needed_work = ''
and dats_days_between( s.susp_start, s.susp_end ) + 1
>= $parameters.p_thresh then 'X' else '' end as ExpSuspend
}
⑤ 월별 일수와 금액
월별 기대 일수에서 기대 중단 일수를 빼고 일 차입원가를 곱합니다. 장부 금액은 대체 전표 집계와 비교합니다.
define view entity ZI_CapMonth
as select from ZI_CapDay as d
inner join ZI_CapStart as s on d.CalendarDate >= s.ExpCapStart
{
key s.ProjNo,
key d.Period,
count( * ) as MonthDays,
sum( case when d.CalendarDate between s.ExpCapStart
and s.ReadyDate then 1 else 0 end ) as ExpCapDays
}
group by s.ProjNo, d.Period
⑥ 접근 제어
집계를 읽는 자리에 걸어야 합계로 새지 않습니다. 회사 코드 기준 권한 객체를 확인합니다.
@EndUserText.label: '자본화 기간 점검 - 접근 제어'
@MappingRole: true
define role ZI_CAPPROJECT {
grant select on ZI_CapProject
where ( CompCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
운영 전환 순서
- 세 요건 날짜가 어느 필드에 있는지 회사와 합의하고 연결합니다.
- 연장 기간 기준 일수를 회사 정책으로 확정합니다.
- CDS 뷰를 배포하고 서비스가 같은 엔티티 모양을 돌려주는지
$metadata로 확인합니다. - 한 회사·한 분기로 돌려 보고 점검 필요 건수를 담당자와 하나씩 확인합니다.
- 정합성 대사 5건이 차이 0인지 먼저 확인한 뒤 범위를 넓힙니다.
자주 묻는 질문
도입 상담에서 자주 받는 질문을 다섯 묶음으로 적었습니다.
개념
자본화 기간은 어떻게 정해집니까?
IAS 23 에 따라 적격자산에 대한 지출, 차입원가 발생, 의도한 용도로 쓰기 위한 준비활동 착수가 모두 갖춰질 때 시작합니다. 적극적인 개발활동이 연장된 기간 중단되면 그 기간은 쉬고, 사용하거나 판매할 수 있는 상태가 되기 위한 활동이 실질적으로 끝나면 종료합니다.
기대 개시일과 장부 개시일이 다르면 틀린 것입니까?
그렇게 보지 않습니다. 이 앱은 “점검 필요”로만 표시하고 원인을 단정하지 않습니다. 요건 날짜 증빙이 늦게 정리됐거나 담당자가 다른 기준을 쓴 경우도 있어 확인 대상으로만 안내합니다.
연장 기간은 며칠부터입니까?
기준서가 일수를 정해 두지 않았습니다. 이 화면은 60일을 회사 정책 가정값으로 쓰며, 실제 정책에 맞춰 바꿔야 합니다.
필요한 기술·행정 작업으로 멈춘 기간은 어떻게 됩니까?
그 기간에는 자본화를 계속하는 쪽으로 봅니다. 구간마다 “필요 작업 또는 일시 지연” 표시가 있으면 기대 중단에서 제외합니다.
부분 완성은 무엇입니까?
건물의 일부처럼 나머지가 건설 중이어도 따로 쓸 수 있는 부분이 있으면 그 부분은 완성 시점에 자본화를 끝냅니다. 이 앱은 그런 표시가 있는 프로젝트의 사용 가능일 이후 장부 종료 여부를 봅니다.
숫자와 대사
기대 일수와 장부 일수는 어떻게 비교합니까?
조회 구간 안에서 개시일부터 종료일까지 일수를 세고 중단 일수를 뺍니다. 장부는 대체 전표의 최초·최종 전기일과 장부 중단 처리를 같은 방식으로 셉니다.
금액은 어떻게 구합니까?
일 차입원가에 일수를 곱합니다. 일 차입원가는 입력값으로 보며, 금액 자체를 새로 산정하지는 않습니다.
대사 7건은 무엇을 봅니까?
앞의 5건은 월별과 프로젝트 합계가 같은지, 기대액과 차이를 더하면 장부액인지, 월 일수를 넘지 않는지를 봅니다. 차이 0이어야 합니다. 뒤의 2건은 장부 점검용으로 차이가 있는 프로젝트와 중단 일수를 셉니다.
정합성 대사에 차이가 나오면 어떻게 합니까?
서비스나 자료 구성에 문제가 있다는 신호이므로 점검 필요 목록을 보기 전에 먼저 해소합니다. 장부 점검 대사의 차이는 다릅니다. 확인 대상 규모를 뜻합니다.
Edm.Decimal 은 왜 문자열로 오나요?
OData V2 JSON 은 큰 십진수를 문자열로 직렬화합니다. 화면은 읽을 때 숫자로 바꿔 씁니다.
화면 사용
조회 버튼은 어디에 있습니까?
조회조건 오른쪽 끝입니다. 입력칸에서 Enter 를 눌러도 같은 조회가 일어납니다.
날짜는 한쪽만 입력해도 됩니까?
됩니다. 시작만 넣으면 그날 이후, 종료만 넣으면 그날 이전으로 걸립니다.
상세는 어떻게 엽니까?
프로젝트 행을 누르면 세 요건 날짜, 중단 구간, 월별 일수·금액이 한 창에 열립니다.
내려받기는 무엇이 담깁니까?
지금 보이는 탭의 조회 결과 전체입니다. 조건을 바꾸면 내려받는 내용도 바뀝니다.
휴대폰에서도 쓸 수 있습니까?
OpenUI5 의 반응형 표를 쓰므로 좁은 화면에서도 열립니다. 다만 열이 많은 탭은 가로 이동이 필요합니다.
서비스와 연결
어떤 OData 버전입니까?
V2 입니다. manifest 의 dataSources 에 선언하고 모델은 ODataModel V2 로 만듭니다.
엔티티셋의 키는 무엇입니까?
ProjSet 은 ProjNo, SuspSet 은 ProjNo+SuspNo, IntSet 은 ProjNo+Period, ReconSet 은 ReconNo 입니다.
펑션은 무엇을 합니까?
MaxSuspDays 는 최장 중단 일수를, TotalDiffAmt 는 월별 차이 합계를 돌려줍니다. 둘 다 프로젝트 번호를 줄 수 있습니다.
실제 SAP 데이터로 바꾸려면 무엇을 합니까?
같은 엔티티 모양의 서비스를 CDS 위에 올리고 manifest 의 서비스 주소만 바꾸면 화면은 그대로입니다.
도입
범위 밖은 무엇입니까?
자본화할 차입원가 금액의 산정(특정·일반차입금, 자본화이자율, 투자소득 차감)은 범위 밖입니다. 이 앱은 기간만 봅니다.
감사 대응에 어떻게 씁니까?
점검 필요로 올라온 프로젝트의 날짜 근거와 월별 금액 차이를 CSV 로 내려받아 담당자 확인 내용과 함께 보관합니다.
도입하면 가장 먼저 합의할 것은 무엇입니까?
세 요건 날짜를 어느 필드에서 가져올지, 연장 기간 기준 일수를 몇 일로 할지입니다. 이 둘이 정해지면 나머지는 서비스가 계산합니다.