SAP 원천징수세 내역 조회 — 영수증까지 발급됐는가
원천징수 유형별 지급 건의 세액을 조회하고, 신고 여부와 원천징수영수증 발급 여부를 함께 점검하는 화면입니다.
원천징수는 세금을 떼고 내는 것으로 끝나지 않습니다. 소득을 받은 사람에게 원천징수영수증을 발급해야 그 사람이 종합소득세 신고를 할 수 있습니다.
신고는 했는데 영수증을 안 보낸 경우가 생각보다 많고, 연말에 문의가 몰립니다. 표준 원천징수 항목 구조를 그대로 이어받아 신고와 발급 두 상태를 함께 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 원천징수 유형 — 표준 유형 코드(
WithholdingType)와 텍스트 - 세율 — 유형별 적용 세율(
TaxRate) - 금액 — 기준금액(
BaseAmount) · 원천세액(WTAmount) · 실지급액(NetAmount) - 전표 — 전표번호 · 라인 · 지급일(
PaymentDate) - 지급처 — 공급업체 코드(
Lifnr)와 명칭
| 항목 | 내용 |
|---|---|
| 대응 T-code | S_P00_07000134 (Generic Withholding Tax Reporting) |
| 업무 영역 | 재무회계(FI) · 원천세 관리 |
| Namespace | zui5.wtax |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 원천세 내역, 행 선택 시 상세 |
| 화면 수 | 조회 화면 1개 + 상세 |
| 데이터 | 원천세 46건 · 지급처 12건 |
| 성격 | 조회형(Read-Only) — 전기와 발급은 표준·외부 절차가 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·원천징수유형·기간으로 조회하면 지급 건이 세액과 함께 나옵니다 → 신고 여부와 영수증 발급 여부를 확인하고 → 누락된 건을 처리합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 기간을 고릅니다.
- 원천징수유형으로 사업소득·기타소득·이자소득 등을 나눕니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 신고 여부가 미신고인 건을 먼저 처리합니다.
- 영수증 발급이 안 된 건을 확인합니다. 신고와 별개 절차입니다.
- 행을 선택하면 신고일과 발급 정보가 열립니다.
- 결과는 CSV 다운로드로 내려받습니다.
세액 산식과 두 상태
계산은 간단하고, 관리할 것은 두 가지 상태입니다.
원천세액(WTAmount) = 기준금액(BaseAmount) × 세율(TaxRate)
실지급액(NetAmount) = 기준금액 − 원천세액
신고 여부(Filed) → 세무서 신고 완료 여부
영수증 발급 여부 → 소득자에게 교부 완료 여부
둘은 독립적 — 신고했어도 발급이 안 됐을 수 있음
두 상태를 따로 두는 이유
신고는 우리 의무이고 발급은 소득자를 위한 의무입니다. 신고만 챙기면 연말정산이나 종합소득세 신고철에 영수증 요청이 몰려 한꺼번에 처리하게 됩니다. 두 열을 나란히 두면 지급 시점에 둘 다 마무리하는 습관이 생깁니다.
원천징수 유형별 특징
| 유형 | 대상 | 세율 | 주의점 |
|---|---|---|---|
| 사업소득 | 인적용역 대가 | 3.3% | 가장 빈번 |
| 기타소득 | 일시적 소득 | 필요경비 차감 후 | 경비율 확인 필요 |
| 이자소득 | 비영업대금 이익 | 27.5% | 세율이 높음 |
| 비거주자 소득 | 국내원천소득 | 조세조약 적용 | 제한세율 확인 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
기간 PaymentDate | 필수 | 지급일 From~To |
원천징수유형 WithholdingType | 선택 | 사업소득 · 기타소득 등 |
지급처 Lifnr | 선택 | 공급업체 코드·명칭 |
신고 여부 Filed | 선택 | 신고완료 / 미신고 |
| 영수증 발급 | 선택 | 발급완료 / 미발급 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
전표번호 Belnr · 라인 Buzei · 연도 Gjahr | 근거 전표 |
지급일 PaymentDate | 원천징수 시점 |
지급처 Lifnr · Name1 | 코드와 명칭 |
원천징수유형 WithholdingType · WithholdingTypeText | 사업소득 등 |
세율 TaxRate | 적용 세율(%) |
기준금액 BaseAmount | 세액 계산 기준 |
원천세액 WTAmount | 기준금액 × 세율 |
실지급액 NetAmount | 기준금액 − 세액 |
통화 Currency | 지급 통화 |
신고 여부 Filed · 신고일 FilingDate | 세무서 신고 상태 |
| 영수증 발급 여부 | 소득자 교부 상태 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
S_P00_07000134 | Generic Withholding Tax Reporting | 신고와 발급 상태를 함께 관리 |
WITH_ITEM | 원천징수 항목 | 세액 원천 |
BSEG · BKPF | 전표 라인과 헤더 | 지급 건 정보 |
LFA1 | 공급업체 마스터 | 지급처 명칭 |
T059P · T059Z | 원천세 유형 · 코드 설정 | 유형과 세율 |
도입 시 확인이 필요한 부분
영수증 발급 상태는 표준에 저장 필드가 없습니다. 발급 시스템과 연계하거나 별도 관리 테이블이 필요하므로 어디에 기록할지 먼저 정해야 합니다. 비거주자 지급은 조세조약 제한세율이 적용돼 거주지국 확인 서류가 있어야 하므로 별도 관리 항목이 붙습니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCWTAX'
@EndUserText.label: '원천세 내역 조회 (Z)'
define view Z_C_WITHHOLDING_DETAIL
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
left outer join t059p as WhtType on Wht.witht = WhtType.witht
{
key Wht.bukrs, key Wht.gjahr, key Wht.belnr, key Wht.buzei,
Header.budat as PaymentDate,
Header.lifnr,
Vendor.name1 as Name1,
Wht.witht as WithholdingType,
Wht.wt_qbshb as BaseAmount,
Wht.wt_qbshh as WTAmount,
Header.waers as Currency
// 실지급액 = 기준금액 − 세액
// 신고·발급 상태는 별도 관리 테이블과 조인
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
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.wtax) · ko 로케일 |
view/Main.view.xml | 조회조건과 원천세 테이블 |
controller/Main.controller.js | 조회 · 세액 검증 · 상태 판정 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 세율 · 상태 색 포맷터 |
localdata/wtax.json | 원천세 46건 |
localdata/vendorlist.json | 지급처 12건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 원천세액 = 기준금액 × 세율 (전 건) | 통과 |
| 실지급액 = 기준금액 − 원천세액 | 통과 |
| 신고완료 건은 신고일 존재 | 통과 |
| 원천징수유형 코드와 텍스트·세율 정합 | 통과 |
| 지급처 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 상세 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
영수증은 언제까지 발급해야 하나요?
소득 유형에 따라 다르지만 사업소득은 다음 해 2월 말까지가 일반적입니다. 다만 소득자가 요청하면 즉시 발급해야 하므로 지급 시점에 처리해 두는 편이 좋습니다.
신고했는데 영수증이 미발급이면 문제인가요?
세무서 의무는 이행했지만 소득자 의무는 남아 있습니다. 소득자가 종합소득세 신고를 못 하게 되므로 민원으로 돌아옵니다.
비거주자 지급은 무엇이 다른가요?
조세조약에 따라 제한세율이 적용될 수 있습니다. 거주자증명서 같은 서류가 있어야 낮은 세율을 적용할 수 있어, 서류 수령 여부를 별도로 관리해야 합니다.
SAP 표준 기능과 어떻게 이어지나요?
원천징수 항목과 리포트는 표준이 제공합니다. 이 화면은 그 항목에 신고와 발급이라는 두 상태를 붙여, 세무서 의무와 소득자 의무를 함께 관리하게 하는 확장입니다.