솔루션 홈
전표 출력

SAP 전표 출력 — 회계전표를 결재 양식 그대로 뽑아내기

전표 한 건을 결재로 올리려면 종이가 필요합니다. 헤더와 라인, 결재란, 원천세와 지급계좌까지 한 장에 담아 미리 보고 그대로 인쇄하는 화면입니다.

전표를 전기하는 일과 그 전표를 결재로 올리는 일은 다릅니다. 전기는 시스템 안에서 끝나지만, 결재는 대개 종이 한 장에서 시작합니다. 담당이 내용을 확인하고, 검토가 계정과 금액을 보고, 승인이 서명합니다.

그 한 장에는 전표번호와 금액만 있어서는 안 됩니다. 이 금액이 누구에 대한 것인지가 라인마다 보여야 하고, 원천세가 걸린 전표라면 세액 근거가, 지급 전표라면 어느 계좌로 나가는지가 함께 있어야 합니다. SAP 표준 전표 데이터 구조를 그대로 이어받아 이 양식을 화면에서 미리 보고 그대로 인쇄하도록 OpenUI5 화면으로 확장한 것이 ZLFIA0060입니다. 실제 구동 화면 5종을 함께 공개합니다.

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

  • 전표 원천 — 헤더(BKPF)와 라인(FAGLFLEXA) 구조를 그대로 사용
  • 지정 대상 마스터 — 거래처(LFA1) · 고객(KNA1) · 자산(ANLA) · 오더(AUFK) · WBS(PRPS)
  • 부가 정보 — 원천세(WITH_ITEM) · 하우스뱅크(T012K · T012T) · 환산율(TCURF)
  • 텍스트 — 전표유형(T003T) · 사업영역(TGSBT) · 사용자(USR01) · 회사코드(T001)
  • 양식 — 운영에서 스마트폼이 그리는 레이아웃을 같은 블록 구성으로 재현
항목내용
업무 영역재무회계(FI) · 일반회계 · 전표 결재 출력
Namespacezui5.docprint
셸 구조조회조건 영역(우측 조회) + 전표 목록 + 라인 목록, 결재 양식 미리보기 Dialog
화면 수조회 화면 1개 + 결재 양식 미리보기
기준 사양620-3 프로그램 사양서 (전표 출력)
상세 추출ZFIA_GET_DOCUMENT_INFO
연계나의전표 관리에서 선택 전표를 전달받음
성격조회·출력형 — 전표 생성과 전기는 표준 트랜잭션이 담당
UI 테마sap_horizon 단일 적용

실제 화면 5종 둘러보기

회사코드·전표번호·회계연도를 넣고 조회하면 대상 전표가 목록으로 뜹니다 → 전표를 골라 라인과 원천세·지급계좌를 확인하고 → 결재 양식 미리보기로 인쇄될 모습을 그대로 본 뒤 출력합니다.

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

Main.view.xml
출력 대상 전표 목록
출력 대상 전표 목록 — 회사코드·전표번호·회계연도를 넣고 조회하면 대상 전표가 목록으로 뜹니다. 전표번호·유형·일자·사업영역·금액·라인수·작성자·헤더텍스트에 더해 원천세와 지급계좌 보유 여부를 같은 줄에서 보여 줍니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
부가 정보
원천세·지급계좌 정보
원천세·지급계좌 정보 — 전표에 붙은 원천세(과세표준·세율·세액)와 지급계좌(하우스뱅크·계좌번호)입니다. 결재 양식의 부가 정보 블록에 그대로 실리는 값이라, 인쇄 전에 여기서 먼저 확인합니다.
전표 라인
전표 라인 — 지정 대상 표시
전표 라인 — 지정 대상 표시 — 전표를 고르면 아래에 라인이 펼쳐집니다. 차대·계정·금액·코스트센터·적요와 함께 지정 대상이 '거래처 0000200027 가나상사' 처럼 구분·코드·명칭을 묶은 한 칸으로 표시됩니다.
결재 양식 미리보기
결재 양식 미리보기 — 결재란·헤더·라인
결재 양식 미리보기 — 결재란·헤더·라인 — 인쇄될 모습 그대로입니다. 위쪽에 회사명과 담당·검토·승인 3단 결재란, 그 아래 전표 헤더, 라인 표와 차대 합계가 이어집니다. 여러 전표를 고르면 전표마다 페이지가 나뉩니다.
오류 처리
없는 전표번호 — 오류 처리
없는 전표번호 — 오류 처리 — 조건에 맞는 전표가 없으면 회사코드·전표번호·회계연도를 함께 보여 주며 알립니다. 어느 값이 잘못됐는지 되짚을 수 있도록 입력값을 그대로 되돌려 줍니다.

조작 방법

  1. 회사코드 · 전표번호 · 회계연도를 넣습니다. 세 값은 필수이며, 비어 있으면 조회 전에 입력필드에 오류 상태로 표시됩니다. 회계연도 기본값은 시스템 연도입니다.
  2. 작성자와 통화는 보조 조건입니다. 특정 담당자가 만든 전표만 추릴 때 씁니다.
  3. 조회조건 입력필드에서 Enter 를 눌러도 바로 조회됩니다. 조회·초기화 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
  4. 조건에 맞는 전표가 없으면 회사코드·전표번호·회계연도를 함께 보여 주며 알립니다.
  5. 목록에서 전표를 고르면 아래에 라인이 펼쳐집니다. 차대·계정·지정 대상·금액·코스트센터·적요를 확인합니다.
  6. 결재 양식 미리보기로 인쇄될 모습을 그대로 확인합니다. 결재란·헤더·라인·부가 정보가 한 장에 들어갑니다.
  7. 여러 전표를 고르면 전표마다 페이지가 나뉩니다. 인쇄는 새 창에서 A4 여백 12mm 로 실행됩니다.
  8. 목록은 CSV 다운로드로 내려받습니다. UTF-8 BOM 이 붙어 엑셀에서 한글이 깨지지 않습니다.

지정 대상 해석 규칙

결재자가 라인을 보고 판단하려면 계정과 금액만으로는 부족합니다. 이 금액이 어느 거래처, 어느 자산, 어느 오더에 붙은 것인지가 같은 줄에 있어야 합니다. 그래서 라인마다 아래 순서로 대상을 찾아 구분·코드·명칭을 한 칸에 담습니다.

구분원천표시 예
거래처LFA1거래처 0000200027 가나상사
고객KNA1고객 0000100014 한빛유통
자산ANLA자산 000000012000-0000 생산설비
오더AUFK오더 700001 라인 개선
WBSPRPSWBS P-2026-01 신공장

부가 정보를 조건부로 그리는 이유

원천세는 매입·지급 전표에만, 지급계좌는 지급·입금 전표에만 붙습니다. 관계없는 전표에 빈 블록이 남으면 결재자가 "왜 비어 있지" 하고 한 번 더 확인하게 됩니다. 그래서 해당 정보가 없는 전표에서는 블록 자체를 그리지 않고, 양식 높이도 그만큼 줄입니다.

결재 양식 4블록 구성

운영에서 스마트폼이 그리는 레이아웃을 같은 순서의 네 블록으로 재현했습니다. 위에서 아래로 읽으면 결재 흐름 그대로입니다.

블록내용
제목 · 결재란회사명과 함께 담당 · 검토 · 승인 3단 결재란(서명 공간 포함)
헤더전표번호/회계연도 · 전표유형 · 사업영역 · 전기일자 · 증빙일자 · 작성자 · 참조번호 · 헤더텍스트
라인항목 · 계정 · 지정 대상 · 코스트센터 · 차변 · 대변 · 적요, 마지막에 차대 합계
부가 정보원천세(과세표준 · 세율 · 세액), 지급계좌(하우스뱅크 · 계좌번호) — 해당 전표에만

여러 전표를 선택하면 전표마다 page-break-after 로 페이지를 나눠 한 번에 인쇄합니다. 운영에서는 스마트폼이 양식을 그리고, 이 화면은 같은 레이아웃을 브라우저 인쇄용 HTML 로 재현한 것입니다.

조회조건

필드필수설명
Company code필수대상 회사코드
SAP NO.필수전표번호. 실행 시 값 점검
Fiscal Year필수회계연도. 기본값은 시스템 연도
Create By선택전표 작성자
Currency선택회사코드 통화

결과 컬럼

전표 목록

컬럼의미 · 표시
전표번호 · 회계연도출력 대상 키
전표유형코드와 텍스트를 함께 표시
전기일자 · 증빙일자YYYY.MM.DD 형식
사업영역코드와 명칭
금액우측정렬, 천단위 콤마
라인수전표에 달린 라인 건수
작성자 · 헤더텍스트결재 양식 헤더에 그대로 실림
원천세 · 지급계좌보유 여부를 표시해 양식에 어떤 블록이 붙을지 미리 알림

전표 라인

컬럼의미 · 표시
항목 · 차대라인 번호와 차변/대변 구분
계정계정코드와 명칭
지정 대상구분 · 코드 · 명칭을 한 칸에 결합
코스트센터원가 귀속처
차변 · 대변 금액우측정렬, 마지막 행에 차대 합계
적요라인 적요

SAP 표준 기능 매핑

이 화면은 전표 생성이나 전기를 대체하지 않습니다. 전표는 표준 트랜잭션이 만들고, 운영의 양식 출력은 스마트폼이 담당합니다. 이 화면은 그 데이터를 결재 관점으로 모아 미리보기와 다건 인쇄를 더해 확장하는 구성입니다.

테이블 · 오브젝트역할
BKPF전표 헤더 — 전표유형 · 전기일 · 증빙일 · 참조번호 · 헤더텍스트 · 작성자
FAGLFLEXA전표 라인 — 계정 · 차대 · 금액 · 코스트센터 · 적요
LFA1 · KNA1 · ANLA · AUFK · PRPS지정 대상 마스터
WITH_ITEM원천세 — 과세표준 · 세율 · 세액
T012K · T012T하우스뱅크와 계좌 텍스트
TCURF환산율 — 원화환산 검증의 근거
T003T · TGSBT · USR01 · T001전표유형 · 사업영역 · 사용자 · 회사코드 텍스트
ZFIA_GET_DOCUMENT_INFO전표 상세 추출 인터페이스

도입 시 확인이 필요한 부분

결재란 단계와 서명 문구, 회사명 표기는 회사 양식 규정에 따라 달라집니다. 또 지정 대상을 찾는 순서(거래처 → 고객 → 자산 → 오더 → WBS)는 라인에 여러 대상이 동시에 물릴 때 무엇을 먼저 보일지의 문제라, 실제 도입 때는 업무 기준에 맞춰 순서를 정합니다. 원천세율도 설정값을 따르므로 고정값으로 두지 않습니다.

참고 CDS 뷰

운영 서비스로 연결할 때는 헤더와 라인에 지정 대상 명칭을 붙인 뷰로 서빙하는 구성을 제안합니다.

@AbapCatalog.sqlViewName: 'ZCDOCPRINT'
@EndUserText.label: '전표 출력용 라인 (Z)'
define view Z_C_DOCUMENT_PRINT
  as select from bkpf as Header
    inner join      faglflexa as Line    on  Header.bukrs = Line.rbukrs
                                         and Header.belnr = Line.docnr
                                         and Header.gjahr = Line.ryear
    left outer join lfa1  as Vendor      on  Line.lifnr  = Vendor.lifnr
    left outer join kna1  as Customer    on  Line.kunnr  = Customer.kunnr
    left outer join aufk  as Order       on  Line.aufnr  = Order.aufnr
    left outer join t003t as DocTypeText on  Header.blart = DocTypeText.blart
                                         and DocTypeText.spras = 'K'
{
  key Header.bukrs,
  key Header.belnr,
  key Header.gjahr,
  key Line.docln,
      Header.blart,
      DocTypeText.ltext            as BlartTx,
      Header.budat,
      Header.bldat,
      Header.usnam,
      Header.bktxt,
      Line.racct,
      Line.drcrk,
      Line.hsl,
      Line.rcntr,
      Line.sgtxt,
      // 지정 대상 — 값이 있는 것을 순서대로 골라 구분·코드·명칭으로 결합
      case when Line.lifnr <> '' then 'VENDOR'
           when Line.kunnr <> '' then 'CUSTOMER'
           when Line.aufnr <> '' then 'ORDER'
           else '' end             as PartnerType,
      coalesce( Vendor.name1, Customer.name1, Order.ktext ) as PartnerName
      // 원천세(WITH_ITEM)·하우스뱅크(T012K)는 연장 뷰에서 결합
}

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경의 원장 구조(신전기 여부)와 지정 대상 사용 범위에 맞춰 조정합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 조회조건 영역 · 전표 목록 · 라인 목록
조회조건sap.m.Input · sap.m.Select — 우측 끝에 조회 버튼, 필수값 오류 상태 표시
전표 목록sap.m.Table — 선택 시 라인 목록 갱신
결재 양식sap.m.Dialog — 인쇄용 HTML 을 그대로 렌더링
인쇄새 창 열기 + A4 여백 12mm, 전표별 page-break-after
포맷금액 · 일자 · 차대 · 지정 대상 · 원천세 · 계좌 포맷터

미리보기와 인쇄를 같은 HTML 로 만든 이유

미리보기와 실제 출력이 다른 코드로 그려지면, 화면에서는 멀쩡한데 종이에서 표가 잘리는 일이 생깁니다. 같은 HTML 을 Dialog 에 넣고 인쇄 창에도 그대로 넘기면 "보이는 대로 나오는" 상태가 유지됩니다. 페이지 나눔도 CSS 한 줄로 끝나므로 전표 건수가 늘어도 로직이 복잡해지지 않습니다.

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon · lodash · moment
Component.js조회조건 모델 · 결과 모델 초기화
manifest.json앱 디스크립터 — 앱 ID(zui5.docprint) · ko 로케일
view/Main.view.xml조회화면 + 전표 목록 + 라인 + 결재 양식 Dialog
controller/Main.controller.js필수값 점검 · 조회 · 양식 렌더링 · 인쇄 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise) + 양식 데이터 구성
model/formatter.js금액 · 일자 · 차대 · 지정 대상 · 원천세 · 계좌 포맷
i18n/i18n_ko.propertiesko 로케일 리소스
localdata/docprint.json전표 헤더 · 라인 검증용 데이터

운영 전환 시에는 ModelMock 내부만 실제 서비스 호출로 바꾸면 화면과 양식 로직은 그대로 씁니다.

검증 결과

화면 구성에 쓴 데이터는 전표 46건 · 라인 125건이며, 원천세 4건 · 지급계좌 16건, 합계 268,177,720원입니다.

검증 항목결과
전표별 차변 합계 = 대변 합계 · 헤더 금액 = 차변 라인 합계통과
원화환산 = 거래통화금액 × 환율 (헤더 · 라인)통과
지정 대상 코드가 있으면 구분 · 명칭도 존재통과
원천세는 매입/지급 전표에만 · 세액 = 과세표준 × 3.3%통과
하우스뱅크는 지급/입금 전표에만 · 계좌번호 보유통과
결재란 3단계 구성 · 라인 통화/사업영역이 헤더와 일치통과
전표유형 · 작성자 마스터 일치 · 전표+항목 중복 없음통과
화면 렌더링 — 실브라우저에서 조회 → 라인 → 양식 미리보기 실동작 후 캡처5/5

거래처 · 금액 · 결재자는 모두 검증용 데이터입니다.

자주 묻는 질문

지정 대상은 무엇을 보고 채우나요?

전표 라인에 물린 대상을 순서대로 찾습니다. 거래처(LFA1) · 고객(KNA1) · 자산(ANLA) · 오더(AUFK) · WBS(PRPS) 중 값이 있는 것을 골라 구분과 코드, 명칭을 한 칸에 담습니다. 결재자가 라인만 보고도 무엇에 대한 금액인지 알 수 있어야 하기 때문에, 코드만 찍지 않고 '거래처 0000200027 가나상사' 형태로 붙여 씁니다.

원천세와 지급계좌는 왜 전표마다 다르게 나오나요?

해당 정보가 있는 전표에만 붙기 때문입니다. 원천세는 매입·지급 전표에서 과세표준과 세율, 세액을 함께 싣고, 지급계좌는 지급·입금 전표에서 하우스뱅크와 계좌번호를 싣습니다. 관계없는 전표에 빈 블록이 남으면 양식이 지저분해지므로 블록 자체를 그리지 않습니다.

여러 전표를 한 번에 인쇄할 수 있나요?

가능합니다. 목록에서 여러 건을 고르면 전표마다 페이지를 나눠 한 번에 출력합니다. 인쇄는 새 창을 열어 A4 여백 12mm 로 브라우저 인쇄를 실행하므로, 별도 출력 프로그램 없이 화면에서 끝납니다.

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

전표 자체는 표준 전기 트랜잭션이 만들고 BKPF·FAGLFLEXA에 그대로 남습니다. 운영에서 양식을 그리는 것도 표준 스마트폼입니다. 이 화면은 그 데이터를 같은 레이아웃으로 브라우저 인쇄용 HTML에 재현해, 결재 올리기 전에 화면에서 미리 보고 여러 건을 묶어 출력할 수 있게 확장한 것입니다.

전표 결재 출력, 지금 쓰는 SAP 위에서 확장해 보세요

양식을 고칠 때마다 개발을 요청하는 대신, 화면에서 바로 보고 여러 건을 묶어 뽑을 수 있으면 결재 준비 시간이 줄어듭니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

전표 출력결재 양식BKPFFAGLFLEXA원천세지정 대상OpenUI5