SAP 내부거래 미실현손익 제거 대사 — 그룹 안에서 판 것도, 다 판 게 아닐 수 있습니다
회사 간 재고·자산 거래에서 남은 미실현손익을 거래쌍·자산유형별로 대사해 연결 결산 전에 잔액을 확인해 둡니다
연결 그룹 안에서 한 회사가 다른 회사에 재고를 팔거나 설비를 넘기면, 그 회사 각각의 장부에는 정상적인 매출과 이익이 찍힙니다. 하지만 그 물건이 아직 그룹 밖으로 나가지 않았다면 — 매입한 회사 창고에 그대로 남아 있거나, 새로 산 설비를 계속 쓰고 있다면 — 연결 관점에서는 아직 이익이 실현된 게 아닙니다. 이 미실현손익을 찾아 제거하지 않으면 연결재무제표의 재고·유형자산과 이익이 그만큼 부풀어 보입니다.
회사 간 거래 전표를 거래쌍(판매법인→매입법인) 단위로 모아 매출총이익을 산정하고, 재고자산은 잔존 재고 비율로, 유형자산은 미상각 비율로 미실현손익의 기초·당기발생·당기실현·기말잔액을 대사하는 화면을 OpenUI5로 구현했습니다. 거래쌍 요약과 자산유형별 증감표를 한 화면에서 오가며 확인할 수 있고, 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 전표 조회 — 총계정원장 라인아이템 조회(신 총계정원장)의 Trading Partner 필드 구조를 그대로 사용
- 회사 간 식별 — Trading Partner(연결단위) 마스터의 구조를 그대로 사용
- 표준 화면 — 계정별 전표 조회(FBL3N) · 원장 라인아이템 조회(FAGLL03)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무(FI) · 연결 결산 |
| 관련 기준서 | - |
| Namespace | zui5.upelim |
| 셸 구조 | 조회조건 영역(우측 조회) + 거래쌍 요약 · 재고자산/유형자산 증감표 탭, 상세 Dialog |
| 화면 수 | 조회 화면 1개(탭 3개) + 상세 다이얼로그 |
| SAP 표준 T-code | FBL3N · FAGLL03 |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 연결 조정 분개 반영은 화면 밖 프로세스 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회계연도·기간을 넣고 조회하면 거래쌍 요약이 뜹니다 → 재고자산·유형자산 탭에서 카테고리별 증감표를 확인합니다 → 거래쌍 행을 클릭하면 전표 단위 상세가 열립니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회계연도와 기간(월)을 입력하고 거래유형·판매방향을 선택합니다. "전체"를 선택하면 해당 조건 없이 조회합니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 거래쌍 요약 탭에서 회사 간 거래별 매출·원가·미실현손익 잔액을 먼저 확인합니다.
- 재고자산·유형자산 탭에서 카테고리별 증감표를 확인합니다 — 합계 행은 강조선으로 구분됩니다.
- 거래쌍 요약의 행을 클릭하면 전표 단위 상세가 다이얼로그로 열립니다.
- CSV 다운로드로 현재 탭의 조회 결과를 내려받을 수 있습니다. 초기화 버튼은 기본 조회조건으로 되돌립니다.
잔존 여부를 가르는 판정 로직
거래쌍·증감표의 기말잔액 부호와 상호 합계 일치 여부로 확인이 필요한 항목을 가려냅니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 거래쌍·증감표의 기말잔액 = 0 | 제거완료 | 추가 조치가 필요하지 않습니다 — 해당 거래의 미실현손익이 전액 실현되었습니다. |
| 거래쌍·증감표의 기말잔액 > 0 | 잔존 확인 필요 | 연결 결산 시 재고자산·유형자산 장부금액에서 해당 금액만큼 추가 제거 분개가 필요한지 확인합니다. |
| 거래쌍 합계와 증감표 기말잔액이 불일치 | 확인 필요 | 거래쌍 분류(카테고리) 또는 대사 기준일이 증감표와 다른지 점검합니다. |
이 화면이 대신 정하지 않는 것
판정 결과는 확인이 필요한 잔액을 알리는 표시이며, 회계 오류라고 단정하지 않습니다. 실제 연결 조정 분개 반영 여부와 금액은 회사와 감사인이 최종 판단합니다.
거래쌍 집계에서 증감표까지 4단계 처리
| 단계 | 내용 |
|---|---|
| 1단계 | 거래쌍을 집계한다 — 판매법인·매입법인·거래유형별 매출액·원가·매출총이익률 |
| 2단계 | 미실현손익을 산정한다 — 기말잔액 = 기초잔액 + 당기발생 − 당기실현 |
| 3단계 | 카테고리별로 재구성한다 — 재고자산(원재료성/제품성), 유형자산(기계장치/차량운반구) 증감표로 재집계 |
| 4단계 | 상세 대사한다 — 거래쌍을 전표 단위 라인으로 분해해 이연법인세 효과까지 제시 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회계연도 / 기간 | 필수 | 4자리 회계연도, 3자리 회계기간 |
| 거래유형 | 선택 | 전체 / 재고자산 / 유형자산 |
| 판매방향 | 선택 | 전체 / 하향(모→자) / 상향(자→모) / 수평(자↔자) |
결과 컬럼
| 영역 | 컬럼 · 표시 |
|---|---|
| 거래쌍 요약 | 판매법인 · 매입법인 · 거래유형 · 방향 · 구분 · 매출액 · 원가 · 매출총이익률 · 기초잔액 · 당기발생 · 당기실현 · 기말잔액 |
| 재고자산/유형자산 증감표 | 구분 · 기초잔액 · 당기발생 · 당기실현 · 기타조정 · 기말잔액 |
| 거래 상세 | 전표번호 · 전표일자 · 내역 · 매출액 · 당기발생 · 당기실현 · 이연법인세 효과 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 거래쌍·미실현손익 집계 관점을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
FBL3N | 계정별 전표 조회 | Trading Partner 기준 회사 간 전표를 거래쌍 단위로 재구성합니다 |
FAGLL03 | 원장 라인아이템 조회(신 총계정원장) | Universal Journal 라인아이템의 표준 조회 경로 |
대상 영역 매핑표
| 관련 기준서 | 요구사항 | 대응 기능 | 원천 데이터 |
|---|---|---|---|
| - | 연결실체 내 거래에서 발생한 자산·손익을 연결결산 시 제거 | 거래쌍별 미실현손익 기초/발생/실현/기말 대사, 재고자산·유형자산 증감표 | 회사 간 판매 전표, Trading Partner 마스터 |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
BKPF / BSEG | BELNR · BUDAT · BUKRS · VBUND | 회사 간 판매 전표, Trading Partner 식별 |
ACDOCA | RBUKRS · GJAHR · RACCT · HSL | 매출·매출원가 계정 잔액 집계 |
T880 | RASSC · BUTXT | Trading Partner(연결단위) 마스터 |
define view entity ZC_IntercoTxPair
as select from acdoca as doc
{
key doc.rbukrs as SellerCode,
key doc.vbund as BuyerCode,
sum(doc.hsl) as SalesAmount
}
group by doc.rbukrs, doc.vbund
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · 3탭 IconTabBar(거래쌍 요약 · 재고자산 · 유형자산) |
| 데이터 연동 | manifest.json 에 OData V2 서비스를 상대 경로로 선언 — 화면 블록마다 엔티티셋에 직접 바인딩합니다 |
| 조회조건 | sap.m.Input · sap.m.Select — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조건을 조립합니다. "전체"를 고른 조건은 필터를 만들지 않습니다 |
| 거래쌍 표 | sap.ui.table.Table(12개 컬럼) — 행 클릭 시 상세 다이얼로그로 전표 단위 라인을 추가 조회합니다 |
| 증감표 | sap.m.Table — 합계 행은 highlight(표준 IndicationColor)로 강조합니다 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패를 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결 |
Component.js | 화면 상태 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.upelim · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 3탭(거래쌍 요약 · 재고자산 · 유형자산) |
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 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 회사 간 거래쌍 6건(재고자산 4건·유형자산 2건), 전표 단위 라인 18건을 기준으로 매출·원가·미실현손익이 원(KRW) 단위로 맞물리도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 거래쌍 기말잔액 = 기초잔액 + 당기발생 − 당기실현 | 통과(차이 0) |
| 증감표 기말잔액 = 기초잔액 + 당기발생 − 당기실현 ± 기타조정 | 통과(차이 0) |
| 카테고리별 증감표 합계 = 개별 행 합계 | 통과(차이 0) |
| 거래쌍(TxPairSet) 합계 = 증감표(InvRollSet/AssetRollSet) 기말잔액 | 통과(차이 0) |
| 전표 상세 라인 합계 = 거래쌍 합계 | 통과(차이 0) |
| 전수검증 건수 · 차이 건수 | 40건 · 0건 |
| 조회 조건 전달 — 필터 · 정렬 · 총건수 확인 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 탭 전환 → 행 클릭 상세까지 실동작 후 캡처 | 3/3 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면의 판정이 곧 회계 오류를 의미하나요?
아닙니다. 기말잔액이 0보다 크면 아직 그룹 밖으로 실현되지 않은 미실현손익이 남아 있다는 뜻으로, 정상적인 상황에서도 흔히 나타납니다. 이 화면은 그 금액을 자동으로 집계해 보여주는 조회·점검 도구이며, 실제 연결 조정 분개 여부와 금액은 회사와 감사인이 최종 판단합니다.
이 화면은 언제부터 적용해야 하나요?
내부거래 미실현손익 제거는 연결재무제표를 작성하는 매 결산기마다 상시로 요구되는 연결절차이며, 특정 기준서의 시행일과 별개로 연결대상 자회사가 있는 한 계속 적용됩니다. 그 밖의 적용 범위 세부 사항은 도입 시스템에서 확인이 필요합니다.
재고자산과 유형자산의 실현 방식이 다른가요?
네. 재고자산은 매입법인이 외부에 재판매(또는 소비)한 비율만큼 실현되고, 유형자산은 매입법인이 감가상각을 인식하는 만큼 이연된 손익이 점진적으로 실현됩니다. 두 탭의 증감표는 이 차이를 반영해 별도로 집계됩니다.
화면의 숫자를 그대로 연결 조정 분개에 반영해도 되나요?
이 화면은 분류·집계·대사를 돕는 조회·점검 화면이며 회계 판단을 대신하지 않습니다. 제시된 금액은 참고용 집계 결과이므로, 실제 분개 반영 전 원천 전표와 세부 산정 근거를 확인해야 합니다.