매출채권 양도 손익 범주 점검 — IFRS 18 에서 팩토링·어음 할인으로 생긴 양도 손익·수수료·할인료가 영업·재무 범주 중 맞는 곳에 놓였는지 다시 구해 장부와 맞춰 보는 화면
상환청구 유형으로 다시 구한 범주 · 장부 기록과의 비교 · 건별 점검 코드 · 할인료 재계산 · 전수 대사 — 소개 영상과 실제 화면 7종, 그리고 CDS 코드까지
소개 영상1분 34초9개 장면음성 안내·자막표지에서 정리까지 사용 순서대로
개발 배경 — 이 앱을 사용해야 하는 이유
IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호)는 손익계산서의 수익과 비용을 영업 · 투자 · 재무 같은 범주로 나눠 보이도록 요구합니다. 시행은 2027-01-01 이후 개시하는 회계연도부터이고, 비교기간도 같은 틀로 다시 써야 합니다. 그래서 범주 분류는 “올해 결산에서 바로 보게 될” 문제가 아니라 “지금 계정과 거래 속성을 정리해 두어야 하는” 문제입니다. 범주의 정의와 예외, 문단 번호는 모두 원문 확인 필요이며, 이 화면은 회사가 정한 분류 정책을 점검 규칙으로 옮겨 쓴 것입니다.
매출채권을 팩토링이나 어음 할인으로 넘기면 손익이 세 갈래로 생깁니다. 채권을 넘기며 남는 양도 손익, 금융기관에 내는 수수료, 넘긴 날부터 만기까지 붙는 할인료입니다. 이 셋이 어느 범주에 놓이는지는 상환청구가 있느냐 없느냐에 따라 달라지는 것이 일반적인 설명입니다. 상환청구가 없어 양도로 처리한 건이면 영업 쪽 손익으로 두는 것이 보통이고, 상환청구가 있어 차입으로 처리한 건이면 이자성 비용이라 재무 쪽에 놓입니다. 문제는 현업이 계정과 거래 속성을 건마다 이렇게 맞춰 보기가 어렵다는 점입니다.
지금은 양도 계약 목록 엑셀과 개별 항목 조회, 계정별 손익 잔액을 번갈아 열어 건마다 손으로 맞춥니다. 계약 하나의 손익이 영업과 재무 두 범주에 나뉘어 있어도 계정 잔액만 봐서는 보이지 않고, 계약 조건이 바뀌었는데 계정은 그대로인 경우도 합계로는 드러나지 않습니다. 이 앱은 그 자료를 한 화면에 붙여, 손익 건마다 상환청구 유형과 구성요소로 다시 구한 범주(재계산 범주)를 장부에 기록된 범주와 나란히 놓고, 다른 건과 판단 근거가 비어 있는 건을 점검 대상으로 보여 줍니다.
범주는 계약이 아니라 손익 건 하나하나의 구성요소로 갈린다
한 양도 계약의 손익이 모두 같은 범주에 들어가는 것은 아닙니다. 양도 손익과 수수료는 같은 계약 안에서도 계정이 다르고, 계정마다 속한 범주가 다르게 매핑되어 있을 수 있습니다. 계약 단위로 범주를 한 번에 정해 두면 한 건의 계정이 바뀌었을 때 합계는 같은데 범주별 금액만 틀어진 채 남습니다. 이 앱은 손익 건마다 구성요소(양도 손익 · 수수료 · 할인료)를 읽어 범주를 다시 구하므로, 어느 건이 어느 범주에서 어긋났는지 건 단위로 보입니다.
차입으로 처리한 건의 이자성 비용이 영업에 남아 있는 경우
상환청구가 있어 차입으로 처리한 건의 할인료는 이자 성격의 비용입니다. 이 비용이 영업범주 계정에 기록되어 있으면 점검 대상입니다. 이 화면은 이런 건을 점검 코드 A02 로 모아 보여 줍니다. 반대로 상환청구가 없는 양도의 손익이 재무범주에 기록된 경우는 A01 입니다. 어느 쪽이 맞는지는 계약 조건과 회사의 분류 정책에 따라 달라, 화면은 “확인하라”고만 알립니다.
투자범주나 범주 미지정으로 흘러간 금액이 가장 찾기 어렵다
영업과 재무 사이에서 옮겨진 금액은 총액이 같아서 합계 대사로는 잡히지 않습니다. 반면 양도 관련 손익이 투자범주에 기록되었거나(A03) 범주 자체가 비어 있는 건(A05)은 영업 · 재무 소계에서 빠져 합계가 달라 보입니다. 이 앱은 이 두 경우를 따로 모으고, 범주별 합계 탭에서 투자범주와 범주 미지정 줄에 금액이 있는지 한눈에 보게 했습니다.
할인료는 금액까지 다시 구해 본다
범주가 맞아도 금액이 맞는지는 별개입니다. 할인료는 양도채권액 × 연 할인율 × 일수 ÷ 365 로 다시 구할 수 있습니다. 이 앱은 상환청구가 있는 계약마다 이 식으로 할인료를 다시 계산해 장부 할인료와 견주고, 다르면 점검 코드 A04 로 알립니다. 일수 기준이나 반올림 방식이 달라서 생기는 차이일 수 있어, 오류로 단정하지 않고 계산 기준을 확인하라고만 표시합니다.
일부 상환청구면 판단을 보류한다
점검 도구가 제일 조심해야 하는 일은 근거 없이 범주를 단정하는 것입니다. 상환청구가 일부만 있는 조건은 양도와 차입 중 어느 쪽에 가까운지 회사가 먼저 판단해야 하므로, 이 앱은 임의로 범주를 채우지 않고 “확인 필요”(A09)로 표시해 판정 보류에 모읍니다. 회사가 판단을 정한 뒤 다시 조회하면 그 건이 재계산 대상으로 들어옵니다.
사용 방법
- 회계연도를 입력합니다(필수, 4자리). 회사 · 상환청구 유형 · 구성요소 · 기록 범주 · 전기일 · 양도 상대방 · 점검 코드 · 점검 결과는 필요할 때만 고릅니다.
- 조회 버튼을 누르거나 입력칸에서 Enter 키를 누릅니다. 조회 버튼은 조회조건 영역 안 입력칸들의 가장 오른쪽에 있고, 화면을 열면 회계연도 기준으로 한 번 자동 조회됩니다.
- 위쪽 요약에서 점검한 손익 건수 · 점검 필요 항목 · 확인 필요 항목 · 범주 이동 필요 금액 · 영업범주에 기록된 양도 손익 · 대사 차이 건수를 먼저 봅니다.
- 탭을 양도 계약별 점검 → 손익 건별 점검 → 범주별 합계 → 할인료 재계산 → 대사 결과 순서로 옮겨 가며 봅니다.
- 손익 건별 점검 탭에서 행을 누르면 상세가 열려 점검 근거와 같은 양도 계약의 손익 건 비교가 나옵니다.
- CSV 내려받기 버튼으로 지금 보고 있는 탭을 UTF-8 파일로 내려받아 검토 자료에 붙입니다.
숫자를 믿을 수 있는가 — 검증 결과
손익 범주 점검에서 가장 비싼 질문은 “범주를 옮겼더니 총액이 달라졌다” 입니다. 그래서 만드는 쪽에서 먼저 대사식을 세워 두고 검증용 샘플 데이터 전체로 돌렸습니다. 아래는 그 결과입니다.
| 대사식 | 검사 건수 | 차이 건수 | 최대 차이 |
|---|---|---|---|
| R01 · 건별 손익 합계 = 계약별 손익 합계 | 13 | 0 | 0원 |
| R02 · 건별 손익 합계 = 범주별 장부 합계 | 2 | 0 | 0원 |
| R03 · 건별 손익 합계 = 범주별 재계산 합계 | 2 | 0 | 0원 |
| R04 · 범주별 (장부 − 재계산) 합계 = 0 | 2 | 0 | 0원 |
| R05 · 계약별 영업 + 재무 + 그 밖의 = 손익 합계 | 13 | 0 | 0원 |
| R06 · 계약별 재계산 영업 + 재무 = 손익 합계 | 13 | 0 | 0원 |
| R07 · (참고) 장부 할인료 = 재계산 할인료 | 7 | 1 | 521,918원 |
정합성 대사 여섯 식은 모두 차이 0 이고, 참고 대사 한 식(R07)에만 의도적으로 넣은 예외 한 건이 남아 있습니다. 점검 화면이므로 의도적으로 넣은 예외 건은 대사 차이와 분리해 기록합니다. 검증용 샘플 데이터에는 점검 필요 손익 건 16건(A01 4건 · A02 6건 · A03 2건 · A04 2건 · A05 2건), 확인 필요 8건(A09), 할인료 재계산 차이 1계약이 들어 있고, 이 숫자는 정합성 대사 차이 0건과 별개입니다. 이와 별도로 상환청구 유형과 구성요소에서 범주를, 양도 조건에서 할인료를 독립 재계산하는 검증 스크립트가 9개 검사 항목(검사 건수 합계 205건) 모두 차이 0건임을 확인했습니다.
무엇으로 만들었나
| 자리 | 무엇 | 왜 그렇게 두었나 |
|---|---|---|
| 화면 | 조회조건 · 요약 지표 · 탭 다섯 개 · 상세 창 | 입력과 결과를 한 화면에 두어 조회 뒤 곧바로 판정 근거까지 내려가게 했습니다 |
| 화면 제어 | 조회 · 초기화 · 탭 전환 · CSV 내려받기 · 오류 안내 | 조회조건 검사와 오류 구분(정의 실패 · 요청 실패 · 빈 응답)을 한 곳에서 처리해 화면마다 다르게 보이지 않습니다 |
| 서비스 구성 | OData V2 서비스 하나, 엔티티셋 다섯 개(손익 건 · 양도 계약 · 범주 · 할인료 · 대사)와 함수 한 개(점검 필요 건수) | 화면이 읽는 모양과 원천 구조를 분리해, 운영 서비스로 바꿀 때 화면 코드를 고치지 않습니다 |
| 판정 · 집계 로직 | 상환청구 유형과 구성요소로 범주를 구하고 점검 코드를 붙이는 서비스 로직 파일 | 규칙이 한 곳에만 있어야 화면과 합계와 대사의 숫자가 같습니다 |
| 날짜 조건 | 전기일 범위 조회는 서비스가 직접 걸러 정렬 · 건수 · 페이징과 함께 돌려줌 | 날짜 필터가 정렬이나 총건수와 어긋나지 않게 했습니다 |
| 테마 | sap_horizon | SAP 표준 화면과 같은 모양이라 현업이 따로 배울 것이 없습니다 |
실행 화면
실제 사용 순서대로 화면 일곱 장을 싣습니다. 모든 화면은 검증용 샘플 데이터(회사 2곳 · 양도 계약 13건 · 손익 건 52건)로 열었습니다.
처음 열면 양도 계약별 점검이 먼저 보인다
화면을 열면 회계연도를 기준으로 한 번 자동 조회되어, 입력 없이도 양도 계약별 점검이 바로 채워집니다. 요약 지표 여섯 개를 먼저 읽고 표로 내려가는 순서가 기본입니다.

맨 위 파란 안내는 이 화면이 점검 도구이며 최종 판단은 회사와 감사인이 한다는 점을 먼저 밝힙니다. 요약의 ‘52’는 점검한 손익 건수, ‘16’은 점검 필요 항목, ‘8’은 확인 필요 항목이고, 범주 이동 필요 금액은 26.1 백만 원, 영업범주에 기록된 양도 손익은 55.8 백만 원, 정합성 대사 차이는 0건으로 보입니다. 아래 표는 양도 계약 13건을 한 줄씩 보여 주며 영업 · 재무 범주의 장부 금액과 재계산 금액이 줄마다 나란히 놓입니다. 점검 결과 칸의 ‘정상’ · ‘점검 필요’ · ‘확인 필요’로 어느 계약부터 볼지 바로 가려집니다.
손익 건마다 점검하고, 조건으로 좁힌다
계약 단위에서 의심 가는 곳이 보이면 건별 탭으로 내려가 어느 건의 범주가 다른지 확인합니다. 점검 코드로 좁히면 같은 사유의 건만 남습니다.

탭을 손익 건별 점검으로 옮기면 손익 건 52건이 한 줄씩 나옵니다. 건마다 양도 계약, 상환청구 유형(양도 처리 · 차입 처리 · 일부 상환청구), 구성요소, 전기일, 금액, 기록 범주, 재계산 범주, 범주 이동 필요 금액, 점검 내용이 나란히 놓입니다. 점검 필요 건은 이동 필요 금액이 0이 아니게 표시되어 합계로 한눈에 훑을 수 있고, 건수가 많을 때는 아래 조회조건으로 좁히면 됩니다.

점검 코드를 A02 로 고르고 조회하면 손익 건별 점검 탭에 6건만 남습니다. 모두 상환청구가 있어 차입으로 처리한 계약의 할인료이거나 수수료인데 영업범주에 기록된 건입니다. 입력칸에서 Enter 키를 눌러도 같은 조회가 일어납니다. 조회조건을 비우고 초기화를 누르면 회계연도 기본값으로 돌아가며, 전기일 시작이 종료보다 늦으면 조회하지 않고 안내 문구를 보입니다.
행을 눌러 근거를 본다
점검 필요로 나온 건은 이유를 설명할 수 있어야 의미가 있습니다. 한 줄을 누르면 근거 문장과 같은 양도 계약의 손익 건이 함께 열립니다.

손익 건별 점검 표에서 한 줄을 누르면 손익 건 상세가 열립니다. 위쪽에는 양도 계약, 양도 상대방, 상환청구 유형, 구성요소, 금액, 기록 범주, 재계산 범주가 나오고, 가운데에는 점검 근거 문장이 나옵니다. 아래 표는 같은 계약의 손익 건을 건별로 보여 주며 어느 건에서 기록 범주와 재계산 범주가 갈라지는지, 이동이 필요한 금액이 얼마인지 읽을 수 있습니다. 닫기를 누르면 조회 결과 그대로 표로 돌아옵니다.
범주별 합계, 할인료 재계산, 대사로 합계를 확인한다
건 단위 점검이 끝나면 범주별 합계로 어느 범주에서 차이가 생기는지 보고, 할인료는 재계산 탭으로 금액이 맞는지 보고, 마지막으로 대사 결과로 합산 과정의 합계가 맞는지 확인합니다.

범주별 합계 탭은 회사와 범주 단위로 8줄이 나옵니다. 장부 금액과 재계산 금액, 두 금액의 차이, 기록 건수, 점검 필요 건수가 한 줄에 놓입니다. 회사 1000 에서는 영업범주의 장부 금액이 재계산보다 1,157,534원 크고 재무범주는 같은 금액만큼 작아, 영업에서 재무로 옮겨 놓일 금액의 위치를 바로 볼 수 있습니다. 회사 2000 에서는 투자범주에 5,600,000원, 범주 미지정에 2,400,000원이 기록되어 있어 각각 점검 대상으로 올라옵니다.

할인료 재계산 탭에는 양도 계약 7건이 한 줄씩 나오며 양도채권액, 연 할인율, 일수, 재계산 할인료, 장부 할인료, 차이, 점검 결과를 보여 줍니다. 한 건에서만 장부 할인료가 재계산보다 521,918원 작게 나오며, 이 건이 점검 코드 A04 로 올라옵니다. 일부 상환청구 조건의 두 건은 금액은 맞지만 양도 성격의 판단이 먼저라서 ‘확인 필요’로 표시됩니다.

대사 결과 탭에는 대사 번호 · 구분 · 대사 항목 · 좌변 · 우변 · 검사 건수 · 차이 건수 · 최대 차이 · 대사식이 한 줄씩 나옵니다. 정합성 대사 여섯 줄은 모두 차이 건수 0 이고 좌변과 우변이 같은 금액입니다. 참고 대사 한 줄(R07)만 차이 건수 1, 최대 차이 521,918원이며, 이것이 의도적으로 넣은 예외 건입니다. 요약의 정합성 대사 차이가 0건인 것은 이 참고 대사를 제외한 값입니다.
화면 뒤에서 일어나는 일
손익 건마다 상환청구 유형과 구성요소로 재계산 범주를 구하고 기록 범주와 견주는 순서와 판정 결과는 아래와 같습니다. 이 순서는 화면의 점검 규칙이며, 기준은 점검용 단순화 규칙입니다.
| 상환청구 유형 | 구성요소 | 재계산 범주 | 설명 |
|---|---|---|---|
| 상환청구 없음(양도 처리) | 양도 손익 · 수수료 | 영업범주 | 양도로 처리한 건의 손익이 영업범주 대상인지 점검 |
| 상환청구 있음(차입 처리) | 할인료(이자성) · 수수료 | 재무범주 | 차입으로 처리한 건의 이자성 비용과 부대 비용이 재무범주 대상인지 점검 |
| 일부 상환청구 | 전체 | 회사 판단 후 재조회 | 양도와 차입 중 어느 쪽에 가까운지 회사가 먼저 판단 — 재계산하지 않고 확인 필요로 표시 |
| 모든 유형 | 투자범주 · 범주 미지정으로 기록 | 영업 또는 재무 | 양도 관련 손익을 투자범주에 두거나 범주를 비워 둔 건은 점검 필요 |
| 코드 | 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|---|
| A00 | 기록 범주가 재계산 범주와 같고 할인료 금액도 맞음 | 정상 | 조치 없음 |
| A01 | 상환청구 없는 양도의 손익이 재무범주에 기록됨 | 점검 필요 | 영업범주 대상인지 확인하고 범주를 옮길지 판단 |
| A02 | 상환청구 있는 차입 건의 이자성 비용이 영업범주에 기록됨 | 점검 필요 | 재무범주 대상인지 확인하고 범주를 옮길지 판단 |
| A03 | 양도 관련 손익이 투자범주에 기록됨 | 점검 필요 | 투자범주에 둘 근거가 있는지 확인 |
| A04 | 범주는 같지만 할인료 금액이 재계산 금액과 다름 | 점검 필요 | 일수 기준 · 할인율 · 계산 방식을 확인 |
| A05 | 손익 범주가 지정되지 않음 | 점검 필요 | 범주 지정 누락인지 확인 |
| A09 | 일부 상환청구 조건 | 확인 필요 | 회사가 양도 성격을 판단한 뒤 다시 조회 |
처리 순서는 다섯 단계입니다. 먼저 손익 건마다 재계산 범주를 구해 점검 코드를 붙이고, 같은 건을 양도 계약 단위와 범주 단위로 각각 합산하며, 상환청구 있는 계약은 할인료를 다시 계산하고, 마지막으로 대사 일곱 식으로 합계를 맞춥니다. 판정 규칙은 서비스 로직 한 곳에만 있어서 화면 · 합계 · 대사가 같은 숫자를 씁니다.
조회조건
| 조회조건 | 필수 | 기본값 | 서비스로 보내는 조건 |
|---|---|---|---|
| 회계연도 | 필수 | 당해 연도 4자리 | Gjahr eq 한 값 |
| 회사 | 선택 | 전체 | Bukrs eq (전체면 조건을 만들지 않음) |
| 상환청구 유형 | 선택 | 전체 | TrType eq |
| 구성요소 | 선택 | 전체 | CompType eq |
| 기록 범주 | 선택 | 전체 | BookedCat eq · Cat eq |
| 전기일 시작 · 종료 | 선택 | 비어 있음 | PostDate ge · PostDate le |
| 양도 상대방 | 선택 | 비어 있음 | substringof 포함 검색 |
| 점검 코드 | 선택 | 전체 | CheckCode eq |
| 점검 결과 | 선택 | 전체 | CheckStatus eq |
결과 컬럼
| 탭 | 주요 컬럼 | 의미 |
|---|---|---|
| 양도 계약별 점검 | 양도 채권액 · 손익 합계 · 영업 · 재무 · 그 밖의 범주(장부) · 영업 · 재무 범주(재계산) · 범주 이동 필요 금액 · 점검 필요 건수 | 계약 한 건의 손익을 모아 장부와 재계산을 견줌 |
| 손익 건별 점검 | 상환청구 유형 · 구성요소 · 전기일 · 손익 금액 · 기록 범주 · 재계산 범주 · 이동 필요 금액 · 점검 내용 | 건마다 범주 판정 근거를 보여 줌 |
| 범주별 합계 | 장부 금액 · 재계산 금액 · 장부 − 재계산 · 기록 건수 | 범주에서 차이가 생긴 위치를 봄 |
| 할인료 재계산 | 양도 채권액 · 연 할인율 · 일수 · 재계산 할인료 · 장부 할인료 · 장부 − 재계산 | 할인료 금액이 맞는지 확인 |
| 대사 결과 | 대사 번호 · 구분 · 좌변 · 우변 · 검사 건수 · 차이 건수 · 최대 차이 · 대사식 | 합산 과정의 합계가 맞는지 봄 |
금액은 원 단위로 보이고, 요약만 백만 원 단위로 보입니다.
좁은 화면에서 달라지는 것
화면 폭이 좁아지면 조회조건과 요약 지표는 한 줄에 다 담지 않고 줄을 바꿔 이어지며, 표는 가로로 스크롤해 열을 모두 읽습니다. 열을 숨기지 않으므로 좁은 화면에서도 같은 숫자를 읽을 수 있습니다.
파일 구성
앱 폴더/
├─ index.html · readme.html · Component.js · manifest.json
├─ controller/ 화면 제어 2개
├─ view/ 본 화면 · 상세 창
├─ model/ 표시 형식 · 오류 처리
├─ css/ · i18n/ 스타일 · 문구
├─ odata/ 서비스 정의와 로직, 데이터(검증용 샘플)
└─ media/ 소개 영상 · 표지 그림
SAP 표준 기능 확장 포인트
이 앱은 SAP 표준을 대체하지 않습니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 표준이 이미 잘하는 일은 표준에 맡기고, 표준 화면 사이에서 끊기는 자리만 이어 붙이는 쪽으로 만들었습니다. 어디까지가 표준이고 어디서부터 이 앱인지를 먼저 적습니다.
표준으로 되는 것과 안 되는 것
| 하고 싶은 일 | SAP 표준 | 표준 화면만으로 걸리는 자리 | 이 앱이 더하는 관점 |
|---|---|---|---|
| 양도 손익 · 수수료 · 할인료 계정의 전표 라인 확인 | FAGLL03 · FB03 | 계정 기준 조회라서 어느 양도 계약의 어느 건에서 나온 금액인지는 따로 맞춰야 합니다 | 손익 건마다 양도 계약과 상환청구 유형을 붙여 한 줄에서 봅니다 |
| 양도한 매출채권의 미결 항목 확인 | FBL5N | 고객 항목으로는 보이지만 손익 범주 관점으로 묶이지 않습니다 | 양도 계약 단위로 손익을 모아 범주별로 다시 보입니다 |
| 영업 · 재무 손익 계정 잔액 대조 | FAGLB03 | 계정 잔액은 나오지만 계약 조건에 따른 범주와의 일치 여부는 별도 점검이 필요합니다 | 범주별 합계 탭에서 장부 금액과 재계산 금액을 같은 줄에 놓습니다 |
| 상환청구 유형에서 범주를 다시 구해 장부 기록과 비교 | - | 표준에는 이 비교를 해 주는 화면이 없어 보통 엑셀로 맞춥니다 | 재계산 범주를 구해 건별 · 계약별 · 범주별로 견주고 점검 코드를 붙입니다 |
| 투자범주 · 범주 미지정으로 흘러간 금액 가려내기 | - | 영업 · 재무 소계만 봐서는 합계 속에 섞여 보이지 않습니다 | 두 경우를 각각 점검 코드(A03 · A05)로 모아 합계 대사에서 설명합니다 |
| 할인료 금액 재계산 | - | 양도채권액 · 할인율 · 일수를 따로 모아 계산해야 합니다 | 계약마다 다시 구해 장부 할인료와 견주고 차이를 A04 로 알립니다 |
T-code 별 연계 지점
이 앱이 표준 거래의 어느 자리를 이어받는지를 적었습니다. 운영에 올릴 때 “기존 리포트를 없애야 하느냐”는 질문이 꼭 나오는데, 답은 없애지 않고 둔다입니다. 대사와 감사 대응, 법정 공시용 출력은 표준 거래가 맡는 편이 안전합니다.
| T-code | 이름 | 연계 |
|---|---|---|
FAGLL03 | G/L 계정 개별 항목 조회 | 이 앱의 손익 건이 읽는 양도 손익 계정 라인과 같은 원천입니다. 이 앱의 건별 점검 결과 → 해당 계정을 이 T-code 로 열어 전표를 확인하고, 표준 화면의 값 → 이 앱의 손익 건별 점검 탭에서 같은 전기일의 줄을 다시 봅니다. |
FBL5N | 고객 개별 항목 조회 | 양도한 매출채권의 미결 항목과 양도 시점을 대조합니다. 양도 처리와 차입 처리로 나뉜 건이 실제 항목 정리와 맞는지 확인하는 자리입니다. |
FB03 | 전표 조회 | 건별 상세에서 근거를 본 뒤 원천 전표를 열어 금액과 전기일을 맞춰 봅니다. |
FAGLB03 | G/L 계정 잔액 조회 | 영업 · 재무 손익 계정의 잔액과 이 앱의 범주별 합계를 맞춥니다. 운영 대사의 첫 단계입니다. |
표준에 남겨 둘 일은 손익계산서 범주 표시 자체와 법정 출력, 감사인에게 내는 원장 증빙입니다. 이 앱의 CSV 는 검토 자료를 보조하는 용도이며 공시 문서를 대신하지 않습니다.
요구사항 매핑표
| 기준서 | 요구사항 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 손익계산서 항목을 영업 · 투자 · 재무 등 범주로 분류 | 기록 범주와 재계산 범주 대조(A01 · A02 · A03 · A05) | ACDOCA · 양도 계약 속성(회사 설정 값 — 확인 필요) | 문단번호는 원문 확인 필요 |
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 범주별 손익의 기준을 회사 정책에 따라 일관되게 적용 | 상환청구 유형별 범주 정책표와 건별 판정 | 회사 분류 정책(확인 필요) | 분류 정책 자체의 적정성은 회사와 감사인 판단 |
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 범주별 합계와 소계 표시의 기초 금액 정합 | 범주별 합계 · 대사 R02 ~ R06 | ACDOCA | 문단번호는 원문 확인 필요 |
| IFRS 18 재무제표 표시와 공시(K-IFRS 제1118호) | 근거가 없는 항목의 처리 | 일부 상환청구 건의 판정 보류(A09) | 양도 계약 조건 | 회사가 판단을 정한 뒤 재조회 |
| - | 할인료(이자성 비용) 금액의 재계산 | 할인료 재계산 탭(A04) | 양도 계약 조건 — 양도채권액 · 연 할인율 · 일수 | 기준서 요구사항이 아니라 분석 점검 항목 |
| IFRS 18 적용 시기 | 2027-01-01 이후 개시하는 회계연도부터 적용, 비교기간 재작성 | - | - | 조기 적용과 경과규정은 원문 확인 필요 |
S/4HANA 분석 스택과의 자리
표준 CDS 분석 쿼리나 Fiori 분석 앱, Analysis for Office 는 계정과 기간 축으로 합계를 보는 데 강합니다. 이 앱은 그 위에서 쓰는 점검 화면이 아니라 상환청구 유형이라는 별도 축을 가진 점검 전용 서비스입니다. 표준 분석 앱으로 합계를 확인하고, 합계가 다른 이유를 건 단위로 설명할 때 이 앱을 쓰는 순서가 자연스럽습니다. 같은 CDS 뷰를 분석 앱에서도 읽을 수 있게 열어 두면 두 화면의 숫자는 같은 원천에서 나옵니다. 표준 뷰의 이름과 필드는 대상 릴리스에서 확인이 필요합니다.
확장 포인트 — 운영에서 실제로 손대는 자리
| 자리 | 손대는 내용 | 비고 |
|---|---|---|
| 범주 정책표 | 상환청구 유형 × 구성요소 → 재계산 범주 | 회사의 분류 정책에 맞게 매핑 테이블에서 관리 |
| 계정 · 범주 매핑 | 손익 계정이 속한 범주(영업 · 투자 · 재무) | 현재 장부 기록 범주의 원천이며 회사 설정 값(확인 필요) |
| 구성요소 구분 | 양도 손익 · 수수료 · 할인료 판별 기준 | 계정 또는 거래 속성으로 구분(확인 필요) |
| 상환청구 조건 원천 | 양도 계약의 상환청구 조건을 읽어 올 마스터 · 필드 | 계약 마스터가 없으면 업로드 테이블로 대체 |
| 할인료 계산 기준 | 일수 기준(365일 등)과 반올림 방식 | 회사 관행에 맞게 판정 뷰 한 곳에서 조정 |
| 확장 필드 · 권한 | 회사코드 · 계정 범위 권한, 추가 속성(확장 필드) | 권한은 고객사 보안 정책에 따름 |
CDS 구성
화면이 읽는 서비스의 뒤쪽을 S/4HANA 의 CDS 뷰로 옮긴다면 어떻게 짤지를 코드와 함께 적습니다. 원천은 유니버설 저널(ACDOCA)과 양도 계약 속성이고, 판단에 쓰는 값(범주 정책 · 계정 범주 매핑 · 회사 설정)은 회사가 관리하는 매핑 테이블에 둡니다. 아래 코드는 구조를 보여 주는 참고안이며, 표준 뷰 이름과 필드, 고객사 테이블은 대상 릴리스와 환경에서 확인이 필요합니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준(매핑) | ZARFC_POLICY · ZARFC_ACCMAP | 상환청구 유형 × 구성요소의 범주 정책, 손익 계정의 기록 범주 | 규칙이 아니라 회사의 판단이 들어가는 값이라 코드 밖에 둡니다 |
| 차원 | ZI_ArFactContract | 양도 계약 번호 · 상대방 · 상환청구 유형 · 양도채권액 · 할인율 · 일수 | 계약 속성을 한 곳에서 읽어 건과 합계가 같은 이름을 씁니다 |
| 기본 | ZI_ArFactLine | ACDOCA 손익 라인에 계약 · 구성요소 · 기록 범주를 붙여 손익 건으로 만듦 | 원장 라인과 1대1로 맞아야 FAGLL03 과 대조됩니다 |
| 판정 | ZI_ArFactCheck | 재계산 범주 · 이동 필요 금액 · 점검 코드 | 판정 규칙이 한 뷰에만 있어야 화면 · 분석 · 서비스 숫자가 같습니다 |
| 큐브 | ZI_ArFactCube | 계약 · 범주 단위로 합산 | 합산은 큐브 한 곳에서만 하고 대사식의 좌변이 됩니다 |
| 쿼리 | ZC_ArFactQuery | 화면이 읽는 모양(필터 · 컬럼) | 화면 요구가 바뀌어도 아래 레이어를 건드리지 않습니다 |
| 권한 | ZC_ArFactQuery(DCL) | 회사코드 단위 접근 제어 | 합계를 읽는 자리에 권한을 겁니다 |
| 서비스 | ZUI_ArFact | OData V2 서비스로 게시 | 화면은 서비스 주소만 바꾸면 됩니다 |
① 매핑 테이블 — 범주 정책과 계정 범주
점검의 출발점은 상환청구 유형과 구성요소가 어느 범주에 놓여야 하는지(정책)와, 손익 계정이 현재 어느 범주에 매핑되어 있는지(장부 기록)입니다. 정책은 회사가 정하는 판단이라 코드에 박지 않고 테이블로 둡니다. 정책이 비어 있는 조합은 판정 보류(확인 필요)로 올라옵니다.
" ─────────────────────────────────────────────────────────────
" ZARFC_POLICY · ZARFC_ACCMAP : 범주 정책과 계정 범주 매핑
" 역할 : 점검 판정의 입력값. 회사가 관리한다.
" 이렇게 나눈 이유 : 정책을 바꿔도 뷰 코드를 고치지 않게 하고, 정책과 원장 라인을 분리해 두려는 것이다.
" ─────────────────────────────────────────────────────────────
@EndUserText.label : '양도 손익 범주 정책'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zarfc_policy {
key client : abap.clnt not null;
key bukrs : bukrs not null;
key tr_type : abap.char(1) not null; " N 상환청구 없음 R 있음 P 일부
key comp_type : abap.char(1) not null; " L 양도 손익 F 수수료 D 할인료
exp_cat : abap.char(3); " OPR 영업 FIN 재무 비면 판정 보류
valid_from : abap.dats;
}
@EndUserText.label : '손익 계정 범주 매핑'
@AbapCatalog.deliveryClass : #C
define table zarfc_accmap {
key client : abap.clnt not null;
key bukrs : bukrs not null;
key racct : racct not null;
comp_type : abap.char(1); " 계정이 나타내는 구성요소
booked_cat : abap.char(3); " OPR INV FIN 비면 범주 미지정(NON)
}
② 양도 계약 차원 뷰
계약 번호와 상대방, 상환청구 유형, 양도채권액, 연 할인율, 일수는 모든 뷰가 같은 이름으로 써야 하는 속성이라 차원 뷰로 한 번만 정의합니다. 계약 마스터가 없는 환경에서는 업로드 테이블을 같은 이름의 뷰 뒤에서 읽도록 바꿉니다.
" ─────────────────────────────────────────────────────────────
" ZI_ArFactContract : 양도 계약 차원
" 역할 : 계약 단위 속성을 한 곳에서 제공한다.
" 이렇게 나눈 이유 : 건 · 합계 · 쿼리가 같은 계약 이름과 조건을 쓰게 하려는 것이다.
" ─────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '매출채권 양도 계약 차원'
@ObjectModel.representativeKey: 'FactNo'
@Analytics.dataCategory: #DIMENSION
define view entity ZI_ArFactContract
as select from zarfc_contract " 고객사 양도 계약 테이블(확인 필요)
{
key bukrs as Bukrs,
key fact_no as FactNo,
partner_name as PartnerName,
tr_type as TrType, " N R P
@Semantics.amount.currencyCode: 'Currency'
transfer_amt as TransferAmt,
ann_rate as AnnRate, " 연 할인율(%)
days as Days,
waers as Currency
}
③ 손익 건 기본 뷰 — 원장 라인에서 건 단위로
이 뷰는 ACDOCA 의 손익 계정 라인 하나를 손익 건 하나로 만들고, 계약과 구성요소, 장부에 기록된 범주를 붙입니다. 원장 라인과 1대1로 맞아야 표준 원장 조회와 대조할 수 있으므로 이 뷰에서는 줄을 늘리거나 합치지 않습니다. 계약 연결은 회사가 쓰는 참조 필드(예: 배정 필드)로 하며, 어느 필드를 쓰는지는 확인이 필요합니다.
" ─────────────────────────────────────────────────────────────
" ZI_ArFactLine : 손익 건 기본 뷰
" 역할 : 원장 라인 하나 = 손익 건 하나. 계약과 기록 범주를 붙인다.
" 이렇게 나눈 이유 : 줄 수를 바꾸지 않아야 원장 라인과 합계를 맞출 수 있다.
" ─────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '양도 손익 건 기본'
define view entity ZI_ArFactLine
as select from acdoca as j
inner join zarfc_accmap as m on m.bukrs = j.rbukrs
and m.racct = j.racct
inner join ZI_ArFactContract as c on c.Bukrs = j.rbukrs
and c.FactNo = j.zuonr " 배정 필드로 연결(확인 필요)
{
key j.rbukrs as Bukrs,
key j.gjahr as Gjahr,
key j.belnr as DocNo,
key j.docln as DocLine,
c.FactNo,
c.PartnerName,
c.TrType,
m.comp_type as CompType,
j.budat as PostDate,
@Semantics.amount.currencyCode: 'Currency'
j.hsl as Amount, " 지출은 + (원천 부호 유지)
j.rhcur as Currency,
case when m.booked_cat is initial then 'NON'
else m.booked_cat end as BookedCat
}
where j.rldnr = '0L'
and j.rbukrs <> ''
④ 재계산 범주와 점검 코드
판정 규칙이 모이는 뷰입니다. 정책 테이블에서 재계산 범주를 읽어 기록 범주와 견주고, 점검 코드와 이동 필요 금액을 만듭니다. 이 뷰 한 곳에만 규칙이 있어서 화면 · 합계 · 대사의 숫자가 같습니다. 일부 상환청구(P)는 정책을 읽지 않고 곧바로 확인 필요로 보냅니다.
" ─────────────────────────────────────────────────────────────
" ZI_ArFactCheck : 재계산 범주 · 점검 코드
" 역할 : 손익 건마다 재계산 범주와 점검 코드를 붙인다.
" 이렇게 나눈 이유 : 규칙을 한 뷰에만 두어 화면 · 분석 · 서비스가 같은 판정을 쓰게 하려는 것이다.
" ─────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '양도 손익 범주 점검'
define view entity ZI_ArFactCheck
as select from ZI_ArFactLine as l
left outer join zarfc_policy as p on p.bukrs = l.Bukrs
and p.tr_type = l.TrType
and p.comp_type = l.CompType
{
key l.Bukrs, key l.Gjahr, key l.DocNo, key l.DocLine,
l.FactNo, l.PartnerName, l.TrType, l.CompType, l.PostDate,
l.Amount, l.Currency, l.BookedCat,
case when l.TrType = 'P' then '' " 판정 보류
else p.exp_cat end as ExpectCat,
case
when l.TrType = 'P' then 'A09'
when l.BookedCat = 'NON' then 'A05'
when l.BookedCat = 'INV' then 'A03'
when l.BookedCat <> p.exp_cat and p.exp_cat = 'OPR' then 'A01'
when l.BookedCat <> p.exp_cat and p.exp_cat = 'FIN' then 'A02'
else 'A00'
end as CheckCode,
case when l.TrType <> 'P' and l.BookedCat <> p.exp_cat
then l.Amount else 0 end as MoveAmt
}
A04(할인료 금액 차이)는 건 단위가 아니라 계약 단위로 계산하므로 아래 큐브에서 다룹니다. 건 단위 판정이 같은 범주라고 하더라도 금액이 맞는지는 별도 식으로 봐야 하기 때문입니다.
⑤ 계약 · 범주 합계 큐브
합산은 이 큐브 한 곳에서만 합니다. 계약별 영업 · 재무 · 그 밖의 장부 금액과 재계산 금액, 할인료 재계산이 모두 여기서 나오며 대사식의 좌변이 됩니다. 할인료는 양도채권액 × 연 할인율 × 일수 ÷ 365 를 반올림해 다시 구합니다.
" ─────────────────────────────────────────────────────────────
" ZI_ArFactCube : 계약 · 범주 합계 큐브
" 역할 : 건을 계약 · 범주 단위로 합산하고 할인료를 다시 구한다.
" 이렇게 나눈 이유 : 합산을 한 곳에서만 해야 대사 R01 ~ R06 이 의미를 갖는다.
" ─────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '양도 손익 범주 큐브'
@Analytics.dataCategory: #CUBE
define view entity ZI_ArFactCube
as select from ZI_ArFactCheck as k
inner join ZI_ArFactContract as c on c.Bukrs = k.Bukrs
and c.FactNo = k.FactNo
{
key k.Bukrs, key k.Gjahr, key k.FactNo,
@Semantics.amount.currencyCode: 'Currency'
sum( k.Amount ) as TotalAmt,
sum( case when k.BookedCat = 'OPR' then k.Amount else 0 end ) as OprBook,
sum( case when k.BookedCat = 'FIN' then k.Amount else 0 end ) as FinBook,
sum( case when k.ExpectCat = 'OPR' then k.Amount else 0 end ) as OprExp,
sum( case when k.ExpectCat = 'FIN' then k.Amount else 0 end ) as FinExp,
sum( k.MoveAmt ) as MoveAmt,
sum( case when k.CompType = 'D' then k.Amount else 0 end ) as BookDisc,
cast( round( c.TransferAmt * c.AnnRate / 100 * c.Days / 365, 0 )
as abap.curr(15,2) ) as CalcDisc,
count( * ) as LineCnt,
k.Currency
}
group by k.Bukrs, k.Gjahr, k.FactNo, k.Currency,
c.TransferAmt, c.AnnRate, c.Days
⑥ 분석 쿼리 — 화면이 읽는 모양
쿼리는 화면이 읽는 이름과 필터를 정리하는 얇은 층입니다. 조회조건에 쓰이는 필드를 선택 파라미터가 아니라 필터 대상으로 열어 두고, 회계연도만 필수로 둡니다. 화면이 바뀌어도 아래 레이어를 건드리지 않게 하는 자리입니다.
" ─────────────────────────────────────────────────────────────
" ZC_ArFactQuery : 분석 쿼리
" 역할 : 화면 요구에 맞춰 이름 · 필터 · 정렬을 정리한다.
" 이렇게 나눈 이유 : 화면 요구가 바뀌어도 판정과 합산 뷰를 건드리지 않게 하려는 것이다.
" ─────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '양도 손익 범주 점검 쿼리'
@Analytics.query: true
@OData.publish: false
define view entity ZC_ArFactQuery
as select from ZI_ArFactCube
{
@AnalyticsDetails.query.axis: #FREE
@Consumption.filter: { selectionType: #SINGLE, mandatory: true }
key Gjahr,
@Consumption.filter.selectionType: #SINGLE
key Bukrs,
key FactNo,
TotalAmt,
OprBook, FinBook, OprExp, FinExp,
MoveAmt,
BookDisc, CalcDisc,
BookDisc - CalcDisc as DiscDiff,
LineCnt
}
⑦ 접근 제어(DCL)
합계만 읽을 수 있는 사람이 건 단위 조회와 합계의 차이로 다른 회사 숫자를 알아내는 일을 막으려면, 건 · 큐브 · 쿼리에 같은 제어를 걸어야 합니다. 회사코드 단위로 권한 오브젝트를 연결하는 예입니다.
" ─────────────────────────────────────────────────────────────
" ZC_ArFactQuery : 접근 제어
" 역할 : 회사코드 단위 접근을 제한한다.
" 이렇게 나눈 이유 : 합계 뷰와 건 뷰의 권한이 달라지면 뺄셈으로 숫자가 드러난다.
" ─────────────────────────────────────────────────────────────
@EndUserText.label: '양도 손익 범주 점검 접근 제어'
@MappingRole: true
define role ZC_ArFactQuery {
grant select on ZC_ArFactQuery
where ( Bukrs ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}
⑧ 서비스 정의와 바인딩
마지막으로 쿼리와 건 뷰를 서비스로 내보냅니다. 서비스 이름은 화면의 서비스 주소에 쓰이므로 운영 전환 때 화면 설정만 바꾸면 됩니다.
" ─────────────────────────────────────────────────────────────
" ZUI_ArFact : 서비스 정의
" 역할 : 쿼리와 손익 건을 OData 로 게시한다.
" 이렇게 나눈 이유 : 화면은 이 서비스 주소만 알면 된다.
" ─────────────────────────────────────────────────────────────
@EndUserText.label: '양도 손익 범주 점검 서비스'
define service ZUI_ArFact {
expose ZC_ArFactQuery as FactSet;
expose ZI_ArFactCheck as LineSet;
}
" 서비스 바인딩: 이름 ZUI_ARFACT_O2, 바인딩 유형 OData V2 - UI
" 게시 후 /IWFND/MAINT_SERVICE 에서 활성화 상태 확인
운영 시점에 해야 할 일
개발보다 정하는 일이 많습니다.
| 해야 할 일 | 무엇을 정하나 | 정하지 않으면 | 누가 |
|---|---|---|---|
| 범주 정책표 | 상환청구 유형 × 구성요소별 재계산 범주 | 점검 기준이 없어 모든 건이 판정 보류로 올라옵니다 | 회계팀 · 감사 대응 |
| 계정 범주 매핑 | 손익 계정마다 영업 · 투자 · 재무 범주 지정 | 범주 미지정(A05) 건이 대량으로 올라옵니다 | 회계팀 |
| 구성요소 구분 | 양도 손익 · 수수료 · 할인료를 가르는 계정 또는 속성 | 할인료 재계산 대상이 비어 A04 가 의미를 잃습니다 | 회계팀 |
| 상환청구 조건 원천 | 계약의 상환청구 조건을 읽어 올 마스터와 필드 | 유형을 알 수 없어 재계산이 불가능합니다 | 회계팀 · 자금팀 |
| 일부 상환청구 처리 기준 | 양도와 차입 중 어느 쪽으로 볼지 판단 절차 | 확인 필요(A09) 건이 줄지 않습니다 | 회계팀 · 감사 대응 |
| 할인료 계산 기준 | 일수 기준과 반올림 방식 | A04 가 계산 관행 차이로 반복해서 올라옵니다 | 회계팀 |
| 부호 규칙 | 지출 양수 · 환급 음수 같은 원천 부호 유지 여부 | 합계가 계정 잔액과 어긋납니다 | 회계팀 |
| 권한 설계 | 회사코드 · 계정 범위 접근 제어 | 합계 뺄셈으로 다른 회사 숫자가 드러납니다 | 보안 · 권한 |
| 전송(TR) 순서 | 테이블 → 뷰 → 쿼리 → DCL → 서비스 | 활성화 오류로 서비스가 게시되지 않습니다 | IT |
| 서비스 활성화 | /IWFND/MAINT_SERVICE 등록과 화면 설정의 서비스 주소 교체 | 화면이 검증용 데이터를 계속 봅니다 | IT |
운영 데이터로 갈 때
양도 계약이 수천 건, 손익 건이 수십만 건으로 늘어도 구조는 같지만 집계 위치와 필수 조건이 성능을 좌우합니다. 회계연도와 회사코드는 쿼리의 필수 파라미터로 두고, 원장 라인을 읽는 조건이 인덱스를 타는지 실제 데이터로 확인해야 합니다. 합산은 큐브에서 데이터베이스가 하도록 두고 화면이 손익 건을 모두 내려받지 않게 합니다. 구체 응답 시간은 시스템 구성에 따라 달라 이 글에서는 약속하지 않습니다.
자주 묻는 질문
도입 상담과 데모에서 자주 받는 질문들입니다. 네 묶음으로 나눠 적었습니다.
판정 규칙과 숫자
이 화면은 손익 범주를 확정해 주나요?
아니요. 상환청구 유형과 구성요소로 범주를 다시 정해 장부 기록과 견주고, 다른 건을 “점검 필요”로 보여 주는 점검 도구입니다.
어느 손익을 어느 범주에 둘지는 기준서의 요구사항을 읽는 회사의 판단이고, 그 판단을 검토하는 것은 감사인의 몫입니다. 화면은 분류 · 집계 · 대사를 돕는 조회 도구이며 최종 판단은 회사와 감사인이 합니다. 그래서 “점검 필요”는 오류가 아니라 기록을 다시 확인해 보라는 뜻입니다.
재계산 범주는 어떻게 구하나요?
손익 건의 상환청구 유형과 구성요소 두 가지만 씁니다. 상환청구가 없는 양도 처리 건은 영업범주, 상환청구가 있는 차입 처리 건은 재무범주를 기대 범주로 두고, 일부 상환청구 건은 회사 판단 전까지 재계산하지 않습니다.
이 순서는 점검용으로 단순화한 규칙이며, 실제 분류 정책은 회사가 정합니다. 정책이 바뀌면 정책표만 고치면 됩니다.
점검 필요와 확인 필요는 무엇이 다릅니까?
점검 필요는 기록 범주가 재계산 범주와 다르거나(A01 · A02), 투자범주에 기록됐거나(A03), 범주가 비어 있거나(A05), 범주는 같은데 할인료 금액이 다른 건(A04)입니다. 확인 필요는 일부 상환청구 조건이라 범주를 판단할 기준 자체가 없는 건(A09)입니다.
점검 필요는 “기록과 규칙이 다르니 확인하라”이고, 확인 필요는 “회사가 먼저 판단하라”입니다. 둘 다 오류라고 단정하는 표시가 아닙니다.
상환청구가 있으면 왜 재무범주로 봅니까?
상환청구가 있는 양도는 차입으로 처리하는 것이 일반적이어서 할인료가 이자 성격의 비용이 됩니다. 이 화면의 점검 기준은 그런 이자성 비용이 재무범주에 놓였는지 보는 것입니다.
다만 상환청구의 정도와 계약 조건에 따라 처리가 달라질 수 있고, IFRS 18 의 범주 정의와 예외는 원문 확인 필요입니다. 이 글은 기준서 해석을 단정하지 않습니다.
투자범주에 기록된 건은 왜 점검합니까?
양도 손익이나 수수료를 투자범주에 둘 근거가 있는지 확인하라는 뜻입니다. 이 화면은 양도 관련 손익이 투자범주에 있으면 A03 으로 알리고 어디로 옮기라고 정하지는 않습니다.
투자범주에 둘 근거가 있는 경우도 있을 수 있어 회사가 판단합니다. 샘플 데이터에는 이런 건이 2건 들어 있습니다.
할인료는 어떻게 다시 계산합니까?
양도채권액 × 연 할인율 × 일수 ÷ 365 를 원 단위로 반올림해 재계산 할인료를 구하고 장부 할인료와 견줍니다.
샘플 데이터의 양도 계약 7건 중 6건은 같고 1건이 521,918원 차이로 A04 에 올라옵니다. 일수 기준이나 반올림 방식이 달라서 생긴 차이일 수 있어 오류로 단정하지 않습니다.
범주를 옮기면 총액이 달라지지 않습니까?
달라지지 않아야 하고, 대사 R04(범주별 장부 − 재계산 합계 = 0)가 그것을 확인합니다. 영업에서 재무로 금액이 옮겨 가도 회사 총액은 같기 때문입니다.
검증용 샘플 데이터의 두 회사 모두 차이 0 입니다. 총액이 달라지면 범주 이동이 아니라 누락이나 중복을 의심해야 합니다.
합계가 맞는지는 어떻게 확인합니까?
대사 일곱 식으로 확인합니다. 건별 합계와 계약별 합계, 범주별 장부 · 재계산 합계, 계약별 영업 + 재무 + 그 밖의 합계, 할인료 재계산이 들어 있습니다.
정합성 대사 여섯 식은 검증용 샘플 데이터 전체에서 차이 0 이고, 참고 대사 한 식에만 의도적으로 넣은 예외 한 건이 남습니다.
일부 상환청구 건은 어떻게 처리합니까?
양도와 차입 중 어느 쪽에 가까운지 판단할 기준이 없으므로 임의로 채우지 않고 “확인 필요”로 표시해 판정 보류에 모읍니다. 요약의 확인 필요 항목 수로 규모를 먼저 볼 수 있습니다.
회사가 판단을 정한 뒤 정책표에 반영하고 다시 조회하면 그 건이 재계산 대상으로 들어옵니다.
화면과 조작
처음 열면 무엇이 보입니까?
화면을 열면 회계연도 기준으로 한 번 자동 조회되어 양도 계약별 점검이 먼저 채워집니다. 위쪽 요약에는 점검한 손익 건수, 점검 필요 항목, 확인 필요 항목, 범주 이동 필요 금액, 영업범주에 기록된 양도 손익, 대사 차이 건수가 보입니다.
요약을 먼저 읽고 표의 점검 결과 칸에서 ‘점검 필요’인 계약부터 내려가는 순서를 권합니다.
조회조건은 어떻게 걸어야 합니까?
회계연도만 필수이고 나머지는 선택입니다. “전체”를 고르면 그 조건은 서비스로 보내지 않습니다. 전기일은 시작과 종료를 함께 쓰거나 한쪽만 쓸 수 있고, 시작이 종료보다 늦으면 조회하지 않고 안내 문구를 보입니다.
입력칸에서 Enter 키를 누르면 조회 버튼과 같이 동작합니다. 조회 버튼은 입력칸들의 가장 오른쪽에 있습니다.
점검 필요로 나온 이유는 어디서 봅니까?
손익 건별 점검 탭에서 행을 누르면 상세 창이 열립니다. 점검 근거 문장과 양도 계약 · 상환청구 유형 · 구성요소 · 기록 범주 · 재계산 범주가 보이고, 아래에 같은 계약의 손익 건이 나옵니다.
이 표에서 어느 건이 어긋났는지와 이동이 필요한 금액을 같이 읽을 수 있어 별도 엑셀 없이 근거를 설명할 수 있습니다.
범주 이동 필요 금액은 무슨 뜻입니까?
점검 코드가 A01 · A02 · A03 · A05 인 손익 건의 금액입니다. 영업과 재무 사이에서 옮겨야 할 수 있는 금액, 투자범주나 범주 미지정에서 제자리로 옮겨야 할 수 있는 금액을 뜻합니다.
이 값은 점검의 규모를 보이는 지표이며 정정 분개의 금액이 아닙니다. 실제 이동 여부와 금액은 회사가 근거를 확인해 정합니다.
CSV 로 내려받으면 무엇이 담깁니까?
지금 보고 있는 탭의 조회 결과가 UTF-8 파일로 내려갑니다. 조회조건으로 좁힌 상태라면 좁힌 결과만 담깁니다.
검토 자료에 붙이거나 감사인에게 근거를 보여 줄 때 쓰는 보조 자료이며, 공시 문서를 대신하지는 않습니다.
좁은 화면에서도 쓸 수 있습니까?
조회조건과 요약은 줄을 바꿔 이어지고 표는 가로로 스크롤합니다. 열을 숨기지 않으므로 같은 숫자를 읽을 수 있습니다.
다만 건별 점검 표는 열이 많아 넓은 화면에서 보는 편이 편하고, 상세 창은 화면 폭에 맞춰 줄어듭니다.
범주별 합계 탭은 어떻게 읽습니까?
회사마다 영업 · 투자 · 재무 · 범주 미지정 네 줄이 나오고, 장부 금액과 재계산 금액, 두 금액의 차이가 한 줄에 놓입니다. 차이가 0 이 아닌 줄이 범주가 어긋난 자리입니다.
영업 줄의 차이와 재무 줄의 차이는 부호만 반대인 경우가 많습니다. 금액이 영업에서 재무로 옮겨 놓일 자리임을 뜻하기 때문입니다.
표준 기능과의 관계
SAP 표준 T-code 와는 어떤 관계입니까?
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다. 양도 손익 계정 라인은 FAGLL03, 양도한 매출채권의 미결 항목은 FBL5N, 전표는 FB03, 계정 잔액은 FAGLB03 에서 확인하고, 이 화면은 그 결과를 상환청구 유형과 범주 관점으로 다시 묶어 보여 줍니다.
그래서 표준 화면에서 찾은 값이 이 화면의 어느 줄인지, 이 화면의 점검 건이 표준에서 어느 전표인지 서로 오갈 수 있습니다.
기존에 쓰던 리포트와 엑셀은 없애야 합니까?
없애지 않고 둡니다. 대사와 감사 대응, 법정 공시용 출력은 표준 거래가 맡는 편이 안전하고, 이 화면은 그 앞단에서 점검을 줄여 주는 용도입니다.
엑셀로 관리하던 분류 정책이 있다면 정책표로 옮기면 같은 정책을 그대로 이 화면에서 적용할 수 있습니다.
S/4HANA 분석 앱과는 어떻게 다릅니까?
표준 분석 쿼리나 Fiori 분석 앱은 계정과 기간 축으로 합계를 보는 데 강합니다. 이 화면은 상환청구 유형이라는 별도 축을 가진 점검 전용 서비스라서, 합계가 다른 이유를 건 단위로 설명할 때 씁니다.
같은 CDS 뷰를 분석 앱에서도 읽도록 열어 두면 두 화면이 같은 원천의 숫자를 봅니다. 표준 뷰의 이름과 필드는 릴리스에서 확인이 필요합니다.
IFRS 18 은 언제부터 적용합니까?
IFRS 18 은 2027-01-01 이후 개시하는 회계연도부터 적용하며 조기 적용을 허용하고 비교기간을 재작성합니다. 그 밖의 경과규정과 문단번호는 원문 확인 필요입니다.
이 글은 기준서의 해석을 단정하지 않으며, 범주의 정의와 예외는 회사와 감사인이 원문으로 확인해야 합니다.
매출채권 제거(양도 인식 중지) 판정도 이 화면이 합니까?
아니요. 채권을 장부에서 제거할지 여부는 별도의 판단이고, 이 화면은 이미 정해진 처리(양도 처리 또는 차입 처리)를 전제로 손익이 맞는 범주에 놓였는지만 봅니다.
제거 판정은 위험과 보상의 이전, 계속 관여 같은 별도 기준을 따로 검토해야 합니다.
도입과 운영
누가 쓰는 화면입니까?
결산 손익 분류를 맡는 회계팀과 그 결과를 검토하는 경영지원팀이 주로 씁니다. 감사 대응 담당자는 건 상세에서 점검 근거를 확인하고 CSV 로 내려받아 자료에 붙입니다.
분류 정책을 바꾸는 사람은 따로 있어야 합니다. 정책표를 바꾸면 모든 건의 점검 결과가 함께 바뀌므로 회계팀장 승인 같은 절차를 두는 편이 안전합니다.
운영 시스템에 연결하려면 무엇이 필요합니까?
범주 정책표, 손익 계정의 범주 매핑, 양도 계약의 상환청구 조건 원천을 먼저 정하고, CDS 뷰를 만들어 서비스로 게시한 뒤 화면 설정의 서비스 주소를 바꾸면 됩니다. 화면 코드는 고치지 않습니다.
소요 기간은 이 값들을 정하는 데 걸리는 시간이 대부분이며, 이 글에서는 기간을 약속하지 않습니다.
권한은 어떻게 설계합니까?
회사코드 단위 접근 제어를 건 뷰, 큐브, 쿼리에 모두 겁니다. 합계만 읽을 수 있는 사람이 건 단위 조회와 합계의 차이로 다른 회사 숫자를 알아내는 일을 막기 위해서입니다.
계정 범위 권한도 함께 걸 수 있고, 권한 오브젝트와 값은 고객사 보안 정책에 따라 정합니다.
데이터가 아주 많아지면 느려지지 않습니까?
합산은 데이터베이스의 큐브에서 하므로 건수가 늘어도 화면이 모든 건을 내려받지 않습니다. 건 단위 탭은 페이징으로 나눠 읽습니다.
다만 손익 건이 수십만 건이 넘으면 회계연도와 회사코드를 필수 조건으로 걸고 인덱스를 확인해야 합니다. 구체 응답 시간은 시스템 구성에 따라 달라 약속하지 않습니다.
정책이 바뀌면 어떻게 합니까?
범주 정책은 정책표만 고치면 됩니다. 판정 규칙은 판정 뷰 한 곳에만 있어서 합계와 대사가 같이 따라오고, 화면 코드는 건드리지 않습니다.
바꾼 뒤에는 대사 결과가 여전히 차이 0 인지 먼저 확인합니다. 정책이 바뀌어 점검 결과가 크게 달라지면 이유를 정책 변경 이력과 함께 남겨 두는 편이 좋습니다.
도입 첫해에 어떤 순서로 쓰면 좋습니까?
먼저 확인 필요 건을 줄이는 것을 목표로 일부 상환청구 건의 처리 기준을 정합니다. 그다음 점검 필요 건을 점검 코드별로 훑어 정책과 현재 계정 매핑이 다른 곳을 정리하고, 마지막으로 할인료 재계산 차이(A04)를 계산 기준과 맞춥니다.
이 순서로 하면 결산 회의가 “어느 건이 다른가”를 찾는 시간이 아니라 “왜 다른가”를 정하는 시간이 됩니다.
2027년 이전에도 쓸 의미가 있습니까?
있습니다. IFRS 18 은 비교기간을 같은 틀로 다시 쓰도록 하므로 시행 전 기간의 손익도 범주별로 정리되어 있어야 합니다. 시행 전에 계정 매핑과 정책표를 점검해 두면 전환 때 고칠 곳이 줄어듭니다.
다만 어느 시점에 어느 기간까지 재작성할지는 원문 확인 필요이며 회사와 감사인이 정합니다.
검증용 샘플 데이터는 실제 회사 자료입니까?
아닙니다. 회사 두 곳, 양도 계약 13건, 손익 건 52건으로 만든 가상의 자료이며 상대방 이름도 일반 명칭입니다. 점검 코드가 골고루 나오도록 예외 건을 의도적으로 넣었습니다.
실제 도입에서는 같은 구조의 서비스를 운영 데이터에 연결해 쓰고, 샘플 데이터는 화면 확인 용도로만 남깁니다.