SAP 고정자산-총계정원장 조정 — 보조부와 원장이 갈라진 자리
자산클래스별 취득가액·상각누계 합계를 총계정원장 잔액과 대사해, 차이가 난 계정을 결산 전에 찾아내는 화면입니다.
고정자산은 두 곳에 기록됩니다. 자산별로 관리하는 보조부와, 계정별로 모으는 총계정원장입니다. 두 숫자가 같아야 하는 것은 당연한데, 실제로는 자주 갈라집니다.
자산 전표가 원장에 반영되지 않았거나, 원장에 직접 전기한 건이 있거나, 계정 매핑이 바뀌었을 때 생깁니다. 결산 전에 이 차이를 찾지 못하면 재무제표가 어긋납니다. 표준 구조를 그대로 이어받아 자산클래스별로 대사하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 자산클래스 —
AssetClass단위로 보조부를 집계하는 표준 구조 - 대사 유형 — 취득가액(APC)과 감가상각누계를 나눠 보는
ReconType - 조정계정 — 자산클래스에 연결된 GL 계정(
GlAccount)과 명칭 - 기간 — 회계연도(
Gjahr)와 기간(Monat) 단위 잔액 - 자산 내역 — 클래스에 속한 개별 자산 목록
| 항목 | 내용 |
|---|---|
| 대응 T-code | ABST2 (자산 조정 대사) |
| 업무 영역 | 재무회계(FI-AA) · 결산 마감 |
| Namespace | zui5.assetrecon |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 대사 현황, 행 선택 시 자산 내역 |
| 화면 수 | 조회 화면 1개 + 자산 상세 |
| 데이터 | 보조부 200건 · 원장 200건 |
| 성격 | 조회형(Read-Only) — 전기와 조정은 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·회계연도·기간으로 조회하면 자산클래스별 보조부와 원장 잔액이 나란히 나옵니다 → 차이가 있는 계정을 먼저 가려내고 → 행을 눌러 그 클래스의 자산 내역을 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도·기간을 고릅니다. 월말 기준으로 보는 것이 일반적입니다.
- 자산클래스로 범위를 좁힐 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 차이 열이 0이 아닌 줄부터 봅니다. 취득가액과 상각누계 중 어느 쪽인지도 함께 확인합니다.
- 행을 선택하면 자산 내역이 열립니다. 자산 건수와 합계를 대조합니다.
- 결과는 CSV 다운로드로 내려받아 결산 조서에 첨부합니다.
대사 산식
같은 금액을 두 곳에서 읽어 비교합니다.
보조부 잔액(AaBalance) = Σ(자산클래스에 속한 자산의 취득가액 또는 상각누계)
원장 잔액(GlBalance) = 조정계정의 총계정원장 잔액
차이 = 보조부 잔액 − 원장 잔액
차이 = 0 → 일치
차이 ≠ 0 → 조정 필요 — 자산 전표 미반영 또는 원장 직접 전기 확인
대사유형 APC 취득가액
DEP 감가상각누계
취득가액과 상각누계를 나눠 보는 이유
둘을 합쳐 장부가액으로만 비교하면 오류가 상쇄됩니다. 취득가액이 1억 많고 상각누계도 1억 많으면 장부가액은 맞지만 두 계정 모두 틀린 상태입니다. 나눠서 대사해야 어느 쪽이 어긋났는지 드러나고, 찾아갈 전표도 달라집니다.
차이가 생기는 네 가지 경로
| 경로 | 상황 | 확인 방법 |
|---|---|---|
| 자산 전표 미반영 | 자산 보조부에만 기록되고 원장 전기가 안 됨 | 전표 상태 확인 |
| 원장 직접 전기 | 자산을 거치지 않고 조정계정에 직접 전기 | 해당 전표 식별 |
| 계정 매핑 변경 | 자산클래스의 조정계정이 중간에 바뀜 | 변경 시점 전후 분리 |
| 기간 귀속 차이 | 자산과 원장의 전기 기간이 다름 | 기간 이동 확인 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
회계연도 Gjahr | 필수 | 대사 연도 |
기간 Monat | 필수 | 월 단위 잔액 기준 |
자산클래스 AssetClass | 선택 | 건물 · 기계 등 |
대사유형 ReconType | 선택 | APC 취득가액 / DEP 상각누계 |
| 상태 | 선택 | 전체 / 차이 발생만 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
자산클래스 AssetClass · AssetClassText | 클래스 코드와 명칭 |
대사유형 ReconType · ReconTypeText | 취득가액 / 감가상각누계 |
조정계정 GlAccount · GlAccountText | 연결된 GL 계정 |
보조부 잔액 AaBalance | 자산 합계 |
원장 잔액 GlBalance | GL 잔액 |
| 차이 | 보조부 − 원장. 0이 아니면 경고 색 |
자산 건수 AssetCount | 클래스에 속한 자산 수 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
ABST2 | 자산 조정 대사 | 클래스·유형별로 나눠 차이를 즉시 표시 |
AR01 | 자산 목록 | 차이가 난 클래스의 자산 내역 확인 |
ANLC | 자산 가액 — 취득 · 상각누계 | 보조부 집계 원천 |
ACDOCA · FAGLFLEXA | 총계정원장 잔액 | 원장 잔액 원천 |
ANKB | 자산클래스 계정 결정 | 조정계정 매핑 |
도입 시 확인이 필요한 부분
자산클래스와 조정계정의 매핑은 계정 결정 설정에 정의됩니다. 한 계정에 여러 클래스가 연결돼 있으면 클래스 단위 대사가 계정 단위와 맞지 않으므로, 집계 단위를 계정 기준으로 볼지 클래스 기준으로 볼지 정해야 합니다. 감가상각영역이 여러 개인 경우 원장에 반영되는 영역만 대사 대상입니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCASSETREC'
@EndUserText.label: '고정자산-원장 대사 (Z)'
define view Z_C_ASSET_GL_RECON
as select from anlc as Value
inner join anla as Master on Value.bukrs = Master.bukrs
and Value.anln1 = Master.anln1
and Value.anln2 = Master.anln2
left outer join ankb as AcctDet on Master.anlkl = AcctDet.anlkl
{
key Value.bukrs,
key Value.gjahr,
key Master.anlkl as AssetClass,
key AcctDet.ktansw as GlAccount,
// 취득가액과 상각누계를 나눠 집계
sum( Value.kansw ) as AaApcBalance,
sum( Value.knafa ) as AaDepBalance,
count(*) as AssetCount
// GL 잔액은 ACDOCA 집계 뷰와 조인해 차이를 계산하는 소비 뷰에서
}
group by Value.bukrs, Value.gjahr, Master.anlkl, AcctDet.ktansw
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 대사 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 대사 테이블 | sap.m.Table — 보조부·원장·차이를 인접 배치 |
| 차이 표시 | sap.m.ObjectStatus — 일치 / 조정 필요 |
| 상세 화면 | sap.m.Dialog — 클래스별 자산 목록 |
자산 건수를 함께 보여 주는 이유
차이 금액이 특정 자산 한 건 때문인지, 여러 건이 조금씩 어긋난 것인지에 따라 확인 방법이 다릅니다. 건수가 3건인데 차이가 크면 개별 자산을 열어 보면 되고, 200건이면 전표 유형이나 기간으로 좁혀야 합니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.assetrecon) · ko 로케일 |
view/Main.view.xml | 조회조건과 대사 테이블 |
controller/Main.controller.js | 조회 · 차이 계산 · 자산 상세 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 차이 상태 색 포맷터 |
localdata/aasub.json | 보조부 집계 200건 |
localdata/glacct.json | 원장 잔액 200건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 차이 = 보조부 잔액 − 원장 잔액 (전 행) | 통과 |
| 보조부 잔액 = 자산 내역 금액 합계 | 통과 |
| 자산 건수 = 상세 목록 건수 | 통과 |
| 대사유형별로 계정이 분리돼 있음 | 통과 |
| 자산클래스·계정 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 상세 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
차이가 나면 무엇부터 보나요?
자산 전표 중 전기되지 않은 건이 있는지 먼저 봅니다. 그다음이 원장에 직접 전기된 건입니다. 자산을 거치지 않고 조정계정에 직접 전기하면 보조부에는 흔적이 남지 않으므로 원장 쪽에서 찾아야 합니다.
월마다 대사해야 하나요?
분기나 반기로 하는 곳도 있지만, 차이가 누적되면 원인을 찾기 어려워집니다. 월 단위로 보면 어느 달에 생긴 차이인지가 바로 좁혀져 추적 비용이 훨씬 적습니다.
감가상각영역이 여러 개면 어떻게 하나요?
원장에 반영되는 영역만 대사 대상입니다. 세무용 영역처럼 원장에 전기되지 않는 영역은 보조부에만 존재하므로 대사에서 제외해야 차이가 잘못 잡히지 않습니다.
SAP 표준 기능과 어떻게 이어지나요?
보조부와 원장은 표준이 각각 관리하고 ABST2 로 대사할 수 있습니다. 이 화면은 그 대사를 자산클래스와 취득가액·상각누계로 나눠 차이를 즉시 보여 주고, 클래스별 자산 내역까지 잇는 확장입니다.