솔루션 홈
세무

SAP 원천세 집계 — 전표를 신고데이터로 바꾸기

월별 원천세 전표를 읽어 Section Code 와 집계코드 단위로 요약하고, 전표 단위 상세까지 내려가는 화면입니다.

원천세 신고는 전표를 그대로 내는 것이 아닙니다. 소득 종류별로 묶고 사업장별로 나눠 인원과 과세표준과 세액으로 요약해야 합니다.

이 집계를 손으로 하면 실수가 나고 재현도 어렵습니다. 전표를 읽어 집계하고 그 결과에서 다시 전표로 내려갈 수 있어야 검증이 됩니다. 사양서 레이아웃을 그대로 담아 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.

SAP 표준 기능을 그대로 이어받은 부분

  • 전표 — 헤더(BKPF)와 라인(BSEG)의 전기일자와 거래처
  • 원천세 항목 — 소득세·주민세 코드와 과세표준·세액(WITH_ITEM)
  • Section Code — 사업장 단위 신고 구분(SECCODET)
  • 집계코드 — 소득 종류별 집계 기준(ZTFIE0030)과 매핑(ZTFIE0040)
  • 신고 자료 — 상세(ZTFIE0050)와 요약(ZTFIE0060)
항목내용
업무 영역재무회계(FI) · 일반회계 · 원천세 신고
Namespacezui5.whtagg
셸 구조조회조건 영역(우측 조회) + 요약 테이블 + 전표 상세
화면 수조회 화면 1개 + 상세
데이터상세 112건 · 요약 15건
성격집계·처리형 — 처리 방식에 따라 덮어쓰기·삭제 후 집계
UI 테마sap_horizon 단일 적용

실제 화면 3종 둘러보기

회사코드·회계연도·신고월·처리 방식으로 실행하면 요약이 나옵니다 → Section Code 와 집계코드별 인원·세액을 확인하고 → 라인을 선택해 전표 단위로 내려갑니다.

아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.

Main.view.xml
요약과 총계
요약과 총계 — Section Code · Section Code명 · 집계코드 · 집계코드명 · 인원 · 소득세과세표준 · 소득세액 · 주민세과세표준 · 주민세액이 표시되고 총계 라인이 붙습니다.
전표 상세
요약 선택 시 상세
요약 선택 시 상세 — 회계연도 · 전표번호 · ITEM No. · 거래처 · 소득세코드/명 · 과세표준 · 세액 · 주민세코드/명 · 과세표준 · 세액이 표시됩니다. 전표를 클릭하면 회계전표 조회로 이어집니다.
집계 실행
Transfer & Overwrite
Transfer & Overwrite — 처리 방식을 고르고 실행하면 스캔·삭제·반영 건수가 함께 표시됩니다.

조작 방법

  1. 회사코드는 사양서에 따라 변경 불가입니다.
  2. 회계연도·신고월을 넣습니다. 기본값은 전월 연도·전월입니다.
  3. Section Code 로 사업장 단위 조건을 걸 수 있습니다.
  4. 처리 방식을 고릅니다. Display / Transfer & Overwrite / Delete & Transfer 중 선택합니다.
  5. 조회 버튼은 조회조건 영역 오른쪽 끝에 있고, 입력필드에서 Enter 로도 조회됩니다.
  6. 요약에서 인원과 세액을 확인하고 총계를 신고 서식과 대조합니다.
  7. 라인을 선택하면 전표 단위 상세가 열립니다.
  8. 전표번호를 클릭하면 회계전표 조회로 이어집니다.

처리 방식과 집계 규칙

실행 방식에 따라 기존 자료를 어떻게 다룰지가 달라집니다.

Display              이미 집계된 신고자료(요약)를 조회만
Transfer & Overwrite 전표를 다시 읽어 집계하고 상세·요약에 덮어씀
Delete & Transfer    해당 월 자료를 삭제한 뒤 다시 집계

집계 대상 = 전표 헤더 ⋈ 원천세 라인, 취소전표 제외
           전기일자가 신고월 1일 ~ 말일

인원         = 원천징수 대상 거래처 수
주민세과세표준 = 소득세액
주민세액      = 소득세액 × 10%

주민세 과세표준이 소득세액인 이유

지방소득세는 소득에 직접 매기는 것이 아니라 소득세액의 10%로 계산합니다. 그래서 주민세 입장에서는 소득세액이 과세표준이 됩니다. 이 구조를 모르면 소득 금액에 10%를 매기는 실수가 나옵니다.

원천세 집계코드

집계코드집계코드명소득세코드세율
A근로소득K1 근로소득 간이세액6.0%
B기타소득K3 기타소득 20%20.0%
Z3사업소득K5 사업소득 3%3.0%
Z4이자소득K7 이자소득 14%14.0%
Z5비거주자K9 비거주자 20%20.0%

조회조건

필드필수설명
회사코드필수사양서에 따라 변경 불가(읽기 전용)
회계연도 / 신고월필수기본값 전월 연도·전월
Section Code선택사업장 단위 조건
처리 방식필수Display / Transfer & Overwrite / Delete & Transfer

결과 컬럼

요약

컬럼의미
Section Code · Section Code명사업장 단위
집계코드 · 집계코드명소득 종류
인원원천징수 대상 거래처 수
소득세과세표준 · 소득세액국세 부분
주민세과세표준 · 주민세액지방세 부분
총계 라인전체 합계

상세

컬럼의미
회계연도 · 전표번호 · ITEM No.전표 식별
거래처지급 상대
소득세코드 / 명적용 코드
소득세 과세표준 · 세액국세 산출
주민세코드 / 명지방세 코드
주민세 과세표준 · 세액지방세 산출

SAP 표준 기능 매핑

표준역할이 화면에서의 확장
WITH_ITEM원천징수 항목집계 원천
BKPF · BSEG전표 헤더와 라인전기일자·거래처
SECCODETSection Code 텍스트사업장 명칭
ZTFIE0030 · ZTFIE0040집계코드와 매핑소득 종류 분류
ZTFIE0050 · ZTFIE0060신고 상세와 요약집계 결과 저장
FB03전표 조회상세에서 연계

도입 시 확인이 필요한 부분

집계코드와 소득세코드의 매핑이 세법 개정에 따라 바뀝니다. 세율이 달라지거나 소득 구분이 추가되면 매핑 테이블을 갱신해야 합니다. 또 Transfer 계열 처리는 기존 자료를 덮어쓰므로 실행 권한을 제한해야 합니다.

참고 CDS 뷰

@AbapCatalog.sqlViewName: 'ZCWHTAGG'
@EndUserText.label: '원천세 집계 (Z)'
define view Z_C_WHT_AGGREGATION
  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 seccodet as Sec on Header.secco = Sec.secco
                                   and Sec.spras = 'K'
{
  key Header.bukrs,
  key Header.gjahr,
  key Header.secco  as SectionCode,
  key Wht.witht     as WhtCode,
      Sec.sectxt    as SectionText,
      count( distinct Header.lifnr ) as PersonCount,
      sum( Wht.wt_qbshb ) as IncomeTaxBase,
      sum( Wht.wt_qbshh ) as IncomeTaxAmount
      // 주민세과세표준 = 소득세액, 주민세액 = 소득세액 × 10%
      // 집계코드 매핑은 ZTFIE0040 과 조인
}
where Header.xreversed = ''
group by Header.bukrs, Header.gjahr, Header.secco, Wht.witht, Sec.sectxt

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 조회조건 영역 · 요약 · 상세
조회조건sap.m.Select · sap.m.RadioButtonGroup — 우측 끝에 조회
요약 테이블sap.m.Table — 총계 라인 포함
상세요약 선택 시 하단에 전표 단위로 펼침
전표 링크sap.m.Link — 회계전표 조회 연계
실행 결과스캔 · 삭제 · 반영 건수 표시

실행 건수를 표시하는 이유

집계는 실행해도 화면이 크게 달라지지 않습니다. 제대로 돌았는지 알 수 없어 한 번 더 실행하게 됩니다. 스캔한 전표 수, 삭제한 건수, 반영한 건수를 보여 주면 무엇이 처리됐는지 확인되고 중복 실행도 줄어듭니다.

파일 구성

경로역할
manifest.json앱 디스크립터 — 앱 ID(zui5.whtagg) · ko 로케일
view/Main.view.xml조회조건 · 요약 · 상세
controller/Main.controller.js집계 실행 · 요약·상세 · 전표 연계 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise)
js/formatter.js금액 · 인원 · 세율 포맷터
localdata/whtagg.json상세 112건 · 요약 15건

검증 결과

검증 항목결과
주민세액 = 소득세액 × 10% (전 건)통과
주민세과세표준 = 소득세액통과
요약 세액 = 상세 세액 합계통과
인원 = 중복 제거한 거래처 수통과
취소전표는 집계 대상에서 제외통과
XML · JSON 전체 파싱오류 0건
화면 렌더링 — 실브라우저 집계 실행 후 캡처3/3
테마 런타임 확인sap_horizon

자주 묻는 질문

Transfer & Overwrite 와 Delete & Transfer 는 무엇이 다른가요?

앞은 기존 자료 위에 덮어쓰고 뒤는 지운 뒤 새로 넣습니다. 전표가 취소되어 사라진 건이 있으면 덮어쓰기로는 남을 수 있어 Delete 방식이 안전합니다.

인원은 어떻게 세나요?

원천징수 대상 거래처 수입니다. 한 사람에게 여러 번 지급했어도 인원은 하나로 셉니다. 신고서의 인원 칸과 기준을 맞춰야 합니다.

집계 후 전표가 추가되면요?

다시 집계해야 반영됩니다. 신고 직전에 한 번 더 실행해 최신 상태로 맞추는 것이 안전합니다.

SAP 표준 기능과 어떻게 이어지나요?

원천세 항목은 지급 전기 시 표준이 만듭니다. 이 화면은 그 항목을 Section Code 와 집계코드로 묶어 신고데이터로 만들고, 요약에서 전표까지 내려갈 수 있게 하는 확장입니다.

원천세 집계, 지금 쓰는 SAP 위에서 확장해 보세요

요약에서 전표까지 내려갈 수 있으면 신고 전 검증이 끝납니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

원천세 집계Section Code집계코드소득세주민세원천징수OpenUI5