지난 글에서 계정과목표를 만들었습니다. OB13으로 계정과목표를 정의하고, OBD4로 계정그룹과 번호 범위를 잡고, OB53으로 이익잉여금 계정을 지정한 뒤 OB62로 회사코드에 붙였습니다. 그다음 FS00으로 개별 G/L 계정을 만들면 준비는 끝납니다.
그런데 여기까지만 하면 이상한 일이 생깁니다. 계정은 전부 있는데 재무제표가 나오지 않습니다. 정확히는, 나오긴 하는데 계정번호가 순서대로 죽 나열된 목록일 뿐 대차대조표처럼 보이지 않습니다.
이유는 단순합니다. SAP는 계정 10100이 현금이라는 것은 알지만, 그것이 유동자산에 속하고, 유동자산은 자산의 하위이고, 자산은 대차대조표 왼쪽에 온다는 사실은 모릅니다. 계정과목표는 어휘집일 뿐이고, 그 어휘를 문장으로 배열하는 문법이 따로 필요합니다. 그 문법이 재무제표 구조, FSV(Financial Statement Version) 입니다.
목차
1. FSV는 계정과목표 위에 얹는 별도의 층입니다
여기서 가장 중요한 것은 계정과목표 하나에 FSV를 여러 개 붙일 수 있다는 점입니다.
같은 계정 데이터를 놓고 공시용으로는 K-IFRS 양식대로 묶고, 세무 신고용으로는 손금·익금 관점으로 묶고, 경영보고용으로는 사업부 관점으로 묶을 수 있습니다. 계정 마스터는 전혀 건드리지 않습니다. 트리만 하나 더 만들면 됩니다.
EBS에서 넘어오신 분이라면 FSG(Financial Statement Generator) 를 떠올리시면 정확합니다.
| Oracle EBS | SAP | 비고 |
|---|---|---|
| FSG Report | Financial Statement Version (FSV) | 재무제표 양식 정의 |
| Row Set | FSV 항목 계층(트리) | EBS는 행/열을 따로, SAP는 트리 하나로 |
| Column Set | F.01 실행 파라미터(기간·비교) | SAP는 보고서 실행 시 지정 |
| Content Set | 회사코드/사업영역 선택 | 실행 화면에서 처리 |
| Account Assignment (세그먼트 범위) | 계정 할당 (From~To 범위) | 개념 거의 동일 |
가장 큰 차이는 EBS FSG가 행 세트와 열 세트를 따로 만들어 조합하는 구조인 데 비해, SAP FSV는 행 구조(트리) 하나만 정의하고 열은 보고서 실행 시점에 정한다는 점입니다. 처음엔 답답하게 느껴지지만, 양식 하나를 여러 보고서가 재사용할 수 있어서 관리는 오히려 단순합니다.
2. 트리 구조 — 여기서 대부분 막힙니다
FSV를 처음 만들면 SAP가 자동으로 뼈대를 깔아줍니다. 이 뼈대에 있는 항목들을 특수항목(Special Items) 이라고 부르는데, 이름만 보고 일반 폴더처럼 이리저리 옮기면 나중에 금액이 안 맞습니다.
특수항목이 하는 일
자산 / 부채및자본은 대차대조표의 양쪽입니다. 여기 붙은 계정들의 잔액 차이로 순손익이 계산됩니다.
당기순이익 / 당기순손실에는 계정을 붙이지 않습니다. 자산 합계와 부채 합계의 차액을 시스템이 자동으로 계산해서 여기에 넣습니다. 이 두 항목을 지우거나 엉뚱한 곳에 두면 대차가 안 맞는 보고서가 나옵니다. 위치는 보통 부채및자본 아래 자본 노드 안입니다.
손익(P+L result) 은 손익계산서 쪽 계정들이 들어가는 자리입니다. 위치는 자유롭지만 다른 특수항목의 하위 노드로 넣으면 안 됩니다. 자산 아래에 실수로 끌어다 놓는 사례가 의외로 많습니다.
재무제표 주석 / 미배정 계정에 붙은 계정은 순손익 계산과 손익 결과에서 제외됩니다. 이 성질을 이용해, 재무제표에는 넣기 애매하지만 계정은 살려둬야 하는 경우 주석 항목으로 옮겨두는 기법을 씁니다.
미배정 계정은 버그가 아니라 검증 장치입니다
처음 보고서를 돌리면 “미배정 계정” 아래에 금액이 잔뜩 뜹니다. 오류가 아니라, 아직 트리에 배정하지 않은 계정들을 시스템이 모아서 보여주는 것입니다.
이 노드가 비어 있으면 모든 계정이 제자리를 찾았다는 뜻입니다. FSV 작업의 종료 조건이라고 생각하시면 됩니다.
3. 실습 — FSV 만들기 5단계
계정과목표 설정과 마찬가지로 순서가 중요합니다. 항목 트리가 없으면 계정을 붙일 자리가 없고, 계정을 안 붙이면 검증할 대상이 없습니다.
STEP 1 — FSV 헤더 생성 (OB58)
IMG 경로는 두 군데에 있습니다. 신 총계정원장 기준 경로는 이렇습니다.
SPRO → SAP Reference IMG
→ 재무회계
→ 총계정원장 회계
→ 마스터 데이터
→ G/L 계정
→ 재무제표버전 정의
명령창에 /nOB58을 치면 바로 갑니다. 실행하면 SAP가 기본 제공하는 FSV 목록이 나오는데, 여기에는 독일식(BAUS, GKR, IKR)이나 국제 표준(INT) 같은 것들이 들어 있습니다. 한국 양식에 맞는 표준 FSV는 없습니다. 신규로 만들거나, INT를 복사해서 뜯어고치는 방식으로 시작합니다.
신규 엔트리를 눌러 입력하는 값은 몇 개 되지 않습니다.
| 필드 | 설명 | 주의사항 |
|---|---|---|
| 재무제표버전 | 4자리 키 (예: ZKIF) | 커스텀은 Z로 시작 |
| 명칭 | 설명 | 자유 입력 |
| 유지보수언어 | 항목명을 관리할 기준 언어 | 다국어는 언어 전환 후 각각 입력 |
| 항목키 자동할당 | 항목 ID를 자동 채번할지 | 체크 권장 |
| 계정과목표 | 이 FSV가 붙을 계정과목표 | 아래 별도 설명 |
| 그룹계정번호 | 그룹 계정번호 사용 여부 | 연결결산용, 보통 비움 |
항목키 자동할당은 체크하는 편이 낫습니다. 해제하면 노드를 만들 때마다 ID를 직접 입력해야 하는데, 수백 개 노드를 만들면서 ID 체계를 사람이 관리하는 것은 사고의 원인입니다.
계정과목표 필드가 조금 특이합니다. 여기에 값을 넣으면 그 계정과목표의 계정만 할당할 수 있습니다. 비워두면 여러 계정과목표의 계정을 섞어 쓸 수 있습니다. 국내 단일 법인이면 지정하는 편이 안전합니다. 오타로 엉뚱한 계정을 붙이는 것을 시스템이 막아주기 때문입니다.
STEP 2 — 항목 트리 구성
FSV를 선택하고 왼쪽의 재무제표항목 버튼을 누르면 트리 편집 화면으로 들어갑니다. 여기서 앞서 본 특수항목 뼈대가 이미 깔려 있는 것을 볼 수 있습니다.
작업 순서를 이렇게 잡으시면 편합니다.
- 특수항목들을 먼저 규칙에 맞는 위치로 옮깁니다 (2레벨 배치, 순이익/순손실은 부채 하위)
- 자산 아래에 유동자산 / 비유동자산을 만듭니다
- 그 아래에 실제 재무제표 항목명(현금및현금성자산, 매출채권 …)을 만듭니다
- 부채및자본, 손익 쪽도 같은 방식으로 내려갑니다
노드를 만들 때는 커서를 부모가 될 노드에 두고 [항목생성]을 누릅니다. 형제로 만들지 자식으로 만들지 묻는 팝업이 뜨는데, 여기서 잘못 고르면 계층이 한 단 어긋납니다. 만들고 나서 드래그로 옮길 수는 있지만, 하위 노드가 많아진 뒤에는 손이 많이 갑니다.
실무 팁. 트리를 SAP에서 바로 만들지 말고, 엑셀에 계층과 항목명을 먼저 정리해서 회계팀 확인을 받으세요. 재무제표 항목명은 공시 양식과 글자 하나까지 맞춰야 하는 경우가 많은데, 나중에 이름을 바꾸면 이미 붙여둔 계정 할당은 유지되지만 다국어 텍스트를 다시 손봐야 합니다.
STEP 3 — 계정 할당
트리가 완성되면 말단 노드(자식이 없는 노드)에 계정을 붙입니다. 커서를 해당 노드에 두고 [계정할당]을 누르면 범위를 입력하는 창이 뜹니다.
시작계정 종료계정 차변(D) 대변(C)
10100 ~ 10399 ☑ ☑
범위로 입력하는 것이 핵심입니다. 계정을 하나하나 등록하는 대신 10100 ~ 10399처럼 구간으로 잡습니다. 전편에서 계정그룹 번호 범위를 서로 겹치지 않게 설계하라고 강조했던 이유가 여기서 드러납니다. 번호 체계가 성격별로 잘 잘려 있으면 FSV 할당이 몇 줄로 끝나지만, 범위가 뒤엉켜 있으면 계정을 개별로 찍어야 합니다.
차변/대변 지시자는 별도로 설명할 만합니다.
차변/대변 지시자가 필요한 이유
보통예금 계정을 생각해 보시면 됩니다. 잔액이 플러스면 자산이지만, 당좌차월로 마이너스가 되면 회계적으로는 단기차입금입니다. 계정은 하나인데 표시될 자리가 잔액 방향에 따라 달라져야 하는 겁니다.
이럴 때 같은 계정을 두 노드에 배정하고, 한쪽은 차변만, 다른 쪽은 대변만 체크합니다. 그러면 SAP가 잔액 방향을 보고 알아서 자리를 정합니다.
여기서 양쪽 모두 D와 C를 켜면 같은 금액이 두 번 잡힙니다. 대차 합계가 부풀어 오르는데 원인을 찾기가 은근히 어렵습니다. 한 계정을 두 곳에 배정할 때는 반드시 배타적으로 설정하세요.
반대로 대부분의 일반 계정은 한 노드에만 배정하고 D와 C를 모두 켜둡니다. 잔액 방향과 상관없이 항상 그 자리에 표시됩니다.
STEP 4 — 검증
트리 편집 화면 상단의 체크 버튼을 누르면 SAP가 구조를 검사합니다. 잡아주는 것들은 이렇습니다.
- 특수항목이 규칙에 맞지 않는 위치에 있음
- 같은 계정이 여러 항목에 중복 배정됨 (D/C로 구분되지 않은 채)
- 계정과목표에 존재하지 않는 계정번호를 범위에 넣음
- 하위 노드도 계정도 없는 빈 노드
체크를 통과했다고 금액이 맞는다는 뜻은 아닙니다. 구조적 오류만 잡아줄 뿐입니다. 금액 검증은 다음 단계에서 합니다.
STEP 5 — 보고서로 확인 (F.01)
/nF.01을 실행하고 선택 화면에서 회사코드, 회계연도, 기간, 그리고 재무제표버전에 방금 만든 FSV 키를 넣습니다.
결과에서 확인할 것은 세 가지입니다.
첫째, 미배정 계정 노드가 비어 있는가. 금액이 있으면 그 계정들을 트리에 안 붙였다는 뜻입니다. 노드를 펼치면 어떤 계정인지 바로 나오니 STEP 3으로 돌아가 추가하면 됩니다.
둘째, 자산 합계와 부채및자본 합계가 맞는가. 차이가 나는데 당기순이익/순손실 노드에 그 차액이 잡혀 있지 않다면, 특수항목 위치를 잘못 잡았을 가능성이 큽니다.
셋째, 같은 계정이 두 군데 이상 나오지 않는가. 나온다면 계정 범위가 겹쳤거나 D/C 지시자 설정이 잘못된 것입니다.
세 가지가 다 통과하면 FSV는 완성입니다.
4. S/4HANA에서는 트랙이 두 개입니다
여기서부터는 시스템 버전에 따라 이야기가 갈립니다. ECC만 쓰신다면 3장까지로 충분하지만, S/4HANA 프로젝트라면 반드시 알아야 하는 부분입니다.
OB58과 FSE2로 클래식 FSV를 유지보수하는 방식은 S/4HANA에서도 여전히 사용할 수 있습니다. 다만 이렇게 만든 클래식 FSV는 Fiori 리포팅에서 바로 사용할 수 없습니다.
이유는 저장 위치가 다르기 때문입니다. 클래식 FSV는 T011 계열 테이블(T011, T011T와 FAGL_011ZC, FAGL_011PC, FAGL_011QT)에 들어가고, Fiori의 Manage Global Hierarchies로 만든 계층은 HRRP* 계열 테이블에 들어갑니다. 완전히 별개의 저장소입니다.
그래서 이런 상황이 생깁니다.
- Fiori 재무제표 앱에서 방금 OB58로 만든 FSV가 목록에 안 보입니다
- 반대로 RFBILA00 같은 클래식 보고서는 Manage Global Hierarchies로 만든 재무제표 구조를 사용할 수 없습니다
클래식 FSV를 Fiori 쪽에서 쓰고 싶다면 Manage Global Hierarchies의 Import Hierarchy 기능으로 가져올 수 있습니다. S/4HANA 최신 버전에는 Migrate FSVs to Global Hierarchies 앱도 별도로 있습니다. 중요한 것은 이동이 한 방향뿐이라는 점입니다. 글로벌 계층 쪽에서 클래식 FSV 테이블(T011)로 되돌리거나 복제하는 기능은 없습니다.
그래서 어느 쪽으로 만들어야 하나
SAP 도움말은 신규 FSV는 글로벌 계층 쪽(Define Financial Statement Versions in Global Hierarchies)에서 만들 것을 권장 합니다. 실무 판단은 이렇게 정리하시면 됩니다.
| 상황 | 권장 |
|---|---|
| ECC 운영 중 | 클래식 (OB58) — 선택지가 없습니다 |
| S/4HANA 신규 구축 | 글로벌 계층 (Manage Global Hierarchies) |
| S/4HANA 전환, 기존 FSV 재사용 | 클래식으로 이관 후 Import/Migrate로 복사 |
| 클래식 보고서(F.01)를 계속 써야 함 | 클래식을 유지하고 필요시 양쪽 병행 |
마지막 경우가 현실에서 가장 흔합니다. 회계팀이 F.01 화면에 익숙해서 Fiori로 못 넘어가는 상황이죠. 이때는 양쪽을 다 유지하게 되는데, 한쪽을 고치면 다른 쪽도 고쳐야 한다는 운영 부담이 생깁니다. 프로젝트 초기에 어느 쪽을 정본으로 삼을지 정하고 문서로 남겨두시는 편이 좋습니다.
글로벌 계층 쪽의 장점
Manage Global Hierarchies가 편한 점은 세 가지입니다. 드래그앤드롭으로 노드를 옮길 수 있고, 초안(Draft) 상태로 저장해두고 여러 번 고칠 수 있으며, 반영 전에 시뮬레이션으로 결과를 미리 볼 수 있습니다. GUI 트리 편집기에서 노드를 잘못 옮겨놓고 되돌리느라 애먹어 본 분이라면 차이를 바로 느끼실 겁니다.
5. 자주 겪는 문제
대차대조표가 안 맞습니다
가장 흔한 원인은 당기순이익/당기순손실 특수항목이 없거나 엉뚱한 위치에 있는 경우입니다. 이 항목은 자산과 부채의 차액을 담는 그릇이라, 없으면 차액이 갈 곳이 없어서 그냥 안 맞는 상태로 출력됩니다.
두 번째 원인은 이익잉여금 계정 처리입니다. 전기 손익이 이월되지 않은 상태에서 보고서를 돌리면 그만큼 차이가 납니다. 결산 이월(F.16)이 정상적으로 돌았는지, 이익잉여금 계정이 FSV의 자본 아래에 제대로 붙어 있는지 확인하세요.
운영계에서 FSV가 수정되지 않습니다
정상입니다. FSV는 커스터마이징이라 운영 클라이언트가 잠겨 있으면 TK 430 또는 FE 146 메시지와 함께 막힙니다.
원칙은 개발계에서 수정하고 변경요청으로 이관하는 것입니다. 다만 재무제표 항목은 결산 시즌에 급하게 바꿔야 하는 일이 잦아서, SOBJ로 뷰 V_T011을 현재 설정(Current Settings)으로 전환해 운영계에서 직접 유지보수하도록 여는 회사도 있습니다. 관련 SAP Note가 있지만, 감사 대상이 되는 변경이므로 반드시 회계팀·감사팀과 합의한 뒤 진행하세요. 개인 판단으로 열 일이 아닙니다.
계정을 새로 만들었는데 재무제표에 안 나옵니다
FS00으로 계정을 만들었다고 FSV에 자동으로 붙지 않습니다. 계정 생성과 FSV 할당은 별개 작업입니다.
이게 운영 단계에서 반복적으로 사고를 냅니다. 계정 신규 생성 요청이 들어오면 FSV 할당까지 한 세트로 처리하는 절차를 만들어두시는 것이 좋습니다. 계정 범위를 넉넉하게 잡아두면(예: 10100~10399) 그 구간 안에서 계정이 늘어나는 한 자동으로 포함되므로, 애초에 범위 설계를 여유 있게 하는 것도 방법입니다.
잔액이 0인 계정이 보고서에 안 나옵니다
F.01 선택 화면에 잔액 0 계정 표시 옵션이 있습니다. 공시용으로 양식을 고정해야 할 때는 이 옵션을 켜야 항목 줄이 사라지지 않습니다.
엑셀로 FSV 구조를 한 번에 올리고 싶습니다
텍스트나 XML 파일에서 FSV 구조를 업로드하는 표준 기능은 SAP에 없습니다. 이 부분을 궁금해하시는 분이 많아서 SAP도 KBA로 답을 정리해두었는데, 결론은 “표준으로는 안 된다”입니다.
수백 개 노드를 손으로 만드는 게 현실적이지 않다면, 바로 앞 글에서 다룬 BDC 방식을 쓸 수 있습니다. SHDB로 FSE2 트리 편집 화면에서 노드 하나 만드는 과정을 녹화하고, 엑셀 계층 데이터로 반복 실행하는 구조입니다. 다만 트리 편집기는 화면 흐름이 계층 위치에 따라 달라져서 BDC가 상당히 까다롭습니다. 비슷한 FSV를 복사(Copy as)한 뒤 부분 수정하는 편이 대체로 빠릅니다.
6. 관련 T-code와 테이블 정리
| T-code | 용도 |
|---|---|
OB58 | FSV 생성·변경·이관 (헤더 + 구조) |
FSE2 / FSE3 | FSV 구조 변경 / 조회 |
F.01 | 재무제표 보고서 (프로그램 RFBILA00) |
S_ALR_87012284 | 대차대조표 / 손익계산서 |
F.16 | 잔액 이월 (결산) |
FS00 | G/L 계정 마스터 |
| 테이블 | 내용 |
|---|---|
T011 | FSV 헤더 |
T011T | FSV 명칭 (다국어) |
FAGL_011ZC | FSV 계층 노드 |
FAGL_011PC | 노드별 계정 할당 범위 |
FAGL_011QT | 항목 텍스트 |
인터페이스나 커스텀 리포트에서 FSV 구조를 읽어야 할 때는 FAGL_011ZC와 FAGL_011PC를 조인해서 계층과 계정 범위를 뽑으면 됩니다. Oracle 쪽 FSG 정보를 SAP로 매핑하는 작업을 하신다면 이 두 테이블이 대응점이 됩니다.
마무리
정리하면 이렇습니다.
- 계정과목표가 어휘라면 FSV는 문법입니다. 계정만으로는 재무제표가 나오지 않습니다
- 계정과목표 하나에 목적별 FSV를 여러 개 얹을 수 있습니다
- 특수항목(자산·부채및자본·순이익·순손실·손익·주석·미배정)은 배치 규칙이 정해져 있습니다
- 순이익/순손실 노드에는 계정을 붙이지 않습니다. 시스템이 차액을 자동으로 채웁니다
- 잔액 방향에 따라 자리가 달라져야 하는 계정은 차변/대변 지시자로 처리합니다
- 미배정 계정 노드가 비면 작업 완료입니다
- S/4HANA에서는 클래식(T011)과 글로벌 계층(HRRP*)이 별개이고, 이동은 클래식 → 글로벌 한 방향뿐입니다
전편에서 계정그룹 번호 범위를 겹치지 않게 설계하라고 말씀드렸는데, 그 이유가 이번 글에서 드러났습니다. 번호 체계가 성격별로 깔끔하게 잘려 있으면 FSV 계정 할당이 열 줄이면 끝나고, 뒤엉켜 있으면 수백 줄을 개별로 찍어야 합니다. SAP 설정은 앞 단계의 설계 품질이 뒤 단계의 작업량을 결정합니다. 계정과목표 → FSV로 이어지는 이 구간이 그 관계를 가장 잘 보여주는 예입니다.
