SAP 나의전표 관리 — 내가 올린 전표가 지금 어디까지 왔나
본인이 작성한 전표를 조회·수정·출력하고, 재무팀이면 승인과 취소까지 처리하는 화면입니다.
전표를 올린 사람은 그 전표가 승인됐는지를 계속 궁금해합니다. 그런데 표준 화면에서는 전표번호를 알아야 조회할 수 있습니다.
내가 올린 것만 모아 보면 상태가 한눈에 들어옵니다. 여기에 재무팀은 승인과 취소까지 같은 화면에서 처리할 수 있게 권한별로 버튼을 나눴습니다. OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 전표 — 전표번호 · 전표유형 · 전기/증빙/입력일자
- 작성자 — 사용자 ID 와 부서
- 설명 — Reference key 와 Header Text
- 승인 — 승인번호(
XREF2_HD)와 취소전표 - 전자세금계산서 — DTI 승인번호
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 결산 · 전표 처리 |
| Namespace | zui5.mydoc |
| 셸 구조 | 조회조건 영역(우측 조회) + 전표 목록 + 라인 상세 |
| 화면 수 | 조회·처리 화면 1개 + 라인 상세 |
| 데이터 | 전표 78건 (라인 156건) · 승인 36 · 취소 6 · 전자세금계산서 22 · 본인 작성 13 |
| 성격 | 조회·처리형 — 승인·취소는 시뮬레이션 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
전기일자·입력일자·전표상태로 조회하면 본인 전표가 나옵니다 → 라인을 펼쳐 내용을 확인하고 → 재무팀이면 승인·승인취소·전표취소를 처리합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 Posting Date · Entry Date 범위를 넣습니다.
- 전표상태를 고릅니다. 전체 / 미승인 / 승인 / 취소입니다.
- 전표유형·Document date·Document Number·User ID·Reference key·Header Text·승인번호로 조건을 더할 수 있습니다.
- 재무팀 사용자는 본인 작성 전표만을 해제해 전체를 볼 수 있습니다.
- 전표를 선택하면 라인이 차대·계정·거래처·금액·코스트센터·적요로 펼쳐집니다.
- 출력으로 선택 라인을 전표출력 프로그램에 전달합니다.
- 재무팀은 전표승인 · 전표승인취소 · 전표취소를 처리합니다.
- REFRESH 로 결과를 다시 조회합니다.
권한과 처리 제한
권한에 따라 보이는 것과 할 수 있는 것이 갈립니다.
재무팀 여부 판단 = ZTFIA0100 등록 여부
해당 없음 → 승인 관련 버튼 미표시, 본인 작성 전표만 조회
재무팀 → 전체 조회 + 승인·승인취소·취소 버튼
승인 대상 = 미승인 AND 취소되지 않은 전표
이미 승인·취소된 건은 자동 제외, 제외 건수를 확인 창에 표시
승인번호 = 사용자ID + 시스템일자
승인된 전표 취소 시도 → 차단, 전표승인취소를 먼저 안내
승인된 전표의 취소를 막는 이유
승인은 "확인했다" 는 기록입니다. 승인된 상태로 취소되면 승인 이력만 남고 전표는 사라져 무엇을 승인했는지 알 수 없게 됩니다. 승인을 먼저 풀게 하면 순서가 기록에 남아 나중에 설명할 수 있습니다.
기능과 권한
| 버튼 | 권한 | 동작 |
|---|---|---|
| REFRESH | 전체 | 결과 화면을 다시 조회 |
| 출력 | 전체 | 선택 라인을 전표출력 프로그램에 전달 |
| 전표승인 | 재무팀 | XREF2_HD 에 승인번호 기록 |
| 전표승인취소 | 재무팀 | XREF2_HD 를 지워 미승인으로 |
| 전표취소 | 재무팀 | Reverse 처리 후 취소전표번호 표시 |
조회조건
| 항목 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 대상 회사코드 |
| Posting Date · Entry Date | 필수 | 전기일자 · 입력일자 범위 |
| 전표유형 · Document date · Document Number | 선택 | 추가 조건 |
| User ID · Reference key · Header Text · 승인번호 | 선택 | 추가 조건 |
| 전표상태 | 필수 | 전체 / 미승인 / 승인 / 취소 |
| 본인 작성 전표만 | 선택 | 재무팀 사용자만 해제 가능 (화면 확장) |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 전표상태 | 미승인 / 승인 / 취소. 상태 색 |
| 전표번호 · 전표유형 | 전표 식별 |
| 전기/증빙/입력 일자 | 날짜 정보 |
| 작성자와 부서 | 누가 올렸나 |
| 금액 | 전표 총액 |
| Reference key · Header Text | 전표 설명 |
| 승인번호 | 사용자ID + 시스템일자 |
| 취소전표 | Reverse 결과 |
| 전자세금계산서 승인번호 | DTI 정보가 있는 전표 |
| 라인 | 차대 · 계정 · 거래처 · 금액 · 코스트센터 · 적요 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FB03 | 전표 조회 | 전표 상세 |
FB08 | 전표 역분개 | 전표취소 |
BKPF · BSEG | 전표 헤더와 라인 | 조회 원천 |
ZTFIA0100 | 재무팀 사용자 | 권한 판단 |
도입 시 확인이 필요한 부분
승인번호를 XREF2_HD 에 넣는 방식은 표준 필드를 전용하는 것입니다. 그 필드를 다른 용도로 쓰고 있다면 충돌합니다. 또 승인은 표준 워크플로가 아니라 필드 기록이라, 다단계 결재가 필요하면 별도 설계가 필요합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCMYDOC'
@EndUserText.label: '나의전표 관리 (Z)'
define view Z_C_MY_DOCUMENT
as select from bkpf as Header
left outer join bseg as Line on Header.bukrs = Line.bukrs
and Header.belnr = Line.belnr
and Header.gjahr = Line.gjahr
left outer join t003t as DocType on Header.blart = DocType.blart
and DocType.spras = 'K'
{
key Header.bukrs, key Header.belnr, key Header.gjahr,
Header.blart, DocType.ltext as BlartText,
Header.budat, Header.bldat, Header.cpudt as EntryDate,
Header.usnam as CreatedBy,
Header.xblnr as ReferenceKey,
Header.bktxt as HeaderText,
Header.xref2_hd as ApprovalNo,
Header.stblg as ReverseDocument,
Line.shkzg, Line.hkont, Line.dmbtr, Line.kostl, Line.sgtxt
// 전표상태 = 승인번호·취소전표 유무로 판정
// 재무팀 여부는 ZTFIA0100 으로 확인
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 전표 목록 · 라인 상세 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 전표 목록 | sap.m.Table — 다중 선택 |
| 상태 표시 | sap.m.ObjectStatus — 미승인 / 승인 / 취소 |
| 권한별 버튼 | 재무팀이 아니면 승인 관련 버튼 미표시 |
권한 없는 버튼을 숨기는 이유
비활성 상태로 보이기만 해도 사용자는 눌러 보고 왜 안 되는지 묻습니다. 권한이 없으면 아예 나타나지 않게 하면 그 화면에서 할 수 있는 일만 보이고 문의도 줄어듭니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.mydoc) · ko 로케일 |
view/Main.view.xml | 조회조건 · 전표 목록 · 라인 상세 |
controller/Main.controller.js | 조회 · 권한 판단 · 승인·취소 처리 |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 일자 · 상태 색 포맷터 |
localdata/mydoc.json | 전표 78건 · 라인 156건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 승인 전표는 승인번호 보유 · 형식(사용자ID + 일자) 일치 | 통과 |
| 취소 전표는 취소전표번호 보유 · 승인 건은 취소되지 않음 | 통과 |
| 입력일자 ≥ 전기일자 ≥ 증빙일자 · 오늘 이하 | 통과 |
| 전표별 차변 합계 = 대변 합계 | 통과 |
| 재무팀이 아니면 승인 버튼 미표시 · 본인 전표만 조회 | 통과 |
| 승인 대상에서 승인·취소 건 자동 제외 | 통과 |
| 화면 렌더링 — 실브라우저 조회 → 승인 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
승인번호가 왜 사용자ID + 일자인가요?
누가 언제 승인했는지를 번호 하나에 담기 위해서입니다. 별도 이력 테이블 없이도 필드만 보면 승인 주체와 시점이 드러납니다.
재무팀이 아니어도 전체를 볼 수 있나요?
없습니다. 본인 작성 전표만 조회되며 승인 관련 버튼도 나타나지 않습니다. 권한은 ZTFIA0100 등록 여부로 판단합니다.
전표를 취소하면 승인 이력도 사라지나요?
승인된 전표는 취소가 막힙니다. 먼저 승인을 취소한 뒤 전표를 취소해야 하므로 순서가 기록에 남습니다.
SAP 표준 기능과 어떻게 이어지나요?
전표 조회와 역분개는 표준 FI 가 담당합니다. 이 화면은 본인 전표를 모아 보여 주고 권한별 승인 처리를 붙인 확장입니다.