비화폐성 정부보조금 인식·이연수익 점검 — 무상으로 받은 자산의 인식금액·감가상각·이연수익을 다시 계산해 원장과 맞춰 보는 화면
인식 정책별 재계산 · 점검 코드 다섯 가지 · 정책별 · 유형별 집계 · 정합성 대사 · 건별 연도별 줄 — 소개 영상과 실제 화면 7종, 그리고 CDS 코드까지
소개 영상블로그 목차 순서대로8개 장면표지 → 처음 연 화면 → 점검 필요 건 → 정책별 집계 → 유형별 집계 → 상세 → 대사 → 정리
도입 포인트 — 이 앱을 사용해야 하는 이유
정부나 지자체, 공공기관에서 설비·건물·토지·소프트웨어를 무상으로 넘겨받는 회사의 결산에는 늘 같은 질문이 따라옵니다. 이 자산을 얼마로 인식했나, 같은 금액으로 보조금(이연수익)을 세웠나, 감가상각이 돌 때 수익 인식도 같은 속도로 돌고 있나. 이 세 답은 자산 마스터 · 감가상각 실행 결과 · 전표에 흩어져 있어, 결산 때마다 엑셀에서 다시 모아야 합니다. 이 앱은 세 답을 한 화면에서 다시 계산해 원장과 맞대고, 어긋난 건에만 점검 사유를 붙여 줍니다.
핵심 포인트 여섯 가지
| 포인트 | 고객이 얻는 것 | 지금 방식이라면 |
|---|---|---|
| ① 자산과 보조금을 같은 금액에서 다시 계산 | 인식 정책이 공정가치 방식이면 수취일 공정가치, 명목금액 방식이면 명목금액에서 출발해 자산 장부금액과 이연수익 잔액을 함께 계산합니다. 두 값의 출발점이 하나라서 어느 한쪽만 갱신된 건이 바로 드러납니다. | 자산 쪽은 감가상각 실행 결과로, 보조금 쪽은 전표 잔액으로 따로 보고 서로 맞는지는 눈으로 대조합니다. |
| ② 점검 코드 다섯 가지 | 정책과 다른 인식 방식, 일시 수익 처리, 토지의 감가상각 계상, 수익 인식 기간 불일치, 자산과 보조금 인식금액 불일치를 건별로 한 줄에 적어 줍니다. | 결산 점검표에 사람이 건별로 ‘이상 없음’을 적고, 이유는 담당자 기억에 있습니다. |
| ③ 정책별 · 자산 유형별 집계 | 어느 정책에서, 어느 자산 유형에서 이연수익 잔액이 원장과 어긋났는지를 합계로 먼저 봅니다. 집계 합계는 명세 합계와 같아야 하며 화면이 매번 검산합니다. | 필요한 단면마다 피벗을 새로 만들고, 합계가 서로 안 맞으면 원인을 찾느라 시간을 씁니다. |
| ④ 화면이 만든 숫자끼리의 정합성 대사 | 인식금액 · 장부금액 · 이연수익 · 순손익 효과 · 연도별 줄 · 집계의 여섯 식을 건별로 돌려 차이 0건을 확인합니다. 화면 자체의 산식 오류는 여기서 먼저 걸러집니다. | 숫자가 틀렸을 때 원장이 틀린 것인지 점검 도구가 틀린 것인지부터 가려야 합니다. |
| ⑤ 건별 상세에서 연도별 줄까지 | 행을 누르면 보조금 정보, 원장 인식 방식과 기간, 회계연도별 감가상각 · 수익 인식 · 이연수익 잔액 줄이 팝업으로 열립니다. 감사인 질문에 그 자리에서 답할 수 있습니다. | 연도별 줄을 엑셀로 다시 펼쳐 만들고, 그 파일은 담당자 PC에 남습니다. |
| ⑥ 읽기 전용 · 표준 T-code 연계 | 화면은 조회와 점검만 합니다. 전기나 수정은 하지 않으므로 권한과 결산 일정에 영향을 주지 않고, 확인은 AS03 · AW01N · AFAB · FAGLL03 같은 표준 거래로 이어집니다. | 점검용 파일을 만들어 돌리는 순간부터 그 파일이 별도 통제 대상이 됩니다. |
사례로 보는 효과 — 6건이 가려낸 격차
기준 연월 202412 의 샘플(가상 자료) 32건을 다시 계산하면 재계산 인식금액 합계는 16,647,005,000원, 자산 장부금액은 14,010,555,625원, 이연수익 잔액은 12,527,111,180원입니다. 원장은 자산 장부금액이 재계산보다 785,727,885원 적고, 이연수익 잔액은 2,172,356,217원 적습니다. 전체 합계만 보면 “원장이 조금 적다”로 끝날 수 있는 숫자인데, 건별로 내리면 6건에서 모두 나온 차이입니다.
| 점검 코드 | 어떤 모습이었나(가상 자료) | 원장−재계산 차이 | 먼저 확인할 것 |
|---|---|---|---|
| A01 (확인 필요) | 정책은 공정가치 방식인데 원장에는 명목금액으로 인식된 기계장치 2건 | 자산 −127,603,802원 · −494,999,083원 (이연수익도 같은 금액) | 수취일 평가 자료와 정책 적용 여부 |
| A02 (점검 필요) | 수취 시점에 보조금을 일시 수익으로 처리해 이연수익 잔액이 0 인 건물 1건 | 이연수익 −1,091,200,000원 | 이연수익 계상 여부와 수익 인식 기준 |
| A03 (점검 필요) | 내용연수가 없는 토지에 원장이 감가상각을 계상한 1건 | 자산 −163,125,000원 | 비상각 자산 분류와 상각 키 |
| A04 (점검 필요) | 원장 수익 인식 기간이 자산의 상각 기간보다 짧은 기계장치 1건 | 이연수익 −191,166,666원 | 이연수익 상각 기간 설정 |
| A05 (점검 필요) | 자산 쪽만 갱신되어 이연수익 인식금액이 자산 인식금액과 다른 건물 1건 | 이연수익 −267,386,666원 | 양쪽 인식금액의 평가 기준일 |
다섯 코드의 차이를 더하면 자산 쪽은 785,727,885원, 이연수익 쪽은 2,172,356,217원으로 전체 차이와 1원도 어긋나지 않습니다. 합계가 맞는다는 것은 이 6건 말고는 원장과 재계산이 같다는 뜻이고, 점검 대상이 6건으로 줄어든다는 뜻입니다. 이 숫자는 어디까지나 검증용으로 만든 가상 자료입니다. 실제 환경에서 같은 모습이 나온다면 원인은 평가 자료일 수도, 원장 설정일 수도, 정책 해석일 수도 있으므로 점검 필요로만 읽고 회사와 감사인이 판단합니다.
자산 · 보조금 한 건의 재계산
경과 개월 = (기준 연 − 수취 연) × 12 + (기준 월 − 수취 월) · 인식금액 = 공정가치(F) 또는 명목금액(N)
누적 감가상각 = 인식금액 × min(경과, 내용연수) ÷ 내용연수 · 누적 수익 인식 = 인식금액 × min(경과, 수익 인식 기간) ÷ 수익 인식 기간
자산 장부금액 = 인식금액 − 누적 감가상각 · 이연수익 잔액 = 인식금액 − 누적 수익 인식
감가상각 자산은 수익 인식 기간이 내용연수와 같아 순손익 효과 누계가 0이고, 감가상각이 없는 토지는 누적 수익 인식액이 그대로 남습니다. 샘플은 정액법 월할 · 잔존가치 0 으로 가정했으며, 실제 상각 방법과 잔존가치는 확인이 필요합니다.
도입하면 달라지는 것
- 결산 점검 준비 — 인식금액 · 감가상각 · 이연수익 · 원장 대조가 한 화면에서 나오므로 건별 엑셀 취합이 줄어듭니다.
- 점검의 초점 — ‘전부 다시 본다’가 아니라 ‘어긋난 건과 그 이유 코드를 본다’로 바뀝니다.
- 감사 대응 — 연도별 재계산 줄과 대사식이 화면에 있어, 금액이 어떻게 나왔는지 같은 자리에서 보여 줄 수 있습니다.
- 정책 일관성 — 정책(공정가치·명목금액)과 원장 인식 방식이 다른 건이 정책별 집계에서 먼저 보입니다.
이런 회사에 맞습니다
국가·지자체·공공기관으로부터 설비 · 건물 · 토지 · 소프트웨어를 무상으로 이전받아 회계처리하는 제조·연구·공공 서비스 회사, 자산 마스터와 이연수익 계정을 따로 점검하느라 결산 때 시간이 드는 자산회계·재무회계 팀, 그리고 감사인에게 인식 근거를 매번 다시 만들어 설명해야 하는 조직에 맞습니다. 현금으로 받는 보조금(비화폐성이 아닌 보조금)이나 수익 관련 보조금은 이 화면의 범위 밖입니다.
숫자를 믿을 수 있는가 — 검증 결과
점검 도구에서 가장 비싼 질문은 “이 도구가 만든 숫자는 맞나” 입니다. 그래서 화면이 만든 숫자끼리의 산식을 먼저 세워 전수로 돌렸습니다. 아래는 기준 연월 202412 의 결과입니다.
| 대사식 | 구분 | 검사 건수 | 차이 건수 |
|---|---|---|---|
| 재계산 인식금액 = 정책 기준금액(F 공정가치 · N 명목금액) | 정합성 | 32 | 0 |
| 자산 장부금액 = 인식금액 − 누적 감가상각 | 정합성 | 32 | 0 |
| 이연수익 잔액 = 인식금액 − 누적 수익 인식 | 정합성 | 32 | 0 |
| 자산 − 이연수익 = 누적 수익 인식 − 누적 감가상각 | 정합성 | 32 | 0 |
| 연도별 줄 합계 = 명세 누적 감가상각 · 수익 인식 | 정합성 | 32 | 0 |
| 정책별 집계 = 유형별 집계 = 명세 합계 | 정합성 | 3 | 0 |
| 원장 자산 장부금액 = 재계산 자산 장부금액 | 장부 점검 | 32 | 3 (최대 494,999,083원) |
| 원장 이연수익 잔액 = 재계산 이연수익 잔액 | 장부 점검 | 32 | 5 (최대 1,091,200,000원) |
| 원장 순효과 = 재계산 순효과 | 장부 점검 | 32 | 4 (최대 1,091,200,000원) |
앞의 여섯 식은 화면이 만든 숫자끼리의 검산이라 모두 0건이어야 하고 실제로 0건입니다. 뒤의 세 식은 원장과 맞대는 점검이라 0이 아닌 것이 정상이며, 이 샘플에서는 의도적으로 넣은 예외 여섯 건이 이 세 줄에 나타납니다. 화면 쪽은 이와 별도로 브라우저 자동화로 돌려 확인했습니다 — 조회 → 점검 필요만 보기 → 정책별 · 유형별 탭 → 대사 탭 → 행 상세 순서로 열어 보며 조회 건수(25건 · 15건 · 32건)와 요약 숫자가 서로 맞는지 매번 다시 잽니다.
사용 방법
- 기준 연월(6자리, 기본 202412)을 확인하고 조회를 누릅니다. 기준 연월 입력칸에서 Enter 를 눌러도 조회됩니다. 필요하면 자산 유형 · 인식 정책 · 수취일 기간 · 점검 코드 · 점검 결과를 골라 범위를 좁힙니다. ‘전체’는 그 조건을 서버로 보내지 않습니다.
- 위쪽 요약에서 원장−재계산 자산 차이와 이연수익 차이, 점검 필요 건수를 먼저 봅니다.
- 점검 결과를 점검 필요로 두면 판정에 걸린 건만 남습니다. 건별 점검 코드(A01~A05)와 점검 내용을 읽습니다.
- 탭을 인식 정책별 집계 → 자산 유형별 집계 → 대사 결과 순서로 넘기며 차이가 어느 단면에 몰려 있는지 봅니다.
- 궁금한 행을 눌러 상세 팝업에서 회계연도별 감가상각 · 수익 인식 · 이연수익 잔액 줄을 확인합니다.
- 필요하면 지금 보고 있는 탭을 CSV로 내려받아 점검 의견을 덧붙입니다. 원인 확인은 AS03 · AW01N · AFAB · FAGLL03 같은 표준 거래에서 합니다.
실행 화면
실제로 돌아가는 화면 7종을 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있고, 화면마다 무엇을 하는 자리이고 왜 그렇게 두었는지를 아래에 적었습니다. 숫자는 모두 같은 가상 자료에서 나온 것이라 화면끼리 서로 맞춰 보셔도 됩니다.
처음 열었을 때
조회조건 한 줄 아래에 요약 숫자가, 그 아래에 탭 네 개가 놓입니다. 탭 머리의 숫자는 건수입니다.

화면이 열리면 한 번 자동으로 조회합니다. 조회조건은 기준 연월(필수)·자산 유형·인식 정책·수취일 기간·점검 코드·점검 결과 여섯 칸이고, 조회 버튼은 맨 오른쪽에 있습니다. 요약에서 먼저 볼 숫자는 두 개입니다 — 원장−재계산 자산 차이(−785,727,885원)와 원장−재계산 이연수익 차이(−2,172,356,217원). 둘 다 0이 아니면 아래 점검 필요 건수가 왜 0이 아닌지 바로 이어서 봅니다.
점검 필요 건만 걸러 보기
결산에서 실제로 시간을 쓰는 곳은 ‘어긋난 건’입니다. 점검 결과 한 칸만 바꾸면 그 건들만 남습니다.

전체 32건 가운데 건별 판정에 걸린 6건만 모은 모습입니다. 한 건에는 가장 먼저 걸린 코드 하나만 붙습니다. 이 화면은 어느 쪽이 옳다고 말하지 않습니다 — 재계산과 원장이 다르다는 사실과, 그 차이가 어느 입력에서 비롯됐을 가능성이 큰지만 적고 최종 판단은 회사와 감사인에게 남깁니다.
집계로 단면을 나눠 보기
건별 목록에서 원인을 찾기 전에, 인식 정책과 자산 유형 두 단면으로 차이가 어디에 몰려 있는지 먼저 봅니다. 집계 합계는 명세 합계와 같아야 합니다.

명목금액 방식은 건당 1,000원으로 인식하므로 금액이 작습니다(샘플 기준 5건 합계 5,000원). 그래도 이 줄이 따로 있어야 하는 이유는, 같은 회사 안에서 정책이 섞여 있을 때 원장이 어느 정책으로 기록됐는지를 정책 단위로 맞춰 볼 수 있기 때문입니다. 공정가치 방식 줄의 이연수익 잔액 차이가 이번 샘플의 점검 필요 6건과 맞물립니다.

감가상각 자산은 보조금 수익 인식 기간과 감가상각 기간이 같아서 수익 인식과 감가상각이 서로 상쇄되고 순손익 효과 누계가 0 입니다. 토지만 감가상각이 없어 누적 수익 인식액이 그대로 양수(1,483,444,445원)로 남습니다. 유형별로 보면 토지·건물·기계장치 줄에 점검 필요가 몰려 있고 설비·장비와 소프트웨어는 원장과 재계산이 같습니다.
대사 — 화면이 만든 숫자와 원장
대사 탭은 아홉 줄입니다. 여섯 줄은 산식 검증, 세 줄은 장부 점검입니다.

대사는 두 갈래입니다. 앞의 여섯 식은 화면이 만든 숫자끼리의 산식 검증(인식금액 = 정책 기준금액, 자산 장부금액 = 인식금액 − 누적 감가상각 등)이라 늘 0이어야 합니다. 뒤의 세 식은 원장과 재계산을 맞대는 장부 점검이라 0이 아닐 수 있고, 0이 아닌 것이 곧 이 화면이 찾아 주는 대상입니다.
건별 상세
합계에서 건으로, 건에서 연도별 줄로 내려갑니다.

숫자가 왜 그렇게 나왔는지는 상세에서 확인합니다. 기말 경과 개월로 회계연도마다 다시 계산한 줄이 나오고, 당기분은 전기말 누계와의 차이입니다. 감사 대응에서 ‘이 금액이 어떻게 나왔느냐’는 질문이 오면 이 팝업을 열어 설명하면 됩니다.
화면이 좁아졌을 때

노트북 반 화면이나 태블릿에서도 같은 조회·같은 숫자입니다. 표는 가로로 넘기면 되고, 요약은 세로로 쌓입니다.
SAP 표준 기능 확장 포인트
이 앱은 SAP 표준을 대체하지 않습니다. 표준이 이미 잘하는 일은 표준에 맡기고, 표준이 끊기는 자리만 이어 붙이는 쪽으로 만들었습니다. 자산 마스터 관리, 감가상각 실행, 전표 전기는 모두 표준 거래가 맡고, 이 앱은 그 결과를 다시 계산한 값과 맞대어 보는 읽기 전용 화면입니다.
표준으로 되는 것과 안 되는 것
| 하고 싶은 일 | SAP 표준 | 표준에서 걸리는 자리 | 이 앱이 하는 일 |
|---|---|---|---|
| 자산 마스터 조회 | AS03 | 자산 한 건씩 열어야 합니다 | 수취일 · 내용연수를 건별 목록에 모아 재계산의 입력으로 씁니다 |
| 자산별 장부금액 대조 | AW01N | 화면은 자산 단위이고 보조금(이연수익)은 이 화면에 없습니다 | 자산 장부금액과 이연수익 잔액을 한 줄에서 함께 비교합니다 |
| 월별 감가상각 실행 | AFAB | 실행 결과는 자산의 상각이지 보조금의 수익 인식이 아닙니다 | 재계산 누적 감가상각을 실행 결과와 맞대고, 수익 인식 기간이 같은지 따로 봅니다 |
| 자산 이력 시트 | S_ALR_87011963 | 기초 · 증가 · 상각 · 기말의 흐름이지 인식 정책별 검증은 아닙니다 | 정책별 · 유형별 집계 합계를 시트의 기말 금액과 맞춰 봅니다 |
| 이연수익 계정 개별 전표 | FAGLL03 | 전표는 보이지만 ‘이 자산의 이연수익이 맞는 금액인가’는 사람이 계산합니다 | 건별 재계산 이연수익 잔액을 내놓고 원장 잔액과의 차이를 적습니다 |
| 계정 잔액 합계 대사 | FS10N | 합계는 맞아도 건별로 어긋난 것이 서로 상쇄될 수 있습니다 | 건별로 내려가 상쇄된 차이도 보이게 합니다 |
| 점검 사유 기록 | 결산 점검표 · 메일 | 사유가 건과 떨어져 있어 다음 결산에 이어지지 않습니다 | 건별 점검 코드와 내용이 같은 줄에 붙어 CSV 로 내려갑니다 |
T-code 별 연계 지점
이 앱이 표준 거래의 어느 자리를 이어받는지를 적었습니다. 운영에 올릴 때 “기존 점검 방식을 없애야 하느냐” 는 질문이 꼭 나오는데, 대부분은 없애지 않고 둡니다 — 대사와 감사 대응의 최종 근거는 표준 거래가 맡는 편이 안전합니다.
| T-code | 이름 | 연계 |
|---|---|---|
AS03 | 자산 마스터 레코드 조회 | 재계산의 입력값인 자산 클래스 · 자본화일 · 내용연수 · 감가상각 키를 확인하는 자리입니다. 화면의 점검 사유가 ‘상각 키 확인’ 이면 여기서 시작합니다. |
AW01N | 자산 탐색기 | 한 자산의 평가 영역별 장부금액을 열어 재계산 자산 장부금액과 맞춰 봅니다. 평가 영역이 여럿이면 어느 영역과 비교하는지를 먼저 정해야 합니다(확인 필요). |
AFAB | 감가상각 실행 | 월별 감가상각 전기 결과가 나오는 자리입니다. 재계산 누적 감가상각과 이 실행 결과가 다르면 상각 기간 설정부터 봅니다. 이 앱은 실행하지 않고 읽기만 합니다. |
S_ALR_87011963 | 자산 이력 시트 | 기초 · 증가 · 상각 · 기말의 흐름입니다. 재계산 자산 장부금액의 합계를 시트의 기말 금액과 맞춰 보는 것이 첫 번째 대사입니다. |
FAGLL03 | G/L 계정 개별항목 조회(신규 원장) | 이연수익 계정의 개별 전표를 열어 원장 이연수익 잔액이 어떤 전표로 쌓였는지 봅니다. 일시 수익으로 처리된 건(A02)은 여기서 수취 시점 전표가 확인됩니다. |
FS10N | G/L 계정 잔액 조회 | 이연수익 계정 잔액 합계를 화면의 원장 이연수익 합계와 맞춥니다. 합계가 맞아도 건별 차이가 상쇄됐을 수 있어, 합계 대사만으로 점검을 끝내지 않습니다. |
FB03 | 전표 조회 | 개별항목에서 전표번호를 집어 넘어가는 자리입니다. 수취일 평가 자료가 전표에 첨부되어 있는지도 이 단계에서 확인합니다. |
SE16N | 테이블 조회 | 검수 단계에서 화면 숫자를 원천 테이블과 맞춰 볼 때 씁니다. 운영에서는 일반 사용자에게 열지 않는 것이 보통입니다. |
SM30 | 테이블 뷰 유지보수 | 정책 · 내용연수 매핑 표를 회계팀이 직접 고치도록 뷰를 만들어 두는 자리입니다. |
기준서 요구사항과 화면의 대응
아래는 기준서의 요구사항을 이 화면의 어느 기능이 점검하는지 짝지은 표입니다. 기준서 문단번호는 원문과 대조해 확인한 뒤에만 적을 수 있어 이 글에는 적지 않았습니다 — 문단번호는 원문 확인 필요입니다.
| 기준서 | 요구사항(요지) | 대응 기능 | 비고 |
|---|---|---|---|
| IAS 20 정부보조금의 회계처리와 정부지원의 공시(K-IFRS 제1020호) | 비화폐성 보조금은 공정가치로 자산과 보조금을 인식하거나, 둘 다 명목금액으로 인식하는 방식 중에서 선택 | 인식금액 재계산, 정책 대 원장 인식 방식 비교(A01) | 정책 선택은 회사가 정하며, 이 화면은 선택한 정책과 원장이 같은지만 봅니다 |
| IAS 20 | 자산 관련 보조금은 자산의 감가상각 비율에 따라 체계적으로 수익 인식 | 이연수익 잔액 재계산, 수익 인식 기간 비교(A02 · A04) | — |
| IAS 20 | 감가상각하지 않는 자산(토지)의 보조금은 의무를 이행하는 기간에 걸쳐 수익 인식할 수 있음 | 토지 수익 인식 기간 재계산, 상각 계상 비교(A03) | 이행 조건 자체의 충족 판단은 회사와 감사인이 합니다(확인 필요) |
| IAS 20 | 자산 관련 보조금은 이연수익으로 표시하거나 자산 장부금액에서 차감하여 표시 | 이 화면은 이연수익으로 표시하는 방식을 점검 | 차감 표시 방식은 이 화면의 범위 밖입니다(확인 필요) |
| IAS 38 무형자산(K-IFRS 제1038호) | 정부보조금으로 무상 취득한 무형자산도 공정가치 또는 명목금액으로 최초 인식 | 소프트웨어 유형 행의 인식 방식 비교 | — |
| IAS 16 유형자산(K-IFRS 제1016호) | 유형자산의 감가상각은 내용연수에 걸쳐 체계적으로 배분 | 정액법 월할 감가상각 재계산 | 상각 방법과 잔존가치는 정액 · 0 으로 가정했습니다(확인 필요) |
S/4HANA 분석 스택과의 자리
S/4HANA 에서는 CDS 뷰로 만든 쿼리를 표준 Fiori 앱이 그대로 띄워 줍니다. 이 앱을 올리기 전에 표준 자산회계 Fiori 앱과 앞으로 겹치는 자리를 먼저 확인하는 편이 좋습니다. 표준 앱은 자산 단위의 조회와 실행이 강하고, 이 앱은 정책 · 보조금 · 원장을 한 줄에서 다시 계산해 맞대는 점검이 강합니다. 겹치는 부분은 표준을 쓰고, 이 앱은 표준에 없는 ‘보조금 이연수익과 자산의 동시 재계산’ 자리에 둡니다. 아래 CDS 구성은 그 자리를 운영 환경으로 옮길 때의 뼈대입니다.
CDS 구성
이 사례의 화면은 서비스가 내려 주는 JSON 을 그대로 받아 보여 줍니다. 데모라서 되는 일이고, 운영 데이터에서는 재계산을 DB 쪽으로 내립니다. 운영으로 올릴 때 가장 먼저 하는 일이 정책 매핑을 정하고 재계산 · 원장 집계 · 판정을 CDS 로 내리는 것입니다. 아래는 그때 만드는 뷰들을 레이어 순서대로 적은 것입니다.
코드는 스케치입니다. 필드 이름과 표준 뷰 이름은 릴리스·환경에 따라 다르므로, 그대로 붙여 넣기 전에 View Browser(F2170) 로 실제 이름을 확인해야 합니다. 확인이 필요한 자리는 주석에 적어 두었습니다. 이 화면의 판정 규칙(점검 코드 다섯 가지)은 회사의 정책을 대신 정하지 않으며, 판정 결과도 ‘점검 필요’ · ‘확인 필요’ 로만 내보냅니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 | zgrant_policy | 자산 유형 → 인식 정책 · 내용연수 · 수익 인식 기간 매핑 | 정책은 회사가 정하고 자주 바뀌지 않으므로 코드에 박지 않고 테이블로 둡니다. |
| 기준 | ZI_GrantAsset | 자산 마스터에서 수취일 · 자산 클래스 · 내용연수를 읽음 | 재계산의 입력을 한 뷰에 모아 원천이 바뀌어도 위쪽이 흔들리지 않게 합니다. |
| 계산 | ZI_GrantRecalc | 정책에 따른 인식금액 · 경과 개월 · 감가상각 · 수익 인식 · 잔액 계산 | 산식을 한 곳에서만 정의해 화면과 배치가 같은 숫자를 씁니다. |
| 원장 | ZI_GrantLedger | ACDOCA 에서 자산 · 이연수익 계정 잔액을 자산 단위로 집계 | 원장 쪽 숫자를 계산 뷰와 같은 키로 맞춰 두어야 차이를 한 줄에서 뺄 수 있습니다. |
| 판정 | ZC_GrantCheck | 재계산 − 원장 차이와 점검 코드(A01~A05) | 판정 규칙을 화면에서 빼서 한 번만 정의합니다. |
| 집계 | ZC_GrantByPolicy | 정책별 · 유형별 합계와 차이 건수 | 집계 합계가 명세 합계와 같은지 DB 에서 한 번 더 확인합니다. |
| 권한 | ZI_GrantCheck (DCL) | 회사코드 · 사업영역 | 집계를 읽는 자리에 걸어야 합계의 뺄셈으로 새지 않습니다. |
| 서비스 | ZUI_GrantCheck | OData V2 서비스 정의 · 바인딩 | 화면이 부르는 엔티티셋을 이 정의에서 노출합니다. |
① 정책 · 내용연수 매핑 테이블
점검의 모든 숫자가 이 표에서 갈립니다. 어느 자산 유형이 어느 인식 정책을 쓰고, 수익 인식 기간이 얼마인지를 정하는 자리라 운영 전환에서 가장 먼저 합의해야 하는 항목입니다. 정책 선택 자체는 회사와 감사인이 정하며, 이 표는 그 결정을 담는 그릇일 뿐입니다.
" ────────────────────────────────────────────────────────────────
" zgrant_policy — 자산 유형 → 인식 정책 · 기간 매핑 (투명 테이블)
" 코드에 박지 않는 이유 : 정책이 바뀌었을 때 개발자를 부르지 않고
" 회계팀이 SM30 뷰에서 직접 고칠 수 있어야 한다.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '비화폐성 보조금 정책 매핑'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C " 고객 유지 — 전송(TR)으로 옮긴다
@AbapCatalog.dataMaintenance : #ALLOWED " SM30 뷰를 함께 만들어 둔다
define table zgrant_policy {
key mandt : mandt not null;
key bukrs : bukrs not null; " 회사코드
key asset_type : abap.char(1) not null; " L 토지 · B 건물 · M 기계장치 · E 설비·장비 · S 소프트웨어
key valid_from : abap.dats not null;
valid_to : abap.dats;
policy : abap.char(1); " F 공정가치 방식 · N 명목금액 방식 (회사가 정한다)
nominal_amt : abap.dec(18,0); " N 방식일 때 명목금액 (샘플은 1,000원)
oblig_months : abap.int4; " 비상각 자산의 수익 인식 기간 — 이행 조건 확인 필요
}
② 자산 기준 뷰
수취일과 내용연수를 읽는 뷰입니다. 수취일을 자산의 자본화일로 볼지, 별도로 관리하는 수취일 필드를 쓸지는 환경마다 다르므로 주석의 확인 필요 자리를 먼저 정합니다.
" ────────────────────────────────────────────────────────────────
" ZI_GrantAsset — 보조금 대상 자산 기준 (한 자산 한 행)
" 표준 뷰 이름·필드는 릴리스마다 다르다 → View Browser(F2170)로 확인
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #NOT_REQUIRED
@EndUserText.label : '보조금 대상 자산'
define view entity ZI_GrantAsset
as select from I_FixedAsset as Asset " 확인 필요: 자산 마스터 표준 CDS 뷰
association [0..1] to zgrant_policy as _Policy
on _Policy.bukrs = Asset.CompanyCode
and _Policy.asset_type = $projection.AssetType
{
key Asset.CompanyCode as CompanyCode,
key Asset.MasterFixedAsset as MasterFixedAsset,
key Asset.FixedAsset as FixedAsset,
Asset.AssetClass as AssetClass,
Asset.AssetCapitalizationDate as GrantDate, " 확인 필요: 수취일 필드를 따로 쓰는지
" 자산 클래스 → 유형 코드는 회사 체계에 맞춰 매핑한다(여기서는 자리표시)
cast( 'M' as abap.char(1) ) as AssetType,
" 감가상각 조건(내용연수)을 읽어 개월로 환산한다. 토지는 0. 확인 필요: 평가 영역 · 상각 키
cast( 0 as abap.int4 ) as LifeMonths,
_Policy.policy as Policy,
_Policy.nominal_amt as NominalAmt,
_Policy.oblig_months as ObligMonths
}
③ 재계산 뷰
화면의 산식이 이 뷰 하나에 있습니다. 경과 개월은 기준 연월과 수취 연월의 정수 월 차이이고, 감가상각과 수익 인식은 정액법 월할입니다. 평가 자료(수취일 공정가치)는 표준 필드에 없는 경우가 많아 FairValue 는 자리표시로 두었습니다.
" ────────────────────────────────────────────────────────────────
" ZI_GrantRecalc — 정책에 따른 인식금액과 월할 재계산
" 기준 연월은 파라미터로 받는다(p_period = 6자리 연월, 예 202412).
" 경과 개월 = (기준 연 − 수취 연) × 12 + (기준 월 − 수취 월)
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #NOT_REQUIRED
@EndUserText.label : '보조금 재계산'
define view entity ZI_GrantRecalc
with parameters
p_period : abap.char(6)
as select from ZI_GrantAsset as A
{
key A.CompanyCode,
key A.MasterFixedAsset,
key A.FixedAsset,
A.AssetType,
A.Policy,
" 정책 기준금액 : F 방식 = 수취일 공정가치, N 방식 = 명목금액
case A.Policy
when 'F' then cast( 0 as abap.dec(18,0) ) " 확인 필요: 수취일 평가 자료와 조인해 채운다
else A.NominalAmt
end as BasisAmt,
( cast( left( $parameters.p_period, 4 ) as abap.int4 )
- cast( left( cast( A.GrantDate as abap.char(8) ), 4 ) as abap.int4 ) ) * 12
+ ( cast( substring( $parameters.p_period, 5, 2 ) as abap.int4 )
- cast( substring( cast( A.GrantDate as abap.char(8) ), 5, 2 ) as abap.int4 ) )
as ElapsedMonths,
A.NominalAmt,
A.LifeMonths,
A.ObligMonths
}
④ 원장 집계 뷰
원장 쪽 숫자를 계산 뷰와 같은 키로 맞추는 뷰입니다. 자산 계정과 이연수익 계정의 범위는 회사마다 달라 매핑 테이블로 정하고, 이 스케치에서는 계정 범위를 주석으로만 표시했습니다. 차변은 양수, 대변은 음수로 들어 있는 원장 부호를 그대로 두고 표시용 부호는 위쪽 뷰에서 정합니다.
" ────────────────────────────────────────────────────────────────
" ZI_GrantLedger — 자산 단위 원장 잔액 (자산 계정 · 이연수익 계정)
" ACDOCA 의 HSL 은 차변 +, 대변 − 이다. 부호는 여기서 바꾸지 않는다.
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '보조금 원장 잔액'
define view entity ZI_GrantLedger
as select from acdoca as L
{
key L.rbukrs as CompanyCode,
key L.anln1 as MasterFixedAsset,
key L.anln2 as FixedAsset,
@Semantics.amount.currencyCode : 'Currency'
sum( case when L.racct between '0000150000' and '0000159999' " 확인 필요: 자산 계정 범위
then L.hsl else 0 end ) as LedgerCarry,
@Semantics.amount.currencyCode : 'Currency'
sum( case when L.racct between '0000260000' and '0000269999' " 확인 필요: 이연수익 계정 범위
then L.hsl else 0 end ) as LedgerDeferRaw,
L.rhcur as Currency
}
where L.rldnr = '0L' " 선도 원장
group by L.rbukrs, L.anln1, L.anln2, L.rhcur
⑤ 판정 뷰
재계산과 원장을 한 줄에서 빼고 점검 코드를 붙입니다. 코드는 가장 먼저 걸린 하나만 적고, 결과 상태는 ‘점검 필요’ · ‘확인 필요’ 로만 내보냅니다. 아래는 토지 상각 계상(A03)과 일시 수익 처리(A02)만 풀어 쓴 스케치이며, 나머지 코드는 원장의 인식 방식 · 기간 · 금액 필드(확인 필요)를 끌어와 같은 방식으로 조건만 바꿔 더합니다. 임계값은 코드에 박지 않고 파라미터나 매핑 테이블로 두는 편이 좋습니다.
" ────────────────────────────────────────────────────────────────
" ZC_GrantCheck — 재계산 − 원장 차이와 점검 코드
" 판정 순서 : A01 정책 불일치 → A02 일시 수익 → A03 토지 상각
" → A04 기간 불일치 → A05 금액 불일치 (먼저 걸린 하나만)
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '보조금 점검 판정'
define view entity ZC_GrantCheck
with parameters p_period : abap.char(6)
as select from ZI_GrantRecalc( p_period : $parameters.p_period ) as R
left outer join ZI_GrantLedger as L
on L.CompanyCode = R.CompanyCode
and L.MasterFixedAsset = R.MasterFixedAsset
and L.FixedAsset = R.FixedAsset
{
key R.CompanyCode,
key R.MasterFixedAsset,
key R.FixedAsset,
R.AssetType,
R.Policy,
R.BasisAmt,
" 재계산 자산 장부금액 = 인식금액 − 누적 감가상각 (정액법 월할, 토지는 상각 없음)
case
when R.LifeMonths = 0 then R.BasisAmt
when R.ElapsedMonths >= R.LifeMonths then cast( 0 as abap.dec(18,0) )
else cast( R.BasisAmt
- division( R.BasisAmt * R.ElapsedMonths, R.LifeMonths, 0 )
as abap.dec(18,0) )
end as CarryCalc,
L.LedgerCarry,
L.LedgerDeferRaw * -1 as LedgerDefer, " 이연수익은 대변(−)이라 부호를 바꿔 읽는다
case
when L.LedgerCarry is null then cast( 'I00' as abap.char(3) )
" A02 : 수취 시점에 일시 수익으로 처리되어 이연수익 잔액이 0
when L.LedgerDeferRaw = 0 and R.ElapsedMonths < R.ObligMonths
then cast( 'A02' as abap.char(3) )
" A03 : 내용연수가 없는 토지인데 원장 자산 금액이 인식금액과 다름(상각 계상 의심)
when R.AssetType = 'L' and L.LedgerCarry <> R.BasisAmt
then cast( 'A03' as abap.char(3) )
else cast( 'I00' as abap.char(3) )
end as CheckCode
" 결과 상태(점검 필요 · 확인 필요) 텍스트는 코드에서 파생하는 별도 뷰에서 붙인다
}
⑥ 정책별 · 유형별 집계 뷰
집계 합계가 명세 합계와 같아야 한다는 조건을 DB 에서도 한 번 더 확인하는 자리입니다. 같은 뷰를 정책 기준과 유형 기준으로 두 번 쓰지 말고, 집계 단위를 group by 한 줄로 바꿔 쓰는 편이 어긋날 여지가 적습니다.
" ────────────────────────────────────────────────────────────────
" ZC_GrantByPolicy — 인식 정책별 집계 (유형별은 group by 만 바꾼다)
" 집계 합계 = 명세 합계 라는 정합성 대사의 DB 쪽 확인 지점이다.
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '정책별 집계'
define view entity ZC_GrantByPolicy
with parameters p_period : abap.char(6)
as select from ZC_GrantCheck( p_period : $parameters.p_period ) as C
{
key C.Policy,
count(*) as Cnt,
sum( C.BasisAmt ) as BasisAmt,
sum( C.LedgerCarry ) as LedgerCarry,
sum( case when C.CheckCode <> 'I00' then 1 else 0 end ) as NeedCnt
}
group by C.Policy
⑦ 권한 (DCL)
" ────────────────────────────────────────────────────────────────
" ZI_GrantCheck — 권한 (DCL)
" 집계 화면에서 권한을 상세에만 걸면, 권한 없는 사람이
" 전사 합계와 자기 몫의 차이를 빼서 남의 사업영역 숫자를 알아낸다.
" 그래서 판정 뷰를 읽는 자리에 건다.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '보조금 점검 권한'
@MappingRole : true
define role ZI_GrantCheck {
grant select on ZC_GrantCheck
where ( CompanyCode ) = aspect pfcg_auth ( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
⑧ OData 서비스 정의
" ────────────────────────────────────────────────────────────────
" ZUI_GrantCheck — 서비스 정의 (바인딩은 OData V2 - UI)
" 화면이 부르는 엔티티셋 이름은 여기서 정한다.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '보조금 점검 서비스'
define service ZUI_GrantCheck {
expose ZC_GrantCheck as GrantSet;
expose ZC_GrantByPolicy as MethodSet;
}
운영 시점에 해야 할 일
개발보다 정하는 일이 많습니다. 아래 표의 왼쪽은 대부분 코딩이 아니라 합의입니다. 정책과 판단에 관한 항목은 회사와 감사인이 정하며, 이 앱은 정해진 내용을 입력으로 받아 점검할 뿐입니다.
| 해야 할 일 | 무엇을 정하나 | 정하지 않으면 | 누가 |
|---|---|---|---|
| 인식 정책 확정 | 비화폐성 보조금을 공정가치로 인식할지 명목금액으로 인식할지. 자산 유형별로 다르게 둘지 | 정책 대 원장 비교(A01)가 기준 없이 돌아 ‘확인 필요’가 늘어납니다 | 회계팀 · 감사인과 협의 |
| 수취일 · 평가 자료 확보 | 수취일 공정가치를 어디에 보관하는지(전표 첨부 · 별도 평가표). 표준 필드에 없으면 어느 테이블로 둘지 | 공정가치 방식의 인식금액을 재계산할 수 없습니다 | 자산회계 · 평가 담당 |
| 내용연수 · 상각 키 정리 | 자산 마스터의 내용연수와 감가상각 키가 정책 표와 같은 개월 수를 가리키는지 | 재계산 감가상각이 AFAB 실행 결과와 어긋나 점검이 노이즈가 됩니다 | 자산회계 |
| 비상각 자산의 수익 인식 기간 | 토지 보조금을 몇 개월에 걸쳐 수익 인식할지, 이행 조건이 무엇인지 | 토지 줄의 이연수익 잔액이 근거 없는 숫자가 됩니다 — 이행 조건 판단은 회사와 감사인 몫입니다 | 회계팀 · 감사인 |
| 표시 방식 확정 | 이연수익으로 표시할지 자산 장부금액에서 차감할지 | 이 화면이 점검하는 자리와 실제 표시가 달라집니다 (차감 표시는 이 화면의 범위 밖) | 회계팀 |
| 원장 계정 범위 | 자산 계정과 이연수익 계정의 범위. 여러 원장을 쓰면 어느 원장과 맞출지 | 원장 잔액 집계에 남의 계정이 섞이거나 빠집니다 | 회계팀 · FI 담당 |
| 점검 코드 임계 · 기간 | 차이가 몇 원 이상일 때 점검 필요로 둘지, 수익 인식 기간 불일치를 몇 개월부터 볼지 | 반올림 차이까지 점검 필요로 떠서 아무도 보지 않게 됩니다 | 회계팀 |
| 권한 설계 | 회사코드 · 사업영역 중 무엇으로 자를지. 전사 합계를 누구까지 볼지 | 합계의 뺄셈으로 남의 사업영역 숫자가 새어 나갑니다 | 권한 담당 · 보안 |
| 대사 체계 | S_ALR_87011963 · FS10N 과 맞출 항목과 주기 | 숫자를 믿지 않아 아무도 쓰지 않습니다 | 회계팀 |
| 전송(TR) 순서 | 테이블 → 기준 뷰 → 계산 뷰 → 원장 뷰 → 판정 · 집계 뷰 → DCL → 서비스 바인딩 | 이송 중 활성화 오류가 납니다 | 개발 |
운영 데이터로 갈 때 — 보조금 자산이 수천 건이면
이 사례는 보조금 32건(연도별 줄 190행)입니다. 운영에서는 건수가 늘어도 화면이 한 번에 받는 행 수를 통제하면 됩니다. 명세는 $top 과 $skip 으로 쪼개 받고, 총건수는 $inlinecount=allpages 로 숫자만 함께 받습니다. 집계 탭은 정책 · 유형 단위라 행 수가 몇 줄에 그칩니다.
| 구간 | 어떻게 되나 | 무엇을 손보나 |
|---|---|---|
| 보조금 수백 건 | 지금 방식 그대로 — 한 번에 받아도 가볍습니다 | 손볼 것 없음 |
| 보조금 수천 건 | 명세 탭에서 스크롤이 길어지고 연도별 줄이 늘어납니다 | 명세는 $top · $skip 로 쪼개 받고, 연도별 줄은 상세를 열 때만 받습니다 |
| 보조금 수만 건 | 정책 · 유형 집계는 여전히 가볍지만 명세 조회가 느려집니다 | 조회조건 기본값을 점검 필요만으로 두고, 판정 뷰에서 미리 걸러 둡니다 |
| 원장 전표가 많을 때 | 원장 집계 뷰가 조회마다 전표를 훑습니다 | 자산 · 계정 단위 잔액을 미리 집계하는 뷰로 나눠 두고 기준 연월은 파라미터로 받습니다 |
한 가지 더. 이 화면은 읽기 전용이라 서버에 쓰기를 하지 않습니다. 보조금 건을 고치거나 전표를 다시 전기하는 일은 표준 거래에서 하고, 고친 뒤에는 같은 기준 연월로 다시 조회해 차이가 사라졌는지만 봅니다.
자주 묻는 질문
도입 상담과 데모에서 받는 질문을 네 묶음으로 나눠 적었습니다. 판단이 필요한 대목은 ‘확인 필요’ 로 남기고 결론을 내리지 않았습니다.
숫자와 산식
재계산 인식금액은 어떻게 정해집니까?
인식 정책에 따라 갈립니다. 공정가치 방식이면 수취일 공정가치, 명목금액 방식이면 명목금액이 인식금액입니다. 비화폐성 보조금은 자산과 보조금(이연수익)을 같은 금액으로 인식하므로 이 한 금액에서 자산 장부금액과 이연수익 잔액이 함께 나옵니다. 샘플의 명목금액은 건당 1,000원이며, 정책은 회사가 정합니다.
경과 개월은 어떻게 셉니까?
(기준 연 − 수취 연) × 12 + (기준 월 − 수취 월)로 정수 월 차이를 씁니다. 일수가 아니라 월 단위라서 정액법 월할 감가상각과 같은 기준입니다. 수취 월 당월을 한 달로 칠지(월중 취득 처리)는 회사의 상각 규칙에 따라 달라 확인이 필요하며, 이 샘플은 수취 월과 기준 월의 차이를 그대로 썼습니다.
누적 감가상각과 누적 수익 인식은 어떻게 계산합니까?
둘 다 정액법 월할입니다. 누적 감가상각은 인식금액 × min(경과 개월, 내용연수) ÷ 내용연수이고, 누적 수익 인식은 인식금액 × min(경과 개월, 수익 인식 기간) ÷ 수익 인식 기간입니다. 감가상각 자산은 수익 인식 기간이 내용연수와 같고, 토지는 감가상각이 없어 의무 이행 기간을 씁니다(이행 조건은 확인 필요).
순손익 효과 누계는 무엇을 뜻합니까?
누적 수익 인식 − 누적 감가상각입니다. 수익 인식 기간과 감가상각 기간이 같은 자산은 늘 0이고, 감가상각이 없는 토지는 수익 인식액만큼 양수로 남습니다. 어떤 자산의 순손익 효과가 0이 아닌데 상각 자산이라면 기간 설정이 서로 다르다는 신호이며, 점검 코드 A04 와 이어서 봅니다.
정합성 대사와 장부 점검 대사는 무엇이 다릅니까?
정합성 대사 여섯 식은 화면이 만든 숫자끼리의 산식 검증이라 항상 차이 0건이어야 합니다. 장부 점검 대사 세 식은 원장과 재계산을 맞대는 것이라 0이 아닐 수 있고, 0이 아닌 건이 점검 대상입니다. 정합성 대사가 먼저 0건이어야 장부 점검의 차이를 원장 쪽 문제로 읽을 수 있습니다.
집계 합계가 명세 합계와 왜 다를 수 있습니까?
다르면 안 됩니다. 정책별 · 유형별 집계는 같은 명세를 합산한 것이라 합계가 같아야 하며, 정합성 대사 6번이 매번 그 등식을 검산합니다. 다르게 나온다면 필터 조건이 탭마다 다르게 걸렸는지(집계 탭에는 해당 칸에 걸리는 조건만 붙습니다)를 먼저 봅니다.
금액은 왜 원 단위로 보여 줍니까?
재무 점검에서는 반올림 차이가 점검 사유가 될 수 있어 원 단위를 그대로 보여 줍니다. 서버의 Decimal 값은 문자열로 내려오므로 소수점 이하 반올림은 서비스가 정한 한 곳에서만 일어납니다. 억 단위로 보고 싶으면 CSV 로 내려받아 가공합니다.
점검 코드와 판정
점검 코드 A01~A05 는 무엇을 봅니까?
A01 은 정책과 원장 인식 방식이 다른 건, A02 는 수취 시점에 일시 수익으로 처리돼 이연수익 잔액이 0인 건, A03 은 내용연수가 없는 토지에 원장이 감가상각을 계상한 건, A04 는 원장 수익 인식 기간이 자산의 상각 · 이행 기간과 다른 건, A05 는 원장 이연수익 인식금액이 자산 인식금액과 다른 건입니다. 한 건에는 가장 먼저 걸린 코드 하나만 붙고 나머지는 점검 사유가 가려질 수 있어, 해당 건을 고친 뒤 다시 조회합니다.
점검 필요와 확인 필요는 어떻게 다릅니까?
원장과 재계산이 다르면서 원인 쪽 입력이 분명한 건은 ‘점검 필요’, 정책 선택이나 평가 자료처럼 회사의 판단 자료가 있어야 가릴 수 있는 건은 ‘확인 필요’로 적습니다. 어느 쪽도 ‘오류’ 로 단정하지 않으며, 이 화면은 회계처리가 맞다 틀리다를 결론 내리지 않습니다.
이 화면이 ‘정상’ 으로 표시하면 회계처리가 맞다는 뜻입니까?
아닙니다. 정상은 입력(정책 · 내용연수 · 수취일)을 기준으로 한 재계산과 원장이 같다는 뜻일 뿐입니다. 입력 자체가 잘못됐거나 평가 자료가 틀렸다면 둘이 같아도 오류일 수 있으므로, 입력의 근거는 회사와 감사인이 확인합니다.
차이가 아주 작으면 점검 필요로 보입니까?
샘플은 1원이라도 다르면 차이로 세지만, 운영에서는 임계 금액을 정해 두는 것을 권합니다. 월할 계산의 반올림이나 월중 취득 처리 때문에 생기는 소액 차이까지 점검 필요로 띄우면 점검 건이 늘어 정작 중요한 건이 묻힙니다. 임계는 회사가 정하며 판정 뷰의 파라미터로 둡니다.
토지는 왜 별도 판정(A03)이 있습니까?
토지는 일반적으로 감가상각하지 않는 자산이라 내용연수가 없고, 보조금 수익 인식도 감가상각 비율이 아니라 의무 이행 기간을 따를 수 있습니다. 원장에 토지의 감가상각이 계상돼 있다면 자산 분류나 상각 키가 잘못 걸렸을 가능성이 있어 점검 필요로 띄웁니다. 토지 보조금의 이행 조건 충족 여부는 회사와 감사인이 판단합니다.
일시 수익 처리(A02)는 항상 잘못입니까?
이 화면은 그렇게 단정하지 않습니다. 자산 관련 보조금은 자산의 상각 비율에 맞춰 체계적으로 수익 인식하는 것이 기준서의 원칙이지만, 건별 사실관계에 따라 예외가 있을 수 있습니다. 이연수익 잔액이 0이면 그 이유를 확인하라는 신호로만 읽습니다.
데이터와 연계
수취일 공정가치는 어디서 가져옵니까?
표준 자산 마스터에는 수취일 공정가치를 담는 필드가 없는 경우가 많아, 이 앱은 입력 자료로 받습니다. 샘플에서는 평가 자료를 파일로 두었고, 운영에서는 전표 첨부 또는 별도 평가표에서 같은 키(회사코드 · 자산번호)로 붙입니다. 정확한 원천 테이블은 환경마다 달라 확인이 필요합니다.
어떤 원천 테이블을 읽습니까?
자산 마스터 일반 데이터와 평가 영역별 감가상각 조건(내용연수 · 상각 키), 그리고 신규 원장의 전표 항목(ACDOCA)입니다. 자산 장부금액과 이연수익 계정 잔액은 ACDOCA 를 자산 · 계정 단위로 집계해 읽습니다. 필드 매핑은 CDS 구성 절에 적었습니다.
ECC 에서도 쓸 수 있습니까?
화면은 OData V2 서비스만 바라보므로 서비스를 같은 모양으로 내주면 ECC 에서도 동작합니다. 다만 ACDOCA 는 S/4HANA 의 테이블이라, ECC 에서는 자산 전표 원천(전표 헤더 · 항목)을 읽는 서비스로 바꿔야 합니다. 이 글의 CDS 스케치는 S/4HANA 를 전제로 합니다.
OData 서비스는 몇 개 엔티티셋으로 이뤄집니까?
다섯 개입니다 — 보조금 명세(GrantSet), 회계연도별 재계산 줄(LineSet), 인식 정책별 집계(MethodSet), 자산 유형별 집계(TypeSet), 대사 결과(ReconSet). 펑션 임포트와 액션은 선언하지 않고 모든 결과가 엔티티셋입니다. 조회조건은 $filter 로, 정렬 · 건수 제한은 $orderby · $top · $inlinecount 로 서버가 처리합니다.
날짜 조건은 어떻게 서버로 갑니까?
수취일 시작 · 종료는 DateTime 필터로 보냅니다. 둘 다 있으면 하나의 BT 조건으로 묶습니다. 같은 필드에 두 조건을 따로 넣으면 UI5 가 같은 필드끼리 or 로 묶어 내보내 모든 기간이 통과하므로, 한 묶음으로 만들어 and 로 나가게 해야 합니다.
조회 결과를 내려받을 수 있습니까?
지금 보고 있는 탭의 결과를 UTF-8(BOM) CSV 로 내려받습니다. 점검 코드와 점검 내용이 같은 줄에 붙어 있어 점검 의견을 덧붙여 결산 자료로 쓰기 좋습니다. 파일 이름은 한글 기능명으로 나갑니다.
운영과 도입
이 앱이 전표를 만들거나 보조금을 수정합니까?
아닙니다. 읽기 전용이라 서버에 쓰기를 하지 않습니다. 보조금 건의 수정과 전표 전기는 표준 거래에서 하고, 고친 뒤 같은 기준 연월로 다시 조회해 차이가 사라졌는지 확인합니다.
기존 결산 점검표를 없애야 합니까?
대부분 그대로 둡니다. 이 앱은 점검표의 ‘건별 재계산과 원장 대조’ 칸을 채워 주는 쪽이고, 최종 점검 의견과 책임은 점검표와 감사 대응 절차에 남습니다. 두 방식의 숫자가 같은지는 첫 두 달 동안 나란히 돌려 확인하는 편이 좋습니다.
유지보수는 무엇을 하게 됩니까?
정기적으로 손이 가는 곳은 사실상 정책 · 내용연수 매핑 하나입니다. 자산 유형이 추가되거나 정책이 바뀌면 SM30 뷰에서 고칩니다. 그 밖에는 점검 코드 임계를 조정할 때뿐이며 임계는 파라미터로 두어 개발이 필요 없습니다.
숫자가 기존 보고서와 다르면 어떻게 확인합니까?
순서가 있습니다. ① 기준 연월과 회사코드가 같은지 봅니다(가장 흔한 원인). ② 원장(선도 원장인지)과 계정 범위가 같은지 봅니다. ③ 건별 상세를 열어 연도별 줄을 AFAB 실행 결과와 맞춰 봅니다. ④ 이연수익은 FAGLL03 으로 개별 전표를 열어 건수 · 합계를 맞춥니다. 여기까지 오면 어느 입력이 달랐는지 드러납니다.
다국어 · 다통화는 됩니까?
화면 글자는 i18n 파일로 빠져 있어 언어를 더하는 것은 파일 하나를 더하는 일입니다. 통화는 회사코드통화 한 가지만 다루며, 거래통화나 그룹통화를 함께 봐야 하면 원장 집계 뷰에 통화 차원을 더해야 합니다.
화면 성능은 어떻습니까?
샘플은 32건이라 즉시 열리지만 운영 규모에서는 명세를 $top · $skip 으로 쪼개 받고 집계는 몇 줄에 그치므로 부담이 작습니다. 원장 전표가 많을 때는 원장 집계 뷰를 미리 집계하는 뷰로 나누는 것이 첫 번째 손질입니다.
설명서와 소개 영상은 어디서 볼 수 있습니까?
이 글의 맨 위에 47초짜리 소개 영상이 있고, 앱과 함께 배포되는 설명서에 실행 화면 · 점검 판정 규칙 · 산출 순서 · OData 서비스 구성 · 검증 결과가 정리돼 있습니다. 왼쪽의 ‘검토용 자료 다운로드’로 화면과 요약을 담은 PowerPoint 검토 자료를 바로 받을 수 있습니다.
현재 SAP 환경에서 어떻게 적용되는지 확인할 수 있습니까?
자산회계 구성(평가 영역 · 상각 키 · 원장 설정)과 보조금 처리 방식에 따라 달라지는 부분이 많습니다. 왼쪽 ‘문의하기’로 현재 환경을 남겨 주시면 어떤 항목이 그대로 쓰이고 어떤 항목을 정해야 하는지 함께 확인해 드립니다.