SAP 대량전표 입력 — 엑셀 수십 건을 신호등으로 관리하기
엑셀 양식으로 올린 전표를 포맷·마스터·차대까지 미리 점검해 신호등으로 나누고, 통과한 건만 골라 전기하는 화면입니다.
전표 수십 건을 한 번에 올릴 때 가장 무서운 건 절반만 들어가는 상황입니다.
어디까지 전기됐는지 모른 채 다시 올리면 중복 전표가 생기고, 안 올리면 빠진 건을 찾아야 합니다. 그래서 이 화면은 올리는 단계와 전기하는 단계를 완전히 분리합니다. 업로드할 때 포맷·마스터·차대 균형까지 미리 점검해 전표마다 신호등을 달고, 전기는 담당자가 고른 건만 실행합니다. 에러가 섞인 채로는 아예 실행되지 않습니다.
SAP 표준 구조를 그대로 이어받은 부분
- 전표 구조 —
BKPF헤더 + 라인의 전기키·계정·금액 그대로 - 전기키 —
TBSL의 차대 구분과 계정유형을 그대로 사용 - 전기 처리 —
ZFI_DOCUMENT_POSTING호출, BDC 모드는 화면에서 지정 - 양식 배포 —
SMW0에 저장된 업로드 양식을 내려받아 사용
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI-GL) · 전표 일괄 전기 |
| Namespace | zui5.massdoc |
| 셸 구조 | 실행조건 영역(우측 전표전기) + 전표 목록 + 라인 상세, 에러 필터 |
| 화면 수 | 조회·실행 화면 1개 + 전표 라인 |
| 데이터 | 전표 23건 · 라인 56건 (정상 16 · 에러 7) |
| 성격 | 등록형(Batch Input) — 전기는 표준 펑션이 수행 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 10종 둘러보기
양식을 업로드하면 전표마다 신호등이 붙습니다 → 전기대상 선택으로 통과한 건만 고르고 → 전표전기로 한 번에 처리합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 엑셀 다운로드로 양식을 받아 전표를 작성합니다. 한 전표에 여러 라인을 이어 씁니다.
- 엑셀양식 업로드로 파일을 올리면 즉시 점검이 돌고 전표마다 신호등이 붙습니다.
- BDC 모드를 고릅니다. 평소에는 background processing(N), 원인을 봐야 할 때는 display errors only(E)입니다.
- 전표를 선택하면 아래에 라인 상세가 열립니다. 차변·대변 합계로 균형을 확인합니다.
- 전기대상 선택으로 작업전 전표만 고른 뒤 전표전기를 누릅니다. 확인 팝업을 거쳐 실행됩니다.
- 에러만 보기로 반려된 전표를 추려 메시지대로 고친 뒤 다시 올립니다.
업로드 점검과 전기 규칙
점검은 업로드 시점에 몰아서 하고, 전기 단계에서는 통과한 건만 다룹니다.
업로드 단계 (신호등 부여)
필수필드 회사코드 · 증빙일 · 전표유형 · 통화키 · 전기키 · 계정 · 금액
포맷 날짜 8자리 · 금액 숫자 변환 · 소문자는 대문자로 변환
마스터 공급업체 → LFA1, 고객 → KNA1, 전기키 → TBSL
차대 차변 합계 = 대변 합계
→ 통과 : YELLOW(작업전) 실패 : RED(에러)
전기 단계
선택 없음 → 에러 처리
에러 전표 포함 → 에러 처리 (번호를 알려 줌)
확인 팝업 후 → ZFI_DOCUMENT_POSTING (화면에서 고른 BDC 모드)
→ 성공 : GREEN(생성완료) + 전표번호 실패 : RED| 항목 | 산식 · 규칙 |
|---|---|
E01 필수필드 | 회사코드·증빙일·전표유형·통화키·전기키·계정·금액 중 누락 |
E02 날짜 포맷 | 증빙일·전기일이 8자리 날짜가 아님 |
E03 금액 포맷 | 숫자로 변환되지 않는 금액 (예: 천단위 구분·단위 표기) |
E04 전기키 | TBSL 에 정의되지 않은 전기키 |
E05 공급업체 | LFA1 에 없는 공급업체 코드 |
E06 고객 | KNA1 에 없는 고객 코드 |
E07 차대 균형 | 차변 합계와 대변 합계 불일치 |
점검을 업로드 시점에 몰아 둔 이유
전기 단계에서 실패하면 이미 일부가 들어간 상태일 수 있습니다. 업로드할 때 전부 점검해 두면 전기 버튼을 누르는 시점에는 통과한 건만 남아 있어 결과가 예측 가능합니다. 담당자도 무엇을 고쳐야 하는지 미리 알 수 있어 양식을 한 번에 정리할 수 있습니다.
신호등 3단계
사양서의 신호등 구분을 그대로 썼습니다. 전표마다 지금 어느 단계인지가 색으로 드러납니다.
| 신호등 | 상태 | 의미 | 다음 작업 |
|---|---|---|---|
| YELLOW | 작업전 | 점검을 통과해 전기를 기다리는 상태 | 전기대상 선택으로 한 번에 고를 수 있음 |
| RED | 에러 | 점검에서 걸렸거나 전기에 실패한 상태 | 메시지의 코드·사유를 보고 양식 수정 |
| GREEN | 생성완료 | 전기가 끝나 전표번호를 받은 상태 | 전표번호로 표준 조회 화면에서 확인 |
업로드와 전기를 나눴기 때문에 노랑에서 초록으로 가는 단계를 담당자가 직접 통제합니다.
실행 조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 파일이름 | 필수 | 작성한 업로드 양식 경로 |
| BDC 모드 | 필수 | N background / A display all / E display errors only. 초기값 N |
| 전기대상 선택 | 보조 | 작업전 전표만 한 번에 선택 |
| 에러만 보기 | 보조 | 반려된 전표만 추려 보기 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 상태 | 작업전 / 생성완료 / 에러 — 사양서의 YELLOW·GREEN·RED |
| 번호 | 양식의 전표 순번. 에러 전표를 찾는 기준 |
| 회사코드 · 증빙일 · 전기일 | 전표 헤더 필수 항목 |
| 유형 · 통화 · 환율 | 전표유형과 통화. 외화 건은 환율 표시 |
| 금액 · 라인 | 차변 합계와 전표의 라인 수 |
| 헤더 텍스트 | 전표 헤더 텍스트 |
| 전표번호 | 전기 성공 시 채워지는 SAP 전표번호 |
| Result message | 성공 내용 또는 오류 코드와 사유 |
전표 라인
| 컬럼 | 의미 · 표시 |
|---|---|
| 항목 · 전기키 · 차대 | 라인 키와 TBSL 전기키, 차/대 구분 |
| 계정 / 거래처 | G/L 라인은 계정, BP 라인은 공급업체·고객 |
| 금액 · 코스트센터 · 적요 | 라인 금액과 원가 귀속처, 설명 |
SAP 표준 기능 매핑
전기는 표준 펑션이 수행합니다. 이 화면은 앞단에서 걸러 내고 뒷단에서 결과를 신호등으로 정리합니다.
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
ZFI_DOCUMENT_POSTING | 전표 전기 펑션 | 업로드한 전표를 건별로 넘겨 일괄 전기 |
FB01 관점 | 전표 입력 | 화면 입력 대신 양식으로 대체, 전기 자체는 표준 로직 |
TBSL | 전기키 | 차대 구분과 계정유형 검증 기준 |
SKB1 · T001 | 계정·회사코드 마스터 | 계정 유효성과 회사코드 확인 |
SMW0 | 양식 저장소 | 업로드 양식을 로컬로 배포 |
FB03 관점 | 전표 조회 | 반환된 전표번호로 결과 확인 |
운영 데이터 소스 매핑
| 항목 | SAP 원천 | 비고 |
|---|---|---|
| 전표 헤더 | BKPF | 회사코드 · 증빙일 · 전기일 · 유형 · 통화 · 환율 · 헤더텍스트 |
| 전표 라인 | 전기키 · 계정 · 금액 | TBSL 로 차대와 계정유형 판정 |
| 공급업체 · 고객 | LFA1 · KNA1 | 업로드 시 존재 여부 확인 |
| 전기 처리 | ZFI_DOCUMENT_POSTING | BDC 모드는 화면 지정값 사용 |
| 양식 | SMW0 | 엑셀 다운로드로 배포 |
도입 시 확인이 필요한 부분
전기 펑션이 받는 필드 구성과 필수 여부는 회사 설정에 따라 달라집니다. 필드상태그룹에 따라 코스트센터나 세금코드가 필수가 되는 계정이 있어, 업로드 점검에 그 규칙을 함께 반영하면 전기 실패를 더 줄일 수 있습니다. 전표유형별 번호범위와 전기기간 열림 여부도 사전 확인 대상입니다.
참고 CDS 뷰
전기 결과를 되짚을 때는 전표 헤더와 라인에 전기키 정보를 붙인 뷰가 편합니다.
@AbapCatalog.sqlViewName: 'ZCMASSDOC'
@EndUserText.label: '대량전표 전기 결과 (Z)'
define view Z_C_MASS_DOC_RESULT
as select from bkpf as Header
inner join bseg as Line on Header.bukrs = Line.bukrs
and Header.belnr = Line.belnr
and Header.gjahr = Line.gjahr
left outer join tbsl as PostKey on Line.bschl = PostKey.bschl
{
key Header.bukrs as Bukrs,
key Header.belnr as Belnr,
key Header.gjahr as Gjahr,
key Line.buzei as Buzei,
Header.bldat as DocDate,
Header.budat as PostingDate,
Header.blart as DocType,
Header.waers as Waers,
Header.kursf as ExchRate,
Header.bktxt as HeaderText,
Header.usnam as CreatedBy,
Line.bschl as PostingKey,
PostKey.koart as AccountType,
Line.shkzg as DebitCredit,
Line.hkont as GlAccount,
Line.lifnr as Vendor,
Line.kunnr as Customer,
Line.wrbtr as Amount,
Line.kostl as CostCenter,
Line.sgtxt as ItemText
}전기 결과를 확인하거나 업로드 이력을 되짚을 때 쓰는 참고용 설계입니다. 전기는 표준 펑션이 담당합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 실행조건 영역 · 전표 목록 · 라인 상세 |
| 실행조건 | sap.m.Input · sap.m.ComboBox — 우측 끝에 전표전기 |
| 전표 목록 | sap.ui.table.Table — 다중선택, 상태·번호·회사코드 3컬럼 고정 |
| 신호등 | sap.m.ObjectStatus + 아이콘 · RowSettings.highlight |
| 라인 상세 | 전표 선택 시 cellClick 으로 라인 표시 |
| 선택 보조 | 전기대상 선택 버튼 — 작업전 상태만 addSelectionInterval |
| CSV | Blob + UTF-8 BOM — 양식 · 결과 2종 |
전표와 라인을 두 단으로 나눈 이유
목록에 라인까지 펼치면 전표 수십 건이 수백 줄이 되어 신호등이 묻힙니다. 위에는 전표 단위로 상태와 금액만 보여 주고, 확인이 필요한 전표를 고르면 아래에 라인이 열리게 했습니다. 차대 합계도 라인 영역에서 함께 보여 줘 균형이 깨진 전표를 바로 짚을 수 있습니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.massdoc) · ko 로케일 · sap_horizon |
Component.js | 실행조건 모델 · 결과 모델 초기화 |
view/Main.view.xml | 실행조건 + 전표 목록 + 라인 상세 |
controller/Main.controller.js | 양식 다운로드 · 업로드 점검 · 선택 · 전기 · 에러 필터 · CSV |
model/ModelMock.js | 업로드 점검 7종 · 신호등 부여 · 전기 시뮬레이션 |
model/formatter.js | 신호등 · 금액 · 일자 · 환율 · 차대 · 계정/거래처 포맷터 |
i18n/i18n_ko.properties | ko 로케일 리소스 — 오류 메시지 포함 |
localdata/massdoc.json | 업로드 양식 샘플 (정상·에러 혼재) |
검증 결과
화면 구성에 쓴 데이터는 정상 전표와 점검에 걸리는 전표를 섞어 만든 업로드 양식입니다.
| 데이터 | 규모 | 구성 |
|---|---|---|
| 업로드 전표 | 23건 | 매입송장 · 고객청구 · 외화지급 · 일반대체 (정상 16 · 에러 7) |
| 전표 라인 | 56건 | G/L · 공급업체 · 고객 라인 혼재 |
| 점검 규칙 | 7종 | 필수필드 · 날짜 · 금액 · 전기키 · 공급업체 · 고객 · 차대균형 |
| 검증 항목 | 결과 |
|---|---|
| 모든 전표에 라인 존재 · 헤더 라인수와 일치 | 통과 |
| 정상 전표는 차변 합계 = 대변 합계 | 통과 |
| 정상 전표는 필수필드 보유 · 날짜 8자리 | 통과 |
| 전표유형·통화·환율이 등록 목록과 일치 | 통과 |
| 전기키가 TBSL 에 정의 · 차대·계정유형 일치 | 통과 |
| G/L 라인은 계정, BP 라인은 파트너 보유 | 통과 |
| 공급업체는 LFA1, 고객은 KNA1 에 존재 | 통과 |
| E01~E07 각 에러가 실제 위반 조건과 일치 | 통과 |
| 번호 연속·중복 없음 · BDC 모드 3종 | 통과 |
| 화면 렌더링 — 업로드 → 라인 → 차단 2종 → 선택 → 전기 | 10/10 |
전표 금액·거래처는 모두 검증용 데이터입니다.
자주 묻는 질문
에러가 섞이면 통과한 건까지 막는 이유는?
사양서에 명시된 처리이기도 하고, 실무에서도 그 편이 안전합니다. 일부만 전기되면 어디까지 들어갔는지 확인하는 데 시간이 더 듭니다. 에러를 먼저 고쳐 전부 통과시킨 뒤 한 번에 전기하는 흐름이 결과적으로 빠릅니다. 급하면 [전기대상 선택]으로 작업전 건만 골라 먼저 처리할 수 있습니다.
업로드할 때 차대 균형까지 보는 이유는?
전기 단계에서 걸리면 펑션 호출이 실패하면서 원인을 찾기 어렵습니다. 업로드 시점에 합계를 맞춰 보면 어느 전표의 차변과 대변이 얼마나 벌어졌는지 라인 상세에서 바로 확인됩니다. 양식 작성 단계의 실수는 여기서 대부분 걸립니다.
BDC 모드는 언제 바꾸나요?
평소에는 background processing(N)으로 화면 없이 처리합니다. 전기가 계속 실패하는데 메시지만으로 원인을 알기 어려울 때 display errors only(E)로 바꾸면 실패한 화면이 표시되어 어떤 필드에서 막혔는지 볼 수 있습니다.
금액 포맷 오류는 어떤 경우인가요?
엑셀에서 천단위 구분이나 '원' 같은 단위가 붙은 채로 저장된 경우입니다. 숫자로 변환되지 않아 전기 시 0원으로 들어가거나 실패합니다. 업로드 시점에 변환을 시도하고 실패하면 반려합니다.
SAP 표준 기능과 어떻게 이어지나요?
전기 자체는 ZFI_DOCUMENT_POSTING 이 수행하고 결과는 BKPF·BSEG 표준 구조에 그대로 남습니다. 이 화면은 그 앞단에서 양식을 점검해 통과한 건만 넘기고, 뒷단에서 전표번호와 메시지를 모아 신호등으로 보여 주는 역할을 합니다.