SAP 외화 선급·선수 환율 적용 점검 — IFRIC 22, 먼저 보낸 돈의 환율은 그날로 고정된다
해외 구매·판매에서 먼저 주고받은 선급금이 자산·수익으로 바뀔 때 선급일 환율이 제대로 쓰였는지, 선급금이 기말에 다시 환산되지 않았는지 원장 데이터로 먼저 확인해 둡니다
해외 설비를 사면서 대금 일부를 먼저 보냈다면, 나중에 설비가 들어올 때 그 원화 금액은 어떤 환율로 정해야 할까요. IFRIC 22 외화 거래와 선지급·선수취 대가는 선급한 부분은 돈을 보낸 날의 환율로 고정하고, 그 뒤 추가로 인식하는 부분만 인식일 환율을 쓰도록 합니다. 선수금도 같습니다. 선급금·선수금은 IAS 21 환율변동효과(K-IFRS 제1021호)의 비화폐성 항목이라 기말에 다시 환산하지도 않습니다.
실무에서는 인식일 환율로 전액을 계산하거나 선급금 계정을 외화평가 대상에 넣는 일이 생깁니다. 표준 전표·환율·원장 구조를 그대로 이어받아 선급 건마다 선급 적용분과 추가 인식분을 나눠 기준 인식액을 계산하고, 장부 인식액과의 차이·선급금 재환산액·장기 미정산 잔액을 가려내는 과정을 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 6종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 선급 전표 — 특별 총계정원장 전표(
BKPF/BSEG)의 선급일·적용 환율을 그대로 사용 - 환율 — 환율 테이블(
TCURR)의 일자별 환율을 인식일 환율로 사용 - 표준 화면 — 선급금 지급(F-48) · 선수금 수취(F-29) · 선급금 정산(F-54) · 외화 평가(FAGL_FCV)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 외화 거래 |
| 관련 기준서 | IFRIC 22 외화 거래와 선지급·선수취 대가 — 선지급·선수취 대가가 있는 외화 거래의 거래일(환율 결정일) 판단, IAS 21 환율변동효과(K-IFRS 제1021호)의 비화폐성 항목 환산 |
| Namespace | zui5.advfx |
| 셸 구조 | 조회조건 영역(우측 조회) + 선급 환율 대사 요약 + 선급·선수 명세·유형별·통화별·미정산 경과 구간·점검 예외 5개 탭, 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 |
| SAP 표준 T-code | F-48 · F-29 · F-54 · F-39 · FAGL_FCV · OB08(§7 참고) |
| 데이터 연동 방식 | OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 정산·환산 전표 기표는 화면 밖 프로세스 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 6종 둘러보기
회사코드·회계연도를 넣고 조회하면 선급 환율 대사 요약과 선급·선수 명세가 한 화면에 뜹니다 → 탭을 옮겨 유형별·통화별·경과 구간별 집계를 보고 → 점검 예외에서 확인이 필요한 건만 추려 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도를 넣습니다. 유형·거래처·판정 상태는 비워 두면 전체가 조회됩니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 선급 환율 대사 요약에서 기준 인식액·장부 인식액·인식 차이와 선급금 재환산액, 미정산 원화를 먼저 확인합니다.
- 탭을 옮겨 가며 선급·선수 명세 → 유형별 → 통화별 → 미정산 경과 구간 → 점검 예외 순으로 좁혀 봅니다.
- 행을 누르면 선급 적용분·추가 인식분과 각각에 쓴 환율이 상세 다이얼로그로 열립니다.
- 선급·선수 명세와 점검 예외 탭에서는 CSV 내려받기(UTF-8 BOM)로 결과를 저장할 수 있습니다.
먼저 보낸 돈은 그날 환율로 — 선급 환율 고정 규칙
판정의 기준은 하나입니다. 먼저 주고받은 대가에 해당하는 부분은 그 대가를 주고받은 날의 환율로 고정되고, 나머지만 인식일 환율을 씁니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 선급 적용분은 선급 환율, 추가 인식분은 인식일 환율로 인식 | 정상 | 별도 조치가 없습니다. |
| 장부 인식액 ≠ 선급 적용분 × 선급 환율 + 추가 인식분 × 인식일 환율 | 점검 필요 | 전액을 인식일 환율로 계산하지 않았는지 확인합니다. |
| 선급금·선수금에 기말 외화환산손익이 계상됨 | 점검 필요 | 선급금 계정이 외화평가 대상에 들어가 있지 않은지 확인합니다. |
| 선급 후 90일이 지나도록 정산되지 않음 | 확인 필요 | 거래 진행 상황과 잔액의 회수 가능성을 확인합니다. |
| 선급 외화보다 인식 외화가 큼 | 정상 | 넘는 부분만 인식일 환율로 계산합니다. |
이 화면이 대신 정하지 않는 것
판정 결과는 확인 대상을 알리는 표시이며, 기준서 충족 여부를 단정하지 않습니다. 한 거래에 선급이 여러 번 있으면 선급할 때마다 거래일을 따로 정해야 하므로, 실제 판단은 건별 계약 조건을 함께 봐야 합니다. 최종 판단은 기준서 원문에 따라 회사와 감사인이 합니다.
선급에서 인식 대사까지 5단계 산출
| 단계 | 내용 |
|---|---|
| 1단계 | 선급·선수 대가의 외화금액과 선급일 환율을 확인한다 — 선급 원화 = 선급 외화 × 선급일 환율 |
| 2단계 | 인식 외화를 선급 적용분과 추가 인식분으로 나눈다 — 적용분 = min(선급 외화, 인식 외화) |
| 3단계 | 기준 인식액을 계산한다 — 기준 = 적용분 × 선급 환율 + 추가분 × 인식일 환율 |
| 4단계 | 장부 인식액과 대사한다 — 인식 차이 = 장부 인식액 − 기준 인식액 |
| 5단계 | 미정산 잔액과 재환산액을 확인한다 — 재환산액 = 0 / 미정산 원화 = 미정산 외화 × 선급 환율 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 회계연도 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 유형 | 선택 | 전체 / 선급금(구매) / 선수금(판매) |
| 거래처 | 선택 | 한 거래처만 좁혀 볼 때 씁니다. |
| 판정 상태 | 선택 | 전체 / 정상 / 점검 필요 / 확인 필요 |
결과 컬럼
| 영역 | 컬럼 · 표시 |
|---|---|
| 선급 환율 대사 요약 | 선급·선수 건수 · 미정산 건수 · 선급 원화 합계 · 기준 인식액 · 장부 인식액 · 인식 차이 · 선급금 재환산액 · 미정산 원화 · 예외 건수 |
| 선급·선수 명세 | 선급번호 · 유형 · 거래처 · 통화 · 외화금액 · 선급일 · 선급 환율 · 인식일 · 인식일 환율 · 기준 인식액 · 장부 인식액 · 인식 차이 · 미정산 원화 · 판정 |
| 유형별 집계 | 유형 · 건수 · 선급 원화 · 기준 인식액 · 장부 인식액 · 미정산 원화 |
| 통화별 집계 | 통화 · 건수 · 선급 원화 · 장부 인식액 · 미정산 원화 · 재환산액 |
| 미정산 경과 구간 | 경과 구간 · 건수 · 미정산 원화 · 구성비 |
| 점검 예외 | 예외번호 · 거래처 · 예외 유형 · 내용 · 차이 · 중요도 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 선급 환율 적용 관점의 조회·검증을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
F-48 | 구매처 선급금 지급 | 선급일과 선급 환율을 선급 건의 기준값으로 가져옵니다 |
F-29 | 고객 선수금 수취 | 선수일과 선수 환율을 선수 건의 기준값으로 가져옵니다 |
F-54 | 구매처 선급금 정산 | 정산 시 선급 적용분이 선급 환율로 반영됐는지 대사합니다 |
F-39 | 고객 선수금 정산 | 정산 시 선수 적용분이 선수 환율로 반영됐는지 대사합니다 |
FAGL_FCV | 외화 평가 | 선급금·선수금 계정이 평가 대상에서 빠졌는지 확인합니다 |
OB08 | 환율 입력 | 선급일·인식일 환율의 원천입니다 |
IFRS 요구사항 매핑표
| 기준서 | 요구사항 | 이 화면의 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| IFRIC 22 | 선지급·선수취 대가를 처음 인식한 날을 거래일로 본다 | 선급 적용분에 선급일 환율을 적용한 기준 인식액 산출 | BKPF · BSEG | 선급이 여러 번이면 선급마다 거래일을 따로 정합니다. |
| IFRIC 22 | 선급 후 추가로 인식하는 부분은 그 인식일이 거래일 | 추가 인식분에 인식일 환율 적용 | BKPF · TCURR | 추가분 판단은 계약 조건에 따릅니다. |
| IAS 21 (K-IFRS 제1021호) | 비화폐성 항목은 거래일 환율로 환산하고 다시 환산하지 않는다 | 선급금·선수금 기말 재환산액 0 확인 | ACDOCA | 선급금이 비화폐성인지 판단은 사용자 몫입니다. |
| IAS 21 (K-IFRS 제1021호) | 화폐성 항목만 마감환율로 환산 | 외화평가 대상 계정 범위 확인(FAGL_FCV) | ACDOCA · SKB1 | 평가 대상 설정은 회사 계정체계에 따릅니다. |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
BKPF / BSEG | BELNR · BLDAT · WAERS · KURSF · WRBTR · DMBTR · UMSKZ | 선급·선수 전표와 적용 환율 |
BSIK / BSID | LIFNR · KUNNR · UMSKZ · WRBTR · DMBTR | 미정산 선급금·선수금 잔액 |
TCURR | FCURR · TCURR · GDATU · UKURS | 일자별 환율 |
ACDOCA | RBUKRS · GJAHR · RACCT · HSL · WSL | 인식 전표와 외화환산손익 |
LFA1 / KNA1 | LIFNR · KUNNR · NAME1 | 거래처 표기 |
define view entity ZC_AdvFxItem
as select from I_OperationalAcctgDocItem as it
inner join I_JournalEntry as je on je.AccountingDocument = it.AccountingDocument
{
key it.AccountingDocument as AdvId,
it.SpecialGLCode as AdvType,
it.Supplier as Partner,
it.TransactionCurrency as Currency,
it.AmountInTransactionCurrency as FcAmount,
je.DocumentDate as AdvDate,
je.ExchangeRate as AdvRate,
it.AmountInCompanyCodeCurrency as AdvKrw
}
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · 대사 요약 패널 · sap.m.IconTabBar 5개 탭 |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로) — 화면 블록마다 엔티티셋에 직접 바인딩합니다. 모델 설정은 useBatch:false · defaultBindingMode:"OneWay" · defaultCountMode:"Inline" |
| 조회조건 | sap.m.Input · sap.m.ComboBox — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조회조건을 조립합니다. "전체"를 고른 조건은 필터를 만들지 않습니다 |
| 정렬 · 페이징 | sap/ui/model/Sorter와 모델의 페이징 기능으로 처리 — 전체를 받아 화면에서 걸러내지 않습니다 |
| 명세·예외 표 | sap.ui.table.Table — 행 클릭 시 상세 다이얼로그 |
| 집계 표 | sap.m.Table — sap.m.ObjectStatus로 판정 상태를 표준 ValueState 로만 표시 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon · lodash · moment, OData 서비스에 연결 |
Component.js | 화면 상태·조회조건 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.advfx · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 대사 요약 · 5개 탭 |
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 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 12건의 선급·선수 대가를 기준으로 선급 원화와 인식액이 원(KRW) 단위로 정확히 맞물리도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 선급 원화 = 선급 외화 × 선급일 환율 | 통과(차이 0) |
| 선급 적용분 · 잔여분 · 미정산 외화 분해 | 통과(차이 0) |
| 기준 인식액 = 적용분 × 선급 환율 + 잔여분 × 인식일 환율 | 통과(차이 0) |
| 장부 인식액 = 기준 인식액 (차이 = 장부 − 기준) | 통과(의도적 예외 제외 차이 0) |
| 선급금·선수금 기말 재환산액 = 0 | 통과(의도적 예외 제외 차이 0) |
| 유형별 집계 = 명세 집계 | 통과(차이 0) |
| 통화별 집계 = 명세 집계 | 통과(차이 0) |
| 경과 구간별 집계 = 명세 집계 | 통과(차이 0) |
| 경과 구간별 미정산 구성비 합계 = 100% | 통과(차이 0) |
| 대사 요약행 = 실제 집계 결과 | 통과(차이 0) |
| 금액 차이 건 = 예외 등록 건 | 통과(의도적 예외 제외 차이 0) |
| 확인 대상 건 안내 | 선급분에 인식일 환율 적용 1건 · 선급금 기말 재환산 1건 · 90일 초과 미정산 2건(의도적으로 구성한 케이스) |
| 조회 조건 전달 — 12건 → 6건 필터 · top 3 · 내림차순 정렬 · __count 12 확인 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세까지 실동작 후 캡처 | 6/6 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면의 판정이 곧 기준서 충족 여부인가요?
아닙니다. 이 화면은 선급·선수 대가의 환율 적용 결과를 집계·대사해 확인이 필요한 건을 가려내는 점검 도구입니다. 최종 판단은 기준서 원문에 따라 회사와 감사인이 합니다.
적용 시기와 범위는 어떻게 되나요?
IFRIC 22 는 이미 시행 중인 해석입니다. 대상은 외화로 대가를 먼저 주거나 받은 뒤 관련 자산·비용·수익을 인식하는 거래이며, 선급금이 오가는 해외 구매·판매 거래가 대부분 여기에 해당합니다. 거래가 생길 때마다 적용되므로 결산 때마다 점검할 대상입니다.
선급금은 왜 기말에 다시 환산하지 않나요?
선급금·선수금은 돈으로 돌려받거나 돌려줄 권리·의무가 아니라 재화나 용역을 받거나 줄 권리·의무이므로 비화폐성 항목으로 봅니다. 비화폐성 항목은 거래일 환율로 한 번 환산하고 다시 환산하지 않습니다. 다만 계약이 해지돼 현금으로 돌려받게 되는 경우처럼 성격이 바뀌면 판단이 달라질 수 있습니다.
선급을 여러 번 나눠 했다면 환율은 어떻게 정하나요?
선급할 때마다 거래일을 따로 정합니다. 예를 들어 두 번에 나눠 선급했다면 각 선급분은 각각의 선급일 환율로 고정되고, 선급을 넘는 부분만 인식일 환율을 씁니다. 화면은 건별 선급일 환율을 기준으로 계산하므로, 분할 선급 건은 선급 건을 나눠 관리하는 것이 좋습니다.