SAP 부가세 신고-원장 대사 — 신고서와 세금계정이 같은가
부가세 신고서의 매출세·매입세와 총계정원장 세금계정 잔액을 세목별로 맞춰, 차이가 난 세목을 결산 전에 찾아내는 화면입니다.
부가세 신고서는 세무서로 나가고, 세금계정 잔액은 재무제표에 남습니다. 이 둘이 다르면 어느 쪽이 틀렸는지를 신고 전에 밝혀야 합니다.
차이는 대개 세금코드가 잘못 붙은 전표나, 세금 라인 없이 직접 전기한 건에서 생깁니다. 표준 세금 라인과 원장 구조를 그대로 이어받아 세목 단위로 대사하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 세금코드 —
TaxCode와 세목 텍스트로 매출세·매입세 구분 - 세금계정 — 세금코드에 연결된 GL 계정(
GlAccount)과 명칭 - 과세표준과 세액 — 신고 기준 금액과 세율(
TaxRate) - 원장 잔액 — 세금계정의 총계정원장 잔액(
GLTaxAmount) - 기간 — 회계연도와 기간 단위 집계
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 세무 · 결산 마감 |
| Namespace | zui5.taxrecon |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 세목별 대사, 행 선택 시 전표 목록 |
| 화면 수 | 조회 화면 1개 + 전표 상세 |
| 데이터 | 원장 세금 64건 · 신고 세액 64건 |
| 성격 | 조회형(Read-Only) — 전기와 신고는 표준 절차가 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·회계연도·기간으로 조회하면 세목별 신고 세액과 원장 잔액이 나란히 나옵니다 → 차이가 있는 세목을 가려내고 → 행을 눌러 그 세목의 전표를 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도·기간을 고릅니다. 신고 기간 단위로 보는 것이 일반적입니다.
- 세금코드로 특정 세목만 볼 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 차이 열이 0이 아닌 세목부터 봅니다.
- 전표 건수가 함께 표시되므로 몇 건을 확인해야 하는지 미리 알 수 있습니다.
- 행을 선택하면 전표 목록이 열립니다. 차이 사유를 기록해 둘 수 있습니다.
- 결과는 CSV 다운로드로 내려받아 신고 조서에 첨부합니다.
대사 산식
같은 세액을 신고 기준과 원장 기준으로 각각 구해 비교합니다.
신고 세액 = 과세표준 × 세율
원장 잔액(GLTaxAmount) = 세금계정의 기간 잔액
차이 = 신고 세액 − 원장 잔액
차이 = 0 → 일치
차이 ≠ 0 → 세금코드 오류 · 직접 전기 · 기간 귀속 확인
세목 구분 O 매출세 (예수금)
I 매입세 (대급금)
세목 단위로 나눠 보는 이유
매출세와 매입세를 합쳐 순액으로만 보면 양쪽이 같은 금액으로 틀렸을 때 차이가 0으로 나옵니다. 세목별로 나누면 그런 상쇄가 사라지고, 표준세율·영세율·면세 중 어디서 어긋났는지까지 좁혀집니다.
차이가 생기는 네 가지 경로
| 경로 | 상황 | 확인 방법 |
|---|---|---|
| 세금코드 오류 | 거래에 맞지 않는 세금코드 적용 | 전표별 세금코드 확인 |
| 직접 전기 | 세금 라인 없이 세금계정에 직접 전기 | 해당 전표 식별 |
| 기간 귀속 차이 | 신고 기간과 전기 기간이 다름 | 기간 이동 건 확인 |
| 수정 신고 미반영 | 수정 사항이 원장에만 반영 | 수정 내역 대조 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
회계연도 Gjahr | 필수 | 신고 연도 |
기간 Monat | 필수 | 신고 기간 |
세금코드 TaxCode | 선택 | 특정 세목만 |
세목 구분 TaxType | 선택 | 매출세 / 매입세 |
| 상태 | 선택 | 전체 / 차이 발생만 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
세금코드 TaxCode · TaxCodeText | 세목 코드와 명칭 |
세목 구분 TaxType | 매출세(O) / 매입세(I) |
세율 TaxRate | 적용 세율 |
세금계정 GlAccount · GlAccountText | 예수금 · 대급금 계정 |
과세표준 ReturnBase | 신고 기준 금액 |
| 신고 세액 | 과세표준 × 세율 |
원장 잔액 GLTaxAmount | 세금계정 잔액 |
| 차이 | 신고 − 원장. 0이 아니면 경고 색 |
전표 건수 DocCount | 해당 세목 전표 수 |
차이 사유 VarianceReason | 담당자 기록 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
S_ALR_87012357 | 부가세 신고 리포트 | 신고 세액과 원장 잔액을 나란히 대사 |
F.12 | 세금 명세 | 세목별 차이와 전표 건수를 함께 표시 |
BSET | 전표 세금 라인 — 과세표준 · 세액 | 신고 세액 원천 |
ACDOCA · FAGLFLEXA | 세금계정 잔액 | 원장 잔액 원천 |
T007A · T007S | 세금코드와 텍스트 | 세목 명칭과 세율 |
도입 시 확인이 필요한 부분
세금코드와 세금계정의 매핑이 1:1이 아닐 수 있습니다. 여러 세금코드가 한 계정을 쓰면 계정 단위 잔액을 세목별로 쪼갤 수 없으므로, 대사 단위를 계정 기준으로 볼지 세금코드 기준으로 볼지 정해야 합니다. 해외 사업장이 있으면 국가별 세금 체계도 함께 고려합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCTAXRECON'
@EndUserText.label: '부가세 신고-원장 대사 (Z)'
define view Z_C_TAX_RECONCILIATION
as select from bset as TaxLine
inner join bkpf as Header on TaxLine.bukrs = Header.bukrs
and TaxLine.belnr = Header.belnr
and TaxLine.gjahr = Header.gjahr
left outer join t007s as TaxText on TaxLine.mwskz = TaxText.mwskz
and TaxText.spras = 'K'
{
key TaxLine.bukrs,
key TaxLine.gjahr,
key Header.monat as Monat,
key TaxLine.mwskz as TaxCode,
TaxText.text1 as TaxCodeText,
TaxLine.hkont as GlAccount,
sum( TaxLine.hwbas ) as ReturnBase,
sum( TaxLine.hwste ) as ReturnTax,
count( distinct TaxLine.belnr ) as DocCount
// 원장 잔액은 ACDOCA 세금계정 집계 뷰와 조인해 차이를 계산
}
group by TaxLine.bukrs, TaxLine.gjahr, Header.monat,
TaxLine.mwskz, TaxText.text1, TaxLine.hkont
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 대사 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 대사 테이블 | sap.m.Table — 신고·원장·차이를 인접 배치 |
| 차이 표시 | sap.m.ObjectStatus — 일치 / 차이 발생 |
| 상세 화면 | sap.m.Dialog — 세목별 전표 목록 |
차이 사유를 기록란으로 둔 이유
모든 차이가 오류는 아닙니다. 기간 귀속 때문에 생긴 정당한 차이도 있고, 다음 기에 자동으로 해소됩니다. 사유를 적어 두면 다음 달에 같은 차이를 다시 조사하지 않게 되고, 감사에서 설명 자료가 됩니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.taxrecon) · ko 로케일 |
view/Main.view.xml | 조회조건과 대사 테이블 |
controller/Main.controller.js | 조회 · 차이 계산 · 전표 상세 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 세율 · 차이 상태 색 포맷터 |
localdata/gltax.json | 원장 세금 64건 |
localdata/taxreturn.json | 신고 세액 64건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 신고 세액 = 과세표준 × 세율 (전 건) | 통과 |
| 차이 = 신고 세액 − 원장 잔액 | 통과 |
| 전표 건수 = 상세 목록 건수 | 통과 |
| 세목 구분과 세금계정 성격 정합 (매출세↔예수금) | 통과 |
| 세금코드가 있으면 명칭·세율도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 상세 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
차이가 나면 신고를 미뤄야 하나요?
아닙니다. 원인이 기간 귀속이면 신고는 그대로 하고 원장 쪽에서 다음 기에 해소됩니다. 다만 세금코드 오류라면 전표를 고친 뒤 신고해야 하므로 원인 구분이 먼저입니다.
세금 라인 없이 직접 전기한 건은 어떻게 찾나요?
원장 잔액에는 잡히는데 신고 세액에는 없는 금액이 그것입니다. 세목별 차이가 원장 쪽으로 크게 나면 해당 계정의 전표를 세금 라인 유무로 걸러 확인합니다.
매출세와 매입세를 함께 보나요?
한 화면에서 보되 세목별로 행이 나뉩니다. 순액으로 합치면 양쪽 오류가 상쇄돼 보이지 않으므로 반드시 나눠서 대사합니다.
SAP 표준 기능과 어떻게 이어지나요?
세금 라인은 전기 시 표준이 자동으로 만들고 신고 리포트도 표준이 제공합니다. 이 화면은 그 신고 세액과 세금계정 원장 잔액을 세목 단위로 맞춰, 신고 전에 차이를 찾아내는 확장입니다.