SAP 원천징수세 신고 현황 — 떼었으면 기한 안에 내야 한다
소득구분별 원천징수 대상 지급 건의 소득세·지방소득세·차인지급액을 조회하고, 신고기한이 지난 미신고 건을 가려내는 화면입니다.
원천징수는 남의 세금을 대신 떼어 두는 일입니다. 떼는 순간 우리 돈이 아니라 예수금이 되고, 다음 달 10일까지 납부해야 합니다.
기한을 넘기면 가산세가 붙는데, 지급 건이 여기저기 흩어져 있으면 누락이 생깁니다. 표준 원천징수 구조를 그대로 이어받아 귀속월과 소득구분으로 모아 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 소득구분 — 사업소득 · 기타소득 등 표준 소득 유형(
IncomeType) - 귀속월 — 지급 기준 귀속 연월(
Zzim) - 금액 — 지급총액(
GrossAmount) · 비과세(ExemptAmount) · 과세표준(TaxableAmount) - 세율 — 소득세율(
IncomeTaxRate)과 지방소득세 - 지급처 — 공급업체 코드(
Lifnr)와 명칭
| 항목 | 내용 |
|---|---|
| 대응 T-code | S_ALR_87012143 |
| 업무 영역 | 재무회계(FI) · 원천세 신고 |
| Namespace | zui5.wht |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 원천징수 내역, 행 선택 시 상세 |
| 화면 수 | 조회 화면 1개 + 상세 |
| 데이터 | 원천징수 79건 · 지급처 15건 |
| 성격 | 조회형(Read-Only) — 전기와 신고는 표준·외부 절차가 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·귀속월·소득구분으로 조회하면 원천징수 대상 건이 모입니다 → 소득구분별 세액 합계를 확인하고 → 신고기한이 지난 미신고 건을 가려냅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도·귀속월을 고릅니다. 귀속월이 신고 단위입니다.
- 소득구분으로 사업소득·기타소득 등을 나눕니다. 신고 서식이 구분별로 다릅니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 소득구분별 합계를 신고서 항목과 대조합니다.
- 신고기한 경과 건이 있으면 즉시 처리합니다. 가산세 대상입니다.
- 행을 선택하면 세액 계산 근거가 열립니다.
- 결과는 CSV 다운로드로 내려받아 신고 자료로 씁니다.
세액 산식
과세표준을 구하고 두 세금을 차례로 계산합니다.
과세표준 = 지급총액(GrossAmount) − 비과세(ExemptAmount) − 필요경비
소득세 = 과세표준 × 소득세율(IncomeTaxRate)
지방소득세 = 소득세 × 10%
차인지급액 = 지급총액 − 소득세 − 지방소득세
예: 사업소득 3% → 소득세 3% + 지방소득세 0.3% = 총 3.3%
신고기한 = 귀속월 다음 달 10일
기한 경과 · 미신고 → 가산세 위험
지방소득세를 따로 계산하는 이유
지방소득세는 소득세의 10%로 정해지지만 납부처가 다릅니다. 국세는 세무서, 지방세는 지자체입니다. 합쳐서 3.3%로만 관리하면 납부 단계에서 다시 쪼개야 하므로, 처음부터 두 금액을 나눠 둡니다.
소득구분과 세율
| 소득구분 | 대상 | 세율(소득세 + 지방소득세) |
|---|---|---|
| 사업소득(인적용역) | 프리랜서 · 강사 등 | 3% + 0.3% |
| 기타소득 | 일시적 원고료 · 사례금 등 | 필요경비 차감 후 20% + 2% |
| 이자소득 | 비영업대금 이익 등 | 25% + 2.5% |
| 비거주자 소득 | 국내원천소득 | 조세조약에 따라 상이 |
세율은 세법 개정에 따라 달라지므로 설정으로 관리합니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
회계연도 Gjahr | 필수 | 귀속 연도 |
귀속월 Monat | 필수 | 신고 단위 월 |
소득구분 IncomeType | 선택 | 사업소득 · 기타소득 등 |
지급처 Lifnr | 선택 | 공급업체 코드·명칭 |
| 상태 | 선택 | 전체 / 미신고만 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
귀속월 Zzim | 신고 단위 연월 |
전표번호 Belnr · 지급일 Budat | 근거 전표 |
지급처 Lifnr · Name1 | 코드와 명칭 |
소득구분 IncomeType · IncomeTypeText | 사업소득 등 |
지급총액 GrossAmount | 원천징수 전 금액 |
비과세 ExemptAmount | 과세 제외분 |
필요경비율 ExpenseRate | 기타소득 등에 적용 |
과세표준 TaxableAmount | 세액 계산 기준 |
소득세율 IncomeTaxRate | 적용 세율 |
| 소득세 · 지방소득세 | 국세와 지방세 |
| 차인지급액 | 실제 지급액 |
| 신고 상태 | 신고완료 / 미신고. 기한 경과 시 경고 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
S_ALR_87012143 | 원천세 리포트 | 귀속월·소득구분별 집계와 기한 판정 |
WITH_ITEM | 원천징수 항목 | 세액 원천 |
BSEG · BKPF | 전표 라인과 헤더 | 지급 건 정보 |
LFA1 | 공급업체 마스터 | 지급처 명칭 |
T059Z | 원천세 코드 · 세율 설정 | 세율 원천 |
도입 시 확인이 필요한 부분
소득구분과 원천세 코드의 매핑이 회사마다 다릅니다. 또 반기별 납부 특례를 적용하면 신고기한이 달라지므로 기한 판정 로직에 반영해야 합니다. 비거주자 지급은 조세조약에 따라 세율이 달라져 별도 처리가 필요합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCWHT'
@EndUserText.label: '원천징수 신고 현황 (Z)'
define view Z_C_WITHHOLDING_TAX
as select from with_item as Wht
inner join bkpf as Header on Wht.bukrs = Header.bukrs
and Wht.belnr = Header.belnr
and Wht.gjahr = Header.gjahr
left outer join lfa1 as Vendor on Header.lifnr = Vendor.lifnr
{
key Wht.bukrs, key Wht.gjahr, key Wht.belnr, key Wht.buzei,
Header.budat as PaymentDate,
Header.monat as Monat,
Header.lifnr,
Vendor.name1 as Name1,
Wht.witht as IncomeType,
Wht.wt_qsshb as GrossAmount,
Wht.wt_qbshb as TaxableAmount,
Wht.wt_qbshh as WhtAmount
// 지방소득세 = 소득세 × 10%, 차인지급액 = 지급총액 − 세액 합
// 신고기한 = 귀속월 다음 달 10일 (소비 뷰에서 계산)
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
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.wht) · ko 로케일 |
view/Main.view.xml | 조회조건과 원천징수 테이블 |
controller/Main.controller.js | 조회 · 세액 계산 · 기한 판정 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 세율 · 상태 색 포맷터 |
localdata/wht.json | 원천징수 79건 |
localdata/vendors.json | 지급처 15건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 과세표준 = 지급총액 − 비과세 − 필요경비 (전 건) | 통과 |
| 소득세 = 과세표준 × 소득세율 | 통과 |
| 지방소득세 = 소득세 × 10% | 통과 |
| 차인지급액 = 지급총액 − 소득세 − 지방소득세 | 통과 |
| 소득구분 코드와 텍스트·세율 정합 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 상세 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
신고기한은 언제인가요?
원칙적으로 지급한 달의 다음 달 10일입니다. 반기별 납부 특례를 신청한 소규모 사업자는 1월과 7월에 반기분을 한 번에 납부합니다.
기타소득의 필요경비는 어떻게 잡나요?
소득 유형에 따라 법정 필요경비율이 정해져 있습니다. 강연료나 원고료는 일정 비율을 경비로 인정해 과세표준을 줄이므로, 세율만 적용하면 세액이 과대 계산됩니다.
지방소득세는 어디에 내나요?
지자체입니다. 소득세는 세무서에 내므로 납부처가 나뉩니다. 금액을 처음부터 나눠 관리해야 납부 단계에서 다시 계산하지 않습니다.
SAP 표준 기능과 어떻게 이어지나요?
원천징수 항목은 지급 전기 시 표준이 만들고 리포트도 제공합니다. 이 화면은 그 항목을 귀속월과 소득구분으로 모으고 신고기한 판정을 얹어, 누락과 지연을 먼저 보여 주는 확장입니다.