솔루션 홈
세무

SAP 전산매체 신고파일 생성 — 사업장별로 파일을 만들어 내보내기

분기와 신고유형을 골라 해당 세금코드로 신고자료를 뽑고, 사업장별 전산매체 파일을 만드는 화면입니다.

전자신고 파일은 만들고 나면 내용을 고칠 수 없습니다. 홈택스에 올려 오류가 나면 처음부터 다시 만들어야 합니다.

기존 처리 방식은 결과 화면 없이 파일만 생성합니다. 무엇이 담기는지 모른 채 만들고 올려 봐야 아는 구조입니다. 생성 전에 사업장별 대상과 레코드를 확인할 수 있도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.

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

  • 부가세 신고 자료 — 집계된 신고 라인(ZTFIE0010)
  • 사업자단위과세 — 과세 단위 마스터(ZTFIE0020)
  • 사업장 — 부가세 사업장 정보(T001Z · J_1BBRANCH)
  • 주소 — 사업장 주소(ADRC)
  • 전자세금계산서 — 스마트빌 연계 데이터(ZDTI_HEADER · ZDTI_SAPK)
항목내용
업무 영역재무회계(FI) · 일반회계 · 전자신고
Namespacezui5.efile
셸 구조조회조건 영역(우측 조회) + 사업장별 파일 목록 + 레코드 미리보기
화면 수조회·생성 화면 1개 + 미리보기
데이터신고 자료와 사업장 정보
성격생성형 — 사업장별 텍스트 파일 출력
UI 테마sap_horizon 단일 적용

실제 화면 3종 둘러보기

회계연도·분기·신고유형을 고르면 입력값이 점검되고 → 사업장별 생성 대상 파일 목록이 나옵니다 → 레코드를 미리 본 뒤 파일을 생성합니다.

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

Main.view.xml
입력값 점검과 파일 목록
입력값 점검과 파일 목록 — 사업자단위과세가 아니면 사업장을 반드시 지정해야 합니다. 조회하면 사업장·사업자번호·파일명·건수·전자 건수·공급가액·세액이 목록으로 나옵니다.
레코드 미리보기
H/D/T 레코드 확인
H/D/T 레코드 확인 — 파일을 선택하면 신고 대상 라인이 열리고, 파일 미리보기로 실제 레코드(헤더·명세·합계)를 확인한 뒤 저장할 수 있습니다.
신고유형 전환
적용 세금코드 변경
적용 세금코드 변경 — 계산서나 신용카드매출을 고르면 적용 세금코드가 통째로 바뀌고 대상 자료도 함께 달라집니다.

조작 방법

  1. 회사코드·회계연도를 넣습니다. 회계연도 기본값은 시스템 연도입니다.
  2. 신고분기를 1~4분기 중에서 고릅니다.
  3. 신고유형을 고릅니다. 세금계산서·계산서·신용카드매출에 따라 적용 세금코드가 바뀝니다.
  4. 부가세사업장은 사업자단위과세가 아니면 반드시 지정해야 합니다.
  5. File path 를 넣습니다. 파일 저장 경로입니다.
  6. 조회하면 사업장별 생성 대상 파일 목록이 나옵니다.
  7. 파일을 선택해 신고 대상 라인과 레코드 미리보기를 확인합니다.
  8. 파일명을 누르면 개별 저장, 신고파일 생성을 누르면 사업장별 파일을 한 번에 저장합니다.

입력값 점검과 파일 구조

생성 전에 과세 단위를 확인하고, 파일은 세 종류 레코드로 구성됩니다.

입력값 점검
  사업자단위과세 아님 + 부가세사업장 비어 있음  →  오류, 파일 생성 안 함
  사업자단위과세  →  대표 사업장을 신고 BP 로 사용

파일 레코드 구조
  H | 회사코드 | 사업장 | 사업자번호 | 사업장명 | 대표자 | 신고기간 | 신고유형 | 건수
  D | 사업장 | 세금코드 | 매출입 | 건수 | 공급가액(15) | 세액(15)   ← 세금코드별 누적
  T | 사업장 | 총건수 | 공급가액 합 | 세액 합 | 합계

파일명 = 신고유형_회사코드_사업장_연도Q분기.txt

생성 전에 목록을 보여 주는 이유

원본은 결과 화면 없이 파일만 만듭니다. 무엇이 담겼는지는 홈택스에 올려 봐야 알 수 있고, 오류가 나면 원인을 찾기 어렵습니다. 사업장별 건수와 금액을 먼저 보여 주면 예상과 다른 사업장을 생성 전에 잡을 수 있습니다.

신고유형별 세금코드

신고유형 · 구분대상세금코드
세금계산서 · 매출개인 매출AQ
세금계산서 · 매출사업자 매출AA / AB / AC / AD / AE / AH / AI
세금계산서 · 매입사업자 매입VF / VG / VI
세금계산서 · 매입사업자(전자계산서) 매입VA / VB / VC / VD / VK / VQ
계산서 · 매입종이계산서 / 전자계산서VJ / VE
신용카드매출 · 매입신용카드 / 현금영수증VL / VM

선택한 신고유형의 세금코드로 신고 자료를 추출하며, 조건에 맞는 자료가 없으면 메시지로 알려 줍니다.

조회조건

필드필수설명
회사코드 / 회계연도필수회계연도 기본값은 시스템 연도
신고분기필수1~4분기 라디오
신고유형필수세금계산서 / 계산서 / 신용카드매출
부가세사업장조건부 필수사업자단위과세가 아니면 반드시 지정
File path필수파일 저장 경로

결과 컬럼

사업장별 파일 목록

컬럼의미
사업장신고 단위
사업자번호사업장 사업자등록번호
파일명신고유형_회사코드_사업장_연도Q분기.txt
건수신고 대상 라인 수
전자 건수전자세금계산서 건수
공급가액 · 세액사업장별 합계

신고 대상 라인

컬럼의미
세금코드적용 코드
매출입 구분매출 / 매입
공급가액 · 세액라인 금액
전자 여부전자세금계산서 여부

SAP 표준 기능 매핑

표준역할이 화면에서의 확장
ZTFIE0010부가세 신고 자료파일 생성 원천
ZTFIE0020사업자단위과세 마스터입력값 점검
T001Z · J_1BBRANCH사업장 정보사업장·사업자번호
ADRC주소 마스터사업장명·대표자
T007A세금코드 설정신고유형별 코드
ZDTI_HEADER · ZDTI_SAPK전자세금계산서 연계전자 건수 집계

도입 시 확인이 필요한 부분

파일 레코드 포맷은 국세청 규격을 따릅니다. 규격이 개정되면 자릿수와 항목이 바뀌므로 레코드 생성 로직을 함께 갱신해야 합니다. 또 사업장이 여러 개면 사업자번호 매핑이 정확해야 엉뚱한 사업장으로 신고되지 않습니다.

참고 CDS 뷰

@AbapCatalog.sqlViewName: 'ZCEFILE'
@EndUserText.label: '전산매체 신고 대상 (Z)'
define view Z_C_EFILE_TARGET
  as select from ztfie0010 as VatData
    left outer join t001z as Branch on VatData.bukrs = Branch.bukrs
                                  and VatData.bupla = Branch.paval
{
  key VatData.bukrs,
  key VatData.gjahr,
  key VatData.bupla as Bupla,
  key VatData.mwskz as TaxCode,
      Branch.paval  as TaxNumber,
      VatData.shkzg as DebitCredit,
      count(*)            as ItemCount,
      sum( VatData.fwbas ) as SupplyAmount,
      sum( VatData.fwste ) as TaxAmount
      // 전자 건수는 ZDTI_HEADER 와 조인해 별도 집계
      // H/D/T 레코드는 이 집계를 읽어 앱에서 생성
}
group by VatData.bukrs, VatData.gjahr, VatData.bupla,
         VatData.mwskz, Branch.paval, VatData.shkzg

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

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 조회조건 영역 · 파일 목록 · 미리보기
조회조건sap.m.RadioButtonGroup · sap.m.Select — 우측 끝에 조회
파일 목록sap.m.Table — 사업장별 건수와 금액
대상 라인파일 선택 시 하단에 펼침
미리보기sap.m.Dialog — H/D/T 레코드 원문
저장파일명 클릭으로 개별 저장 · 일괄 생성 버튼

레코드 원문을 그대로 보여 주는 이유

전산매체 파일은 자릿수까지 규격이 정해져 있습니다. 화면에서 금액만 맞는지 확인해도 자릿수가 어긋나면 업로드에서 거부됩니다. 실제 레코드 문자열을 보여 주면 규격 문제를 생성 전에 발견할 수 있습니다.

파일 구성

경로역할
manifest.json앱 디스크립터 — 앱 ID(zui5.efile) · ko 로케일
view/Main.view.xml조회조건 · 파일 목록 · 미리보기
controller/Main.controller.js입력값 점검 · 대상 추출 · 레코드 생성 · 저장
model/ModelMock.jslocaldata JSON 읽기(Promise)
js/formatter.js금액 · 건수 · 자릿수 포맷터
localdata/efile.json신고 대상 자료
localdata/branch.json사업장 정보

검증 결과

검증 항목결과
사업자단위과세가 아니고 사업장 미지정이면 생성 차단통과
T 레코드 합계 = D 레코드 합계통과
H 레코드 건수 = D 레코드 건수 합통과
신고유형별 세금코드만 대상에 포함통과
파일명 규칙 = 신고유형_회사코드_사업장_연도Q분기통과
XML · JSON 전체 파싱오류 0건
화면 렌더링 — 실브라우저 조회 → 미리보기 후 캡처3/3
테마 런타임 확인sap_horizon

자주 묻는 질문

사업자단위과세면 사업장을 안 넣어도 되나요?

네. 사업자단위과세는 본점에서 통합 신고하므로 대표 사업장을 신고 BP 로 사용합니다. 사업자단위과세가 아닌데 사업장이 비어 있으면 오류로 처리해 파일을 만들지 않습니다.

전자 건수는 왜 따로 표시하나요?

전자세금계산서는 국세청에 이미 전송돼 있어 신고 방식이 다릅니다. 전체 건수와 전자 건수를 나눠 보면 종이 발행분이 얼마나 되는지 확인됩니다.

파일 규격이 바뀌면 어떻게 하나요?

레코드 생성 로직을 갱신해야 합니다. 자릿수와 항목 순서가 정해져 있어 규격 개정 때마다 확인이 필요합니다.

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

신고 자료는 집계 프로그램이 만들고 이 화면은 그것을 읽어 파일로 변환합니다. 원본과 달리 생성 전에 사업장별 대상과 레코드를 확인할 수 있게 한 확장입니다.

전자신고 파일 생성, 지금 쓰는 SAP 위에서 확장해 보세요

올려 보고 아는 대신 만들기 전에 확인할 수 있습니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

전산매체전자신고신고파일세금계산서사업자단위과세사업장OpenUI5