SAP 부가세 신고자료 조회 — 신고 기간별로 제출 상태를 관리하기
예정·확정 신고 기간별로 매출세액과 매입세액을 집계하고, 신고 기한과 제출 상태를 함께 관리하는 화면입니다.
부가세는 기간이 정해진 업무입니다. 1기 예정·1기 확정·2기 예정·2기 확정으로 나뉘고, 각각 기한이 지나면 가산세가 붙습니다.
그래서 필요한 것은 세액 숫자만이 아니라 어느 기간이 어디까지 진행됐는가입니다. 표준 부가세 구조를 그대로 이어받아 기간별 세액과 제출 상태를 함께 관리하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 신고 기간 — 예정·확정 구분(
taxPeriod)과 대상 월 범위 - 신고 기한 — 법정 기한(
dueDate) - 제출 상태 — 예정신고 · 확정신고 등 진행 상태(
submitStatus) - 세액 항목 — 매출세액과 매입세액을 구성하는 항목별 금액
- 회사코드 — 신고 주체(
bukrs)와 명칭
| 항목 | 내용 |
|---|---|
| 대응 T-code | S_ALR_87012357 (부가세 신고 리포트) |
| 업무 영역 | 재무회계(FI) · 세무 신고 |
| Namespace | zui5.vat |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 신고 기간 목록과 항목 내역 |
| 화면 수 | 조회 화면 1개 |
| 데이터 | 신고 기간 5건 (항목 포함) |
| 성격 | 조회형(Read-Only) — 전기와 실제 신고는 표준·외부 절차가 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 1종 둘러보기
회사코드·회계연도로 조회하면 신고 기간별 현황이 나옵니다 → 기한과 제출 상태를 확인하고 → 기간을 골라 매출세액·매입세액 항목 내역을 검토합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도를 고릅니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 신고 기한이 임박한 기간부터 확인합니다.
- 제출 상태로 어느 기간이 마무리됐는지 봅니다.
- 기간을 선택하면 매출세액·매입세액 항목 내역이 펼쳐집니다.
- 납부세액이 음수면 환급 대상입니다.
- 결과는 CSV 다운로드로 내려받아 신고 자료로 씁니다.
납부세액 산식
부가세는 뺄셈 하나로 정해집니다.
납부세액 = 매출세액 − 매입세액
납부세액 > 0 → 납부 대상
납부세액 < 0 → 환급 대상
기한 판정 신고 기한 − 오늘
기한 경과 → 가산세 위험
기한 임박 → 준비 착수
기간 단위로 묶어 보는 이유
부가세는 월별로 흘러가지만 신고는 분기 단위로 끊깁니다. 월별 집계만 있으면 신고 단위로 다시 합산해야 하고, 그 과정에서 기간 귀속이 어긋나기 쉽습니다. 처음부터 신고 기간을 단위로 두면 그 합산이 필요 없어집니다.
신고 기간 4구간
| 기간 | 대상 월 | 법정 기한 |
|---|---|---|
| 1기 예정 | 1~3월 | 4월 25일 |
| 1기 확정 | 4~6월 | 7월 25일 |
| 2기 예정 | 7~9월 | 10월 25일 |
| 2기 확정 | 10~12월 | 다음 해 1월 25일 |
법인은 예정 신고도 의무입니다. 기한은 법령 변경에 따라 달라질 수 있어 설정으로 관리합니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 bukrs | 필수 | 신고 주체 |
회계연도 gjahr | 필수 | 신고 연도 |
신고 기간 taxPeriod | 선택 | 1기 예정 · 1기 확정 등 |
제출 상태 submitStatus | 선택 | 미신고 / 신고완료 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
회사코드 bukrs · bukrsText | 신고 주체 |
회계연도 gjahr | 대상 연도 |
신고 기간 taxPeriod · taxPeriodText | 1기 예정(1~3월) 등 |
신고 기한 dueDate | 법정 기한. 임박 시 상태 색 |
제출 상태 submitStatus | 예정신고 · 확정신고 등 |
| 매출세액 | 기간 내 매출세 합계 |
| 매입세액 | 기간 내 매입세 합계 |
| 납부세액 | 매출세액 − 매입세액. 음수면 환급 |
항목 내역 items | 세액을 구성하는 세부 항목 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
S_ALR_87012357 | 부가세 신고 리포트 | 신고 기간과 제출 상태를 함께 관리 |
F.12 | 세금 명세 | 항목별 내역으로 드릴다운 |
BSET | 전표 세금 라인 | 세액 집계 원천 |
T007A | 세금코드 설정 | 매출·매입 구분과 세율 |
T001 | 회사코드 마스터 | 신고 주체 정보 |
도입 시 확인이 필요한 부분
사업장이 여러 개면 사업장 단위 신고인지 총괄 납부인지에 따라 집계 단위가 달라집니다. 또 제출 상태는 표준에 저장 필드가 없어 별도 관리가 필요하므로, 어디에 기록할지 정해야 이 화면이 실제 진행 상태를 반영합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCVATRETURN'
@EndUserText.label: '부가세 신고 기간별 집계 (Z)'
define view Z_C_VAT_RETURN
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
{
key TaxLine.bukrs,
key TaxLine.gjahr,
// 신고 기간 = 전기 월을 분기 단위로 묶음
key case when Header.monat <= '03' then '11'
when Header.monat <= '06' then '12'
when Header.monat <= '09' then '21'
else '22' end as TaxPeriod,
sum( case when TaxLine.shkzg = 'H' then TaxLine.hwste else 0 end ) as OutputTax,
sum( case when TaxLine.shkzg = 'S' then TaxLine.hwste else 0 end ) as InputTax
// 납부세액 = 매출세액 − 매입세액 (소비 뷰에서 계산)
// 신고 기한과 제출 상태는 별도 관리 테이블과 조인
}
group by TaxLine.bukrs, TaxLine.gjahr, Header.monat
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 기간 목록 · 항목 내역 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 기간 목록 | sap.m.Table — 기한과 상태를 앞쪽에 배치 |
| 상태 표시 | sap.m.ObjectStatus — 기한 임박 · 제출 상태 |
| 항목 내역 | 기간 선택 시 하단 테이블에 펼침 |
기한을 앞쪽 열에 둔 이유
세액 금액은 나중에 확인해도 되지만 기한은 놓치면 가산세로 이어집니다. 기한과 상태를 왼쪽에 두면 화면을 여는 순간 급한 기간이 먼저 눈에 들어오고, 금액 검토는 그다음 순서가 됩니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.vat) · ko 로케일 |
view/Main.view.xml | 조회조건 · 기간 목록 · 항목 내역 |
controller/Main.controller.js | 조회 · 납부세액 계산 · 기한 판정 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 일자 · 상태 색 포맷터 |
localdata/vat.json | 신고 기간 5건 (항목 포함) |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 납부세액 = 매출세액 − 매입세액 (전 기간) | 통과 |
| 매출세액·매입세액 = 항목 내역 합계 | 통과 |
| 신고 기간과 대상 월 범위 정합 | 통과 |
| 신고 기한이 기간 종료일 이후 | 통과 |
| 회사코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 후 캡처 | 통과 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
예정 신고도 꼭 해야 하나요?
법인은 원칙적으로 의무입니다. 개인사업자는 직전 과세기간 실적에 따라 고지 납부로 갈음하기도 하므로 사업 형태에 맞춰 대상을 정합니다.
납부세액이 음수면 어떻게 되나요?
환급 대상입니다. 매입이 매출보다 많은 기간, 예를 들어 대규모 설비 투자를 한 기간에 발생합니다. 환급 절차와 시기가 따로 있으므로 별도 관리가 필요합니다.
제출 상태는 어디서 관리하나요?
표준에는 저장 필드가 없어 별도 테이블이나 연계 시스템에서 관리합니다. 신고 자체가 외부 시스템에서 이뤄지므로 그 결과를 받아 상태로 반영하는 구조가 일반적입니다.
SAP 표준 기능과 어떻게 이어지나요?
세액 집계는 표준 전기와 신고 리포트가 담당합니다. 이 화면은 그 결과를 신고 기간 단위로 묶고 기한·제출 상태를 함께 관리해, 놓치는 기간이 없게 하는 확장입니다.