결산 · 통합 관리

SAP 외화 평가·결제 마감 통합 관리 — 결산 영역의 외화 평가 · 결제 청산 · 유동성 재분류를 만들고 승인하고 대사까지

외화 미결 항목 평가 · 결제 청산 실현손익 · 유동성 재분류 · 직무 분리 승인 · 모의 실행과 일괄 처리 · 대사 R1~R4와 예외 조치 · 차이 요인분해 — 소개 영상과 실제 화면 28종, 그리고 CDS 코드까지

소개 영상블로그 목차 순서대로 · 자막 포함

도입 포인트 — 이 앱을 사용해야 하는 이유

기말 결산을 맡은 분들이 늘 받는 질문은 비슷합니다. 외화 미결 항목은 모두 기말 환율로 평가했는가, 결제로 정리된 건의 실현손익은 얼마이고 앞서 인식한 평가손익은 되돌렸는가, 만기가 1년 안으로 들어온 장기 외화 차입금은 유동성으로 옮겼는가, 그리고 장부 숫자와 보조원장 숫자가 맞는가. 지금은 F.05 · FAGL_FC_VAL 로 평가를 돌리고, F-44 · F-53 으로 정리하고, FBL3N · FBL5N · FAGLB03 에서 잔액을 옮겨 와 엑셀로 맞춘 뒤, 승인은 메일로 받는 경우가 많습니다. 표준 화면 하나하나는 잘 동작하지만 결과가 여러 화면과 파일에 흩어져 있어, 마감 일정 안에 “어디까지 끝났고 무엇이 남았는가”를 한눈에 보기 어렵습니다.

이 앱은 그 자리를 이어 붙입니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 처리 · 승인 · 대사 · 분석 관점을 더해 확장합니다. 관련 기준서는 IAS 21 환율변동효과(K-IFRS 제1021호)와 IFRS 9 금융상품(K-IFRS 제1109호)의 외화 항목 처리 관점이며, 어디까지나 점검의 관점으로만 쓰고 회계 처리의 결론은 회사와 감사인이 정합니다.

한 줄 요약 — 외화 미결 항목의 평가 · 결제 청산 · 유동성 재분류를 한 앱에서 만들고 · 승인하고 · 전기하고 · 대사하며, 그 숫자가 보조원장과 큐브와 어긋나지 않는지 매번 스스로 검산합니다.

핵심 포인트 일곱 가지

핵심 포인트고객이 얻는 것지금 방식이라면
① 평가 · 청산 · 재분류를 한 흐름으로외화 미결 항목의 기말 평가(FXR), 결제 청산 실현손익(FXS), 장기 외화 차입금의 유동성 재분류(RCL), 대사 조정(ADJ)이 같은 문서 체계 안에서 만들어지고 승인됩니다. 어디까지 처리했는지가 한 화면에서 보입니다.F.05 · FAGL_FC_VAL · F-44 · F-53 결과를 화면마다 열어 보고, 진행 상태는 엑셀 체크리스트에 따로 적습니다.
② 모의 실행 합계 = 실행 합계, 다시 돌려도 중복 없음일괄 처리는 먼저 대상 건수와 합계를 모의 실행으로 보여 주고, 실행하면 같은 합계의 문서가 만들어집니다. 같은 조건을 다시 실행해도 문서가 두 번 생기지 않습니다.실행 전에 금액을 가늠할 방법이 마땅치 않고, 재실행 때 이중 처리가 없는지는 담당자 기억에 기댑니다.
③ 검토 → 승인 → 전기 → 역처리, 직무 분리작성자는 자기 문서를 승인할 수 없고, 전기와 역처리는 권한이 있는 역할에만 열립니다. 상태가 바뀔 때마다 이력이 남아 누가 언제 무엇을 했는지 되짚을 수 있습니다.메일로 승인을 받고, 승인 증적은 첨부 파일과 메일함에서 찾습니다.
④ 대사 R1~R4와 예외 조치보조원장과 총계정 잔액, 장부환율과 고시환율, 평가손익 누계와 평가 문서, 결제 외화금액과 청산 문서를 규칙별로 맞춰 보고 차이가 난 항목은 예외로 올립니다. R1 · R3는 조정 문서로 이어서 처리합니다.엑셀에서 FBL3N · FBL5N · FAGLB03 값을 옮겨 적어 맞추고, 차이 사유는 메일과 메모에 흩어집니다.
⑤ 차이를 요인으로 가르는 분석차원을 끌어다 놓는 피벗에서 칸을 눌러 근거 문서까지 내려가고, 계획 대비 차이를 워터폴로 가릅니다. 요인의 합이 총차이와 같은지 화면이 매번 보여 줍니다.분석용 엑셀을 달마다 새로 만들고, 합계가 맞는지는 손으로 다시 확인합니다.
⑥ 재무 · 영업 · 구매 · 자금 문서 흐름평가 · 청산 문서가 영업(SD), 구매(MM), 자금(TR) 문서와 어떻게 이어지는지 하나의 흐름도에서 보고, 노드를 눌러 문서 상세로 이동합니다.영역마다 담당자에게 문서 번호를 물어 가며 이어 붙입니다.
⑦ 감사 로그와 역할, 점검 에이전트처리 이력과 상태 변경이 감사 로그에 남고, 역할(조회자 · 처리자 · 승인자 · 관리자)에 따라 버튼이 달리 보입니다. 점검 에이전트가 하루 한 번 기한 경과 · 미처리 예외 · 승인 적체를 알려 줍니다.누가 무엇을 바꿨는지는 변경 문서와 메일을 대조해야 하고, 기한 점검은 사람이 챙깁니다.

사례로 보는 효과 — 숫자를 맞춰 보는 두 가지 장면

검증용 샘플 데이터(가상의 3개 회사 · 4개 통화 · 2026년 7~10월)에서 실제로 나온 숫자입니다. 환율과 금액은 시연용 가정값입니다.

첫째, 대사. 2026-09 기간의 최신 대사에서 R1(보조원장 잔액과 총계정 잔액) 검사 21건 중 차이 3건(최대 3,400,000원), R2(장부환율과 고시환율) 16건 중 3건, R3(평가손익 누계와 평가 문서) 16건 중 2건, R4(결제 외화금액과 청산 문서) 4건 중 2건이 나왔습니다. 모두 점검용으로 일부러 넣어 둔 예외 11건에 해당하며, 열림 7 · 조치 중 1 · 보류 1 · 수용 1 · 해소 1 로 나뉘어 표에 올라옵니다. 엑셀에서 옮겨 적어 맞추던 작업이, 어느 규칙에서 몇 건이 나왔는지 읽는 일로 바뀝니다.

둘째, 차이 분석. 2026-09 조정 금액은 계획 대비 총차이가 186,105,930원이었고, 워터폴은 이를 결제·정리, 평가, 대사·조정 세 단계의 라인 수 효과와 평균 금액 효과 여섯 요인으로 가릅니다. 가장 큰 요인은 결제·정리의 라인 수 효과(+404,949,932원)이고 평균 금액 효과(−342,755,573원)가 반대 방향으로 작용합니다. 여섯 요인의 합 186,105,930원은 총차이와 같고, 화면이 그 등식을 매번 보여 줍니다. 원인을 단정하는 화면이 아니라, 차이가 어느 단계에서 났는지 점검할 자리를 좁혀 주는 화면입니다.

도입하면 달라지는 것

  • 마감 일정 — 결산 과업 51건의 진행률과 기한 경과 건이 홈 화면 카드로 보여, 일정 회의가 “어디까지 했나”를 묻는 자리에서 “무엇을 먼저 풀까”를 정하는 자리로 바뀝니다.
  • 승인 — 메일 대신 문서 안에서 검토 요청 · 승인 · 전기가 이어지고, 같은 사람이 작성과 승인을 겸하지 못하게 화면이 막습니다.
  • 대사 — 평가 문서를 전기한 뒤 규칙 4종을 버튼 한 번으로 돌리고, 차이 항목은 조정 · 보류 · 수용으로 이유와 함께 남깁니다.
  • 사람이 바뀌어도 — 담당자가 바뀌어도 감사 로그와 문서 이력이 남아 인수인계가 짧아집니다.

이런 회사에 맞습니다

수출입이나 해외 차입으로 외화 채권 · 채무 · 예금 · 차입금을 가진 제조 · 유통 · 서비스 기업 가운데, 월 결산마다 외화 평가와 결제 정리를 SAP 표준 T-code 로 돌리면서 엑셀 대사와 메일 승인에 시간을 쓰는 곳입니다. 법인이나 사업장이 여럿이고 통화가 서너 가지 이상이며, 처리 담당 · 승인자 · 관리자가 나뉘어 있어 직무 분리가 필요한 재무 · 회계 · 자금 조직에 특히 맞습니다.

실행 화면

실제 브라우저에서 앱을 조작해 찍은 화면 중 대표 28종을 사용 순서대로 싣습니다(설명서에는 50종이 실려 있습니다). 그림을 누르면 크게 볼 수 있고, 화면마다 무엇을 보는 자리이고 누르면 무엇이 일어나는지를 아래에 적었습니다. 사례의 숫자는 모두 같은 가상 샘플 데이터에서 나온 것이라 화면끼리 맞춰 보셔도 됩니다.

사용 방법

  1. 회사 · 기간 고르기 — 화면 위쪽 머리말에서 회사 코드(1000 · 2000 · 3000)와 기간을 고르면 모든 탭이 같은 범위로 바뀝니다. 기간은 필수이고 회사는 비워 두면 전체입니다.
  2. 조회 — 홈 · 기준정보 · 문서 · 대사 화면은 머리말의 회사 · 기간을 바꾸는 순간 자동으로 다시 조회됩니다. 분석 화면은 조건 영역 오른쪽 끝의 조회 버튼을 누르거나 조건 입력칸에서 Enter 키를 누르면 조회되며, 레이아웃을 ‘기본 + 자동 조회’로 저장하면 열릴 때 바로 조회됩니다.
  3. 홈에서 요약 확인 — 카드(결산 진행률 · 기한 경과 과업 · 승인 대기 · 반려 문서 · 전기 대기 · 미해결 예외 · 보류 예외 · 안 읽은 보고)와 내 할 일 목록을 봅니다. 할 일 행을 누르면 해당 문서나 예외로 이동합니다.
  4. 탭 이동 — 홈 → 기준정보 → 문서 처리 → 일괄 실행 → 대사 · 예외 → 결산 분석 → 영역 간 연계 → 이력 · 감사 · 권한 순으로 업무가 이어집니다.
  5. 행 · 셀 눌러 상세 — 문서 행은 상세 창(분개 · 상태 이력 · 연계 문서)을, 분석 피벗의 칸은 근거 전표 명세(드릴스루)를 엽니다. 흐름도 노드는 연계 문서 상세로 이동합니다.
  6. 처리 — 문서는 작성 → 검토 요청 → 승인 → 전기(필요하면 역처리) 순입니다. 일괄 실행은 모의 실행으로 건수 · 합계를 보고 실행합니다. 대사는 대사 실행 후 예외 행에서 조정 · 보류 · 수용을 고릅니다.
  7. 내보내기와 올리기 — 표 위의 엑셀 내보내기는 xlsx 를 만들고, 분석 화면은 CSV 와 PPT 보고서 버튼이 있습니다. 기준정보와 문서는 xlsx 올리기 후 미리보기에서 정상 행만 반영합니다.

자동으로 불러오는 시점은 두 곳입니다. 앱을 열 때 홈의 할 일과 점검 에이전트(하루 1회)가 불러오고, 나머지 화면은 머리말의 회사 · 기간을 바꿀 때 조회됩니다. 분석 화면만은 조건을 여러 개 만지는 일이 많아 조회 버튼을 따로 두었습니다.

무엇으로 만들었나

자리무엇왜 그렇게 두었나
화면 컨트롤탭 · 표 · 상세 창 · 피벗(행 · 열 축) · 직접 그린 워터폴 차트 등 SAP UI5 표준 컨트롤표준 컨트롤만 써서 SAP Fiori 화면과 같은 조작감을 주고, 외부 차트 라이브러리 반입 심사가 필요 없게 했습니다.
집계 · 판정 로직서비스 쪽 로직 파일 한 벌(상태 전이 · 일괄 처리 · 대사 · 요인 분해 · 해설 · 에이전트)판단과 계산을 화면이 아니라 서비스에 두어, 같은 로직을 나중에 운영 서비스로 옮기기 쉽고 배치나 다른 화면에서도 호출할 수 있습니다.
OData 서비스 구성OData V2 서비스 한 벌 — 데이터 집합 35종(기준정보 · 문서 · 일괄 처리 · 대사 · 흐름 · 감사 · 분석)과 함수 12종(문서 처리 5 · 일괄 2 · 대사 2 · 분석 3)조회는 필터 · 정렬 · 건수 조건으로, 쓰기와 상태 변경은 함수로 나눴습니다. 운영에서는 같은 구성을 CDS 뷰와 RAP 액션으로 옮깁니다(4장).
모델 구성기본 모델은 OData V2, 화면 상태는 JSON 모델, 문구는 한국어 리소스서비스 주소만 바꾸면 화면이 그대로 운영 서비스에 붙습니다.
테마 · 반응형sap_horizon, 390px 폭에서 메뉴 접힘 · 차트 하단 이동현장 휴대폰에서 승인 요청을 확인하는 상황까지 고려했습니다.

앱 정보

항목내용
영역결산 · 통합 관리
업무 흐름 범위외화 미결 항목 평가 → 결제 청산 실현손익 → 장기 차입금 유동성 재분류 → 대사 → 예외 조치
모듈 구성M1 홈 · 할 일 / M2 기준정보 / M3 문서 처리 / M4 일괄 처리 / M5 대사 · 예외 / M6 분석 / M7 문서 흐름 / M8 감사 로그 · 역할
업무 영역재무(FI) · 영업(SD) · 구매(MM) · 자금(TR) 문서를 하나의 흐름도로 연결
관련 기준서 · 대상 영역IAS 21 환율변동효과(K-IFRS 제1021호) · IFRS 9 금융상품(K-IFRS 제1109호)의 외화 항목 처리 관점
SAP 표준 T-codeF.05 · FAGL_FC_VAL · F-44 · F-53 · FBL3N · FBL5N · OB08 · FAGLB03
화면 성격통합 관리(조회 · 처리 · 승인 · 대사 · 분석)
데이터 연동OData V2 서비스 1종, 쓰기 · 함수 포함
테마sap_horizon
샘플 데이터가상 3개 회사 · 4개 통화(USD · EUR · JPY · CNY) · 2026년 7~10월. 환율은 시연용 가정값
SAP 표준 기능을 그대로 이어받은 부분 — 외화 평가와 청산의 원천은 표준 데이터 구조(보조원장 미결 항목 BSIS · BSID · BSIK, 전표 BKPF · BSEG, 총계정 ACDOCA, 환율표 TCURR)를 그대로 이어받습니다. 표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 처리 · 승인 · 대사 · 분석 관점을 더해 확장합니다.

처음 열었을 때 — 오늘 무엇을 해야 하는지가 먼저 보인다

앱을 열면 지금 할 일부터 보이도록 홈을 두었습니다. 마감 일정 · 승인 대기 · 예외 건수가 카드로 요약됩니다.

홈 — 오늘의 결산 현황
홈 — 오늘의 결산 현황 — 결산 진행률 · 기한 경과 과업 · 승인 대기 · 반려 문서 · 전기 대기 · 미해결 예외 · 보류 예외 · 안 읽은 보고가 카드로 뜹니다.

앱을 열면 가장 먼저 보이는 화면입니다. 카드의 숫자는 머리말에서 고른 회사 · 기간 기준이며, 아래 단계별 진행 막대(사전점검 · 결제·정리 · 평가 · 대사·조정 · 마감·보고)와 ‘내 할 일’ 목록이 이어집니다. 할 일 행을 누르면 해당 문서나 예외로 곧바로 이동합니다. 샘플 기준으로 과업 51건 중 15건이 완료되어 29% 로 표시됩니다.

기준정보 관리 — 대상 항목과 변경 이력

평가와 청산의 출발점은 외화 미결 항목입니다. 기준정보는 조회와 수정 · 업로드가 한 화면에서 이어지고 변경은 모두 로그에 남습니다.

기준정보 — 외화 미결 항목
기준정보 — 외화 미결 항목 — 평가와 결제 청산의 대상이 되는 외화 미결 항목을 구분 · 회사 · 기간 · 내용 · 계정 · 통화 · 외화 금액 · 장부환율 · 평가손익 누계로 봅니다.

기준정보는 계정 · 결산 과업 · 환율 · 외화 미결 항목 · 결산 일정 탭으로 나뉩니다. 이 화면은 미결 항목 탭이고 구분 필터로 채권 · 채무 · 예금 · 차입금 · 그룹 내 거래를 좁힙니다. 신규 · 일괄 업로드 · 엑셀 내보내기 버튼이 오른쪽 위에 있으며, 행마다 수정 · 이력 · 삭제 아이콘이 있어 변경은 모두 감사 로그에 남습니다. 중지된 항목은 평가 누계가 0 으로 보입니다.

문서 처리와 승인 — 작성자와 승인자는 같을 수 없다

문서는 임시저장에서 시작해 검토 요청 · 승인 · 전기 순서로만 진행되고, 필요하면 역처리로 되돌립니다. 각 단계는 역할에 따라 버튼이 달리 보입니다.

문서 처리 — 목록
문서 처리 — 목록 — 평가(FXR) · 청산(FXS) · 재분류(RCL) · 조정(ADJ) 문서를 번호 · 유형 · 회사 · 기간 · 내용 · 금액 · 상태 · 승인 단계 · 작성자로 봅니다.

위쪽 파란 안내줄에 상태 흐름(작성중 → 검토중 → 승인됨 → 전기됨 → 역처리됨)과 직무 분리 규칙이 적혀 있습니다. 검색어 · 상태 · 유형 필터와 ‘내가 작성한 것만’ 체크로 목록을 좁히고, 행을 누르면 상세 창이 열립니다. 승인 단계 칸의 1/1 · 2/2 는 필요한 승인 수 가운데 받은 수입니다.

문서 처리 — 신규 작성
문서 처리 — 신규 작성 — 유형 · 회사 · 기간 · 처리 대상을 고르고 내용을 적어 임시저장합니다.

유형을 외화 평가로 고르면 해당 회사 · 기간의 외화 미결 항목이 처리 대상 목록에 뜹니다. 금액을 비워 두면 대상 기준 평가손익이 자동으로 들어갑니다. 저장하면 상태는 작성중이고, 이 단계에서는 장부에 아무것도 반영되지 않습니다.

문서 처리 — 검토 요청
문서 처리 — 검토 요청 — 작성중 문서에서 검토 요청을 누르면 상태가 검토중으로 바뀌고 승인 대기 목록에 올라갑니다.

상세 창 위쪽에 상태 · 금액 · 회사와 기간 · 승인 단계 · 작성과 승인 사용자가 나란히 보입니다. 분개 탭은 차변과 대변 합계가 같을 때만 ‘일치’로 표시되고, 검토 요청을 누르면 아래에 확인 메시지가 뜹니다. 차변과 대변이 맞지 않으면 요청 자체가 거절됩니다.

직무 분리 — 같은 사용자는 승인할 수 없다
직무 분리 — 같은 사용자는 승인할 수 없다 — 작성자와 같은 사용자로 승인하려 하면 화면이 승인 버튼을 막고 안내를 띄웁니다.

노란 안내줄에 ‘작성자는 자기 문서를 승인 · 반려할 수 없습니다’가 표시됩니다. 사용자를 승인 권한이 있는 다른 사람으로 바꾸면 승인할 수 있습니다. 5천만 원 이상은 서로 다른 2인의 승인이 필요하도록 두었고, 이 기준 금액은 시연용 가정값입니다.

문서 처리 — 승인
문서 처리 — 승인 — 승인자가 검토중 문서를 승인하면 상태가 승인됨이 되고, 승인 단계가 1/1 로 채워집니다.

승인자 역할은 승인 · 반려(사유 필수)만 보이고, 전기는 처리자 · 관리자에게 열리도록 안내가 바뀝니다. 승인 직후에도 아직 장부에 반영되지 않았다는 점을 상태 칸으로 구분해 읽습니다.

문서 처리 — 전기
문서 처리 — 전기 — 승인된 문서를 전기하면 상태가 전기됨이 되고 상태 이력이 한 줄 늘어납니다.

전기는 확인 창을 한 번 거치며, 열린 기간에서만 가능합니다. 상태 이력 탭의 건수(여기서는 4건)가 요청 · 승인 · 전기마다 하나씩 늘어 순서대로 쌓입니다. 전기된 뒤에는 안내줄이 ‘역처리는 승인자 · 관리자만 할 수 있습니다’로 바뀝니다. 마감된 기간이면 처리 버튼이 비활성으로 보입니다.

문서 처리 — 역처리
문서 처리 — 역처리 — 전기된 문서를 역처리하면 사유를 남기고 역분개 문서가 자동으로 생깁니다.

역처리는 승인자 · 관리자에게만 보입니다. 역처리된 문서는 더 이상 처리할 수 없다는 안내가 뜨고, 연결 문서 탭에 역분개 문서 번호가 나타납니다. 이 문서는 대사 R3의 평가 문서 합계에서 역처리 분이 함께 계산됩니다.

일괄 실행 — 시뮬레이션 합계와 실행 결과가 같다

결제 청산(SETL) · 외화 평가(FXEV) · 유동성 재분류(RCLS)는 모의 실행으로 먼저 보고, 실행하면 같은 합계의 문서가 만들어집니다.

일괄 실행 — 모의 실행
일괄 실행 — 모의 실행 — 결제 청산 실현손익 정리를 2026-10 기간으로 모의 실행하면 대상 4건 · 합계 6,846,632원이 나옵니다.

처리 종류(결제 청산 · 외화 평가 · 유동성 재분류) · 회사 · 기간을 정하고 모의 실행을 누르면 저장 없이 대상과 금액을 미리 보여 줍니다. 대상마다 통화 · 금액 · 평가손익과 산식(결제 외화금액 × 결제환율과 장부환율의 차이 등)이 한 줄로 적혀 있어, 실행 전에 숫자가 어떻게 만들어지는지 읽을 수 있습니다.

일괄 실행 — 실행 결과
일괄 실행 — 실행 결과 — 실행하면 같은 4건이 문서 4건으로 만들어지고 실행 이력에 합계 6,846,632원이 한 줄 추가됩니다.

아래 알림에 ‘문서 4건을 만들었습니다’가 뜨고, 실행 이력 표 맨 위에 새 실행 번호가 올라옵니다. 모의 실행 합계와 실행 이력의 합계가 같다는 것이 이 화면에서 확인할 핵심입니다.

일괄 실행 — 같은 조건으로 다시
일괄 실행 — 같은 조건으로 다시 — 실행한 뒤 같은 조건으로 다시 모의 실행하면 같은 4건 · 6,846,632원이 보이고, 다시 실행해도 문서는 중복으로 만들어지지 않습니다.

일괄 처리의 단위는 대상(미결 항목)이며, 이미 문서가 만들어진 대상은 같은 기간에 새로 만들지 않고 건너뜁니다. 재실행을 안심하고 눌러도 되도록 둔 장치입니다. 실행 이력은 지난달과 지지난달 기록까지 이어서 보입니다.

일괄 실행 — 실행 상세와 로그
일괄 실행 — 실행 상세와 로그 — 실행 번호를 누르면 대상별 결과(생성된 문서 번호 포함)와 실행 로그 탭이 열립니다.

대상별 결과 표에는 만들어진 청산 문서 번호가 링크로 붙어 있어 곧바로 문서 상세로 갈 수 있습니다. 일부 대상이 건너뛰어졌다면 이력 표 상태 칸에 ‘일부 건너뜀’으로 표시되고, 로그 탭에서 사유를 읽습니다.

대사와 예외 조치 — 차이는 이유와 함께 남긴다

대사 규칙 R1~R4를 돌려 차이 항목을 예외로 올리고, 조정 · 보류 · 수용으로 조치한 뒤 재대사로 해소를 확인합니다.

대사 — 규칙별 최근 결과
대사 — 규칙별 최근 결과 — R1~R4 규칙마다 점검 건수 · 차이 건수 · 최대 차이 · 허용 범위가 한 표에 있습니다.

2026-09 기준 R1 점검 21 · 차이 3 · 최대 3,400,000원, R2 16 · 3, R3 16 · 2, R4 4 · 2 입니다. 통화가 다른 금액은 합치지 않고 통화별로 맞춥니다. 오른쪽 위 대사 실행 버튼으로 다시 돌릴 수 있으며, 아래 예외 목록 11건이 같은 화면에 이어집니다.

대사 — 예외 목록과 조치
대사 — 예외 목록과 조치 — 차이가 난 항목이 예외로 올라와 있고, 행마다 조정 · 보류 · 수용 버튼이 있습니다.

예외마다 좌측값과 우측값, 차이, 상태(미해결 · 조치 중 · 보류 · 허용 종결 · 해소)가 보입니다. 조정은 R1 · R3 예외에만 열리고, R2 · R4 예외는 보류 또는 수용으로 처리합니다. 수용(화면에는 ‘허용 종결’로 표시)과 보류에는 사유를 적습니다. 홈 카드의 ‘미해결 예외’가 이 표의 미해결 건수입니다.

대사 — 조정 후 해소
대사 — 조정 후 해소 — 조정 문서를 전기한 뒤 대사를 다시 실행하면 해당 예외가 해소로 바뀝니다.

R1 차이 건수가 3건에서 2건으로 줄고, 외화예금 행의 상태가 해소로 바뀐 것이 보입니다. 조정 문서(ADJ) 번호가 사유 칸에 링크로 남아 어떤 문서로 정리했는지 따라갈 수 있습니다.

분석 — 칸을 누르면 근거 문서까지, 합계는 요인으로 갈라진다

피벗 · 드릴스루 · 계획 대비 차이 · 워터폴은 모두 같은 분석 큐브에서 나옵니다. 큐브는 근거 라인 합과 항상 일치해야 하며 검산 결과가 화면 아래에 나옵니다.

분석 — 피벗과 계획 대비 차이
분석 — 피벗과 계획 대비 차이 — 조건 영역 · 요약 카드 · 결산 단계 › 담당 팀 피벗이 한 화면에 쌓이고, 칸마다 실적 · 기준 · 차이가 붙으며 오른쪽에 워터폴 차트가 있습니다.

조회 조건은 접어 둘 수 있고, 요약 카드는 조정 금액 23,957,242,230원(계획 대비 +3,475,955,078), 지연 일수 156.7일, 전표 라인 612건을 보여 줍니다. 비교 기준을 계획으로 두면 칸마다 실적 · 기준 · 차이 · 증감이 붙고, 금액과 비율 기준을 모두 넘는 칸만 색을 입혀 작은 흔들림은 눈에 띄지 않게 합니다. 행 축과 열 축에는 차원을 끌어다 놓아 구성을 바꾸며, 위에 CSV와 PPT 보고서 버튼이 있습니다.

분석 — 드릴스루
분석 — 드릴스루 — 피벗의 금액 칸을 누르면 그 금액을 만든 전표 명세가 창으로 열립니다.

창 제목에 단계와 건수(예: P3 · 191건)가 보이고 전표 · 기간 · 회사 · 계정 · 유형 · 조정 금액 · 손익 영향 · 지연 일수가 이어집니다. 명세 합계가 눌렀던 칸의 금액과 같은지 확인하는 것이 읽는 방법이며, 전표 번호를 누르면 문서 상세로 이동합니다.

분석 — 차이 사유 입력
분석 — 차이 사유 입력 — 차이가 난 행에서 분류를 고르고 사유를 적어 저장합니다.

사유는 필수이고, 저장하면 조회 범위와 행 경로를 키로 남아 축을 바꾸거나 다시 조회해도 같은 행에 따라옵니다. 숫자만 보고 지나치지 않고 ‘왜’를 같은 자리에 적어 두려는 장치이며, 입력한 사유는 감사 로그에도 쌓입니다.

분석 — 워터폴과 요인 표
분석 — 워터폴과 요인 표 — 총차이 186,105,930원이 여섯 요인으로 갈라지고 합계가 총차이와 같다는 검산 문구가 붙습니다.

결제·정리 · 평가 · 대사·조정 각각의 라인 수 효과와 평균 금액 효과를 막대로 그립니다. 표에는 요인 금액 · 비중 · 설명이 있고, 맨 아래 초록 줄이 ‘요인 합계 186,105,930원 = 전체 차이 186,105,930원 — 일치’를 알려 줍니다. 원인을 단정하지 않고 점검할 단계를 좁히는 용도입니다.

영역 간 연계 — 재무 문서가 영업 · 구매 · 자금으로 이어진다

평가와 청산 문서가 영업(SD) · 구매(MM) · 자금(TR) 문서와 어떻게 이어지는지 흐름도 하나로 봅니다.

영역 간 연계 — 문서 흐름도
영역 간 연계 — 문서 흐름도 — 재무(FI) 문서가 영업(SD) · 구매(MM) · 자금(TR) 문서로 이어지는 흐름을 열(영역)로 나눠 그립니다.

청산 문서는 영업 매출 연계 문서(SDX)나 구매 연계 문서(MMX)로, 평가 문서는 자금 반영 문서(TRP)로 이어집니다. 위쪽 영역 필터로 한 영역만 좁혀 보고, 위쪽 안내줄에는 재무 문서를 역처리하면 따라 생긴 연계 문서도 함께 되돌려진다는 설명이 있습니다.

영역 간 연계 — 흐름도에서 문서 상세로
영역 간 연계 — 흐름도에서 문서 상세로 — 흐름도의 노드를 누르면 연계 문서의 상세 창이 같은 형식으로 열립니다.

연계 문서는 원본 청산 문서와 대상 번호를 함께 보여 줍니다. 분개 항목은 비어 있고(재무 분개는 원본 문서에 있음) 상태 · 금액 · 승인 단계 · 이력 · 연계 문서 탭은 일반 문서와 같은 모양이라 영역이 달라도 읽는 방법이 같습니다.

AI 분석과 에이전트 — 숫자는 서비스가 계산하고 문장은 그 숫자를 읽는다

해설은 규칙 기반으로 먼저 나오고, 점검 에이전트는 하루 한 번 규칙을 돌려 결과를 역할별 보고로 올립니다.

분석 — 규칙 기반 해설
분석 — 규칙 기반 해설 — 요인 표를 근거로 이번 범위의 차이를 문장으로 풀어 줍니다. 외부 AI는 연결하지 않은 상태입니다.

금액과 비율은 서비스가 큐브에서 계산해 근거 표로 넘기고, 해설은 그 숫자를 문장으로 옮깁니다. 근거 표를 펼치면 같은 숫자를 그대로 볼 수 있고, 슬라이드(PPTX)로 내려받아 보고 자료에 붙일 수도 있습니다.

점검 에이전트 보고
점검 에이전트 보고 — 기한 경과 마감 절차 · 미처리 대사 예외 · 승인 대기 적체 규칙에 걸린 내용이 받을 역할별로 올라옵니다.

규칙마다 임계값과 받을 역할이 정해져 있고, 걸리면 현재 건수와 함께 확인이 필요하다는 문장이 보고로 쌓입니다. 하루에 한 번만 돌고, 아래 활동 기록 표에 호출 주체와 결과가 남습니다. 확인 버튼으로 읽음 처리합니다.

이력 · 감사 · 역할 — 승인 버튼은 승인자에게만 보인다

모든 처리가 감사 로그에 남고, 역할에 따라 버튼이 켜지고 꺼집니다.

이력 · 감사 — 감사 로그
이력 · 감사 — 감사 로그 — 누가 · 언제 · 어떤 작업을 · 어느 대상에 했는지가 이전 값과 이후 값과 함께 쌓입니다.

탭은 감사 로그 · 상태 이력 · 사용자 · 권한 · 에이전트 규칙입니다. 상태 변경은 ‘DRAFT → REVIEW’처럼 이전 → 이후로, 대사 실행은 규칙별 차이 건수로 적힙니다. 직무 분리에서 막힌 시도도 같은 목록에 남습니다.

역할 — 조회자는 보기만 한다
역할 — 조회자는 보기만 한다 — 조회자 역할로 열면 신규 문서와 일괄 업로드 버튼이 비활성이고 엑셀 내보내기만 켜져 있습니다.

같은 화면이라도 조회자(U01)에게는 처리 버튼이 막히고, 처리자(U02 · U03)는 작성과 실행, 승인자(U04 · U05)는 승인과 반려, 관리자(U06)는 전부 쓸 수 있습니다. 운영에서는 이 역할이 SAP 권한 객체로 옮겨 갑니다.

레이아웃과 좁은 화면

분석 구성은 이름을 붙여 저장하고, 좁은 화면에서는 배치가 바뀝니다.

레이아웃 — 역할별 보기와 저장
레이아웃 — 역할별 보기와 저장 — 역할별 보기(CFO · 결산책임자 · 회계담당 · 감사인)와 레이아웃 저장 · 기본 · 자동 조회 설정이 조건 영역에 있습니다.

행 · 열 · 필터로 쓸 차원 9종이 위쪽에 놓여 있고, 구성한 배치를 이름 붙여 저장합니다. 기본 + 자동 조회로 저장하면 다음에 열 때 바로 그 배치로 조회됩니다.

좁은 화면(390px) — 분석
좁은 화면(390px) — 분석 — 휴대폰 폭에서는 메뉴가 접히고 카드가 두 줄로 쌓이며 차트가 표 아래로 내려옵니다.

표는 가로로 밀어 보고, 오른쪽에 있던 차트는 구분 손잡이 아래로 내려옵니다. 같은 분석을 휴대폰에서도 확인할 수 있게 한 대응입니다.

화면 뒤에서 일어나는 일

화면은 조건을 모아 서비스에 필터로 보내고, 받은 데이터를 표와 카드에 그립니다. 값이 비어 있는 조건은 보내지 않습니다. 문서 상태를 바꾸는 버튼은 화면이 상태를 직접 고치지 않고 서비스의 함수(검토 요청 · 승인 · 반려 · 전기 · 역처리)를 부릅니다. 서비스가 허용된 전이인지, 역할이 맞는지, 작성자와 승인자가 같지 않은지를 판단해 결과와 이력을 남깁니다. 분석 피벗은 받은 데이터를 화면에서 다시 배열해 재조회 없이 축을 바꾸고, 드릴스루와 요인 분해는 서비스에 다시 물어 합계를 검산합니다. 서비스에 닿지 못하면 메시지 처리기가 안내 창을 띄웁니다.

판정 규칙 — 평가 · 청산 · 재분류가 만들어지는 조건

대상판정 조건결과 상태사용자 조치
외화 채권 · 예금 평가기간 말 환율과 장부환율이 다르고 미청산 잔액이 있음평가 문서(FXR) 생성 대상모의 실행 후 실행, 문서 검토
외화 채무 · 차입금 평가같은 조건, 평가손익의 부호가 채권과 반대평가 문서(FXR) 생성 대상모의 실행 후 실행
결제 청산결제 대상이 미결 항목에 연결되어 있고 결제환율이 장부환율과 다름청산 문서(FXS) · 실현손익실행 후 승인 · 전기
유동성 재분류차입금 잔존 개월이 12개월 이하이고 아직 재분류 전재분류 문서(RCL)실행 후 승인 · 전기
미청산 평가손익평가 후 결제 청산이 이루어지면 이미 인식한 평가손익을 되돌리고 실현손익으로 전환청산 문서에 반영대사 R3에서 누계 확인
직무 분리작성자와 승인자가 같음승인 불가(거절 메시지)다른 승인자로 전환
대사 예외대사 규칙의 허용 차이를 넘음열림 → 조치 중 → 해소 · 보류 · 수용R1 · R3만 조정 문서, 나머지는 보류 또는 수용

평가손익 = 외화 금액 × (기말 고시환율 − 장부환율) ÷ 환율 단위. 외화 채무는 부호를 반대로 합니다. 이 앱은 분류 · 집계 · 대사를 돕는 도구이며 회계 판단을 확정하지 않습니다.

처리 단계와 대사식

단계시작 → 끝SAP 데이터 지점앱의 모듈
① 환율 확정고시환율 등록환율표(TCURR)M2 기준정보
② 대상 확인미결 항목 · 결제 대상 확인미결 항목(BSIS · BSID · BSIK)M2 · M4
③ 모의 실행대상 건수 · 합계 미리보기-M4 일괄 처리
④ 문서 생성임시저장 → 검토 요청전표 머리글 · 라인(BKPF · BSEG)M3 문서 처리
⑤ 승인 · 전기승인 → 전기(역처리 시 반대 문서)총계정 라인(ACDOCA)M3
⑥ 대사R1~R4 실행 → 예외계정 잔액(FAGLB03)M5 대사
⑦ 조치 · 재대사조정 문서 → 해소-M5 · M3
규칙대사식허용 차이조치
R1보조원장 잔액 합 = 총계정 잔액0원조정 가능
R2문서 장부환율 = 고시환율(환율 단위 반영)±0.01%보류 · 수용
R3평가손익 누계 = 평가 문서 금액 합(역처리 포함)±1,000원조정 가능
R4결제 외화 금액 = 청산 문서 외화 금액±0.01(외화)보류 · 수용

통화가 다른 금액은 합산하지 않고 통화별로 대사합니다. 분석 큐브는 근거 라인 합과 항상 일치해야 하며, 검산 결과가 분석 화면 아래에 표로 나옵니다.

조회조건

조건필수기본값 · 범위서비스에 보내는 조건
회사 코드선택전체 · 1000 본사 · 2000 제조법인 · 3000 판매법인Bukrs eq '1000'(비우면 보내지 않음)
기간필수2026-07 ~ 2026-10(머리말 기본 2026-09). 마감된 기간은 처리 버튼 비활성Period eq '2026-09'
통화 · 항목 구분선택USD · EUR · JPY · CNY / 채권 · 채무 · 예금 · 차입금 · 그룹 내 거래Currency eq 'USD' · Kind eq '…'
문서 유형 · 상태선택평가 · 청산 · 재분류 · 조정 / 작성중 ~ 전기됨 · 역처리됨DocType eq 'FXR' · Status eq '…'
분석 차원선택기간 · 회사 · 계정 그룹 · 계정 · 결산 단계 · 전표 유형 · 담당 팀 · 통화 · 발생 사유 중 행 · 열 · 필터로 사용차원별 eq 조건

모든 조건은 서비스에 $filter 조건으로 전달되고, 정렬은 $orderby, 건수 제한은 $top, 전체 건수는 $inlinecount 로 받습니다.

결과 컬럼

화면컬럼의미 · 산출식
문서 목록문서번호 · 유형 · 회사 · 기간 · 내용FXR · FXS · RCL · ADJ 와 연도 · 일련번호로 구성
문서 목록금액(원) · 상태 · 승인 단계 · 작성승인 단계는 받은 수/필요 수(예: 1/2)
일괄 실행대상 · 회사 · 내용 · 통화 · 금액(원) · 평가손익평가손익 = 외화 금액 × (환율 차이) ÷ 환율 단위, 청산은 결제환율 기준
대사점검 건수 · 차이 건수 · 최대 차이 · 허용 범위규칙별 검사 건수, 허용 범위를 넘은 건수, 그 중 가장 큰 차이
대사 예외좌측 · 우측 · 차이 · 상태 · 사유 · 조치좌측값 − 우측값 = 차이, 상태는 미해결 → 조치 중 → 해소 · 보류 · 허용 종결
분석조정 금액 · 손익 영향 · 전표 라인 · 지연 일수큐브 측정값 5종(투입 시간 포함), 계산 항목은 라인당 평균 · 손익 영향률 등 4종
감사 로그일시 · 사용자 · 작업 · 대상 · 대상 키 · 이전 → 이후 · 결과쓰기와 상태 변경 · 대사 실행 · 거절된 시도까지 기록

좁은 화면에서 달라지는 것

폭이 줄어들면 왼쪽 메뉴는 햄버거 버튼 뒤로 접히고, 머리말의 회사 · 기간 · 사용자는 상단에 작게 남습니다. 분석 화면은 요약 카드가 두 줄로 쌓이고, 오른쪽에 있던 차트는 표 아래로 내려옵니다. 표는 가로로 밀어 보며, 조작 순서와 버튼 이름은 넓은 화면과 같습니다.

파일 구성

index.html            앱 진입점
readme.html           설명서(화면 50종 · 판정 규칙 · 검증 결과)
manifest.json         앱 설정과 서비스 선언
Component.js
controller/ view/ fragment/ model/ css/ i18n/
odata/<서비스 이름>/   서비스 로직 · 판정 코어 · 데이터 집합별 샘플 데이터
media/                소개 영상 · 포스터 · 재생 지점

SAP 표준 기능 확장 포인트 — 표준 T-code 와 어떻게 연계되는지

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 조회 · 검증 · 처리 관점을 더해 확장합니다. 이 절은 어디까지가 표준이고 어디서부터가 이 앱인지, 두 화면의 숫자를 어디서 맞춰 보는지를 정리합니다.

표준으로 되는 것과 안 되는 것

하고 싶은 일표준 화면으로 충분한 부분이 앱이 더하는 관점
외화 평가 실행F.05 · FAGL_FC_VAL 이 평가 대상 선정과 평가 전표 생성을 담당합니다.실행 전 모의 실행으로 건수 · 합계를 보고, 만들어진 평가 문서를 검토 · 승인 · 전기 순서로 관리합니다.
결제 청산F-44 · F-53 이 청산과 지급 전기를 담당합니다.청산 문서(FXS)에서 실현손익과 앞서 인식한 평가손익의 전환을 한눈에 보고 대사 R3로 누계를 확인합니다.
개별 항목 조회FBL3N · FBL5N 이 계정 · 채권 개별 항목을 보여 줍니다.미결 항목 잔액과 총계정 잔액을 R1로 자동 비교하고, 차이를 예외로 올립니다.
환율 유지OB08 이 환율표를 유지합니다.고시환율과 문서 장부환율의 차이를 R2로 점검합니다(환율 단위 반영).
총계정 잔액 조회FAGLB03 이 잔액을 보여 줍니다.보조원장 합과의 일치 여부를 대사 규칙으로 두고 결과를 이력으로 남깁니다.
승인 · 직무 분리표준 전표 승인 · 권한 설계로 구성할 수 있습니다.외화 결산 문서 단위로 작성 → 검토 → 승인 → 전기 → 역처리를 한 화면에서 보고, 같은 사용자의 승인을 막습니다.
영역 간 문서 흐름각 영역 화면에서 문서 흐름을 따라갈 수 있습니다.재무 · 영업 · 구매 · 자금 문서를 하나의 흐름도로 모읍니다.
차이 요인 분해표준 화면에는 같은 형태의 요인 분해가 없습니다.계획 대비 총차이를 단계별 라인 수 효과 · 평균 금액 효과로 가르고 합계를 검산합니다.

T-code 별 연계 지점

T-code이름연계
F.05외화 평가이어받는 데이터 미결 항목의 외화 금액 · 장부환율 · 기말환율. 대사 지점 평가 문서 합계와 평가손익 누계(R3). 오가는 방법 이 앱의 모의 실행 결과 → F.05 평가 실행 결과 대조. 표준에 남길 일 법정 평가 실행과 결산 증적.
FAGL_FC_VAL외화 평가(신규 총계정)이어받는 데이터 총계정 라인(ACDOCA)의 통화별 금액. 대사 지점 평가 후 장부환율과 고시환율(R2). 오가는 방법 평가 문서 → 표준 평가 전표 조회. 표준에 남길 일 원장별 평가 실행.
F-44거래처 청산이어받는 데이터 청산 대상 미결 항목. 대사 지점 결제 외화 금액과 청산 문서(R4). 오가는 방법 청산 문서(FXS) → F-44 청산 내역. 표준에 남길 일 실제 청산 처리.
F-53지급 전기이어받는 데이터 지급 전기 문서의 결제환율. 대사 지점 실현손익 = 결제 외화금액 × (결제환율 − 장부환율) ÷ 단위. 오가는 방법 청산 문서 → 지급 전표. 표준에 남길 일 지급 실행과 은행 연계.
FBL3NG/L 계정 개별 항목이어받는 데이터 외화 미결 총계정 개별 항목(BSIS). 대사 지점 보조원장 합 = 총계정 잔액(R1). 오가는 방법 이 앱의 예외 행 → FBL3N 에서 같은 계정 · 기간 확인. 표준에 남길 일 법정 · 감사 대응 조회.
FBL5N고객 개별 항목이어받는 데이터 외화 채권 미결 항목(BSID). 대사 지점 채권 잔액과 평가 문서. 오가는 방법 미결 항목 → FBL5N 로 원천 확인. 표준에 남길 일 고객 원장 대응.
OB08환율 유지이어받는 데이터 환율표(TCURR)의 고시환율과 환율 단위. 대사 지점 문서 장부환율과 고시환율의 차이(R2). 오가는 방법 기준정보 환율 탭 ↔ OB08. 표준에 남길 일 환율 유지 · 환율 유형 결정.
FAGLB03총계정 잔액 조회이어받는 데이터 계정 잔액(ACDOCA 합계). 대사 지점 R1 의 총계정 잔액. 오가는 방법 대사 결과 → FAGLB03 에서 같은 계정 잔액 확인. 표준에 남길 일 시산표 · 법정 보고.
F110 · FAGL_FCV자동 지급 · 외화 평가(운영 연결 시)운영 연결 때 일괄 처리 펑션을 표준 일괄 처리와 맞춰 둘 후보입니다. 이 앱의 결제 청산 · 외화 평가 일괄 실행을 어느 표준 실행에 연결할지는 운영 연결 단계에서 정합니다.

운영 전환 시 기존 리포트를 없애야 하나요? 없애지 않습니다. 법정 · 감사 · 세무 대응에 쓰는 표준 화면과 리포트는 그대로 두고, 이 앱은 결산 중 처리 · 승인 · 대사 · 분석을 한 곳에서 하는 자리로 씁니다. 처음에는 두 화면 숫자를 같이 놓고 R1~R4 차이가 0으로 맞는지 확인하다가, 팀이 믿을 수 있다고 판단하는 시점에 표준 쪽 사용 빈도를 정하시면 됩니다.

S/4HANA 분석 스택과의 자리

S/4HANA 에는 표준 CDS 분석 쿼리와 Fiori 분석 앱, Analysis for Office 같은 도구가 있어, 총계정 잔액이나 개별 항목을 분석하는 용도는 이미 표준에서 다룹니다. 이 앱의 분석 화면은 그 자리를 대신하지 않고, 외화 결산 문서(평가 · 청산 · 재분류 · 조정)와 대사 결과라는 결산 업무 단위로 큐브를 따로 두어 ‘평가 · 정리 금액이 계획 대비 어느 단계에서 벌어졌는가’를 보는 관점을 더합니다. 운영 시에는 큐브를 표준 CDS 뷰 위에 얹고, 표준 분석 앱에서 보던 필터 값과 같은 조건으로 대조하면 됩니다. 특정 표준 Fiori 앱 이름과 표준 CDS 뷰 이름은 시스템마다 달라 확인이 필요하므로, 4장에서는 원천 테이블 기준으로 적었습니다.

확장 포인트 — 운영에서 실제로 손대는 자리

자리무엇을 손보나비고
환율 유형 · 환산 시점평가에 쓸 환율 유형(예: 기말 환율)과 기준일을 정합니다.OB08 환율표와 맞춰 두고 R2 허용 차이를 정합니다.
평가 계정 매핑평가 대상 계정과 평가이익 · 평가손실 · 재분류 상대 계정을 짝짓습니다.회사코드별 매핑 테이블로 두어 계정과목표가 바뀌어도 화면은 그대로입니다.
승인 단계와 금액 구간몇 명이 어느 금액부터 승인할지 정합니다.샘플은 5천만 원 이상 2인 승인(가정값)입니다.
대사 허용 오차R1~R4 의 허용 차이 · 단위를 정합니다.통화별 · 계정별로 달리할지 정합니다.
확장 필드 · BAdI문서에 붙일 추가 필드(사업 구분 · 사유 코드)와 전기 시 검증 로직을 정합니다.확장 필드는 CDS 확장과 BAdI 로 연결합니다.
권한 객체화면 역할(조회자 · 처리자 · 승인자 · 관리자)을 PFCG 역할과 권한 객체로 옮깁니다.회사코드 단위 접근 제어는 4장 DCL 예시를 참고합니다.

요구사항 매핑표

기준서요구사항(관점)대응 기능원천 데이터비고
IAS 21 환율변동효과(K-IFRS 제1021호)외화 거래와 화폐성 외화 항목을 기말 환율로 환산하고, 결제 시 환율 차이를 손익으로 인식하는 업무외화 평가(FXR) · 결제 청산 실현손익(FXS) · 대사 R2 · R3 · R4미결 항목(BSIS · BSID · BSIK), 환율표(TCURR), 전표(BKPF · BSEG)관점만 다루며 문단번호는 적지 않습니다. 환율 선택과 손익 인식은 회사가 정합니다.
IFRS 9 금융상품(K-IFRS 제1109호)외화 금융자산 · 금융부채(예금 · 차입금 등)의 잔액을 점검하는 업무외화 평가의 채무 · 차입금 부호 처리, 유동성 재분류(RCL) 제안차입금 계정 잔액, 총계정 라인(ACDOCA)분류와 측정 판단은 회사와 감사인의 몫입니다.
-(업무 흐름: 결산 · 통합 관리)처리 · 승인 · 대사 흐름의 증적M3 문서 처리 · M5 대사 · M8 감사 로그문서 이력, 감사 로그기준서가 분명하지 않은 업무라 영역명으로 표기했습니다.

CDS 구성 — 최대한 자세히

아래는 운영 시스템에서 같은 구성을 만들 때의 스케치입니다. 기준 → 차원 → 큐브 → 쿼리 → 권한 순으로 뷰를 쌓고, 상태가 있는 문서는 RAP 비즈니스 오브젝트로 둡니다. 원천은 표준 테이블(BKPF · BSEG · ACDOCA · TCURR · BSIS · BSID · BSIK · T001)이며, 표준 CDS 뷰 이름은 시스템마다 확인이 필요해 테이블 기준으로 적었습니다.

뷰 레이어 구성

레이어뷰 · 객체하는 일왜 나누나
기준(매핑)ZFXC_ACCTMAP · ZFXC_DOCHDR평가 계정 매핑과 외화 결산 문서 머리글 테이블계정을 코드에 박지 않고 기준정보로 두며, 문서는 앱이 소유합니다.
차원ZI_FxRateMap · ZI_FxOpenItem고시환율(환율 단위 반영)과 외화 미결 항목(채권 · 채무 · 총계정)환율과 대상이 한 번만 정의되어 큐브와 문서가 같은 값을 읽습니다.
큐브ZI_FxCloseCubeACDOCA 를 회사 · 기간 · 계정 · 통화 · 문서 유형으로 집계집계를 큐브 한 곳에 두어 분석 화면이 서로 다른 숫자를 만들지 않습니다.
쿼리(Consumption)ZC_FxCloseQuery행 · 열 · 자유 축과 필터를 선언화면 구성과 집계 로직을 분리합니다.
문서(RAP)ZR_FxSettlement + 동작 정의검토 요청 · 승인 · 전기 · 역처리 액션과 직무 분리 검증상태 전이를 화면이 아니라 서비스에 둡니다.
권한(DCL)ZI_FxCloseCube 역할회사 코드 단위 접근 제어(F_BKPF_BUK)집계 단계에서 거르고, 드릴스루에만 걸지 않습니다.
서비스ZSD_FxCloseServiceOData V2 로 게시할 뷰와 RAP 오브젝트를 선택게시 범위를 한 곳에서 관리합니다.

① 기준 테이블 — 평가 계정 매핑 · 문서 머리글

어느 계정을 평가 대상으로 보고, 평가이익 · 평가손실 · 재분류 상대 계정이 어디인지는 회사마다 다릅니다. 이 값을 코드에 박아 두면 계정과목표가 바뀔 때마다 뷰를 고쳐 이송해야 하므로, 회사코드별 기준 테이블로 둡니다. 문서 머리글 테이블은 이 앱이 소유하는 데이터(문서 유형 · 상태 · 승인 이력)를 담습니다.

"──────────────────────────────────────────────────────────────────────
" ZFXC_ACCTMAP · ZFXC_DOCHDR : 기준(매핑) 테이블
" 하는 일  : 평가 대상 계정과 상대 계정을 짝짓고, 외화 결산 문서 머리글을 담는다.
" 나눈 이유: 계정을 코드에 박지 않는다. 문서 상태와 승인 정보는 앱이 소유한다.
"──────────────────────────────────────────────────────────────────────
@EndUserText.label : '외화 평가 계정 매핑'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zfxc_acctmap {
  key mandt   : mandt not null;
  key bukrs   : bukrs not null;
  key saknr   : saknr not null;
  item_kind   : abap.char(2);     " AR 채권 · AP 채무 · BK 예금 · LN 차입금 · IC 그룹 내
  gain_acct   : saknr;            " 평가이익 계정
  loss_acct   : saknr;            " 평가손실 계정
  recl_acct   : saknr;            " 유동성 재분류 상대 계정
  valid_from  : datum;
}

@EndUserText.label : '외화 결산 문서 머리글'
@AbapCatalog.enhancement.category : #EXTENSIBLE_ANY
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zfxc_dochdr {
  key mandt        : mandt not null;
  key doc_no       : abap.char(16) not null;   " FXR-26-000121 형식
  key fiscal_year  : gjahr not null;
  doc_type         : abap.char(3);             " FXR 평가 · FXS 청산 · RCL 재분류 · ADJ 조정
  bukrs            : bukrs;
  period           : abap.char(7);             " 2026-09
  status           : abap.char(1);             " D 작성중 · R 검토중 · A 승인됨 · P 전기됨 · V 역처리됨 · J 반려
  @Semantics.amount.currencyCode : 'zfxc_dochdr.local_cur'
  amount_local     : abap.curr(15,2);
  local_cur        : waers;
  created_by       : syuname;
  approved_by      : syuname;
  last_changed_at  : timestampl;
}

② ZI_FxRateMap — 고시환율과 환율 단위

환율은 ‘1 외화당 원화’가 아니라 환율 단위(JPY 100 등)를 반영해야 같은 기준으로 비교됩니다. 이 뷰가 단위를 한 번만 풀어 두면 평가 · 청산 · 대사 R2 가 모두 같은 환율을 읽습니다. TCURR 의 날짜는 뒤집힌 형식(GDATU)으로 저장되므로 변환 지점을 여기에 모아 둡니다.

"──────────────────────────────────────────────────────────────────────
" ZI_FxRateMap : 차원 — 고시환율(환율 단위 반영)
" 하는 일  : 환율표(TCURR)를 읽어 외화 1 단위당 환율(RatePerUnit)을 계산한다.
" 나눈 이유: 환율 단위 처리를 한 곳에 두어 평가 · 청산 · 대사가 같은 환율을 쓴다.
"──────────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '고시환율(환율 단위 반영)'
@ObjectModel.usageType: { serviceQuality: #A, sizeCategory: #S, dataClass: #CUSTOMIZING }
define view entity ZI_FxRateMap
  as select from tcurr
{
  key kurst                    as RateType,
  key fcurr                    as FromCurrency,
  key tcurr                    as ToCurrency,
  key gdatu                    as InvertedValidFrom,      // 뒤집힌 날짜 형식
      ffact                    as FromFactor,
      tfact                    as ToFactor,
      ukurs                    as ExchangeRate,
      division( cast( ukurs as abap.dec(15,5) ) * cast( tfact as abap.dec(15,5) ),
                cast( ffact as abap.dec(15,5) ), 5 )   as RatePerUnit
}

③ ZI_FxOpenItem — 외화 미결 항목

평가와 청산의 대상은 총계정(BSIS), 고객(BSID), 공급업체(BSIK) 미결 항목에 흩어져 있습니다. 세 원천을 같은 모양으로 맞춰 합쳐 두면 일괄 처리와 대사 R1 이 계정 유형을 가리지 않고 한 뷰만 읽습니다. 매핑 테이블과 맞물려 외화 계정만 남기며, 로컬 통화와 문서 통화가 같은 항목은 대상에서 뺍니다.

"──────────────────────────────────────────────────────────────────────
" ZI_FxOpenItem : 차원 — 외화 미결 항목(총계정 · 고객 · 공급업체)
" 하는 일  : BSIS · BSID · BSIK 를 같은 컬럼 구성으로 합치고, 매핑된 외화 계정만 남긴다.
" 나눈 이유: 평가 · 청산 · 대사 R1 이 계정 유형을 가리지 않고 같은 뷰를 읽게 한다.
"──────────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '외화 미결 항목'
define view entity ZI_FxOpenItem
  as select from bsis as i
    inner join zfxc_acctmap as m on  m.bukrs = i.bukrs
                                 and m.saknr = i.hkont
    inner join t001         as c on  c.bukrs = i.bukrs
{
  key i.bukrs                  as CompanyCode,
  key i.belnr                  as AccountingDocument,
  key i.gjahr                  as FiscalYear,
  key i.buzei                  as AccountingDocumentItem,
      cast( 'G' as abap.char(1) ) as LedgerSource,
      i.hkont                  as GLAccount,
      m.item_kind              as ItemKind,
      i.waers                  as TransactionCurrency,
      @Semantics.amount.currencyCode: 'TransactionCurrency'
      i.wrbtr                  as AmountInTransactionCurrency,
      c.waers                  as CompanyCodeCurrency,
      @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
      i.dmbtr                  as AmountInCompanyCodeCurrency
}
where i.waers <> c.waers
union all
select from bsid as i
    inner join zfxc_acctmap as m on  m.bukrs = i.bukrs
                                 and m.saknr = i.hkont
    inner join t001         as c on  c.bukrs = i.bukrs
{
  key i.bukrs, key i.belnr, key i.gjahr, key i.buzei,
      cast( 'D' as abap.char(1) ), i.hkont, m.item_kind,
      i.waers, i.wrbtr, c.waers, i.dmbtr
}
where i.waers <> c.waers
union all
select from bsik as i
    inner join zfxc_acctmap as m on  m.bukrs = i.bukrs
                                 and m.saknr = i.hkont
    inner join t001         as c on  c.bukrs = i.bukrs
{
  key i.bukrs, key i.belnr, key i.gjahr, key i.buzei,
      cast( 'K' as abap.char(1) ), i.hkont, m.item_kind,
      i.waers, i.wrbtr, c.waers, i.dmbtr
}
where i.waers <> c.waers

④ ZI_FxCloseCube — 분석 큐브

분석 화면의 모든 숫자는 이 큐브에서 나옵니다. 금액은 통화 코드와 함께 집계해야 통화가 다른 값이 섞이지 않고, 문서 유형(평가 · 청산 · 재분류 · 조정)은 전표 참조에서 읽어 한 가지 기준으로 분류합니다. 큐브 합계가 근거 라인 합과 같아야 하므로, 운영에서는 이 뷰와 근거 라인 뷰의 합계를 검산하는 확인 쿼리를 함께 둡니다(샘플에서는 45건 모두 차이 0).

"──────────────────────────────────────────────────────────────────────
" ZI_FxCloseCube : 큐브 — 외화 결산 금액 · 건수
" 하는 일  : ACDOCA 라인을 회사 · 기간 · 계정 · 통화 · 문서 유형으로 집계한다.
" 나눈 이유: 집계를 한 곳에 두어 피벗 · 드릴스루 · 요인 분해가 같은 숫자를 읽는다.
"──────────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory: [#NONE]
@Analytics.dataCategory: #CUBE
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '외화 결산 큐브'
@ObjectModel.usageType: { serviceQuality: #D, sizeCategory: #XL, dataClass: #TRANSACTIONAL }
define view entity ZI_FxCloseCube
  as select from acdoca as a
  association [0..1] to ZI_FxRateMap as _Rate
    on  _Rate.FromCurrency = $projection.TransactionCurrency
    and _Rate.ToCurrency   = $projection.CompanyCodeCurrency
{
  key a.rbukrs                       as CompanyCode,
  key a.fiscyearper                  as FiscalYearPeriod,
  key a.racct                        as GLAccount,
  key a.rtcur                        as TransactionCurrency,
  key case substring( a.xblnr, 1, 3 )
        when 'FXR' then 'FXR'
        when 'FXS' then 'FXS'
        when 'RCL' then 'RCL'
        when 'ADJ' then 'ADJ'
        else 'ETC' end               as FxDocumentType,
      a.rhcur                        as CompanyCodeCurrency,
      @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
      @DefaultAggregation: #SUM
      sum( a.hsl )                   as AmountInCompanyCodeCurrency,
      @Semantics.amount.currencyCode: 'TransactionCurrency'
      @DefaultAggregation: #SUM
      sum( a.tsl )                   as AmountInTransactionCurrency,
      @DefaultAggregation: #SUM
      count( * )                     as LineCount,
      _Rate
}
group by a.rbukrs, a.fiscyearper, a.racct, a.rtcur, a.rhcur,
         substring( a.xblnr, 1, 3 )

⑤ ZC_FxCloseQuery — 분석 쿼리

쿼리는 어떤 차원을 행 · 열 · 자유 축에 놓을지와 어느 필터를 필수로 둘지를 선언합니다. 기간을 필수 필터로 두면 큐브 전체가 한꺼번에 읽히는 일이 없고, 화면의 조회 버튼과 같은 약속(기간을 정한 뒤 조회)이 서비스 쪽에서도 지켜집니다.

"──────────────────────────────────────────────────────────────────────
" ZC_FxCloseQuery : 쿼리 — 행 · 열 · 필터 선언
" 하는 일  : 큐브를 분석 화면의 피벗 구성(행/열/자유 축)과 필수 필터로 노출한다.
" 나눈 이유: 화면이 아니라 서비스가 조회 범위(기간 필수)를 강제하게 한다.
"──────────────────────────────────────────────────────────────────────
@Analytics.query: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '외화 결산 분석'
@UI.headerInfo: { typeName: '외화 결산', typeNamePlural: '외화 결산' }
define view entity ZC_FxCloseQuery
  as select from ZI_FxCloseCube
{
  @AnalyticsDetails.query.axis: #ROWS
  @AnalyticsDetails.query.displayHierarchy: #OFF
  @UI.lineItem: [{ position: 10 }]
  FxDocumentType,

  @AnalyticsDetails.query.axis: #ROWS
  @UI.lineItem: [{ position: 20 }]
  GLAccount,

  @AnalyticsDetails.query.axis: #COLUMNS
  @Consumption.filter: { selectionType: #INTERVAL, multipleSelections: false, mandatory: true }
  FiscalYearPeriod,

  @AnalyticsDetails.query.axis: #FREE
  @Consumption.filter: { selectionType: #SINGLE, multipleSelections: true }
  CompanyCode,

  @AnalyticsDetails.query.axis: #FREE
  TransactionCurrency,

  @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
  AmountInCompanyCodeCurrency,
  CompanyCodeCurrency,
  LineCount
}

⑥ ZR_FxSettlement — 결제 청산 문서(RAP 루트)

평가 · 청산 · 재분류 · 조정 문서는 상태를 가지고 이력이 남아야 하므로 읽기 전용 큐브가 아니라 RAP 루트 엔티티로 둡니다. 루트 뷰는 머리글 테이블을 읽고 라인을 composition 으로 묶습니다. 아래는 청산(FXS) 문서를 예로 든 스케치이며, 같은 구조를 문서 유형 값만 달리해 평가 · 재분류 · 조정에 씁니다.

"──────────────────────────────────────────────────────────────────────
" ZR_FxSettlement : RAP 루트 — 외화 결산 문서(청산 문서 예)
" 하는 일  : 머리글과 라인을 composition 으로 묶고 상태 · 승인자를 노출한다.
" 나눈 이유: 상태 전이와 직무 분리를 화면이 아니라 비즈니스 오브젝트에 둔다.
"──────────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '외화 결산 문서'
define root view entity ZR_FxSettlement
  as select from zfxc_dochdr
  composition [0..*] of ZR_FxSettlementItem as _Item
{
  key doc_no                  as DocumentNo,
  key fiscal_year             as FiscalYear,
      doc_type                as FxDocumentType,
      bukrs                   as CompanyCode,
      period                  as FiscalPeriod,
      status                  as DocumentStatus,
      @Semantics.amount.currencyCode: 'CompanyCodeCurrency'
      amount_local            as AmountInCompanyCodeCurrency,
      local_cur               as CompanyCodeCurrency,
      created_by              as CreatedBy,
      approved_by             as ApprovedBy,
      @Semantics.systemDateTime.lastChangedAt: true
      last_changed_at         as LastChangedAt,
      _Item
}
"──────────────────────────────────────────────────────────────────────
" ZR_FxSettlement 동작 정의 : 액션 · 직무 분리 검증
" 하는 일  : 검토 요청 · 승인 · 반려 · 전기 · 역처리를 액션으로 두고, 승인 시 작성자와 승인자가 같은지 검사한다.
" 나눈 이유: 상태 전이 규칙(어느 상태에서 어느 액션이 되는가)을 한 곳에서 관리한다.
"──────────────────────────────────────────────────────────────────────
managed implementation in class zbp_r_fxsettlement unique;
strict ( 2 );

define behavior for ZR_FxSettlement alias Settlement
persistent table zfxc_dochdr
lock master
authorization master ( instance )
etag master LastChangedAt
{
  create;
  update ( features : instance );
  field ( readonly ) DocumentNo, DocumentStatus, ApprovedBy, LastChangedAt;
  association _Item { create; }

  action ( features : instance ) submit  result [1] $self;      // 작성중 → 검토중
  action ( features : instance ) approve result [1] $self;      // 검토중 → 승인됨 (작성자 ≠ 승인자)
  action ( features : instance ) reject  parameter ZA_FxReason result [1] $self;
  action ( features : instance ) post    result [1] $self;      // 승인됨 → 전기됨 (열린 기간)
  action ( features : instance ) reverse parameter ZA_FxReason result [1] $self;

  validation checkSeparationOfDuty on save { field ApprovedBy; }
  validation checkBalanced         on save { create; update; }  // 차변 합 = 대변 합

  mapping for zfxc_dochdr
  {
    DocumentNo = doc_no;   FiscalYear = fiscal_year;   FxDocumentType = doc_type;
    CompanyCode = bukrs;   FiscalPeriod = period;      DocumentStatus = status;
    AmountInCompanyCodeCurrency = amount_local;        CompanyCodeCurrency = local_cur;
    CreatedBy = created_by; ApprovedBy = approved_by;  LastChangedAt = last_changed_at;
  }
}

⑦ 접근 제어 — DCL 역할

접근 제어는 큐브에 겁니다. 드릴스루나 근거 라인 뷰에만 걸면 전체 합계와 자기 몫의 차이로 다른 회사 숫자가 새어 나갈 수 있습니다. 큐브에 회사 코드 권한을 걸고 쿼리가 그 조건을 물려받게 하면, 어느 경로로 읽어도 같은 범위만 보입니다. 화면의 역할(조회자 · 처리자 · 승인자 · 관리자)은 운영에서 PFCG 역할과 권한 객체로 옮깁니다.

"──────────────────────────────────────────────────────────────────────
" ZI_FxCloseCube 접근 제어 : 회사 코드 단위
" 하는 일  : F_BKPF_BUK(회사 코드, 조회 활동)을 큐브에 건다. 쿼리는 이 조건을 상속한다.
" 나눈 이유: 집계 단계에서 걸러야 합계 차이로 다른 회사 숫자가 드러나지 않는다.
"──────────────────────────────────────────────────────────────────────
@EndUserText.label: '외화 결산 큐브 — 회사 코드 접근 제어'
@MappingRole: true
define role ZI_FxCloseCube {
  grant select on ZI_FxCloseCube
    where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}

@EndUserText.label: '외화 결산 쿼리 — 큐브 조건 상속'
@MappingRole: true
define role ZC_FxCloseQuery {
  grant select on ZC_FxCloseQuery
    where inheriting conditions from entity ZI_FxCloseCube;
}

⑧ 서비스 정의와 바인딩

어느 뷰와 RAP 오브젝트를 OData 로 내보낼지는 서비스 정의 한 곳에서 정하고, 바인딩에서 프로토콜(OData V2 UI)을 고릅니다. 화면이 부르는 데이터 집합 이름과 함수 이름은 이 정의에서 별칭으로 정해지므로, 운영 전환 때 화면을 고치지 않으려면 별칭을 샘플과 맞추면 됩니다.

"──────────────────────────────────────────────────────────────────────
" ZSD_FxCloseService : 서비스 정의
" 하는 일  : 화면이 부를 뷰와 RAP 오브젝트의 이름(별칭)을 정한다.
" 나눈 이유: 게시 범위를 한 곳에서 관리하고, 화면 쪽 이름을 바꾸지 않아도 되게 한다.
"──────────────────────────────────────────────────────────────────────
@EndUserText.label: '외화 평가 · 결제 마감 서비스'
define service ZSD_FxCloseService {
  expose ZR_FxSettlement     as DocHeader;
  expose ZR_FxSettlementItem as DocItem;
  expose ZC_FxCloseQuery     as Cube;
  expose ZI_FxOpenItem       as Target;
  expose ZI_FxRateMap        as FxRate;
}

// 서비스 바인딩(ADT 에서 생성): 이름 ZUI_FxClose_O2 · 바인딩 유형 OData V2 - UI · 게시(Publish) 후
// /IWFND/MAINT_SERVICE 에서 활성화 상태를 확인한다.

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다. 아래 항목은 코드를 쓰기 전에 회사가 정해 두어야 하는 것들입니다.

해야 할 일무엇을 정하나정하지 않으면누가
상태 흐름 · 승인 단계 · 금액 구간작성 → 검토 → 승인 → 전기 → 역처리의 단계와 몇 명이 어느 금액부터 승인하는지샘플의 가정값(5천만 원 이상 2인)이 그대로 운영에 들어갑니다.재무팀 · 내부통제
직무 분리 · 역할 → PFCG조회자 · 처리자 · 승인자 · 관리자를 SAP 권한 객체와 PFCG 역할로 옮기고 데모 사용자 전환을 없앱니다.화면 역할과 SAP 권한이 따로 놀아 승인 증적이 흔들립니다.보안 · 권한 담당
처리 함수 ↔ 표준 처리 연결일괄 처리와 문서 액션을 표준 BAPI · RAP 액션 · 표준 일괄 처리(F110 · FAGL_FCV 등)와 어떻게 이을지 정합니다.화면은 되는데 장부에는 반영되지 않는 상태가 남습니다.재무 IT
문서 번호 범위평가 · 청산 · 재분류 · 조정 문서의 번호 규칙과 연도별 범위를 정합니다.샘플의 번호 규칙(유형-연도-일련번호)이 충돌할 수 있습니다.재무팀 · IT
영역 간 연계 문서 흐름 키재무 문서와 영업 · 구매 · 자금 문서를 이을 키(참조 번호 · 대상 번호)를 정합니다.흐름도가 일부 문서만 이어 보여 줍니다.각 영역 담당
대사 규칙과 허용 오차R1~R4 허용 차이와 단위를 통화 · 계정별로 정하고, 표준 T-code 와 맞출 항목을 고릅니다.허용 오차가 너무 크면 예외가 안 보이고 작으면 예외가 넘칩니다.결산팀
환율 유형 · 환산 시점기말 평가에 쓸 환율 유형, 결제환율 기준, 환율 단위를 정합니다.환율 차이가 평가와 청산에서 다르게 나옵니다.자금팀 · 회계팀
부호 규칙채권 · 채무 · 차입금의 평가손익 부호와 표시 방향을 정합니다.채무 평가손익이 채권과 같은 방향으로 보일 수 있습니다.회계팀
원천 확정실적(ACDOCA) · 계획 · 예측 중 분석 큐브가 읽을 원천과 버전을 정합니다.계획 대비 차이의 기준이 사람마다 달라집니다.기획팀 · 결산팀
차원 범위와 권한 설계분석 차원을 어디까지 열지, 회사 코드 외에 어떤 값으로 접근을 제한할지 정합니다.나중에 차원을 늘리려면 뷰를 고쳐 다시 이송해야 합니다.결산팀 · 보안
성능 기준큐브 집계 위치(DB)와 응답 시간 목표, 조회 기간 상한을 정합니다.월말 동시 접속 때 응답이 늦어집니다.Basis · 재무 IT
전송(TR) 순서와 서비스 활성화테이블 → 차원 → 큐브 → 쿼리 → DCL → RAP → 서비스 순으로 이송하고, 서비스 활성화(/IWFND/MAINT_SERVICE 또는 바인딩 게시)와 화면의 서비스 주소 교체를 정합니다.순서가 어긋나면 활성화 단계에서 막힙니다.Basis · 개발
배치 등록일괄 처리와 점검 에이전트를 어떤 주기로 돌릴지 정합니다.사람이 화면을 열 때만 점검이 돕니다.Basis · 결산팀

숫자를 믿을 수 있는가 — 검증 결과

결산 숫자에서 가장 비싼 질문은 “이 숫자 맞아?”입니다. 만드는 쪽에서 먼저 대사식을 세우고 전수로 돌린 결과입니다. 대사 R1~R4의 차이는 점검용으로 일부러 넣어 둔 예외 11건(R1 4 · R2 3 · R3 2 · R4 2)이며, 그 외 검산은 모두 차이 0입니다.

대사식검사 건수차이
분석 큐브 = 근거 라인 합(검산표)450 (최대 차이 0)
일괄 처리 모의 실행 합계 = 실행 합계(결제 청산 2026-10)1(4건 · 6,846,632원)0
워터폴 요인 합 = 총차이(2026-09)1(186,105,930원)0
USD + EUR 필터 합계 = 큐브 합1(18,065,280,240원)0
피벗 5가지 배열의 총합 불변50
드릴스루 합 = 칸 금액10칸 이상0
문서 이력의 마지막 상태 = 현재 상태문서 전체0
대사 R1 보조원장 = 총계정(2026-09)213 (점검용 예외, 최대 3,400,000원)
대사 R2 장부환율 = 고시환율(2026-09)163 (점검용 예외)
대사 R3 평가손익 누계 = 평가 문서 합(2026-09)162 (점검용 예외)
대사 R4 결제 외화 = 청산 문서(2026-09)42 (점검용 예외)

기능 검증은 실제 브라우저 조작으로 M1~M8 · P1~P10 · F1~F15 가 모두 통과했습니다. 샘플 데이터 규모는 외화 미결 항목 76건, 문서 264건(전기 240 · 역처리 4 · 검토 14 · 승인 5 · 반려 1), 분석 큐브 3,915건입니다.

운영 데이터로 갈 때

샘플은 수천 건이지만 운영에서는 총계정 라인(ACDOCA)이 수천만 건이 됩니다. 집계는 화면이나 서비스 로직이 아니라 데이터베이스(CDS 큐브)에서 하고, 분석 쿼리의 기간을 필수 필터로 두어 전체를 읽는 요청이 없게 합니다. 외화 미결 항목은 BSIS · BSID · BSIK 가 이미 미결만 담고 있어 규모가 작지만, 회사 코드 · 계정 · 통화에 맞춘 인덱스와 조회 기간 상한은 정해 두는 편이 좋습니다. 드릴스루는 집계가 아니라 조회이므로 건수를 먼저 세어 보고 상한을 넘으면 범위를 좁히라고 안내하며, 응답 시간 기준(예: 월말 동시 접속에서 몇 초 이내)은 운영 연결 단계에서 회사가 정합니다.

자주 묻는 질문

도입 상담과 데모에서 자주 나오는 질문을 네 묶음으로 정리했습니다.

숫자와 산식

평가손익은 어떻게 계산합니까?

외화 금액 × (기말 고시환율 − 장부환율) ÷ 환율 단위입니다. 환율 단위는 JPY 100 처럼 고시환율이 몇 단위당인지를 뜻하며, 단위를 반영하지 않으면 값이 100배 달라질 수 있어 기준정보의 환율 탭에 단위를 함께 둡니다.

외화 채무와 차입금은 같은 식에서 부호를 반대로 합니다. 화면의 환율과 금액은 모두 시연용 가정값이며 실제 시세가 아닙니다.

외화 채무는 왜 부호가 반대입니까?

같은 환율 상승이라도 채권은 원화로 받을 금액이 늘어 평가이익 쪽이고, 채무는 갚을 금액이 늘어 평가손실 쪽이기 때문입니다. 이 앱은 항목 구분(채권 · 채무 · 예금 · 차입금 · 그룹 내 거래)에 따라 부호를 정해 평가 문서의 차변 · 대변을 만듭니다. 구분별 부호와 계정은 운영에서 회사가 정하는 매핑 항목이며, 어느 부호가 맞는지의 최종 판단은 회사와 감사인이 합니다.

결제로 청산할 때 앞서 인식한 평가손익은 어떻게 됩니까?

평가 후 결제 청산이 이루어지면 이미 인식한 평가손익을 되돌리고 실현손익으로 전환해 청산 문서(FXS)에 반영합니다. 이 누계가 평가 문서 합계와 맞는지는 대사 R3(허용 ±1,000원)에서 확인합니다.

샘플의 최신 대사(2026-09)에서 R3 는 16건을 점검해 2건의 차이가 나왔고, 모두 예외 목록에서 조정 · 보류 · 수용으로 다룹니다.

모의 실행 합계와 실행 결과가 같다는 것은 어떻게 확인합니까?

일괄 실행 화면에서 처리 종류 · 회사 · 기간을 정해 모의 실행을 누르면 저장 없이 대상 건수와 합계가 나옵니다. 샘플의 결제 청산 2026-10 모의 실행은 4건 · 6,846,632원이었고, 실행 이력의 합계도 같은 6,846,632원이었습니다. 실행 상세에서 대상별 결과와 생성된 문서 번호를 이어서 볼 수 있습니다.

같은 조건으로 두 번 실행하면 문서가 두 번 생깁니까?

생기지 않습니다. 일괄 처리는 대상(미결 항목)과 기간을 기준으로 이미 문서가 만들어진 대상을 건너뜁니다. 실행 이력 상태에 ‘일부 건너뜀’이 표시되고 로그 탭에서 이유를 읽을 수 있습니다. 환율을 정정한 뒤 다시 평가해야 하는 경우에는 기존 문서를 역처리한 뒤 다시 만드는 순서를 권합니다.

통화가 다른 금액은 왜 합치지 않습니까?

USD 와 JPY 를 그대로 더하면 의미 없는 숫자가 되기 때문입니다. 대사는 통화별로 맞추고, 원화로 환산한 값은 별도 컬럼(조정 금액 등)으로 둡니다. 분석 화면에서 통화를 열 축에 놓으면 통화별로 나뉜 합계를 볼 수 있습니다.

큐브 검산 45건 차이 0 이란 무엇입니까?

분석 큐브의 집계값과 그 근거가 되는 라인의 합계를 측정값 · 축 조합별로 비교한 검산표입니다. 샘플에서는 45개 조합 모두 차이가 0이었습니다. 검산표는 분석 화면 아래에서 직접 펼쳐 볼 수 있습니다.

환율 단위가 다른 통화를 같이 볼 때 R2 는 어떻게 비교합니까?

R2 는 (장부환율 − 고시환율) ÷ 고시환율 × 100(%)을 보고 허용 범위는 ±0.01% 입니다. 비교 전에 두 환율을 환율 단위로 나눠 1 외화당 값으로 맞추므로 JPY 처럼 100 단위로 고시되는 통화도 같은 기준으로 비교됩니다.

화면과 조작

조회 버튼이 어떤 화면에는 없고 분석 화면에만 있는 이유가 무엇입니까?

홈 · 기준정보 · 문서 · 대사 화면은 머리말의 회사 · 기간을 바꾸면 곧바로 다시 조회됩니다. 분석 화면은 조건(차원 선택 · 비교 기준 · 기간)을 여러 개 만지는 일이 많아, 조건 영역 오른쪽 끝의 조회 버튼이나 조건 입력칸의 Enter 로 조회합니다. 레이아웃을 ‘기본 + 자동 조회’로 저장해 두면 열릴 때 바로 조회됩니다.

회사와 기간을 바꾸면 무엇이 바뀝니까?

화면 위쪽 머리말의 회사 코드와 기간을 바꾸면 모든 탭이 같은 범위로 바뀝니다. 기간은 필수이고 회사는 비워 두면 전체입니다. 마감된 기간이면 문서 · 일괄 처리의 처리 버튼이 비활성으로 보여 실수로 닫힌 기간에 전기하지 않도록 했습니다.

작성한 사람이 승인하려 하면 어떻게 됩니까?

서비스가 작성자와 승인자가 같은지 확인해 승인을 거절하고, 화면에는 ‘작성자는 자기 문서를 승인 · 반려할 수 없습니다’가 표시됩니다. 거절된 시도도 감사 로그에 남습니다. 승인 권한이 있는 다른 사용자로 바꾸면 승인할 수 있습니다.

5천만 원 이상은 두 사람이 승인한다는 규칙은 어떻게 정해진 것입니까?

시연을 위한 가정값입니다. 문서 금액이 이 기준을 넘으면 서로 다른 승인자 2인이 필요하도록 승인 단계(예: 1/2 → 2/2)가 표시되게 만들어 두었습니다. 실제 기준 금액과 단계 수는 회사의 내부통제 규정에 맞춰 운영 연결 단계에서 정합니다.

전기한 문서를 되돌리려면 어떻게 합니까?

승인자 · 관리자가 역처리 버튼을 눌러 사유를 남기면 역분개 문서가 자동으로 만들어지고 원 문서는 역처리됨 상태가 됩니다. 역처리된 문서는 더 처리할 수 없고, 연결 문서 탭에서 역분개 문서를 따라갈 수 있습니다. 영역 간 연계 문서가 있으면 함께 되돌려진다는 안내가 흐름도 화면에 있습니다.

엑셀로 올리거나 내려받을 수 있습니까?

표 위의 엑셀 내보내기는 xlsx 를 만듭니다. 기준정보와 문서는 xlsx 올리기 후 미리보기에서 정상으로 판정된 행만 반영합니다. 분석 화면은 표 CSV 와 PPT 보고서 버튼을 따로 둡니다.

휴대폰에서도 쓸 수 있습니까?

390px 폭에서 메뉴가 햄버거 뒤로 접히고 분석 카드가 두 줄로 쌓이며 차트가 표 아래로 내려옵니다. 승인 요청 확인이나 대사 결과 확인 같은 가벼운 작업을 염두에 둔 대응이며, 피벗 구성을 여러 번 바꾸는 작업은 넓은 화면이 편합니다.

분석 기능

피벗의 칸을 눌렀을 때 나오는 명세는 무엇입니까?

그 칸 금액을 만든 전표 라인입니다. 행 경로의 차원값과 열의 차원값이 그대로 조건이 되며, 창 제목에 건수가 보입니다. 명세 합계가 눌렀던 칸의 금액과 같은지가 읽는 방법이고, 샘플에서는 10칸 이상을 눌러 모두 일치했습니다. 전표 번호를 누르면 문서 상세로 이동합니다.

계획 대비 차이의 요인은 무엇으로 가릅니까?

결제·정리, 평가, 대사·조정 세 단계 각각의 라인 수 효과와 평균 금액 효과 여섯 요인으로 가릅니다. 샘플 2026-09 에서 총차이 186,105,930원은 이 여섯 요인의 합과 같았고 화면이 ‘요인 합계 = 전체 차이 — 일치’를 보여 줍니다.

이 분해는 차이가 어느 단계에서 났는지 점검할 자리를 좁혀 주는 용도이며, 원인을 단정하는 것은 아닙니다.

해설은 AI 가 쓰는 것입니까?

현재는 규칙 기반 해설입니다. 금액과 비율은 서비스가 큐브에서 계산해 근거 표로 만들고, 해설은 그 숫자를 문장으로 옮깁니다. 화면에 ‘외부 AI 미연결’로 표시되고 근거 표를 펼쳐 같은 숫자를 확인할 수 있습니다. 외부 AI 연동은 별도 설계 사항입니다.

분석 결과를 보고서로 내려받을 수 있습니까?

분석 화면 위에 표 CSV 와 PPT 보고서 버튼이 있습니다. PPT 보고서는 지금 보고 있는 범위의 분석 내용을 슬라이드로 내려받습니다. 결재 자료로 쓸 때는 숫자와 해설을 담당자가 한 번 더 읽고 필요한 문구를 고치는 것을 권합니다.

점검 에이전트는 무엇을 합니까?

하루 한 번 규칙 4종(기한 경과 마감 절차 · 미처리 대사 예외 · 평가·정리 금액 계획 초과 · 승인 대기 적체)을 돌려 임계값을 넘으면 받을 역할(승인자 · 처리자)에게 보고를 올립니다. 호출 주체(화면 타이머 · 사람 · 자동)와 결과는 활동 기록에 남으며, 확인 버튼으로 읽음 처리합니다. 운영에서는 같은 함수를 배치 잡에서 호출하도록 연결합니다.

분석 구성을 저장해 둘 수 있습니까?

행 · 열 · 필터 구성과 비교 기준을 이름을 붙여 저장합니다. 기본으로 지정하면 다음에 열 때 그 배치로 시작하고 ‘자동 조회’를 켜면 바로 조회됩니다. 사유 입력도 조회 범위와 행 경로를 키로 저장되어 축을 바꿔도 같은 행에 따라옵니다.

도입과 운영

도입하면 어떤 효과가 있고 누가 씁니까?

결산 담당자는 평가 · 청산 · 재분류 · 대사를 한 화면 묶음에서 처리하고, 승인자는 승인 대기 문서를 문서 안에서 검토하며, 관리자와 내부통제 담당은 감사 로그와 역할을 봅니다. 효과를 시간 절감률 같은 수치로 약속하지는 않습니다. 샘플에서 확인되는 것은 대사 규칙별 건수와 차이가 한눈에 보이고, 요인 합이 총차이와 같은지 매번 검산된다는 점입니다.

어느 범위까지 적용된 앱입니까? 운영 시스템에 바로 올릴 수 있습니까?

확인된 사실은 가상의 3개 회사 · 4개 통화 · 2026년 7~10월 샘플로 화면과 로직이 동작한다는 점입니다. 서비스 구성(CDS 뷰 → OData)을 같은 이름으로 구현하면 화면은 그대로 쓸 수 있도록 설계했지만, 구현 범위와 일정은 회사 환경(S/4HANA 버전 · 계정체계 · 권한)을 확인한 뒤에 정할 수 있습니다.

표준 T-code 와의 관계는 어떻게 됩니까? 기존 리포트를 없애야 합니까?

표준 실행은 SAP 표준 T-code(F.05 · FAGL_FC_VAL · F-44 · F-53)가 담당하고, 이 앱은 처리 · 승인 · 대사 · 분석 관점을 더해 확장합니다. 법정 · 감사 · 세무 대응에 쓰는 표준 화면과 리포트는 없애지 않고 함께 둡니다. 두 화면 숫자를 FBL3N · FBL5N · FAGLB03 로 맞춰 보는 지점은 3장 표에 정리했습니다.

데이터는 어디서 가져오고 정합성은 어떻게 확인합니까?

운영 연결 시 원천은 표준 테이블(BSIS · BSID · BSIK · BKPF · BSEG · ACDOCA · TCURR · T001)입니다. 정합성은 대사 R1~R4 와 분석 큐브 검산표로 확인하고, 결과가 이력으로 남습니다. 샘플에서 큐브 검산은 45건 모두 차이 0이었습니다.

외화와 환율은 어떻게 처리합니까?

통화별로 고시환율과 환율 단위를 기준정보에 두고, 평가는 기말 고시환율과 문서 장부환율의 차이로, 청산은 결제환율과 장부환율의 차이로 계산합니다. 환율 유형과 기준일, 부호 규칙은 운영 연결 때 회사가 정하는 항목입니다. 샘플의 환율은 모두 시연용 가정값입니다.

운영 연결에는 어떤 절차가 필요하고 얼마나 걸립니까?

큰 흐름은 ① 정할 것 합의(승인 단계 · 환율 유형 · 계정 매핑 · 허용 오차) → ② 기준 테이블과 CDS 뷰(차원 · 큐브 · 쿼리 · DCL) 구현 → ③ 문서 액션을 표준 처리와 연결 → ④ 서비스 활성화와 화면의 서비스 주소 교체 → ⑤ 표준 화면과 병행 대사입니다. 소요 기간은 계정 수 · 법인 수 · 연결할 표준 처리의 범위에 따라 달라 이 글에서 일수로 약속하지 않습니다. 4장 표의 ‘운영 시점에 해야 할 일’이 점검표 역할을 합니다.

권한과 보안은 어떻게 설계됩니까?

화면에는 조회자(U01) · 처리자(U02 · U03) · 승인자(U04 · U05) · 관리자(U06) 역할이 있고 역할에 따라 버튼이 켜지고 꺼집니다. 운영에서는 이를 PFCG 역할과 권한 객체로 옮기고 데모 사용자 전환을 없앱니다. 회사 코드 단위 접근 제어는 큐브에 걸어 쿼리가 상속하게 합니다.

전표가 아주 많으면 느려지지 않습니까?

집계는 서비스 로직이 아니라 데이터베이스의 CDS 큐브에서 하고, 분석 쿼리는 기간을 필수 필터로 둡니다. 드릴스루는 조회이므로 건수를 먼저 세어 상한을 넘으면 범위를 좁히도록 안내합니다. 외화 미결 항목은 미결만 담긴 테이블에서 읽어 규모가 작은 편이나, 응답 시간 기준은 운영 규모를 보고 정합니다.

계정과목표나 매핑이 바뀌면 어떻게 합니까?

평가 대상 계정과 평가이익 · 평가손실 · 재분류 상대 계정은 회사코드별 기준 테이블에 있으므로 계정이 새로 생기거나 바뀌면 이 테이블에 행을 추가 · 수정하면 됩니다. 뷰와 화면은 고치지 않아도 됩니다. 변경은 기준정보 변경 이력과 감사 로그에 남습니다.

이 앱의 결과가 회계 처리 결론입니까?

아닙니다. 점검 도구이며 최종 판단은 회사와 감사인(세무 신고는 회사와 세무 대리인)이 합니다. 이 앱은 업무 처리와 분류 · 집계 · 대사를 돕고, IAS 21 환율변동효과(K-IFRS 제1021호)나 IFRS 9 금융상품(K-IFRS 제1109호)의 해석을 대신하지 않습니다. 환율 선택, 손익 인식, 유동 · 비유동 분류의 기준은 회사의 회계정책에 따릅니다.