SAP 대량 전표 작성 — 엑셀로 올리고 오류만 골라 고친다
엑셀 파일로 다건 전표를 올려 검증하고, 오류가 난 줄만 표시해 수정 후 다시 처리하는 화면입니다.
매월 같은 형태의 전표를 수십 건씩 넣는 업무가 있습니다. 급여 배분, 보험료 안분, 부서별 공통비 배부 같은 것들입니다.
한 건씩 입력하면 시간도 걸리고 오타도 납니다. 그렇다고 한꺼번에 올려 하나라도 틀리면 전체가 실패하는 방식도 곤란합니다. 표준 전표 구조를 그대로 이어받아 행별로 검증하고 오류만 남기도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 전표 키 — 회사코드 · 전표번호(
BELNR) · 회계연도 · 라인(BUZEI) - 헤더 항목 — 전표유형(
BLART) · 증빙일 · 전기일 · 헤더텍스트 · 통화 - 라인 항목 — 계정 · 차대 · 금액 · 코스트센터 · 적요
- 처리 단위 — 업로드 묶음을 식별하는
GUID - 행 번호 — 원본 파일의 줄 위치(
LINENUM)
| 항목 | 내용 |
|---|---|
| 기반 기능 | 표준 전기 인터페이스 (BAPI 계열) |
| 업무 영역 | 재무회계(FI) · 전표 일괄 처리 |
| Namespace | fi079_massjournalentry |
| 셸 구조 | 파일 업로드 영역 + 검증 결과 목록 + 재처리 버튼 |
| 화면 수 | 업로드·처리 화면 1개 |
| 데이터 | 업로드 데이터·처리 결과·파일 이력 등 다중 엔티티 |
| 성격 | 입력형 — 표준 전기 인터페이스 호출 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 1종 둘러보기
엑셀 양식에 맞춰 파일을 올리면 행별로 검증됩니다 → 오류 행만 수정하고 → 정상 건은 전기하고 나머지를 재처리합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 양식 다운로드로 엑셀 템플릿을 받습니다. 열 순서가 정해져 있습니다.
- 데이터를 채워 파일 업로드합니다. 업로드 묶음마다 GUID 가 부여됩니다.
- 행별 검증 결과를 확인합니다. 상태와 메시지가 줄마다 표시됩니다.
- 오류 행을 화면에서 직접 수정하거나 파일을 고쳐 다시 올립니다.
- 정상 건만 골라 전기할 수 있습니다.
- 처리 결과는 CSV 다운로드로 내려받아 기록으로 남깁니다.
업로드 검증 규칙
행마다 독립적으로 검증하고 결과를 남깁니다.
① 형식 검증 필수 열 존재 · 날짜 형식 · 숫자 형식
② 마스터 검증 계정 · 코스트센터 · 거래처가 실제로 존재
③ 전표 검증 전표 단위로 차대일치 · 전기 기간
행별 상태 대기 → 검증 통과 / 오류(메시지 포함)
전기 시 통과한 전표만 처리, 오류 건은 남김
전체 실패가 아니라 행별로 처리하는 이유
100건을 올렸는데 한 줄이 틀려 전체가 실패하면, 고친 뒤 100건을 다시 검증해야 합니다. 행별로 처리하면 99건은 넘어가고 한 줄만 남습니다. 다만 전표 단위 차대일치는 라인이 묶여야 판정되므로, 검증 단위가 행과 전표 두 층입니다.
일괄 처리 4단계
| 단계 | 내용 | 결과 |
|---|---|---|
| ① 양식 준비 | 템플릿에 데이터 입력 | 엑셀 파일 |
| ② 업로드 | 파일 전송과 파싱 | 업로드 묶음(GUID) |
| ③ 검증 | 행별·전표별 검증 | 상태와 메시지 |
| ④ 전기 | 통과 건 전기 | 전표번호 |
입력 항목
엑셀 템플릿의 열 구성입니다. 순서가 바뀌면 파싱이 실패합니다.
| 항목 | 필수 | 설명 |
|---|---|---|
회사코드 BUKRS | 필수 | 전기 대상 법인 |
전표유형 BLART | 필수 | 전표 성격 |
증빙일 BLDAT · 전기일 BUDAT | 필수 | 날짜 |
헤더텍스트 BKTXT | 선택 | 전표 설명 |
통화 WAERS | 필수 | 거래통화 |
라인 번호 BUZEI | 필수 | 전표 내 순번 |
| 계정 · 차대 · 금액 | 필수 | 라인 필수값 |
| 코스트센터 · 적요 | 조건부 | 비용 계정은 코스트센터 필수 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
행 번호 LINENUM | 원본 파일 줄 위치 |
업로드 묶음 GUID | 처리 단위 식별자 |
전표번호 BELNR · 라인 BUZEI | 전기 후 채번 |
회사코드 BUKRS · 회계연도 GJAHR | 전기 대상 |
전표유형 BLART | 전표 성격 |
증빙일 BLDAT · 전기일 BUDAT | 날짜 정보 |
통화 WAERS · 금액 | 거래 금액 |
상태 STATUS | 대기 / 성공 / 오류. 상태 색 |
메시지 MESSAGE | 오류 원인 안내 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
| 표준 전기 인터페이스 | 전표 생성 | 행별 검증 결과를 화면에 유지 |
FB01 | 단건 전표 입력 | 다건을 파일로 처리 |
BKPF · BSEG | 전표 헤더와 라인 | 전기 대상 구조 |
SKA1 · CSKS | 계정 · 코스트센터 마스터 | 마스터 검증 |
T001B | 전기 기간 설정 | 전기일 검증 |
도입 시 확인이 필요한 부분
업로드 건수가 많으면 처리 시간이 길어져 화면이 멈춘 것처럼 보입니다. 수백 건 이상이면 백그라운드 처리로 전환하고 결과를 나중에 확인하는 구조가 필요합니다. 또 템플릿 열 순서가 바뀌면 파싱이 깨지므로 버전 관리가 필요합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCMASSJOURN'
@EndUserText.label: '대량 전표 업로드 이력 (Z)'
define view Z_C_MASS_JOURNAL_UPLOAD
as select from zmass_upload as Upload
{
key Upload.guid as Guid,
key Upload.linenum as LineNum,
Upload.bukrs,
Upload.blart,
Upload.bldat,
Upload.budat,
Upload.waers,
Upload.belnr,
Upload.gjahr,
Upload.buzei,
Upload.status as Status,
Upload.message as Message,
Upload.created_by,
Upload.created_at
// 전기 성공 시 BKPF/BSEG 로 연결되는 전표 키가 채워짐
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 업로드 영역 · 결과 목록 |
| 파일 업로드 | sap.m.upload.UploadSet — 엑셀 파일 |
| 결과 목록 | sap.ui.table.Table — 행별 상태와 메시지 |
| 상태 표시 | sap.m.ObjectStatus — 대기 / 성공 / 오류 |
| 인라인 수정 | 오류 행을 화면에서 직접 편집 |
| 처리 버튼 | 전체 전기 · 선택 전기 · 재처리 |
원본 행 번호를 남기는 이유
오류 메시지에 전표번호만 있으면 엑셀 어느 줄을 고쳐야 하는지 찾아야 합니다. 전기 전에는 전표번호도 없습니다. 원본 파일의 줄 번호를 남기면 "37번 줄 계정 오류" 로 바로 짚을 수 있습니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — ko 로케일 · sap_horizon |
view/Main.view.xml | 업로드 영역과 결과 목록 |
controller/Main.controller.js | 파일 파싱 · 행별 검증 · 전기 호출 |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 일자 · 상태 색 포맷터 |
localdata/DataList.json | 업로드 데이터 |
localdata/FileUploads.json | 파일 이력 |
localdata/GUID.json | 처리 묶음 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 행별 검증 결과가 상태와 메시지로 기록 | 통과 |
| 전표 단위 차변 합계 = 대변 합계 검증 | 통과 |
| 마스터 미존재 계정·코스트센터는 오류 처리 | 통과 |
| 오류 행이 있어도 정상 건은 전기 가능 | 통과 |
| 전기 성공 행은 전표번호 채번 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 업로드 실동작 후 캡처 | 통과 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
몇 건까지 올릴 수 있나요?
화면에서 처리하는 방식은 수백 건이 한계입니다. 그 이상이면 응답이 느려 사용자가 멈춘 줄 알게 되므로 백그라운드 처리로 전환하는 것이 좋습니다.
오류 행만 다시 올려도 되나요?
됩니다. 오류 행만 고쳐 다시 올리거나 화면에서 직접 수정한 뒤 재처리하면 됩니다. 정상 처리된 건은 중복 전기되지 않습니다.
차대일치는 행별로 검증하나요?
전표 단위입니다. 한 전표를 이루는 라인들이 모두 모여야 차대가 맞는지 판정할 수 있어, 행 검증과 전표 검증이 두 단계로 나뉩니다.
SAP 표준 기능과 어떻게 이어지나요?
전기는 표준 인터페이스가 담당하므로 데이터는 표준 구조에 그대로 들어갑니다. 이 화면은 파일 파싱과 행별 검증, 오류 건만 남기는 재처리 흐름을 더한 확장입니다.