투자부동산 손익 범주 점검 — IFRS 18 에서 임대·시세차익 손익이 영업·투자·중단영업 범주 중 맞는 곳에 놓였는지 용도로 다시 구해 장부와 맞춰 보는 화면
부동산 용도와 주된 사업활동으로 재계산한 범주 · 장부 범주와 전기 범주의 비교 · 건별 점검 코드 · 용도별 합계 · 전수 대사 — 소개 영상과 실제 화면 6종, 그리고 CDS 코드까지
소개 영상1분 8초7개 장면음성 안내·자막표지에서 정리까지 사용 순서대로
개발 배경 — 이 앱을 사용해야 하는 이유
IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호)는 손익계산서의 수익과 비용을 영업·투자·재무·법인세·중단영업 범주로 나누어 보이도록 요구합니다. 임대수익, 공정가치 평가손익, 감가상각비, 운영비, 처분손익이 한꺼번에 쌓이는 투자부동산은 이 분류에서 가장 먼저 질문이 나오는 자리입니다. 같은 건물이라도 임대 목적인지 시세차익 목적인지, 본사로 쓰는지 판매하려고 들고 있는지, 회사의 주된 사업활동이 부동산 투자인지에 따라 놓여야 할 범주가 달라질 수 있기 때문입니다.
지금은 이 질문에 답하려면 계정별 개별 항목 조회와 자산 마스터 조회, 부동산 목록 엑셀을 번갈아 열어 건마다 손으로 맞춰 봅니다. 이 앱은 그 세 자료를 한 화면에 붙여, 손익 건마다 용도와 주된 사업활동으로 다시 구한 범주(재계산 범주)를 장부에 기록된 범주와 나란히 놓고, 다른 건과 판단 근거가 비어 있는 건을 점검 코드로 가려 줍니다. 기준서 도입 시기는 IFRS 18 이 2027-01-01 이후 개시하는 회계연도부터 적용이며 조기적용을 허용하고 비교기간은 재작성한다는 점까지만 확정 사실로 쓰고, 그 밖의 경과규정은 원문 확인 필요로 둡니다.
손익 범주는 계정이 아니라 용도로 갈린다
같은 임대수익 계정이라도 어느 범주에 놓여야 하는지는 계정 번호만으로 정해지지 않습니다. 임대 목적으로 보유한 투자부동산이면 이 화면은 기본값으로 투자범주를 점검 기준으로 삼고, 자가사용 부동산이나 판매용 부동산이면 영업범주를, 중단영업에 속한 부동산이면 중단영업 범주를 기준으로 삼습니다. 회사의 주된 사업활동이 부동산 투자라면 같은 임대 목적 부동산의 손익이라도 영업범주가 점검 기준이 됩니다. 이 판정 순서는 화면이 쓰는 점검 규칙이며, 투자범주에 들어가는 손익의 범위와 주된 사업활동의 판단 요건은 기준서 원문 확인 필요로 남겨 둡니다.
그래서 계정만 보는 리포트는 이 질문에서 멈춥니다. 계정 단위 잔액은 맞는데 어느 부동산의 어떤 용도에서 나온 금액인지가 붙어 있지 않으면, 자가사용 건물의 감가상각비가 투자범주에 들어갔는지 임대 건물의 운영비가 영업범주에 남았는지를 가릴 수 없습니다. 이 앱은 손익 건마다 용도와 주된 사업활동을 붙여 재계산하기 때문에 그 질문에 건 단위로 답합니다.
장부 범주와 전기 범주를 함께 봐야 한다
용도로 다시 구한 범주가 장부와 같아도 걸리는 일이 하나 더 있습니다. 용도 변경이 없는데 전기와 다른 범주에 기록된 경우입니다. 비교기간 정보와 이어져야 하는 자리라서, 이 앱은 장부 범주와 전기 범주를 같은 줄에 두고 용도 변경 여부를 함께 보여 줍니다. 용도가 바뀐 건은 범주가 달라지는 것이 자연스러우므로 걸리지 않고, 용도 변경이 없는데 달라진 건만 점검 코드 K03 으로 올라옵니다.
이 비교가 필요한 이유는 기준서 도입 시점에 있습니다. 도입 첫해에는 당기와 비교기간을 같은 기준으로 맞춰 놓아야 하고, 그때 “전기에는 영업범주였는데 올해는 투자범주” 같은 이동이 근거 없이 끼어 있으면 설명을 요구받습니다. 도입 전에 미리 이동 건을 한 번 가려 두면 회의가 “어느 건이 움직였나” 찾는 일에서 “움직인 이유가 있나” 확인하는 일로 바뀝니다.
용도가 비어 있으면 판단을 보류한다
점검 도구가 제일 조심해야 하는 일은 근거 없이 범주를 단정하는 것입니다. 부동산 용도가 등록되지 않은 건은 범주를 판단할 기준이 없으므로 이 앱은 임의로 영업범주나 투자범주를 채우지 않고 “확인 필요”로 표시한 뒤 그 금액을 판정 보류로 따로 모읍니다. 회사가 용도를 먼저 정하고 다시 조회하면 그 건의 재계산 범주가 채워지고, 보류 금액은 줄어듭니다. 대사식에도 보류 금액이 들어 있어서, 판단을 미룬 금액까지 합쳐 순 손익과 맞는지를 매번 검산합니다.
사용 방법
- 회계연도를 입력합니다(필수, 4자리). 회사·부동산 용도·장부 범주·기록일·부동산명·점검 코드·점검 결과는 필요할 때만 고릅니다.
- 조회 버튼을 누르거나 입력칸에서 Enter 키를 누릅니다. 조회 버튼은 조회조건 영역의 가장 오른쪽에 있고, 화면을 열면 회계연도 기준으로 한 번 자동 조회됩니다.
- 위쪽 요약에서 점검한 손익 건수 · 점검 필요 항목 · 확인 필요 항목 · 이동 필요 금액 · 투자범주로 놓인 장부 손익 · 대사 차이 건수를 먼저 봅니다.
- 탭을 부동산별 범주 판정 → 손익 건별 점검 → 용도별 합계 → 대사 결과 순서로 옮겨 가며 봅니다.
- 손익 건별 점검 탭에서 행을 누르면 상세가 열려 점검 근거와 같은 부동산의 건별 비교가 나옵니다.
- CSV 내려받기 버튼으로 지금 보고 있는 탭을 UTF-8 파일로 내려받아 검토 자료에 붙입니다.
숫자를 믿을 수 있는가 — 검증 결과
점검 화면에서 가장 비싼 질문은 “이 합계 맞아?” 입니다. 그래서 만드는 쪽에서 먼저 대사식을 세워 두고 검증용 샘플 데이터 전체로 돌렸습니다. 아래는 그 결과입니다.
| 대사식 | 검사 건수 | 차이 건수 | 최대 차이 |
|---|---|---|---|
| R01 · 건별 손익 합계 = 부동산별 순 손익 합계 | 15 | 0 | 0원 |
| R02 · 장부 범주 3종(영업·투자·중단영업) 합계 = 순 손익 합계 | 15 | 0 | 0원 |
| R03 · 재계산 범주 3종 + 판정 보류 = 순 손익 합계 | 15 | 0 | 0원 |
| R04 · 용도별 합계 = 부동산별 합계 | 10 | 0 | 0원 |
| R05 · 범주별(장부 − 재계산) 합계 = 판정 보류 금액 | 15 | 0 | 0원 |
| R06 · (참고) 원장 계정 기준 독립 합계 = 건별 손익 합계 | 10 | 0 | 0원 |
여섯 가지 대사식이 모두 차이 0 입니다. 점검 화면이므로 의도적으로 넣은 예외 건은 대사 차이와 분리해 기록합니다. 검증용 샘플 데이터에는 점검 필요 8건(K01 2건 · K02 1건 · K03 1건 · K04 2건 · K05 2건)과 확인 필요 2건(K09)이 들어 있고, 이것은 대사 차이 건수 0 과 별개입니다. 점검 코드가 올라오는 것은 화면이 제대로 일하고 있다는 뜻이고, 대사가 어긋나는 것은 화면이 틀렸다는 뜻이므로 둘을 섞어 세지 않습니다.
무엇으로 만들었나
화면은 OpenUI5 표준 컨트롤과 sap_horizon 테마만 씁니다. 데이터는 OData V2 서비스 하나에서 읽고, 화면은 서비스 주소를 코드에 적지 않고 앱 설정(manifest)에 선언한 상대 경로만 바라봅니다. 조회조건은 모두 필터로 서비스에 보내고, 정렬·건수·페이징도 서비스가 처리합니다.
| 자리 | 무엇 | 왜 그렇게 두었나 |
|---|---|---|
| 화면 컨트롤 | 조회조건 · 요약 · 탭 4개 · 표 · 상세 창 | 표준 컨트롤만 쓰면 외부 라이브러리 반입 심사가 필요 없고, 테마·접근성·좁은 화면 대응을 표준에 맡길 수 있습니다. |
| 데이터 모델 | OData V2 기본 모델, 탭마다 손익 건 · 부동산 · 용도 · 대사 4종 집합에 바인딩 | 같은 손익 건에서 나온 네 관점이라 합계가 어긋날 자리가 없고, 운영 서비스로 바꿀 때 화면 코드를 고치지 않습니다. |
| 점검 로직 | 서비스 쪽 한 파일 — 재계산 범주 결정 · 점검 코드 판정 · 합산 · 대사 | 판정이 화면이 아니라 서비스에 있어, 다른 화면이나 배치가 같은 판정을 그대로 씁니다. |
| 점검 필요 건수 | 서비스 펑션 한 개가 계산해 요약에 표시 | 건수를 화면에서 세지 않고 서비스가 같은 규칙으로 세므로 건별 탭과 요약이 어긋나지 않습니다. |
| 오류 안내 | 연결 실패 · 요청 실패 · 빈 응답을 구분해 안내하는 전용 처리 | 서비스에 닿지 못할 때 빈 화면이나 콘솔 오류로 두지 않고 무엇이 막혔는지 사용자 말로 알려 줍니다. |
| 테마 | sap_horizon | S/4HANA Fiori 와 같은 결이라 사용자가 새로 익힐 것이 없습니다. |
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) |
| 관련 기준서 | IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) — 투자부동산 손익의 범주 표시 / 보조로 투자부동산(K-IFRS 제1040호)의 용도 구분 |
| SAP 표준 T-code | FAGLL03 · FAGLB03 · FB03 · AS03 |
| 화면 성격 | 조회·점검 화면 — 최종 판단은 회사와 감사인 |
| 데이터 연동 | OData 서비스(V2) — 검증용 샘플 데이터로 확인 |
실행 화면
실제로 돌아가는 화면 6종을 사용 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있고, 화면마다 무엇을 보는 자리이고 왜 그렇게 두었는지를 아래에 적었습니다. 숫자는 모두 같은 검증용 샘플 데이터에서 나온 것이라 화면끼리 서로 맞춰 보셔도 됩니다.
처음 열었을 때
조회조건부터 표까지가 한 화면에 세로로 쌓입니다. 화면을 열면 회계연도 기준으로 자동 조회되므로 별도 조작 없이 첫 결과가 나옵니다.

맨 위 파란 안내는 이 화면이 점검 도구이며 최종 판단은 회사와 감사인이 한다는 점을 먼저 밝힙니다. 요약의 ‘38’은 점검한 손익 건수, ‘8’은 점검 필요 항목, ‘2’는 확인 필요 항목이고, 이동 필요 금액은 3,738.0 백만 원으로 보입니다. 아래 표는 부동산 15곳을 한 줄씩 보여 주며 순 손익 합계 · 장부 3범주 · 재계산 3범주 · 점검 결과가 나란히 놓입니다. 조회 전에도 조회조건과 표 틀이 먼저 서 있어서 처음 여는 사람도 무엇을 고르면 무엇이 채워지는지 바로 압니다.
손익 건마다 점검하고, 행을 눌러 근거를 본다
부동산 단위 판정에서 의심 가는 곳이 보이면 건별 탭으로 내려가 어떤 건이 범주가 다른지 확인합니다. 한 줄을 누르면 근거와 같은 부동산의 비교가 열립니다.

범주가 서로 다른 줄은 점검 결과 칸에 ‘점검 필요’가 주황색으로 뜨고, 용도가 비어 있는 줄은 ‘확인 필요’로 뜹니다. 금액은 수익·이익을 양수, 비용·손실을 음수로 적어 손익계산서와 같은 방향으로 읽을 수 있게 했습니다. 표 위의 점검 코드와 점검 결과 조건을 바꾸면 해당 건만 남기므로, 점검 필요 건만 모아 CSV 로 내려받아 담당자에게 보낼 수 있습니다.

화면은 점검 코드가 올라온 이유를 문장으로 적고(예: 투자부동산의 손익이 영업범주에 기록됐습니다), 그 아래에 같은 부동산의 건별 비교표를 붙입니다. 같은 부동산에서 1건은 정상이고 2건이 점검 필요라면, 한 건이 아니라 부동산 단위 이동인지 건별 오기록인지를 바로 가를 수 있습니다. 오른쪽 아래 ‘이동 필요 금액’은 범주가 다른 건의 손익 금액이며 부호를 포함해 보여 줍니다.
용도로 묶어 보고, 대사로 확인한다
건별로 본 것을 용도 단위로 올려 보면 어떤 용도의 장부 범주가 흔들리는지 보입니다. 마지막으로 대사 탭에서 합계가 어긋나지 않았는지 확인합니다.

부동산 한 곳씩 보던 질문을 용도 단위로 올려서, 예를 들어 임대 목적 투자부동산 전체에서 영업범주로 남은 금액이 얼마인지 한눈에 봅니다. 용도 미등록 행의 금액은 판정 보류 칸으로 모이며, 이 금액이 0 이 되는 것이 도입 준비의 첫 목표가 됩니다. 합계는 부동산별 합계의 합과 같아야 하고, 대사 결과 탭이 그 등식을 매번 검산합니다.

요약의 ‘대사 차이 건수’는 이 탭의 차이 건수를 합한 값입니다. 점검 필요 건이 많다고 대사 차이가 느는 것은 아닙니다 — 점검 필요는 장부가 기준과 다르다는 뜻이고, 대사 차이는 화면의 집계가 어긋났다는 뜻이기 때문입니다. 참고 대사는 원장 계정별 합계를 따로 더해 건별 합계와 맞춰 보는 독립 검산입니다.
조건으로 좁혀 본다
부동산이 많아지면 이름 조건이 가장 자주 쓰입니다. 같은 조건이 요약과 모든 탭에 함께 적용됩니다.

부동산명 조건은 이름 일부를 포함하는 검색입니다. 요약 지표와 탭 건수도 같은 조건으로 다시 계산되므로, 특정 부동산의 점검 필요 금액만 따로 읽을 수 있습니다. 조건을 비우려면 초기화 버튼을 누르며, 그러면 회계연도 기준 첫 조회로 돌아갑니다.
화면 뒤에서 일어나는 일
조회 버튼을 누르면 화면은 조회조건을 필터로 바꿔 OData 서비스에 보내고, 서비스가 손익 건을 읽어 재계산 범주를 정한 뒤 장부 범주와 비교해 점검 코드를 붙입니다. 부동산별 · 용도별 · 대사 탭은 같은 손익 건을 다른 단위로 합산한 결과라서 어느 탭을 열어도 같은 숫자에서 출발합니다. 요약의 점검 필요 건수만 서비스 펑션 FlagCount 가 따로 계산해 돌려줍니다.
재계산 범주는 이렇게 정한다
재계산 범주는 부동산에 등록한 용도와 회사의 주된 사업활동 여부에서 구합니다. 아래는 화면이 쓰는 점검 규칙이며, 투자범주에 들어가는 손익의 범위와 주된 사업활동의 판단은 회사가 정하는 일이고 기준서 원문 확인 필요입니다.
| 부동산 용도 | 회사 주된 사업활동 | 재계산 범주 |
|---|---|---|
| 용도 미등록 | - | 판정 보류 (확인 필요) |
| 중단영업 소속 | - | 중단영업 범주 |
| 자가사용 · 판매용 | - | 영업범주 |
| 임대 목적 · 시세차익 목적 투자부동산 | 부동산 투자가 아님 | 투자범주 |
| 임대 목적 · 시세차익 목적 투자부동산 | 부동산 투자가 주된 사업활동 | 영업범주 |
점검 코드 — 판정 조건 → 결과 상태 → 사용자 조치
| 코드 | 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|---|
| K00 | 재계산 범주와 장부 범주가 같고, 용도 변경이 없으면 전기 범주와도 같음 | 정상 | 조치 없음 |
| K01 | 투자부동산의 손익이 투자범주가 아닌 영업범주에 놓임 — 주된 사업활동이 부동산 투자가 아닌 회사 | 점검 필요 | 용도와 주된 사업활동을 확인하고 투자범주로 옮겨야 하는지 판단 |
| K02 | 자가사용·판매용 부동산의 손익이 투자범주에 놓임 | 점검 필요 | 용도를 투자부동산으로 분류한 근거를 확인 |
| K03 | 용도 변경이 없는데 전기와 다른 범주에 기록됨 | 점검 필요 | 비교기간 정보와 이어지는지 확인 |
| K04 | 주된 사업활동이 부동산 투자인 회사의 투자부동산 손익이 투자범주에 놓임 | 점검 필요 | 영업범주 대상인지 주된 사업활동 판단을 확인 |
| K05 | 중단영업에 속한 부동산의 손익이 중단영업 범주에 놓이지 않음 | 점검 필요 | 중단영업 범주로 옮겨야 하는지 확인 |
| K09 | 부동산 용도가 등록되지 않아 범주를 판단할 기준이 없음 | 확인 필요 | 회사가 용도를 먼저 확인 — 금액은 판정 보류로 모음 |
손익 건 하나에는 점검 코드 하나가 붙습니다. 결과는 “점검 필요”와 “확인 필요”까지만 말하고 원인을 단정하지 않습니다. 같은 건이 K01 이면서 용도 변경 여부도 걸리는지 같은 판단은 화면이 아니라 사람이 합니다.
산출·대사 순서
| 순서 | 단계 | 산출·대사식 |
|---|---|---|
| 1 | 손익 금액 산출 | 수익·이익은 양수, 비용·손실은 음수 — 순 손익 = Σ 건별 손익 |
| 2 | 재계산 범주 결정 | 용도 미등록 → 판정 보류 / 중단영업 소속 → 중단영업 범주 / 자가사용·판매용 → 영업범주 / 투자부동산 → 주된 사업활동이 부동산 투자면 영업범주, 아니면 투자범주 |
| 3 | 장부 범주와 비교 | 장부 범주 ≠ 재계산 범주 → K01·K02·K04·K05, 같은데 용도 변경 없이 전기와 다름 → K03, 용도 미등록 → K09 |
| 4 | 이동 필요 금액 | 범주가 다른 건의 손익 금액(부호 포함) — 요약에는 절대값 합계로 표시 |
| 5 | 부동산·용도 합계 | 부동산별 합계 = Σ 건별 / 용도별 합계 = Σ 부동산별 |
| 6 | 대사 R01~R06 | 건별·부동산별·범주별·용도별 합계와 원장 계정 합계를 서로 맞춰 차이 건수를 셈 |
조회조건
| 조건 | 필수 | 기본값 | 서비스에 보내는 방식(필터) |
|---|---|---|---|
| 회계연도 | 필수 | 2026 | 4자리 숫자가 아니면 조회하지 않고 안내합니다 |
| 회사 | 선택 | 전체 | 회사코드 일치 — 전체이면 조건을 만들지 않음 |
| 부동산 용도 | 선택 | 전체 | 용도 코드 일치 — 전체이면 조건을 만들지 않음 |
| 장부 범주 | 선택 | 전체 | 건별 탭에서 장부 범주 일치 |
| 기록일 시작 · 종료 | 선택 | 비어 있음 | 둘 다 있으면 범위 하나로 전송 |
| 부동산명 | 선택 | 비어 있음 | 이름 일부를 포함하는 조건 |
| 점검 코드 · 점검 결과 | 선택 | 전체 | 코드 또는 결과 일치 — 전체이면 조건을 만들지 않음 |
결과 컬럼
| 탭 | 컬럼 | 의미 · 산출식 |
|---|---|---|
| 부동산별 범주 판정 | 순 손익 합계 · 장부 3범주 · 재계산 3범주 · 판정 보류 금액 | 부동산 하나의 손익을 모아 장부 범주와 재계산 범주 금액을 나란히 보여 줌 |
| 부동산별 범주 판정 | 이동 필요 금액 · 손익 건수 · 점검 필요 · 확인 필요 · 점검 결과 | 범주를 옮겨야 할 수 있는 금액과 건수, 부동산 단위 결과 |
| 손익 건별 점검 | 손익 금액 · 손익 구분 · 장부 범주 · 전기 범주 · 용도 변경 · 재계산 범주 · 점검 결과 · 이동 필요 금액 | 손익 건마다 범주를 견준 결과 (행을 누르면 상세) |
| 용도별 합계 | 용도 · 순 손익 합계 · 장부·재계산 범주 금액 | 용도마다 범주가 갈리는 금액 |
| 대사 결과 | 대사 번호 · 좌변 · 우변 · 검사 건수 · 차이 건수 · 최대 차이 | 정합성 대사(INT)와 참고 대사(REF) |
좁은 화면에서 달라지는 것
화면 폭이 좁아지면 조회조건과 요약 지표는 한 줄에 다 담지 않고 줄을 바꿔 이어지며, 표는 가로로 스크롤해 열을 모두 읽습니다. 열을 숨기지 않으므로 좁은 화면에서도 같은 숫자를 같은 이름의 열로 읽습니다.
파일 구성
앱 폴더/
├─ index.html · readme.html · Component.js · manifest.json
├─ controller/ 화면 제어 2개
├─ view/ 본 화면 · 상세 창
├─ model/ 표시 형식 · 오류 안내
├─ css/ · i18n/ 스타일 · 한글 문구
├─ odata/ 서비스 정의와 서비스 로직, 데이터 파일 5개
└─ media/ 소개 영상 · 표지 이미지
SAP 표준 기능 확장 포인트
이 앱은 SAP 표준을 대체하지 않습니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다. 표준이 이미 잘하는 일은 표준에 맡기고, 표준 화면 사이에서 끊기는 자리만 이어 붙이는 쪽으로 만들었습니다. 어디까지가 표준이고 어디서부터 이 앱인지를 먼저 적습니다.
표준으로 되는 것과 안 되는 것
| 하고 싶은 일 | SAP 표준 | 표준 화면만으로 걸리는 자리 | 이 앱이 더하는 관점 |
|---|---|---|---|
| 손익 계정의 전표 라인 확인 | FAGLL03 · FB03 | 계정 기준 조회라서 어느 부동산의 어떤 용도에서 나온 금액인지는 따로 맞춰야 합니다 | 손익 건마다 부동산과 용도를 붙여 한 줄에서 봅니다 |
| 손익 계정 잔액 대조 | FAGLB03 · FS10N | 계정 잔액은 나오지만 범주 관점의 합계는 별도 정리가 필요합니다 | 범주별 합계를 장부와 재계산 두 방식으로 나란히 보여 주고 대사합니다 |
| 부동산 자산의 분류·용도 확인 | AS03 · AW01N | 자산 한 건씩 열어야 하고, 손익과 함께 보는 화면이 없습니다 | 용도를 손익 건에 붙여 범주 판정의 입력으로 씁니다 |
| 재무제표 출력 | F.01 | 계정 묶음 기준 출력이라 부동산 용도에 따른 범주 점검은 하지 않습니다 | 출력 전에 범주가 다른 건을 미리 가려 냅니다 |
| 용도로 다시 구한 범주와 장부 범주의 비교 | - | 표준에는 이 비교를 해 주는 화면이 없어 보통 엑셀로 맞춥니다 | 재계산 범주를 구해 건별 · 부동산별 · 용도별로 견주고 점검 코드를 붙입니다 |
| 전기 범주와의 연결 | - | 전기 손익을 같은 부동산 · 같은 손익 구분으로 이어 붙이는 화면이 없습니다 | 장부 범주와 전기 범주를 같은 줄에 두고 용도 변경 여부와 함께 봅니다 |
T-code 별 연계 지점
이 앱이 표준 거래의 어느 자리를 이어받는지를 적었습니다. 운영에 올릴 때 “기존 리포트를 없애야 하느냐”는 질문이 꼭 나오는데, 답은 없애지 않고 둔다입니다. 대사와 감사 대응, 법정 공시용 출력은 표준 거래가 맡는 편이 안전합니다.
| T-code | 이름 | 연계 |
|---|---|---|
FAGLL03 | G/L 계정 개별 항목 조회 | 이 앱의 손익 건은 같은 ACDOCA 의 손익 계정 라인에서 나옵니다. 이 앱의 손익 건 합계와 같은 조건(회사·회계연도·기록일)의 개별 항목 합계가 맞는지 보는 것이 운영 검수의 첫 번째 대사입니다. 건별 탭에서 이상한 건을 찾았다면 그 계정과 기록일로 이 거래를 열어 전표를 확인합니다. |
FAGLB03 · FS10N | G/L 계정 잔액 조회 | 임대수익 · 평가손익 · 감가상각비 · 운영비 · 처분손익 계정의 기간 잔액을 이 앱의 계정별 합계와 맞춥니다. 이 앱 쪽 합계가 다르면 조회 범위(회사 · 기록일)부터 확인합니다. |
FB03 | 전표 조회 | 건별 탭에서 점검 코드가 붙은 건의 전표 원문을 확인하는 자리입니다. 사내 포털에서 열 수 있으면 링크로 이어 두고, 아니면 전표번호를 복사해 씁니다. |
AS03 · AW01N | 자산 마스터 조회 · 자산 탐색기 | 부동산의 자산 분류와 용도를 확인하는 자리입니다. 이 앱의 용도 값이 자산 마스터와 다르면 용도를 정한 쪽이 어디인지부터 정합니다. 용도를 어느 필드에 둘지는 고객사 설정이라 확인 필요입니다. |
F.01 | 재무제표 출력 | 공시용 출력은 표준에 둡니다. 이 앱은 출력 전에 범주가 다른 건을 가려 내는 사전 점검으로 씁니다. 표준 출력의 범주 구성과 이 앱의 범주 정의가 같은지는 도입 때 한 번 맞춰 봅니다. |
표준 화면의 값을 이 앱에서 다시 볼 때는 같은 회사 · 회계연도 · 기록일을 조회조건에 넣으면 됩니다. 반대로 이 앱의 결과를 표준에서 확인할 때는 건별 탭의 기록일과 부동산을 기준으로 위 거래를 엽니다.
요구사항 매핑표
기준서 원문에서 직접 확인하지 못한 항목은 문단 번호를 적지 않고 요구사항 명칭만 적었으며, 해석이 필요한 부분은 확인 필요로 남겼습니다.
| 기준서 | 요구사항 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 손익계산서 범주 분류 — 영업·투자·재무·법인세·중단영업 | 부동산 손익의 재계산 범주와 장부 범주 비교(K01 · K02) | 원장 전표 · 손익 계정 범주 매핑 | 투자범주 손익의 범위는 원문 확인 필요 |
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 주된 사업활동으로 투자하는 회사의 범주 표시 | 주된 사업활동이 부동산 투자인 회사의 투자부동산 손익 확인(K04) | 회사 설정(주된 사업활동 판단) | 주된 사업활동 판단은 회사가 하며 원문 확인 필요 |
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 중단영업 범주 표시 | 중단영업 소속 부동산의 손익 범주 확인(K05) | 자산 마스터 · 중단영업 분류 설정 | 분류 자체는 회사가 판단 |
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 비교기간 정보 | 용도 변경 없이 전기와 달라진 범주 확인(K03) | 전기 원장 전표의 범주 | 비교정보 표시 요건은 원문 확인 필요 |
| 투자부동산(K-IFRS 제1040호) | 투자부동산의 정의와 용도 분류 | 용도(임대 · 시세차익 · 자가사용 · 판매용) 구분 기준으로 사용 | 자산 마스터(용도) | 용도 분류 판단은 회사가 함 |
| - | 부동산 용도 판단 근거 | 용도 미등록 건을 판정 보류로 모음(K09) | 회사의 부동산 검토 자료 | SAP 표준 기능 밖의 입력값 — 확인 필요 |
S/4HANA 분석 스택과의 자리
S/4HANA 에서는 CDS 뷰 위에 분석 쿼리를 올려 Fiori 분석 앱이나 Analysis for Office 에서 같은 모델을 읽는 구성이 일반적입니다. 이 앱의 화면은 OData 서비스를 읽고, 그 서비스를 뒷받침하는 CDS 구성은 아래 CDS 구성 절에 코드와 함께 적었습니다. 그래서 화면은 이 앱의 화면을 그대로 두고, 같은 분석 쿼리를 표준 분석 도구에도 노출하는 것이 가능합니다. 어느 쪽을 정식 조회 창구로 삼을지는 고객사가 정할 일이며, 이 앱은 화면과 분석 도구가 같은 CDS 를 읽으므로 숫자가 갈리지 않는다는 점만 보장하면 됩니다. 표준 분석 앱의 구체 이름과 활성화 방법은 릴리스에 따라 달라 확인 필요입니다.
확장 포인트 — 운영에서 실제로 손대는 자리
| 확장 자리 | 무엇을 바꾸나 | 방법 | 주의 |
|---|---|---|---|
| 손익 계정 → 장부 범주 매핑 | 어느 계정이 영업 · 투자 · 중단영업 범주인지 | 매핑 테이블에 계정을 추가 | 매핑이 바뀌면 과거 숫자가 흔들리지 않도록 유효기간을 둡니다 |
| 부동산 용도 | 자산을 임대 · 시세차익 · 자가사용 · 판매용으로 분류 | 자산 마스터의 확장 필드나 별도 매핑 테이블 | 용도를 누가 확정하는지 먼저 정합니다. 필드 이름은 고객사 설정이라 확인 필요 |
| 주된 사업활동 | 회사별 “부동산 투자가 주된 사업활동인가” | 회사코드별 설정값 | 판단은 회사가 합니다. 이 앱은 입력값을 받아 점검만 합니다 |
| 중단영업 소속 | 부동산이 중단영업에 속하는지 | 자산 마스터 확장 필드나 매핑 | 분류 자체는 회사의 판단이며 기준서 요건은 원문 확인 필요 |
| 점검 코드 문구 | 점검 필요 · 확인 필요의 안내 문장 | 점검 규칙의 텍스트 정의 | 단정하는 표현을 쓰지 않고 “확인합니다” 계열로 통일합니다 |
| 권한 | 회사코드 · 계정 · 이익센터별 열람 범위 | 분석 쿼리에 접근 제어(DCL) 부여 | 집계를 읽는 자리에 걸어야 합계에서 뺄셈으로 새지 않습니다 |
CDS 구성
이 사례의 화면은 검증용 샘플 데이터를 서비스가 읽어 점검 코드를 붙입니다. 운영에서는 같은 일을 CDS 로 내려서 DB 가 하게 합니다. 아래는 그때 만드는 뷰들을 레이어 순서대로 적은 것입니다.
코드는 스케치입니다. 필드 이름과 표준 뷰 이름은 릴리스와 고객사 환경에 따라 다르므로 그대로 붙여 넣기 전에 View Browser 로 실제 이름을 확인해야 합니다. 확인이 필요한 자리는 주석에 “확인 필요”로 적었습니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 | ZPNL_ACCTCAT · ZPNL_PROPUSE | 손익 계정 → 장부 범주 매핑, 자산 → 부동산 용도 매핑 | 계정과 용도는 늘 바뀝니다. 코드에 박으면 바뀔 때마다 개발자를 부르게 됩니다. |
| 차원 | ZI_PropertyUse | 부동산 한 곳의 용도 · 중단영업 여부 · 주된 사업활동 | 용도를 붙이는 join 을 한 번만 걸고, 값 도움말도 이 뷰 하나를 보게 합니다. |
| 기본 | ZI_PropertyPnl | ACDOCA 손익 라인에 부동산 · 장부 범주 · 부호 규칙을 붙임 | 화면이 건별로 보던 단위를 DB 가 만듭니다. |
| 판정 | ZC_PropertyPnlCategory | 재계산 범주와 점검 코드 | 판정 규칙을 한 곳에서만 정의해 화면 · 배치 · 분석 도구가 같은 답을 씁니다. |
| 큐브 | ZI_PropertyPnlCube | 부동산 · 용도 단위 합계와 대사 측정값 | 합계를 화면에서 더하지 않고 여기서 한 번만 정의합니다. |
| 쿼리 | ZC_PropertyPnlQuery | 조회조건 · 기본 열 배치 · 화면 필드 이름 | 표준 Fiori 분석 앱과 Analysis for Office 에서 띄울 수 있게 합니다. |
| 권한 | ZI_PROPERTYPNLCUBE (DCL) | 회사코드 · 계정 권한 | 집계를 읽는 자리에 걸어야 뺄셈으로 새지 않습니다. |
| 서비스 | Service Definition · Binding | 쿼리를 OData V2 로 게시 | 화면이 바라보는 서비스 주소가 여기서 정해집니다. |
① 매핑 테이블 — 계정과 용도
범주 판정의 모든 숫자가 이 두 표에서 갈립니다. 어느 계정이 어느 범주이고 어떤 자산이 어떤 용도인지를 정하는 자리라, 운영 전환에서 가장 먼저 합의해야 하는 항목입니다. 유효기간을 둔 이유는 중간에 체계가 바뀌어도 과거 숫자가 흔들리지 않게 하기 위해서입니다.
" ────────────────────────────────────────────────────────────────
" ZPNL_ACCTCAT — 손익 계정 → 장부 범주 매핑 (투명 테이블)
" 어느 손익 계정이 영업 · 투자 · 중단영업 범주에 놓이는지를 정한다.
" 코드에 박지 않는 이유 : 계정은 늘 늘어나고, 늘어날 때마다
" 개발자를 부르게 만들면 점검이 금방 낡는다.
" 범주 정의 자체는 회사가 정하며 기준서 원문 확인 필요.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '손익 계정 범주 매핑'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zpnl_acctcat {
key mandt : mandt not null;
key ktopl : ktopl not null; " 계정과목표
key saknr : saknr not null; " 계정
key valid_to : abap.dats not null; " 유효 종료일
valid_from : abap.dats;
book_cat : abap.char(4); " OPR 영업 · INV 투자 · DISC 중단영업
line_type : abap.char(1); " R 임대수익 · V 평가손익 · D 감가상각비 · E 운영비 · G 처분손익
}
" ────────────────────────────────────────────────────────────────
" ZPNL_PROPUSE — 자산 → 부동산 용도 매핑 (투명 테이블)
" 용도를 자산 마스터의 어느 필드에 둘지는 고객사 설정이라 확인 필요.
" 필드에 두기 어려우면 이 테이블에 용도를 따로 관리한다.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '부동산 용도 매핑'
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zpnl_propuse {
key mandt : mandt not null;
key bukrs : bukrs not null;
key anln1 : anln1 not null; " 자산번호(부동산 단위)
key valid_to : abap.dats not null;
valid_from : abap.dats;
use_type : abap.char(3); " RNT 임대 · APR 시세차익 · OWN 자가사용 · STK 판매용 · DSC 중단영업 · 공란 = 미등록
main_biz : abap.char(1); " Y = 이 회사의 주된 사업활동이 부동산 투자
use_chg : abap.char(1); " Y = 당기에 용도가 바뀐 부동산
}
② 부동산 차원 뷰
자산 마스터와 용도 매핑을 한 번만 붙여 두는 뷰입니다. 이후 모든 뷰가 이 뷰를 통해 부동산을 읽으므로, 자산의 분류 기준이 바뀌어도 고칠 곳이 여기 하나입니다.
" ────────────────────────────────────────────────────────────────
" ZI_PropertyUse — 부동산 차원
" 부동산 하나당 한 행. 자산 마스터(ANLA)에 용도 매핑을 붙인다.
" 차원 뷰를 따로 두는 이유 : join 을 한 번만 걸고,
" 값 도움말 · 텍스트가 이 뷰 하나를 보게 하기 위해서다.
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '부동산 차원'
@Analytics.dataCategory : #DIMENSION
@ObjectModel.representativeKey : 'AssetNumber'
define view entity ZI_PropertyUse
as select from anla as a
left outer join zpnl_propuse as u
on u.bukrs = a.bukrs
and u.anln1 = a.anln1
and u.valid_to >= $session.system_date
and u.valid_from <= $session.system_date
{
key a.bukrs as CompanyCode,
key a.anln1 as AssetNumber,
@Semantics.text: true
a.txt50 as PropertyName,
a.anlkl as AssetClass, // 자산 클래스로 부동산을 가르는 방식은 확인 필요
coalesce( u.use_type, '' ) as UseType,
coalesce( u.main_biz, 'N' ) as MainBusiness,
coalesce( u.use_chg, 'N' ) as UseChanged
}
where a.deakt = '00000000' // 비활성(폐기) 자산 제외 — 조건은 확인 필요
③ 손익 건 기본 뷰 — ACDOCA 에서 부동산 단위로
ACDOCA 의 HSL 은 차변이 양수, 대변이 음수입니다. 수익은 대변에 놓이므로 원장에는 음수로 들어 있습니다. 화면은 수익·이익을 양수로 읽게 하려고, 범주 매핑의 손익 구분을 보고 부호를 뒤집은 값을 함께 둡니다. 원장과 대사할 때는 원장 금액 그대로, 사람이 읽을 때는 표시 금액입니다.
" ────────────────────────────────────────────────────────────────
" ZI_PropertyPnl — 부동산 손익 건 (기본 뷰)
" ACDOCA 의 손익 계정 라인 한 줄 = 손익 건 하나.
" 장부 범주는 계정 매핑에서, 부동산은 자산 필드에서 온다.
" 원천 필드 이름은 릴리스에 따라 확인 필요.
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '부동산 손익 건'
define view entity ZI_PropertyPnl
as select from acdoca as j
inner join zpnl_acctcat as m
on m.saknr = j.racct
and m.valid_from <= j.budat
and m.valid_to >= j.budat
{
key j.rldnr as Ledger,
key j.rbukrs as CompanyCode,
key j.gjahr as FiscalYear,
key j.belnr as AccountingDocument,
key j.docln as LedgerGLLineItem,
j.anln1 as AssetNumber, // 부동산이 자산 라인에 달리지 않는 환경은 확인 필요
j.racct as GlAccount,
j.budat as PostingDate,
m.book_cat as BookedCat,
m.line_type as LineType,
@Semantics.amount.currencyCode : 'Currency'
j.hsl as LedgerAmount, // 원장 금액 — 대사용
@Semantics.amount.currencyCode : 'Currency'
cast( j.hsl * -1 as abap.curr(23,2) ) as DisplayAmount, // 수익 · 이익 +, 비용 · 손실 −
j.rhcur as Currency
}
where j.rldnr = '0L'
④ 재계산 범주와 점검 코드
이 뷰가 이 앱의 핵심입니다. 용도와 주된 사업활동으로 재계산 범주를 구하고, 장부 범주 · 전기 범주 · 용도 변경과 견줘 점검 코드를 붙입니다. 판정이 여기 한 곳에만 있어서 화면이든 배치든 분석 도구든 같은 코드를 받습니다. 규칙의 범위와 주된 사업활동의 판단 요건은 기준서 원문 확인 필요로 두고, 점검 코드는 “확인합니다” 계열의 문구만 붙입니다.
" ────────────────────────────────────────────────────────────────
" ZC_PropertyPnlCategory — 재계산 범주 · 점검 코드
" 용도 + 주된 사업활동 → 재계산 범주(ExpectCat)
" 재계산 범주 vs 장부 범주 · 전기 범주 → 점검 코드(CheckCode)
" 규칙을 한 곳에만 두는 이유 : 화면 · 배치 · 분석 도구가
" 서로 다른 답을 내는 일을 막기 위해서다.
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '재계산 범주와 점검 코드'
define view entity ZC_PropertyPnlCategory
as select from ZI_PropertyPnl as p
left outer join ZI_PropertyUse as u
on u.CompanyCode = p.CompanyCode
and u.AssetNumber = p.AssetNumber
left outer join ZI_PropertyPnlPrev as v // 전기 같은 부동산 · 같은 손익 구분의 장부 범주를 모은 뷰 — 스케치 생략
on v.CompanyCode = p.CompanyCode
and v.AssetNumber = p.AssetNumber
and v.LineType = p.LineType
{
key p.CompanyCode, key p.FiscalYear, key p.AccountingDocument, key p.LedgerGLLineItem,
p.AssetNumber, p.BookedCat, p.DisplayAmount, p.PostingDate,
u.UseType, u.MainBusiness, u.UseChanged,
v.PrevCat,
case
when u.UseType = '' then 'NONE' // 용도 미등록 — 판정 보류
when u.UseType = 'DSC' then 'DISC'
when u.UseType = 'OWN' or u.UseType = 'STK' then 'OPR'
when u.UseType = 'RNT' or u.UseType = 'APR'
then case when u.MainBusiness = 'Y' then 'OPR' else 'INV' end
else 'NONE'
end as ExpectCat,
case
when u.UseType = '' then 'K09'
when u.UseType = 'DSC' and p.BookedCat <> 'DISC' then 'K05'
when ( u.UseType = 'OWN' or u.UseType = 'STK' ) and p.BookedCat = 'INV' then 'K02'
when ( u.UseType = 'RNT' or u.UseType = 'APR' ) and u.MainBusiness = 'N'
and p.BookedCat = 'OPR' then 'K01'
when ( u.UseType = 'RNT' or u.UseType = 'APR' ) and u.MainBusiness = 'Y'
and p.BookedCat = 'INV' then 'K04'
when u.UseChanged = 'N' and v.PrevCat is not null
and v.PrevCat <> p.BookedCat then 'K03'
else 'K00'
end as CheckCode
}
⑤ 부동산 · 용도 합계 큐브
판정된 손익 건을 부동산 단위로 합산합니다. 장부 3범주와 재계산 3범주, 판정 보류, 이동 필요 금액이 모두 여기서 계산되므로 화면이 합계를 더할 일이 없습니다. 이 뷰의 측정값이 대사 R01~R05 의 좌변과 우변이 됩니다.
" ────────────────────────────────────────────────────────────────
" ZI_PropertyPnlCube — 부동산 단위 합계 (큐브)
" 장부 범주와 재계산 범주를 같은 줄에 나란히 두는 것이 목적이다.
" 합계를 화면에서 더하지 않고 여기서 한 번만 정의한다.
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '부동산 손익 범주 큐브'
@Analytics.dataCategory : #CUBE
define view entity ZI_PropertyPnlCube
as select from ZC_PropertyPnlCategory as c
{
key c.CompanyCode,
key c.FiscalYear,
key c.AssetNumber,
c.UseType,
c.MainBusiness,
@Aggregation.default : #SUM
sum( c.DisplayAmount ) as NetAmount,
@Aggregation.default : #SUM
sum( case when c.BookedCat = 'OPR' then c.DisplayAmount else 0 end ) as LedgerOperating,
@Aggregation.default : #SUM
sum( case when c.BookedCat = 'INV' then c.DisplayAmount else 0 end ) as LedgerInvesting,
@Aggregation.default : #SUM
sum( case when c.BookedCat = 'DISC' then c.DisplayAmount else 0 end ) as LedgerDiscontinued,
@Aggregation.default : #SUM
sum( case when c.ExpectCat = 'OPR' then c.DisplayAmount else 0 end ) as ExpectOperating,
@Aggregation.default : #SUM
sum( case when c.ExpectCat = 'INV' then c.DisplayAmount else 0 end ) as ExpectInvesting,
@Aggregation.default : #SUM
sum( case when c.ExpectCat = 'DISC' then c.DisplayAmount else 0 end ) as ExpectDiscontinued,
@Aggregation.default : #SUM
sum( case when c.ExpectCat = 'NONE' then c.DisplayAmount else 0 end ) as HoldAmount, // 판정 보류
@Aggregation.default : #SUM
sum( case when c.CheckCode between 'K01' and 'K05' and c.ExpectCat <> c.BookedCat
then c.DisplayAmount else 0 end ) as MoveAmount, // 요약에는 절대값 합계로 표시
count( * ) as LineCount,
sum( case when c.CheckCode between 'K01' and 'K05' then 1 else 0 end ) as FlagCount,
sum( case when c.CheckCode = 'K09' then 1 else 0 end ) as ConfirmCount
}
group by c.CompanyCode, c.FiscalYear, c.AssetNumber, c.UseType, c.MainBusiness
⑥ 분석 쿼리 — 화면이 읽는 모양
쿼리는 조회조건과 기본 열 배치, 화면에서 쓰는 필드 이름을 정합니다. 표준 Fiori 분석 앱이나 Analysis for Office 에서도 이 쿼리를 띄울 수 있어, 같은 정의를 이 앱의 화면과 표준 분석 도구가 함께 쓸 수 있습니다.
" ────────────────────────────────────────────────────────────────
" ZC_PropertyPnlQuery — 분석 쿼리 (Consumption)
" 회계연도 필수, 회사 · 용도 · 점검 결과는 선택.
" 이름은 화면 필드와 맞춘다.
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '부동산 손익 범주 점검'
@Analytics.query : true
@OData.publish : false
define view entity ZC_PropertyPnlQuery
as select from ZI_PropertyPnlCube
{
@AnalyticsDetails.query.axis : #ROWS
@Consumption.filter : { selectionType : #SINGLE, mandatory : true }
key FiscalYear,
@AnalyticsDetails.query.axis : #ROWS
@Consumption.filter.selectionType : #SINGLE
key CompanyCode,
@AnalyticsDetails.query.axis : #ROWS
key AssetNumber,
@Consumption.filter.selectionType : #RANGE
UseType,
@AnalyticsDetails.query.axis : #COLUMNS
NetAmount, LedgerOperating, LedgerInvesting, LedgerDiscontinued,
ExpectOperating, ExpectInvesting, ExpectDiscontinued, HoldAmount,
MoveAmount, LineCount, FlagCount, ConfirmCount
}
⑦ 접근 제어(DCL)
합계에 권한을 걸지 않으면 전사 합계와 자기 몫의 차이로 남의 부동산 숫자를 알아낼 수 있습니다. 그래서 권한은 건별 상세가 아니라 큐브를 읽는 자리에 겁니다.
" ────────────────────────────────────────────────────────────────
" ZI_PROPERTYPNLCUBE — 접근 제어
" 회사코드(F_BKPF_BUK) 권한이 있는 데이터만 읽게 한다.
" 권한 오브젝트와 필드는 고객사 권한 설계에 따라 확인 필요.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '부동산 손익 범주 큐브 권한'
@MappingRole : true
define role ZI_PROPERTYPNLCUBE {
grant select on ZI_PropertyPnlCube
where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
⑧ 서비스 정의와 바인딩
쿼리를 OData V2 서비스로 게시하는 자리입니다. 이 단계가 끝나면 화면이 읽던 서비스 주소만 운영 주소로 바뀌고 화면 코드는 그대로입니다.
" ────────────────────────────────────────────────────────────────
" Service Definition — 쿼리를 서비스에 노출
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '부동산 손익 범주 점검 서비스'
define service ZUI_PropertyPnlCheck {
expose ZC_PropertyPnlQuery as PropSet;
expose ZC_PropertyPnlCategory as LineSet; // 건별 점검 — 읽기 전용
}
" Service Binding : OData V2 - UI, 이름 ZUI_PROPERTYPNLCHECK_O2
" 활성화는 /IWFND/MAINT_SERVICE 또는 Binding 의 게시(Publish)로 한다.
" 게시한 뒤 이 앱의 서비스 주소(manifest)만 교체한다.
운영 시점에 해야 할 일
개발보다 정하는 일이 많습니다. 아래를 정하지 않고 코드부터 올리면 첫 대사에서 숫자가 어긋납니다.
| 해야 할 일 | 무엇을 정하나 | 정하지 않으면 | 누가 |
|---|---|---|---|
| 손익 계정 → 범주 매핑 | 어느 계정이 영업 · 투자 · 중단영업 범주인지 | 점검 코드가 계정마다 어긋나 첫 회의에서 막힙니다 | 회계팀 |
| 부동산 용도 확정 | 자산마다 임대 · 시세차익 · 자가사용 · 판매용 · 중단영업 중 무엇인지, 확정하는 주체 | 용도 미등록 건이 계속 확인 필요로 남고 판정 보류 금액이 줄지 않습니다 | 자산 담당 · 회계팀 |
| 주된 사업활동 판단 | 회사코드별로 부동산 투자가 주된 사업활동인지 | 임대 건이 영업과 투자 사이에서 오락가락합니다 | 경영지원 · 회계팀 |
| 부호 규칙 | 수익 · 이익 양수, 비용 · 손실 음수로 읽을지 | 같은 금액을 두 사람이 반대 부호로 읽습니다 | 회계팀 |
| 원천 확정 | 부동산이 ACDOCA 의 어느 필드로 이어지는지(자산번호 · 오더 · 이익센터 등) | 부동산이 없는 손익 라인이 대량으로 빠집니다 | 자산 · CO 담당 |
| 전기 비교 범위 | 전기 범주를 같은 부동산 · 같은 손익 구분에서 가져올지, 기준서 도입 첫해의 재작성 범위를 어떻게 볼지 | K03 이 도입 첫해에 대량으로 올라옵니다 | 회계팀 · 감사 대응 |
| 권한 설계 | 회사코드별 열람 범위, 집계에 거는 권한 | 합계 뺄셈으로 다른 회사 숫자가 드러납니다 | 보안 · 권한 |
| 대사 체계 | FAGLL03 · FAGLB03 합계와 맞출 항목과 주기 | 어느 숫자를 믿을지 합의가 없습니다 | 회계팀 |
| 성능 기준 | 응답 시간 목표와 조회 상한 | 조회 한 번에 화면이 멈춥니다 | Basis · 개발 |
| 전송(TR) 순서 | 테이블 → 뷰 → 쿼리 → 권한 → 서비스 순서 | 활성화 오류가 나고 서비스가 열리지 않습니다 | 개발 · Basis |
| 서비스 활성화와 주소 교체 | /IWFND/MAINT_SERVICE 활성화 또는 Binding 게시, manifest.json 의 서비스 주소 교체 | 화면이 샘플 서비스를 계속 바라봅니다 | 개발 · Basis |
| 배치 등록 | 점검 결과 요약을 주기적으로 뽑아 담당자에게 보낼지 (SM36) | 사람이 열 때만 점검이 돕니다 | Basis · 회계팀 |
운영 데이터로 갈 때
검증용 샘플 데이터는 부동산 15곳 · 손익 38건이라 화면이 전부 읽어도 부담이 없습니다. 운영에서는 부동산이 수백 곳, 손익 건이 수만~수십만 건이 될 수 있고 ACDOCA 전체는 그보다 훨씬 큽니다. 그래서 집계를 CDS 로 내려 DB 에서 하게 하고, 화면은 요약과 부동산 단위 합계만 먼저 읽은 뒤 건별은 행을 눌렀을 때 읽는 방식으로 바꾸는 것이 안전합니다.
회계연도와 회사코드는 쿼리의 필수 파라미터로 두고, 손익 계정으로 먼저 걸러 읽는 조건이 인덱스를 타는지 실제 데이터로 확인해야 합니다. 응답 시간 목표는 고객사가 정할 일이며, 건별 탭은 건수가 일정 수를 넘으면 범위를 좁히라고 안내하는 편이 낫습니다. 이 단계의 구체 성능 수치는 운영 데이터 규모와 시스템 구성에 따라 달라 확인 필요입니다.
자주 묻는 질문
도입 상담과 데모에서 자주 받는 질문들입니다. 네 묶음으로 나눠 적었습니다.
판정 규칙과 숫자
이 화면은 투자부동산 손익의 범주를 확정해 주나요?
아니요. 부동산 용도와 회사의 주된 사업활동으로 범주를 다시 구해 장부 범주와 견주고, 다른 건을 “점검 필요”로 보여 주는 점검 도구입니다.
범주를 어디에 둘지는 기준서의 요구사항을 읽는 회사의 판단이고, 그 판단을 검토하는 것은 감사인의 몫입니다. 화면은 분류 · 집계 · 대사를 돕는 조회 도구이며 최종 판단은 회사와 감사인이 합니다. 그래서 화면 문구도 “오류”가 아니라 “점검 필요” · “확인 필요”까지만 말합니다.
재계산 범주는 어떻게 구하나요?
부동산에 등록한 용도와 회사의 주된 사업활동 여부 두 가지만 씁니다. 용도가 미등록이면 판정 보류, 중단영업 소속이면 중단영업 범주, 자가사용 · 판매용이면 영업범주, 임대 목적 · 시세차익 목적 투자부동산이면 주된 사업활동이 부동산 투자일 때 영업범주, 아닐 때 투자범주입니다.
이 순서는 화면의 점검 규칙입니다. 투자범주에 들어가는 손익의 범위와 주된 사업활동의 판단 요건은 기준서 원문 확인 필요이므로, 도입 전에 회사와 감사인이 규칙을 한 번 맞춰 보는 것을 권합니다.
점검 필요와 확인 필요는 무엇이 다릅니까?
점검 필요는 용도로 구한 범주와 장부 범주가 다르거나, 용도 변경 없이 전기와 달라진 건입니다(K01~K05). 근거는 있는데 결과가 다르다는 뜻입니다.
확인 필요는 부동산 용도가 등록되지 않아 범주를 판단할 기준 자체가 없는 건입니다(K09). 이 건의 금액은 임의로 어느 범주에도 넣지 않고 판정 보류로 모읍니다. 회사가 용도를 먼저 정하고 다시 조회하면 재계산 범주가 채워집니다.
이동 필요 금액은 무엇을 뜻합니까?
범주가 서로 다른 건의 손익 금액입니다. 건별 탭에는 부호를 포함해 그대로 적고, 요약에는 절대값 합계로 보여 줍니다. 이 사례에서는 3,738.0 백만 원입니다.
이 금액은 “옮겨야 할 금액”이 아니라 “옮길 수도 있는 금액”입니다. 점검 결과 장부가 맞고 규칙이 현실에 맞지 않았던 것으로 드러날 수도 있어서, 화면은 크기만 알려 주고 이동 여부는 판단하지 않습니다.
영업범주와 투자범주를 가르는 금액이 합계에서 어긋나지 않습니까?
어긋나지 않게 만들어 두었고 매번 검산합니다. 장부 3범주 합계가 순 손익과 같고(R02), 재계산 3범주에 판정 보류를 더한 것도 순 손익과 같아야 합니다(R03). 범주별 (장부 − 재계산) 합계는 판정 보류 금액과 같아야 합니다(R05).
범주가 달라도 금액이 새로 생기거나 사라지지 않고 범주 사이를 옮겨 다닐 뿐이므로, 합계가 맞지 않으면 그것 자체가 오류 신호입니다. 검증용 샘플 데이터에서는 여섯 대사식이 모두 차이 0 입니다.
표시 금액의 부호는 어떻게 읽습니까?
수익 · 이익은 양수, 비용 · 손실은 음수입니다. ACDOCA 의 HSL 은 차변이 양수 · 대변이 음수라 수익이 원장에는 음수로 들어 있는데, 그대로 보이면 임대수익이 마이너스로 읽혀 혼란스럽습니다. 그래서 사람이 읽는 표시 금액은 손익계산서 방향으로 뒤집고, 원장과 대사할 때는 원장 금액을 씁니다.
화면과 조작
조회 조건에는 무엇이 있고 어떻게 쓰나요?
회계연도는 필수(4자리)이고, 회사 · 부동산 용도 · 장부 범주 · 기록일 시작과 종료 · 부동산명 일부 · 점검 코드 · 점검 결과는 선택입니다. 비워 두거나 “전체”이면 그 조건은 서비스에 보내지 않습니다. 입력칸에서 Enter 키를 눌러도 조회되고, 조회 버튼은 조건 영역 가장 오른쪽에 있습니다.
점검 필요 건만 모아 볼 수 있습니까?
있습니다. 점검 결과를 “점검 필요”로 고르면 표가 해당 건만 남기고, 요약과 탭 건수도 같은 조건으로 다시 계산됩니다. 점검 코드로 K01 같은 한 종류만 고를 수도 있습니다. 결과는 CSV 로 내려받아 담당자에게 건네면 됩니다.
행을 누르면 무엇이 나옵니까?
손익 건별 점검 탭에서 행을 누르면 상세 창이 열려 부동산 용도 · 주된 사업활동 여부 · 손익 구분 · 용도 변경 · 전기 · 장부 · 재계산 범주 · 기록일과 점검 근거 문장이 나옵니다. 아래에는 같은 부동산의 건별 비교표가 붙어서, 한 건의 문제인지 부동산 전체의 문제인지를 바로 가를 수 있습니다.
내려받는 CSV 는 어떤 형식입니까?
지금 보고 있는 탭의 표를 UTF-8 CSV 로 내려받습니다. 한글이 깨지지 않도록 엑셀에서 바로 열 수 있게 맞췄고, 조회 조건이 적용된 결과만 담깁니다. 검토 자료에 붙이거나 담당자별로 나눠 보낼 때 씁니다.
모바일이나 좁은 화면에서도 쓸 수 있습니까?
표준 컨트롤이 화면 폭에 따라 조회조건과 요약을 줄바꿈하고, 표는 가로로 스크롤해 모든 열을 읽게 합니다. 열을 감추지 않으므로 같은 숫자를 같은 이름으로 볼 수 있습니다. 다만 열이 많은 표라서 휴대폰에서는 가로 스크롤이 필요합니다.
표준 기능과의 관계
SAP 표준 화면과 무엇이 다릅니까?
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. FAGLL03 은 계정 기준으로 전표 라인을, FAGLB03 은 계정 잔액을 보여 줍니다. 이 앱은 그 손익 라인에 부동산과 용도를 붙여, 용도로 다시 구한 범주를 장부와 견줍니다. 표준에는 그 비교를 해 주는 화면이 따로 없어 보통 엑셀로 맞춥니다.
기존 재무제표 출력이나 공시 작업을 이 화면이 대체합니까?
아니요. 공시용 출력과 감사 대응은 표준 거래에 그대로 둡니다. 이 화면은 출력 전에 범주가 다른 건을 미리 가려 내는 사전 점검 용도입니다. 대사와 법정 보고는 바뀌는 속도가 다르므로 섞지 않는 편이 안전합니다.
숫자는 표준 화면과 어떻게 맞춰 봅니까?
같은 회사 · 회계연도 · 기록일 범위를 조회조건에 넣고 이 앱의 계정별 손익 합계를 FAGLL03 개별 항목 합계 및 FAGLB03 잔액과 맞춥니다. 운영 검수의 첫 번째 대사로 권하는 방법입니다. 다르면 조회 범위(회사 · 기록일)부터 확인하고, 그다음에 계정 매핑이 같은지 봅니다.
부동산 용도는 SAP 의 어디에 있습니까?
자산 마스터(AS03)가 부동산의 분류와 기본 정보를 가지고 있지만, 용도를 어느 필드에 두는지는 고객사마다 다릅니다. 표준 필드로 충분하면 그대로 쓰고, 어려우면 확장 필드나 별도 매핑 테이블에 용도를 관리합니다. 용도를 확정하는 주체를 먼저 정하는 것이 더 중요합니다. 필드 이름은 고객사 설정이라 확인 필요입니다.
도입과 운영
IFRS 18 은 언제부터 적용됩니까?
IFRS 18 은 2027-01-01 이후 개시하는 회계연도부터 적용하며 조기적용을 허용하고, 비교기간은 재작성합니다. 그 밖의 경과규정은 기준서 원문 확인 필요이므로 이 글에서는 적지 않습니다. 이 화면은 도입 전에 범주가 다른 건을 미리 가려 두는 준비 도구로 쓸 수 있습니다.
우리 회사의 주된 사업활동이 부동산 투자이면 어떻게 점검합니까?
회사코드별로 주된 사업활동 여부를 입력값으로 받아 임대 · 시세차익 목적 투자부동산의 손익을 영업범주 기준으로 점검합니다. 같은 임대 건물이라도 이 값이 “예”이면 장부 범주가 투자범주일 때(K04), “아니오”이면 영업범주일 때(K01) 점검 필요로 올라옵니다.
그 여부를 판단하는 일은 회사의 몫이며, 판단 요건은 기준서 원문 확인 필요입니다. 화면은 그 판단을 대신하지 않고 판단이 장부에 반영됐는지만 봅니다.
용도가 등록되지 않은 부동산은 어떻게 됩니까?
범주를 판단할 기준이 없으므로 “확인 필요”로 표시하고 금액은 판정 보류로 모읍니다. 임의로 영업범주나 투자범주로 채우지 않습니다. 회사가 용도를 정한 뒤 다시 조회하면 재계산 범주가 채워지고 보류 금액이 줄어듭니다. 도입 준비에서 이 보류 금액을 0 으로 만드는 것이 첫 목표입니다.
운영 시스템에 연결하는 절차는 어떻게 됩니까?
계정 매핑과 용도 매핑을 정하고, CDS 뷰(매핑 · 차원 · 기본 · 판정 · 큐브 · 쿼리 · 권한)를 만들어 전송한 뒤, 서비스를 활성화해 화면의 서비스 주소를 교체하는 순서입니다. 화면 코드는 바꾸지 않습니다. 소요 기간은 고객사의 자산 마스터 정리 상태와 용도 확정 속도에 따라 크게 달라 확정해서 말씀드릴 수 없습니다. 정하는 일이 개발보다 많다는 점만 먼저 알려 드립니다.
권한과 보안은 어떻게 설계합니까?
회사코드 단위 열람 권한을 합계(큐브)를 읽는 자리에 겁니다. 건별 상세에만 걸면 전사 합계와 자기 몫의 차이로 다른 회사 숫자를 알아낼 수 있습니다. 화면은 OpenUI5 표준 컨트롤만 쓰므로 외부 라이브러리 반입 심사가 필요 없고, 서비스 호출은 사내 시스템의 인증을 그대로 따릅니다.
계정 체계가 바뀌면 어떻게 합니까?
손익 계정 → 범주 매핑 표에 계정을 추가하거나 유효기간을 조정하면 됩니다. 판정 규칙과 화면 코드는 건드리지 않습니다. 유효기간이 있으므로 계정 체계가 바뀌어도 과거 기간의 숫자는 그 시점의 매핑으로 계산되어 흔들리지 않습니다.
전표가 아주 많으면 느려지지 않습니까?
샘플은 손익 38건이라 부담이 없지만, 운영에서는 집계를 CDS 로 내려 DB 에서 하게 하고 화면은 요약과 부동산 단위 합계를 먼저 읽는 방식으로 바꿉니다. 회계연도와 회사코드는 필수 파라미터로 두고 건별은 행을 눌렀을 때 읽습니다. 구체적인 응답 시간은 운영 데이터 규모에 따라 달라 확인 필요입니다.
도입하면 무엇이 달라집니까?
손익 범주를 확인하려고 계정별 개별 항목 · 자산 마스터 · 부동산 목록 엑셀을 번갈아 열던 일이 한 화면으로 모입니다. 점검 코드가 붙은 건만 보면 되고, 합계는 대사로 매번 검산되므로 “어느 숫자가 맞나” 회의가 줄어듭니다. 기준서 도입 전 준비 시기에 범주가 다른 건을 미리 가려 두는 데 가장 효과가 있습니다. 대상은 재무회계팀과 이를 검토하는 경영지원 조직입니다.
점검 규칙을 우리 회사 기준에 맞게 바꿀 수 있습니까?
기준이 되는 값(계정 매핑 · 용도 매핑 · 주된 사업활동)은 모두 설정으로 두었기 때문에 코드를 바꾸지 않고 조정할 수 있습니다. 판정 순서 자체를 바꾸는 일은 판정 뷰 한 곳을 고치면 화면 · 배치 · 분석 도구에 함께 반영됩니다. 규칙을 바꾸기 전에 회사와 감사인이 기준을 합의해 두는 것이 먼저입니다.
대사 차이 0 이면 범주가 맞다는 뜻입니까?
아닙니다. 대사 차이 0 은 화면의 집계가 서로 어긋나지 않는다는 뜻이지 범주 판단이 옳다는 뜻이 아닙니다. 범주가 맞는지는 점검 필요 · 확인 필요 건을 사람이 하나씩 확인해 정합니다. 이 화면은 그 확인을 빠뜨리지 않도록 건을 가려 주는 도구입니다.