SAP 해외 자회사 재무제표 환산 점검 — 연결 결산 전에, 환율부터 맞는지 본다
자산·부채는 마감환율, 자본은 취득시환율. 법인마다 적용환율이 맞는지부터 가른 뒤 연결로 넘깁니다
해외 자회사가 있으면 연결 결산 전에 반드시 거치는 절차가 하나 있습니다. 각 법인의 현지통화 재무제표를 그룹의 표시통화로 환산하는 일입니다. 자산·부채는 결산기준일 마감환율로, 자본금은 출자 시점의 취득시환율로, 당기순이익은 보고기간 평균환율로— 계정 성격에 따라 적용하는 환율이 다르기 때문에, 법인 수가 늘어날수록 어디선가 환율 하나가 잘못 적용되기 쉽습니다.
이 화면은 법인별로 계정마다 적용된 환율이 그 법인의 마감·평균·취득시 환율과 정확히 일치하는지, 그리고 환산 후 자산=부채+자본(외환환산차이 포함)의 대차가 맞는지를 OpenUI5 화면으로 한 번에 보여줍니다. 표준 환율·원장 조회 기능 위에 법인별 환산 대사라는 관점 하나를 더한 셈입니다. 실제 구동 화면 4종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 환율 마스터 — 환율 유지(
OB08)의 마감·평균·취득시 환율 체계를 그대로 이어받습니다 - 통화환산 — 연결 통화환산(
CX16)의 계정 성격별 환산 로직(자산·부채는 마감, 자본은 취득시)을 참고해 화면에 반영합니다 - 원장 조회 — 총계정원장 라인아이템 조회(
FAGLL03)의 계정별 잔액 구조를 계정별 환산 명세 탭에 이어받습니다
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무(FI) · 연결 결산 |
| 관련 기준서 | - (대상 영역: 연결 결산 · 참고: IAS 21/K-IFRS 제1021호) |
| Namespace | zui5.fxtrans |
| 셸 구조 | 조회조건 영역(우측 조회) + 대사 요약 + 탭 3개, 행 클릭 상세 Dialog |
| 화면 수 | 조회 화면 1개(탭 3개) + 상세 다이얼로그 |
| SAP 표준 T-code | OB08 · CX16 · FAGLL03 |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·점검형 — 실제 연결 반영 여부 판단은 회사가 수행 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 4종 둘러보기
기본 조건으로 조회하면 자회사별 환산 요약이 뜹니다 → 계정별 환산 명세 탭에서 계정 단위로 확인하고 → 재무상태표 대사 탭에서 대차·CTA를 보고 → 법인 행을 클릭해 상세를 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 화면에 들어오면 기본 보고기간(2026-08) 조건으로 자동 조회가 1회 실행됩니다.
- 조회조건 영역에서 보고기간(필수)·법인코드(선택)·점검상태(선택)를 입력합니다. "전체"를 선택하면 해당 조건은 걸리지 않습니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 법인코드 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다. 초기화 버튼은 조건을 기본값으로 되돌립니다.
- ① 자회사별 환산 요약 탭에서 법인별 마감·평균환율과 점검상태를 먼저 확인합니다.
- ② 계정별 환산 명세 탭에서 계정 단위의 현지통화금액·적용환율·환산금액을 봅니다.
- ③ 재무상태표 대사 탭에서 자산총계·부채와자본총계·외환환산차이(CTA)·적용환율 불일치 라인수를 확인합니다.
- ① 탭의 법인 행을 클릭하면 그 법인의 계정별 환산 명세가 다이얼로그로 열립니다.
- CSV 내려받기(UTF-8 BOM)로 현재 조회된 자회사별 환산 요약을 저장합니다.
환산·대사 판정 로직
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 법인의 모든 환산 라인에서 적용환율이 그 법인의 마감·평균·취득시 환율과 일치 | 정상 | 후속 연결 결산 절차로 진행 |
| 한 라인 이상에서 적용환율이 법인의 환율과 다름(예: 결산기준일이 아닌 환율 오적용) | 확인 필요 | 해당 라인의 환율 출처를 재확인한 뒤 재환산 |
대차(자산=부채+자본+CTA) 자체는 외환환산차이를 차액(plug)으로 산출하는 구조라 항상 맞습니다. 실제 점검 포인트는 적용환율 불일치이며, 판정은 조회·점검을 돕기 위한 기준입니다.
환산 처리 단계
| 단계 | 내용 |
|---|---|
| 1단계 | 법인별 자산·부채 계정을 현지통화 잔액으로 집계 후 마감환율로 환산 |
| 2단계 | 자본금(납입자본)을 취득(출자) 시점 환율로 환산 |
| 3단계 | 이익잉여금 기초 잔액을 취득시환율 기준으로 이월 |
| 4단계 | 당기순이익을 보고기간 평균환율로 환산해 이익잉여금에 가산 |
| 5단계 | 순자산(마감환율) − 환산된 자본요소 합계 = 외환환산차이(CTA) 산출 |
| 6단계 | 법인별 대차 일치와 적용환율 일치 여부를 대사 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 보고기간 | 필수(기본값 2026-08) | YYYY-MM 형식 |
| 법인코드 | 선택 | 입력 시 3개 탭 모두 해당 법인 기준으로 필터링 |
| 점검상태 | 선택(기본 "전체") | "전체"는 조건에서 제외 |
결과 컬럼
| 탭 | 컬럼 |
|---|---|
| ① 자회사별 환산 요약 | 법인코드·법인명·기능통화·표시통화·보고기간·마감환율·평균환율·계정라인수·점검상태 |
| ② 계정별 환산 명세 | 법인코드·계정코드·계정명·구분·적용환율유형·현지통화금액·적용환율·환산금액(KRW) |
| ③ 재무상태표 대사 | 법인코드·자산총계·부채와자본총계·대차차이·외환환산차이(CTA)·적용환율 불일치 라인수·점검결과 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 법인별 환산 대사 관점을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
OB08 | 환율 유지 | 법인별 마감·평균·취득시 환율을 조회조건·대사 기준으로 이어받습니다 |
CX16 | 연결 통화환산 | 계정 성격별(자산부채/자본) 환산 로직을 화면 판정 기준으로 반영합니다 |
FAGLL03 | 총계정원장 라인아이템 조회 | 계정별 잔액 구조를 계정별 환산 명세 탭으로 재구성합니다 |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
ACDOCA | RBUKRS · RACCT · HSL | 유니버설 저널 — 법인·계정별 현지통화 잔액 |
T880 | BUKRS · WAERS | 법인 마스터 — 기능통화 설정 |
TCURR | FCURR · UKURS | 환율 테이블 — 마감·평균·취득시 환율 |
define view entity Z_I_FxTranslationLine
as select from acdoca
association[1..1] to t880 as _Company on _Company.bukrs = acdoca.rbukrs
association[1..1] to tcurr as _Rate on _Rate.fcurr = acdoca.rhcur
{
key acdoca.rbukrs as SubsidiaryCode,
key acdoca.racct as AccountCode,
acdoca.hsl as LocalAmount,
_Rate.ukurs as RateApplied,
_Company.waers as FunctionalCurrency
}
계정·마스터 구성은 가상 데이터 기준 스케치입니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · IconTabBar 3개 탭 |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로)로 기본 모델을 만들고 defaultCountMode:"Inline" · useBatch:false 로 구성합니다. 화면 블록마다 해당 엔티티셋에 직접 바인딩합니다 |
| 조회조건 | sap.ui.model.Filter 로 조립해 바인딩에 적용합니다. "전체"를 고른 조건은 필터를 만들지 않습니다 |
| 요약 · 명세 · 대사 | sap.m.Table(요약·대사) · sap.ui.table.Table(명세, 다건) — 요약 행 클릭(press)으로 상세 다이얼로그를 엽니다 |
| 예외 메시지 | 메타데이터 실패·요청 실패를 구분해 안내하는 전용 처리기 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결 |
Component.js | 모델 초기화, 예외 메시지 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.fxtrans · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 3개 탭 |
view/DetailDialog.fragment.xml | 법인 상세 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · CSV |
controller/BaseController.js | CSV 다운로드 공통 처리 |
model/formatter.js · model/ErrorHandler.js | 표시 서식 · 예외 메시지 처리 |
i18n/i18n_ko.properties | 화면 문구 |
검증 결과
검증용 샘플 데이터(법인 8개, 환산 라인 80건)를 기준으로 대사식을 전수 검증했습니다. 적용환율 불일치 동작을 확인하기 위해 결산기준일이 아닌 환율이 적용된 라인 1건을 의도적으로 포함했습니다.
| 검증 항목 | 결과 |
|---|---|
| 법인별 대차(자산 = 부채+자본+CTA) 일치 (법인 8개) | 통과(차이 0) |
| 적용환율 일치 여부 판정 — 의도적 예외 1건 정확히 탐지 | 통과 |
| 조회 조건 전달 — 보고기간·법인코드·점검상태 필터 · Enter 키 조회 · 총건수 표시 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 | 0건 |
화면 렌더링 — 조회 버튼 위치 · sap_horizon 테마 · 서비스 미연결 시 안내 메시지 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
적용환율은 왜 계정마다 다른가요?
IAS 21(K-IFRS 제1021호)의 기능통화·표시통화 환산 원칙에 따라 자산·부채는 보고기간 말 마감환율로, 자본금은 취득(출자) 시점 환율로, 당기순이익은 평균환율로 환산하기 때문입니다. 계정 성격에 따라 적용환율유형이 달라집니다.
외환환산차이(CTA)는 어떻게 계산되나요?
마감환율로 환산한 순자산(자산 − 부채)에서, 취득시환율·평균환율로 환산한 자본요소 합계(자본금 + 이익잉여금)를 뺀 차액으로 산출합니다. 이 차액을 자본 항목에 반영하면 대차가 항상 맞습니다.
대차차이가 항상 0이라면 점검할 게 없는 것 아닌가요?
외환환산차이를 차액(plug)으로 산출하는 구조라 대차 자체는 항상 맞습니다. 실제 점검 포인트는 각 계정 라인에 적용된 환율이 그 법인의 마감·평균·취득시 환율과 정확히 일치하는지이며, 이 화면은 불일치 라인 수를 법인별로 바로 보여줍니다.
이 화면의 점검 결과를 최종 판단으로 봐도 되나요?
아니요. 이 화면은 환산 라인과 적용환율을 빠르게 대조해 보는 조회·점검 도구이며, 계정 분류와 환산 결과에 대한 최종 회계 판단은 회사와 감사인이 수행합니다.