솔루션 홈
세무

SAP 매출세금계산서 발행 — 전표에서 계산서까지 한 번에

매출 전표에서 세금계산서 발행 대상을 뽑아 공급받는자 정보와 세액을 채우고, 발행 상태를 사업장별로 관리하는 화면입니다.

세금계산서는 회계 전표와 별개의 문서처럼 보이지만 근거는 같습니다. 매출 전표에 붙은 세금코드와 금액이 그대로 계산서가 됩니다.

문제는 공급받는자 정보입니다. 사업자번호·대표자·주소·업태·종목은 전표에 없고 고객 마스터에 있습니다. 표준 매출 전표와 세금코드 구조를 그대로 이어받아 두 곳을 합쳐 발행 대상을 구성하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 2종을 함께 공개합니다.

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

  • 전표 키 — 회사코드 · 회계연도 · 전표번호(belnr)와 증빙일 · 전기일
  • 사업장 — 사업장(bupla)과 명칭으로 발행 주체 구분
  • 세금코드 — mwskz 와 세율(rate)로 과세 유형 판정
  • 금액 — 공급가액(fwbas)과 세액(fwste)
  • 고객 마스터 — 고객 코드(kunnr)와 사업자번호 · 대표자 · 주소 · 업태 · 종목
항목내용
업무 영역재무회계(FI) · 세무 · 전자세금계산서
Namespacezui5.taxinv
셸 구조조회조건 영역(우측 조회·초기화) + 발행 대상 테이블
화면 수조회 화면 1개
데이터발행 대상 46건
성격조회·발행 지원형 — 전표 전기는 표준이 담당
UI 테마sap_horizon 단일 적용

실제 화면 2종 둘러보기

회사코드·사업장·기간으로 조회하면 발행 대상 전표가 나옵니다 → 공급받는자 정보와 세액을 확인하고 → 발행 상태를 관리합니다.

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

Main.view.xml
초기 진입 화면 — 조회조건과 안내 메시지
초기 진입 화면 — 조회조건과 안내 메시지 — 회사코드·사업장·기간·고객을 고르는 화면입니다. 조회·초기화 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
발행 대상
메인화면 — 공급받는자와 세액
메인화면 — 공급받는자와 세액 — 전표번호·증빙일·전기일과 함께 고객명·사업자번호·대표자·주소·업태·종목이 놓이고, 세금코드·세율·공급가액·세액이 이어집니다. 사업장별로 묶어 볼 수 있습니다.

조작 방법

  1. 회사코드사업장을 고릅니다. 사업장이 발행 주체가 됩니다.
  2. 기간을 지정합니다. 증빙일 기준으로 발행 대상이 정해집니다.
  3. 고객으로 좁혀 특정 거래처 건만 볼 수 있습니다.
  4. 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
  5. 사업자번호가 비어 있는 건을 먼저 확인합니다. 고객 마스터 보완이 필요합니다.
  6. 공급가액과 세액이 세율과 맞는지 확인합니다.
  7. 결과는 CSV 다운로드로 내려받아 전자세금계산서 시스템에 전달합니다.

세액 산식과 대상 판정

계산은 단순하지만 대상 선별이 중요합니다.

세액(fwste) = 공급가액(fwbas) × 세율(rate)

세금코드로 과세 유형 판정
  과세 매출   →  세금계산서 발행 대상
  영세율      →  영세율 세금계산서
  면세        →  계산서 (세액 없음)
  비과세      →  발행 대상 아님

발행 필수 항목  사업자번호 · 대표자 · 주소 · 업태 · 종목

필수 항목을 목록에서 보여 주는 이유

세금계산서는 필수 기재사항이 하나라도 비면 발행이 거부됩니다. 발행 단계에서 오류로 알게 되면 그때 고객 마스터를 고치고 다시 돌려야 합니다. 목록에서 미리 비어 있는 항목이 보이면 발행 전에 한 번에 정리할 수 있습니다.

발행 처리 4단계

단계내용결과물
① 대상 추출기간 내 과세 매출 전표 수집발행 대상 목록
② 정보 보완공급받는자 필수 항목 확인누락 건 정리
③ 발행전자세금계산서 생성·전송승인번호 수신
④ 신고 반영부가세 신고자료에 집계신고서 작성

조회조건

필드필수설명
회사코드 bukrs필수대상 회사코드
사업장 bupla필수발행 주체 사업장
기간 bldat필수증빙일 From~To
고객 kunnr선택고객 코드·명칭
세금코드 mwskz선택과세 · 영세 · 면세

결과 컬럼

컬럼의미 · 표시
회사코드 bukrs · 사업장 bupla발행 주체
전표번호 belnr · 회계연도 gjahr근거 전표
증빙일 bldat · 전기일 budat작성일과 전기일
고객 kunnr · kunnrTx공급받는자 코드와 상호
사업자번호 custRegno필수 기재사항
대표자 custCeo · 주소 custAddr필수 기재사항
업태 custBiz · 종목 custItem필수 기재사항
세금코드 mwskz · mwskzTx · 세율 rate과세 유형
공급가액 fwbas과세 표준
세액 fwste공급가액 × 세율
적요 sgtxt거래 내용

SAP 표준 기능 매핑

표준역할이 화면에서의 확장
FB03전표 조회세금계산서 관점으로 필요한 항목만 재구성
F.12 · 부가세 리포트세액 집계발행 단계 정보를 앞에 배치
BKPF · BSEG전표 헤더와 라인공급가액·세액 원천
BSET전표 세금 라인세금코드별 과세표준과 세액
KNA1고객 마스터사업자번호 · 대표자 · 주소 · 업태 · 종목
T001W 관점사업장발행 주체 구분

도입 시 확인이 필요한 부분

전자세금계산서는 외부 시스템(ASP)과 연계하는 경우가 대부분입니다. 이 화면에서 대상을 만들고 실제 발행과 승인번호 수신은 연계 인터페이스가 담당하므로, 전송 포맷과 상태 회신 방식을 함께 설계해야 합니다. 사업장이 여러 개면 사업장별 사업자번호도 정확히 매핑돼야 합니다.

참고 CDS 뷰

@AbapCatalog.sqlViewName: 'ZCTAXINV'
@EndUserText.label: '매출세금계산서 발행 대상 (Z)'
define view Z_C_TAX_INVOICE
  as select from bkpf as Header
    inner join      bset as TaxLine on Header.bukrs = TaxLine.bukrs
                                   and Header.belnr = TaxLine.belnr
                                   and Header.gjahr = TaxLine.gjahr
    left outer join bseg as Line     on Header.bukrs = Line.bukrs
                                   and Header.belnr = Line.belnr
                                   and Header.gjahr = Line.gjahr
    left outer join kna1 as Customer on Line.kunnr = Customer.kunnr
{
  key Header.bukrs,
  key Header.gjahr,
  key Header.belnr,
  key TaxLine.mwskz,
      Header.bldat, Header.budat,
      Line.bupla,
      Line.kunnr,
      Customer.name1  as KunnrTx,
      Customer.stcd2  as CustRegno,
      Customer.stras  as CustAddr,
      TaxLine.hwbas   as Fwbas,
      TaxLine.hwste   as Fwste,
      TaxLine.kbetr   as Rate
}

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

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 조회조건 영역 · 발행 대상 테이블
조회조건sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화
이벤트모든 버튼이 onPAI 단일 진입점, fcCode 로 분기
대상 테이블sap.m.Table — 열이 많아 popin 반응형
필수 항목누락 시 sap.m.ObjectStatus 로 표시
금액sap.m.ObjectNumber — 우측정렬, 천단위 콤마

공급받는자 정보를 펼쳐 둔 이유

사업자번호만 보여 주면 나머지 기재사항이 채워졌는지 알 수 없습니다. 대표자·주소·업태·종목을 모두 열로 두면 발행 전에 빈 칸이 한눈에 보이고, 고객 마스터에서 무엇을 보완해야 하는지가 바로 정해집니다.

파일 구성

경로역할
manifest.json앱 디스크립터 — 앱 ID(zui5.taxinv) · ko 로케일
view/Main.view.xml조회조건과 발행 대상 테이블
controller/Main.controller.js조회 · 세액 검증 · 필수항목 점검 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise)
model/formatter.js금액 · 일자 · 세율 · 상태 포맷터
localdata/taxinv.json발행 대상 46건

검증 결과

검증 항목결과
세액 = 공급가액 × 세율 (전 건)통과
과세 건은 세금코드와 세율이 정합통과
고객 코드가 있으면 상호·사업자번호도 존재통과
사업장 코드가 있으면 명칭도 존재통과
전표 키(회사코드+연도+전표번호) 중복 없음통과
XML · JSON 전체 파싱오류 0건
화면 렌더링 — 실브라우저 조회 후 캡처2/2
테마 런타임 확인sap_horizon

자주 묻는 질문

사업자번호가 비어 있으면 어떻게 하나요?

고객 마스터에서 보완해야 합니다. 발행 단계에서 거부되기 때문에 목록에서 미리 확인해 한 번에 정리하는 것이 효율적입니다.

영세율이나 면세 건도 나오나요?

나옵니다. 영세율은 세액 0의 세금계산서, 면세는 계산서로 발행 서식이 다릅니다. 세금코드로 구분되므로 조회조건에서 나눠 뽑아 각각 처리합니다.

사업장이 여러 개면 어떻게 관리하나요?

사업장이 발행 주체이므로 사업장별로 나눠 조회합니다. 사업장마다 사업자번호가 다르면 그 매핑이 정확해야 발행 오류가 나지 않습니다.

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

매출 전표와 세금 라인은 표준 전기가 만듭니다. 이 화면은 그 전표에 고객 마스터의 공급받는자 정보를 합쳐 발행에 필요한 형태로 구성하고, 필수 기재사항 누락을 미리 잡아 주는 확장입니다.

세금계산서 발행 준비, 지금 쓰는 SAP 위에서 확장해 보세요

발행 전에 빈 칸이 보이면 반려와 재작업이 사라집니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

세금계산서매출세금계산서부가세공급가액세액사업장OpenUI5