SAP 유형자산 후속원가 자본화 점검 — IAS 16, 고쳐 쓴 돈과 새로 들인 돈은 다르게 적는다
정비 지출을 일상 수선·부분 교체·종합검사·개량으로 나눠 자본화와 기존 부분 제거가 제대로 됐는지 정비오더·자산·원장 데이터로 먼저 확인해 둡니다
설비를 쓰는 동안에도 돈은 계속 들어갑니다. IAS 16 유형자산(K-IFRS 제1016호)은 원래 상태를 유지하는 일상적인 수선유지는 발생한 기간의 비용으로, 주요 부분 교체나 정기 종합검사·개량처럼 새 효익을 가져오는 지출은 인식 요건을 충족하면 자산 장부금액에 포함하도록 합니다. 새 부분을 자산으로 잡았다면 교체돼 나간 기존 부분의 장부금액은 제거합니다.
실무에서는 정비오더가 습관처럼 코스트센터로 정산돼 개량 지출이 수선비로 새거나, 반대로 소소한 수선이 자산으로 들어가고, 엔진을 바꾸고도 옛 엔진을 그대로 두는 일이 생깁니다. 표준 정비오더·자산 구조를 그대로 이어받아 지출마다 기준 자본화액과 제거액을 계산해 장부와 나란히 놓는 과정을 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 6종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 정비 — 정비오더(
AUFK·AFIH)의 정비활동유형과 실적 원가를 그대로 사용 - 정산 — 오더 정산 규칙(
COBRB)으로 자산·코스트센터 중 어디로 갔는지 확인 - 표준 화면 — 정비오더 조회(IW38) · 오더 정산(KO88) · 자산 탐색기(AW01N) · 자산 폐기(ABAVN)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 유형자산 |
| 관련 기준서 | IAS 16 유형자산(K-IFRS 제1016호) — 후속원가: 일상적인 수선유지 원가는 발생 시 비용, 부분 교체와 정기 종합검사 원가는 인식 요건 충족 시 장부금액에 포함하고 교체된 부분(직전 검사 원가)의 장부금액은 제거 |
| Namespace | zui5.subcost |
| 셸 구조 | 조회조건 영역(우측 조회) + 후속원가 자본화 대사 요약 + 후속원가 지출 명세·지출 유형별·자산 클래스별·공장별·점검 예외 5개 탭, 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 |
| SAP 표준 T-code | IW38 · KO88 · AW01N · ABAVN · FAGLL03(§7 참고) |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 자산 정산 변경·폐기 전표 기표는 화면 밖 프로세스 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 6종 둘러보기
회사코드·회계연도를 넣고 조회하면 후속원가 자본화 대사 요약과 명세가 한 화면에 뜹니다 → 탭을 옮겨 지출 유형별·자산 클래스별·공장별 집계를 보고 → 점검 예외에서 확인이 필요한 건만 추려 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 회사코드와 회계연도를 넣습니다. 지출 유형·공장·판정 상태는 비워 두면 전체가 조회됩니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 후속원가 자본화 대사 요약에서 지출액과 기준·장부 자본화액, 기준·장부 제거액, 차이 합계를 먼저 확인합니다.
- 탭을 옮겨 가며 후속원가 지출 명세 → 지출 유형별 → 자산 클래스별 → 공장별 → 점검 예외 순으로 좁혀 봅니다.
- 행을 누르면 교체 부분 장부금액과 기준·장부 자본화액·비용·제거액이 상세 다이얼로그로 열립니다.
- 후속원가 지출 명세와 점검 예외 탭에서는 CSV 내려받기(UTF-8 BOM)로 결과를 저장할 수 있습니다.
유지하면 비용, 새로 들이면 자산 — 유형별 규칙
원래 상태를 유지하는 지출은 비용, 새 효익을 가져오는 지출은 자산입니다. 새 부분을 자산으로 잡으면 나간 부분은 뺍니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 일상 수선유지 | 비용 | 발생한 기간의 수선비로 처리합니다. |
| 부분 교체 | 자본화 + 제거 | 새 부분 원가를 자산으로 잡고, 교체된 기존 부분 장부금액을 제거합니다. |
| 종합검사 | 자본화 + 제거 | 검사 원가를 자산으로 잡고, 직전 검사 원가의 남은 금액을 제거합니다. |
| 개량·증설 | 자본화 | 능력 증가·내용연수 연장 지출을 장부금액에 더합니다. |
| 일상 수선유지를 자산으로 계상 | 점검 필요 | 자산에서 빼고 수선비로 돌립니다. |
| 부분 교체 후 기존 부분 미제거 | 점검 필요 | 기존 부분 장부금액을 폐기 처리합니다. |
| 개량·증설을 비용 처리 | 점검 필요 | 인식 요건을 확인해 자산으로 옮깁니다. |
| 종합검사를 비용 처리 | 점검 필요 | 검사 원가 자본화와 직전 검사 원가 제거를 확인합니다. |
| 일상 수선이 5천만 원 이상 | 확인 필요 | 부분 교체나 개량에 해당하지 않는지 확인합니다. |
이 화면이 대신 정하지 않는 것
판정 결과는 확인 대상을 알리는 표시이며, 기준서 충족 여부를 단정하지 않습니다. 지출 유형은 정비활동유형으로 1차 분류한 값이고, 교체 부분의 장부금액을 따로 알 수 없으면 새 부분 원가를 기준으로 추정할 수 있습니다. 5천만 원 기준은 확인 대상을 고르는 참고값입니다. 최종 판단은 기준서 원문에 따라 회사와 감사인이 합니다.
정비 지출에서 자본화 대사까지 5단계 산출
| 단계 | 내용 |
|---|---|
| 1단계 | 지출 유형을 나눈다 — 일상 수선유지 / 부분 교체 / 종합검사 / 개량·증설 |
| 2단계 | 기준 자본화액을 구한다 — 부분 교체·종합검사·개량 = 지출액, 일상 수선유지 = 0 |
| 3단계 | 기준 제거액을 구한다 — 부분 교체·종합검사 = 기존 부분(직전 검사) 장부금액, 그 외 = 0 |
| 4단계 | 장부 처리를 가져온다 — 장부 자본화액 = 자산 정산액, 장부 제거액 = 폐기 처리액 |
| 5단계 | 장부와 대사한다 — 자본화 차이 = 장부 − 기준, 제거 차이 = 장부 − 기준 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 회계연도 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 지출 유형 | 선택 | 전체 / 일상 수선유지 / 부분 교체 / 종합검사 / 개량·증설 |
| 공장 | 선택 | P1 평택공장 · P2 구미공장 · P3 창원공장 · P4 본사 |
| 판정 상태 | 선택 | 전체 / 정상 / 점검 필요 / 확인 필요 |
결과 컬럼
| 영역 | 컬럼 · 표시 |
|---|---|
| 후속원가 자본화 대사 요약 | 지출 건수 · 지출액 · 기준/장부 자본화액 · 기준/장부 제거액 · 차이 합계 · 예외 건수 |
| 후속원가 지출 명세 | 지출번호 · 공장 · 자산번호 · 지출 내용 · 지출 유형 · 지출액 · 교체 부분 장부금액 · 기준/장부 자본화액 · 기준/장부 제거액 · 판정 |
| 지출 유형별 · 자산 클래스별 · 공장별 집계 | 구분 · 건수 · 지출액 · 기준/장부 자본화액 · 기준/장부 제거액 |
| 점검 예외 | 예외번호 · 지출번호 · 예외 유형 · 내용 · 차이 · 중요도 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 유형자산 후속원가 관점의 조회·검증을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
IW38 | 정비오더 조회 | 지출 원천인 정비오더와 정비활동유형을 확인합니다 |
KO88 | 오더 정산 | 정비오더가 비용(코스트센터)과 자산 중 어디로 정산됐는지 확인합니다 |
AW01N | 자산 탐색기 | 자산별 취득·폐기 거래와 장부금액을 확인합니다 |
ABAVN | 자산 폐기(매각 없음) | 교체된 기존 부분의 장부금액 제거를 기표합니다 |
FAGLL03 | G/L 개별항목 조회 | 수선비 계정에 개량·검사 원가가 섞였는지 건별로 확인합니다 |
IFRS 요구사항 매핑표
| 기준서 | 요구사항 | 이 화면의 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IAS 16 (K-IFRS 제1016호) | 일상적인 수선유지 원가는 장부금액에 포함하지 않고 발생 시 비용 | 일상 수선 기준 자본화액 0 과 자산 계상 검출 | AFIH · ACDOCA | 정비활동유형 매핑은 회사 기준입니다. |
| IAS 16 (K-IFRS 제1016호) | 부분 교체 원가는 인식 요건 충족 시 장부금액에 포함, 교체된 부분은 제거 | 기존 부분 미제거 검출 | ANEP · ANLC | 교체 부분은 하위자산으로 관리하면 추적이 쉽습니다. |
| IAS 16 (K-IFRS 제1016호) | 정기 종합검사 원가는 교체로 보아 장부금액에 포함, 직전 검사 원가 잔액 제거 | 종합검사 비용 처리 검출 | ANEP · AUFK | 검사 주기는 법령·설비 특성에 따릅니다. |
| IAS 16 (K-IFRS 제1016호) | 미래 경제적 효익 유입 가능성이 높고 원가를 신뢰성 있게 측정할 수 있으면 자산 인식 | 개량·증설 비용 처리 검출 | COBRB · ACDOCA | 인식 요건 판단은 회사 몫입니다. |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
AUFK | AUFNR · AUART · BUKRS · ANLN1 | 정비오더와 대상 자산 |
AFIH | AUFNR · ILART · EQUNR | 정비활동유형(지출 유형 분류) |
COBRB | OBJNR · KONTY · ANLN1 · KOSTL | 오더 정산 규칙(자산/코스트센터) |
ANEP | ANLN1 · ANLN2 · BWASL · ANBTR | 자산 취득·폐기 거래 |
ACDOCA | RBUKRS · GJAHR · RACCT · HSL · AUFNR | 정비오더 실적과 수선비 전표 |
define view entity ZC_SubsequentCostItem
as select from ZI_MaintOrderCost as mo
left outer join ZI_OrderSettlement as st on st.OrderId = mo.OrderId
{
key mo.OrderId as SpendId,
mo.Plant as Plant,
mo.FixedAsset as AssetNo,
mo.MaintActivityType as SpendType,
mo.ActualCost as SpendAmt,
st.SettledToAssetAmount as BookCap
}
표준 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.Table — sap.m.ObjectStatus로 판정 상태를 표준 ValueState 로만 표시 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon · lodash · moment, OData 서비스에 연결 |
Component.js | 화면 상태·조회조건 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.subcost · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 대사 요약 · 5개 탭 |
view/DetailDialog.fragment.xml | 상세 내역 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드 |
controller/BaseController.js | CSV 다운로드 공통 처리 |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 금액 · 비율 · 상태 표시 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 지출 14건을 기준으로 자본화액과 비용의 합이 지출액과, 제거액이 교체 부분 장부금액과 원(KRW) 단위로 맞물리도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 기준 자본화액 = 부분 교체·종합검사·개량은 지출액, 일상 수선은 0 | 통과(차이 0) |
| 기준 제거액 = 부분 교체·종합검사는 기존 부분 장부금액, 그 외 0 | 통과(차이 0) |
| 자본화액 + 비용 = 지출액 (기준·장부 모두) | 통과(차이 0) |
| 일상 수선유지 기준 자본화액 = 0 | 통과(차이 0) |
| 장부 자본화·제거액 = 기준 | 통과(의도적 예외 제외 차이 0) |
| 지출 유형별 집계 = 명세 집계 | 통과(차이 0) |
| 자산 클래스별 집계 = 명세 집계 | 통과(차이 0) |
| 공장별 집계 = 명세 집계 | 통과(차이 0) |
| 대사 요약행 = 실제 집계 결과 | 통과(차이 0) |
| 금액 차이 건 = 예외 등록 건 | 통과(의도적 예외 제외 차이 0) |
| 확인 대상 건 안내 | 수선비 자본화 1건 · 기존 부분 미제거 1건 · 개량 비용 처리 1건 · 종합검사 비용 처리 1건 · 대규모 일상 수선 1건(의도적으로 구성한 케이스) |
| 조회 조건 전달 — 14건 전체 · 지출 유형 필터 5건 · 지출액 내림차순 top 3 정렬 확인 · __count 14 일치 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세까지 실동작 후 캡처 | 6/6 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면의 판정이 곧 기준서 충족 여부인가요?
아닙니다. 이 화면은 유형자산 후속원가의 자본화·비용 처리와 교체 부분 제거 결과를 집계·대사해 확인이 필요한 건을 가려내는 점검 도구입니다. 최종 판단은 기준서 원문에 따라 회사와 감사인이 합니다.
적용 시기와 범위는 어떻게 되나요?
IAS 16 유형자산(K-IFRS 제1016호)은 이미 시행 중인 기준서입니다. 이 화면은 이미 보유한 유형자산에 취득 후 추가로 들어간 지출을 다룹니다. 정비·개량 지출은 매달 발생하므로 결산마다 점검할 대상입니다.
교체한 부분을 왜 제거해야 하나요?
새 엔진 원가를 자산에 더하면서 옛 엔진 장부금액을 그대로 두면, 차 한 대에 엔진 두 개가 자산으로 남습니다. 그래서 새 부분을 자산으로 잡을 때 나간 부분의 장부금액은 폐기 처리해 손익으로 보냅니다. 기존 부분의 장부금액을 따로 알 수 없으면 새 부분 원가를 근거로 추정할 수 있습니다.
금액이 크면 무조건 자본화하나요?
아닙니다. 기준은 금액이 아니라 지출의 성격입니다. 외벽 도장처럼 원래 상태를 유지하는 지출은 금액이 커도 비용이고, 생산능력을 늘리는 개량은 작아도 자산 대상입니다. 이 화면의 5천만 원 기준은 분류를 다시 볼 만한 건을 고르는 참고값일 뿐입니다.