SAP 부가세 신고 대사 점검 — 원장과 신고서, 차이 나는 세목부터 찾는다
세목·기간별로 원장 집계 금액과 부가세 신고 금액을 대사하고, 차이가 남는 건을 자동으로 가려냅니다
부가세 신고서를 제출한 뒤에야 원장 집계 금액과 신고 금액이 맞지 않는다는 걸 알게 되는 경우가 있습니다. 수정신고·공제세액 정정·환율차이 조정 같은 항목이 중간에 끼어들면, 세목별로 어디서 얼마나 차이가 났는지 한눈에 보기가 쉽지 않습니다.
세목·기간별로 원장 집계 금액과 조정 항목 합계, 부가세 신고 금액을 한 화면에서 대사하고, 차이가 남는 세목을 자동으로 가려내는 과정을 OpenUI5 화면으로 확장했습니다. 세목별 조정 항목 상세까지 클릭 한 번으로 확인할 수 있는 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 총계정원장 조회 — 총계정원장 라인아이템 조회의 표준 화면(
FBL3N)이 만든 집계를 원장 집계 금액의 원천으로 그대로 이어받습니다 - 부가세 신고 — 부가세 신고 준비의 표준 프로그램(
RFUMSV00계열)이 산출한 신고 확정치를 그대로 이어받아 대사 관점을 더합니다
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 세무 대응 |
| 대상 영역 | 부가세 신고 대사 — 원장 집계 금액·조정 항목·신고 금액 대사, 세목별 차이 판정 |
| Namespace | zui5.vatrecon |
| 셸 구조 | 조회조건 영역(우측 조회) + 대사 요약 배너 + 명세 목록, 행 클릭 상세 Dialog |
| 화면 수 | 조회 화면 1개(탭 1개) + 상세 다이얼로그 |
| SAP 표준 T-code | FBL3N · RFUMSV00 |
| 데이터 연동 방식 | OData V2 — 목록·상세 각각 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 — 신고서 확정과 최종 판단은 화면 밖에서 회사가 수행 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회계연도를 넣고 조회하면 대사 요약 배너와 세목별 명세가 한 화면에 뜹니다 → 점검결과를 확인 필요로 좁혀 차이 나는 건만 골라보고 → 행을 클릭해 조정 항목 상세를 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
사용 방법
- 회계연도(4자리, 필수)를 입력합니다. 기본값은 현재 연도입니다.
- 신고기간(선택)을 3자리로 입력합니다. 비워두면 전체 기간을 조회합니다.
- 세목코드·점검결과는 목록에서 선택합니다. 전체를 고르면 해당 조건은 조회에서 빠집니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 회계연도 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 대사 요약 배너에서 원장 집계 금액·조정 금액 합계·신고 금액·차이 금액을 확인합니다. 차이 금액이 0이 아니면 빨간색으로 강조됩니다.
- 명세 목록에서 행을 클릭하면 해당 세목의 조정 항목 상세가 다이얼로그로 열립니다.
- 목록 우측 상단 CSV 내려받기(UTF-8 BOM)로 현재 조회조건 기준 결과를 저장할 수 있습니다.
대사 판정 로직
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 신고금액 − (원장집계금액 + 조정금액) = 0 | 정상 | 추가 조치가 필요하지 않습니다. |
| 신고금액 − (원장집계금액 + 조정금액) ≠ 0 | 확인 필요 | 조정 항목 상세를 열어 누락·중복 조정을 점검합니다. |
이 화면이 대신 정하지 않는 것
확인 필요 표시는 대사 차이가 있다는 신호일 뿐입니다. 차이의 원인 확정과 수정신고 여부는 회사와 감사인이 판단합니다.
대사 처리 단계
| 단계 | 내용 |
|---|---|
| 1단계 | 세목코드별로 회계기간의 원장 집계 금액을 산출한다 |
| 2단계 | 수정신고 반영·공제세액 정정·대손세액 가감·환율차이 조정 항목을 세목별로 합산한다 |
| 3단계 | 원장 집계 금액 + 조정 금액 합계로 기대 신고 금액을 계산한다 |
| 4단계 | 실제 신고 금액(신고서 확정치)과 비교해 차이 금액을 산출한다 |
| 5단계 | 차이가 0이 아닌 건을 확인 필요로 표시하고, 기간 합계 행에도 동일하게 반영한다 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회계연도 | 필수 | 4자리 연도 |
| 신고기간 | 선택 | 3자리 기간. 비우면 전체 기간 |
| 세목코드 | 선택 | 매출 3종(A1~A3)·매입 3종(B1~B3). 전체 선택 시 조건 제외 |
| 점검결과 | 선택 | 정상 / 확인 필요. 전체 선택 시 조건 제외 |
결과 컬럼
| 컬럼 | 설명 |
|---|---|
| 회계연도 / 기간 / 세목코드 / 세목명 | 대사 대상 식별 정보 |
| 원장집계금액 | 총계정원장에서 집계한 세목별 금액 |
| 조정금액 | 수정신고·정정·가감·환율차이 조정 합계 |
| 신고금액 | 부가세 신고서 확정 금액 |
| 차이금액 | 신고금액 − (원장집계금액 + 조정금액) |
| 점검결과 | 정상 / 확인 필요 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 결과에 신고 전 대사·점검 관점을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
FBL3N | 총계정원장 라인아이템 조회 | 세목코드별 집계 구조를 참고해 원장 집계 금액을 산출합니다 |
RFUMSV00 | 부가세 신고 준비(매출·매입세 신고) | 신고 확정치와 원장 집계 금액을 세목·기간별로 대사하고 조정 항목을 함께 보여줍니다 |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
ACDOCA | RBUKRS · GJAHR · POPER · MWSKZ · HSL | 세목별 원장 집계 금액의 원천(유니버설 저널) |
BSEG | BELNR · BUZEI | 조정 항목의 관련 전표 참조 |
define view entity ZI_VatReconAnalysis
as select from acdoca
{
key acdoca.rbukrs,
key acdoca.gjahr as FiscalYear,
key acdoca.poper as Period,
key acdoca.mwskz as VatCode,
sum(acdoca.hsl) as LedgerAmount
// 조정 항목 합산·신고금액 대사 로직은 신고 프로세스 설정에 따라 확인이 필요합니다
}
group by acdoca.rbukrs, acdoca.gjahr, acdoca.poper, acdoca.mwskz
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · 대사 요약 배너 · IconTabBar(명세) |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로) — 목록은 엔티티셋에 직접 바인딩합니다 |
| 조회조건 | sap.m.Select · sap.m.Input — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조회조건을 조립합니다. 전체를 고른 조건은 필터를 만들지 않습니다 |
| 명세 목록 | sap.ui.table.Table 사용 — cellClick에서 행 컨텍스트로 조정 항목 상세를 별도 조회 |
| 점검결과 표시 | sap.m.ObjectStatus로 판정 상태를 표준 ValueState 로만 표시 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패를 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon, OData 서비스에 연결 |
Component.js | 화면 상태 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.vatrecon · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 대사 요약 배너 · 명세 목록 |
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종 × 11개 기간, 77건(기간 합계 행 포함)을 기준으로 대사식을 전수 검증했습니다.
| 검증 항목 | 결과 |
|---|---|
| 신고금액 − (원장집계금액 + 조정금액) = 차이금액(77건 전수) | 통과(불일치 0건) |
| 조정 항목 합계 = 대사 명세의 조정금액(세목별 58건) | 통과(차이 0) |
| 확인 필요 판정 분포(의도적으로 심어둔 예외 5건 포함) | 정상 68건 · 확인 필요 9건, 최대 차이 128,000원 |
| 조회 조건 전달 — 점검결과=확인 필요로 좁히면 해당 건만 남는지 확인 | 확인 |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 필터 → 행 클릭 상세까지 실동작 후 캡처 | 3/3 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면의 적용 시기·범위는 어떻게 되나요
이 화면은 특정 회계기준의 시행일과 무관한 세무 신고 대사 점검 도구로, 매 신고기간마다 상시 사용할 수 있습니다. 별도의 조기적용·경과규정은 없습니다.
확인 필요로 표시되면 신고에 오류가 있다는 뜻인가요
아닙니다. 원장 집계 금액과 신고 금액 사이에 설명되지 않는 차이가 있다는 뜻이며, 정당한 사유일 수 있습니다. 이 화면은 조회·점검 도구이고 최종 판단은 회사와 감사인이 수행합니다.
세목코드는 어떻게 구성되나요
검증용 샘플 데이터 기준으로 매출 3종·매입 3종을 사용합니다. 실제 적용 시 회사의 세목 코드 체계에 맞게 조정합니다.
조회 결과를 신고서 작성에 바로 쓸 수 있나요
아닙니다. 이 화면은 신고 전 대사·점검을 위한 참고 자료를 제공하며, 공식 신고서 작성은 SAP 표준 신고 프로그램에서 수행합니다.
신고서 제출 전에 원장과의 차이부터 먼저 맞춰보세요
신고 이후에 차이를 발견하면 수정 절차가 번거로워집니다. 화면에서 세목별로 원장과 신고 금액을 미리 대사해 두면 확인이 필요한 건을 신고 전에 먼저 가려낼 수 있습니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.
| 관련 글 | 차이점 |
|---|---|
| SAP 부가세 신고자료 조회·수정 | 집계된 신고자료를 조회·수정하는 화면 — 이 화면은 원장 집계 금액과 신고 금액을 세목별로 대사해 차이를 찾아냅니다 |