SAP 전표 승인 — 내용을 보고 결재하고, 반려하면 이유를 남긴다
결재 대기 전표를 목록으로 받아 라인까지 확인한 뒤 승인하거나 반려하고, 처리 이력을 남기는 화면입니다.
결재는 버튼을 누르는 일이 아니라 내용을 확인하는 일입니다. 그런데 승인 화면에 전표번호와 금액만 있으면 확인할 것이 없습니다.
결국 다른 화면에서 전표를 열어 보고 돌아와 버튼을 누르게 됩니다. 표준 임시 전표 구조를 그대로 이어받아 목록에서 바로 라인을 펼쳐 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 2종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 임시 전표 — 전표번호(
BELNR) · 회계연도 · 회사코드 · 전표유형 - 전표 내용 — 증빙일 · 전기일 · 헤더텍스트 · 통화 · 금액
- 라인 — 계정 · 차대 · 금액 · 코스트센터 · 적요
- 결재 상태 — 대기 · 승인 · 반려(
STATUS) - 결재선 — 단계별 결재자와 처리 정보
| 항목 | 내용 |
|---|---|
| 대응 T-code | FBV0 (임시 전표 전기) · FBV3 |
| 업무 영역 | 재무회계(FI) · 전표 결재 |
| Namespace | fi078_journalapproval |
| 셸 구조 | 조회조건 영역 + 결재 대기 목록 + 라인 상세 + 승인·반려 버튼 |
| 화면 수 | 조회 화면 1개 + 라인 상세 |
| 데이터 | 전표 목록·라인·결재선 등 다중 엔티티 |
| 성격 | 처리형 — 승인 시 표준 전기 호출 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 2종 둘러보기
회사코드·전표유형·상태로 조회하면 결재 대기 전표가 나옵니다 → 라인을 펼쳐 내용을 확인하고 → 승인하거나 사유를 적어 반려합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드를 고르고 상태를 대기로 둡니다.
- 전표유형으로 성격을 나눠 볼 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 전표를 선택하면 라인이 펼쳐집니다. 계정과 금액, 코스트센터를 확인합니다.
- 이상이 없으면 승인합니다. 승인하면 전기가 진행됩니다.
- 문제가 있으면 반려하고 사유를 입력합니다. 사유 없이 반려할 수 없습니다.
- 여러 건을 한 번에 처리하려면 체크 후 일괄 승인을 씁니다.
승인 판정 규칙
승인은 두 조건이 맞아야 진행됩니다.
결재 권한 있음 · 현재 단계 결재자 → 승인·반려 가능
그 외 → 조회만 가능
승인 시 전기 인터페이스 호출 → 성공하면 상태 변경
전기 실패하면 승인도 취소 (원자적 처리)
반려 시 사유 필수 입력 → 상신자에게 반환
승인과 전기를 묶어 처리하는 이유
승인 상태만 바꾸고 전기가 실패하면, 결재는 끝났는데 장부에는 없는 전표가 생깁니다. 나중에 정리하려면 승인 이력과 대조해야 해서 번거롭습니다. 전기까지 성공해야 승인으로 처리하면 그런 어긋남이 남지 않습니다.
결재 처리 결과 3종
| 처리 | 상황 | 결과 |
|---|---|---|
| 승인 | 내용 확인 후 결재 | 전기 진행 · 다음 단계로 |
| 반려 | 문제 발견 | 상신자에게 반환 · 사유 기록 |
| 보류 | 추가 확인 필요 | 상태 유지 · 메모 남김 |
보류는 표준 기능이 아니라 운영상 필요하면 별도로 설계합니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 BUKRS | 필수 | 대상 법인 |
상태 STATUS | 선택 | 대기 / 승인 / 반려 |
전표유형 BLART | 선택 | 전표 성격 |
증빙일 BLDAT | 선택 | 기간 From~To |
| 상신자 | 선택 | 작성 담당자 |
| 금액 범위 | 선택 | 고액 건만 별도 확인 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
전표번호 BELNR · 회계연도 GJAHR | 전표 식별 |
회사코드 BUKRS | 귀속 법인 |
전표유형 BLART | 전표 성격 |
증빙일 BLDAT · 전기일 BUDAT | 날짜 정보 |
헤더텍스트 BKTXT | 전표 설명 |
통화 WAERS · 금액 | 전표 총액 |
상태 STATUS | 대기 / 승인 / 반려. 상태 색 |
메시지 MESSAGE | 처리 결과 안내 |
| 라인 상세 | 계정 · 차대 · 금액 · 코스트센터 · 적요 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FBV0 | 임시 전표 전기 | 승인과 전기를 하나의 처리로 묶음 |
FBV3 | 임시 전표 조회 | 목록에서 라인까지 바로 확인 |
VBKPF · VBSEGS | 임시 전표 헤더와 라인 | 조회 원천 |
SBWP | 업무 수신함 | 결재 대기 목록 |
T003 | 전표유형 설정 | 유형별 권한 확인 |
도입 시 확인이 필요한 부분
결재 권한을 어떻게 판정할지가 핵심입니다. SAP 권한 객체로만 통제하면 금액 구간별 결재선을 구현하기 어렵습니다. 결재선 관리 테이블을 두고 권한과 함께 판정하는 구조가 일반적입니다. 일괄 승인 시 일부만 실패하면 어떻게 처리할지도 정해야 합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCJOURNALAPP'
@EndUserText.label: '전표 승인 대상 (Z)'
define view Z_C_JOURNAL_APPROVAL
as select from vbkpf as Parked
left outer join vbsegs as Line on Parked.ausbk = Line.ausbk
and Parked.belnr = Line.belnr
and Parked.gjahr = Line.gjahr
left outer join t003t as DocType on Parked.blart = DocType.blart
and DocType.spras = 'K'
{
key Parked.bukrs, key Parked.belnr, key Parked.gjahr,
Parked.blart, DocType.ltext as BlartText,
Parked.bldat, Parked.budat, Parked.bktxt, Parked.waers,
Parked.usnam as Submitter,
Line.hkont, Line.shkzg, Line.wrbtr, Line.kostl, Line.sgtxt
// 결재 상태와 단계는 결재선 관리 테이블과 조인
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 목록 · 라인 상세 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 목록 | sap.m.Table — 다중 선택으로 일괄 승인 |
| 라인 상세 | 선택 시 하단에 펼침 |
| 처리 버튼 | 승인 · 반려 — 반려 시 사유 입력 다이얼로그 |
반려 사유를 필수로 둔 이유
사유 없이 반려되면 상신자는 무엇을 고쳐야 할지 모른 채 다시 올립니다. 같은 전표가 두세 번 오가면서 시간만 흐릅니다. 사유를 필수로 하면 한 번의 반려로 수정 방향이 전달됩니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — ko 로케일 · sap_horizon |
view/Main.view.xml | 조회조건 · 목록 · 라인 상세 |
controller/Main.controller.js | 조회 · 승인·반려 처리 · 일괄 처리 |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 일자 · 상태 색 포맷터 |
localdata/DataLists.json | 전표 목록 |
localdata/ZFCMC_F00_C007*.json | 라인과 결재 관련 엔티티 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 전표 라인 차변 합계 = 대변 합계 | 통과 |
| 승인 시 전기 성공 후에만 상태 변경 | 통과 |
| 반려 시 사유 미입력이면 처리 차단 | 통과 |
| 결재 권한 없는 사용자는 조회만 가능 | 통과 |
| 일괄 승인 시 건별 결과 메시지 반환 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 상세 실동작 후 캡처 | 2/2 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
일괄 승인 중 일부가 실패하면요?
건별로 처리해 성공한 것만 승인되고 실패한 건은 메시지로 표시합니다. 전체를 되돌리면 문제없는 전표까지 다시 결재해야 해서 효율이 떨어집니다.
승인하면 바로 전기되나요?
최종 단계 승인이면 전기됩니다. 다단계 결재라면 다음 단계로 넘어가고, 마지막 결재자가 승인할 때 전기됩니다.
반려된 전표는 어떻게 되나요?
상신자에게 돌아가고 상태가 반려로 남습니다. 수정 후 다시 상신하거나 폐기합니다. 폐기하지 않으면 임시 전표가 계속 쌓입니다.
SAP 표준 기능과 어떻게 이어지나요?
임시 전표 저장과 전기는 표준이 담당합니다. 이 화면은 결재자가 목록에서 바로 라인을 확인하고 승인과 전기를 한 번에 처리하게 하는 확장입니다.