SAP 일일전도금 현황 — 계정을 갈아탄 지출의 진짜 비목 찾기
전도금 잔액을 하루 단위로 따라가면서, 미결관리 계정을 거쳐 간 지출은 반제전표를 따라가 실제 비용 계정까지 되짚는 화면입니다.
전도금 장부에서 지출 한 줄을 봤는데 계정이 미지급비용이라면, 그 돈이 어디에 쓰였는지 알 수 없습니다.
실제로는 택시비였을 수도, 사무용품이었을 수도 있습니다. 미결관리 계정은 거쳐 가는 자리일 뿐이라 진짜 비목은 반제전표 너머에 있습니다. 그런데 그 전표를 따라가 보면 또 미결관리 계정인 경우도 있습니다. 이 화면은 미결관리가 아닌 라인을 만날 때까지 꼬리를 물고 따라가 실제 처리전표의 계정과 Text 를 가져옵니다. 그래서 목록에 보이는 계정이 곧 그 돈이 쓰인 자리입니다.
SAP 표준 구조를 그대로 이어받은 부분
- 전표 조회 —
BSIS로 전표번호 목록,BSEG로 라인 아이템 - 미결관리 판정 —
BSEG-XOPVW가 'X' 이면 반제전표(AUGBL)를 추적 - Clearing 제외 —
AUGBL = BELNR인 건은 목록에서 제외 - 입금 라인 —
VALUT가 조회일자 해당월 1일인 건을 첫 줄로
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 전도금 관리 |
| Namespace | zui5.imprest |
| 셸 구조 | 조회조건 영역(우측 조회) + 전기이월 집계 + 사용내역 + 추적 경로 |
| 화면 수 | 조회 화면 1개 + 추적 경로 패널 |
| 데이터 | 라인 39건 (입금 5 · 지출 34) · 전도금 계정 5개 · 추적 16건 |
| 성격 | 조회형(Read-Only) |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 6종 둘러보기
상단에서 이월액과 잔액을 확인하고 → 첫 줄 입금부터 지출을 따라가며 → 추적 라인을 눌러 실제 비목의 경로를 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- Imprest Account 에서 확인할 전도금 계정을 고릅니다.
- Doc. Date 를 정합니다. 기본값은 당일이며 그날까지의 지출이 집계됩니다.
- 상단에서 전기이월액과 현재 잔액·사용률을 먼저 확인합니다.
- 목록의 첫 줄은 해당 월 입금이고 그 아래로 지출이 잔액과 함께 이어집니다.
- 추적 표시가 있는 라인을 클릭하면 미결관리 경로가 3단계로 펼쳐집니다.
- CSV 다운로드로 전기이월액과 사용내역을 함께 내려받습니다.
조회·추적 규칙
입금과 지출을 모으는 방식, 그리고 계정을 되짚는 방식이 이 화면의 뼈대입니다.
조회 흐름 (사양서)
0) 해당 월 전도금 입금 내역을 BSEG 에서 조회해 첫 줄로 출력
BUKRS · HKONT(전도금 계정) · GJAHR
VALUT = 조회일자의 해당월 01일
1) BSIS 에서 전표번호 목록 조회
BLDAT = 해당월 01일 ~ 조회일자
2) 그 전표를 BSEG 에서 읽어 다른 라인 아이템 조회
AUGBL = BELNR 인 건(Clearing 전표)은 제외
3) 라인의 G/L 계정이 미결관리 대상인지 판단 (BSEG-XOPVW = 'X')
미결관리이면 반제전표(BSEG-AUGBL)를 따라가
상대 Line item 의 계정이 또 미결관리인지 확인
미결관리가 아닌 라인을 만날 때까지 반복
→ 실제 처리전표의 계정과 Text 를 읽어 목록에 표시
상단 전기이월액 = 전월 잔액
(당년 누적입금 − 누적지출)
전도금은 매월이 아니라 분기 단위로 정산| 항목 | 산식 · 규칙 |
|---|---|
| 입금 라인 | VALUT 가 해당월 1일인 건. 항상 첫 줄 |
| 지출 범위 | BLDAT 이 해당월 1일 ~ 조회일자 |
| Clearing 제외 | AUGBL = BELNR 인 라인은 목록에서 뺀다 |
| 미결관리 판정 | BSEG-XOPVW 가 'X' |
| 추적 종료 | 미결관리가 아닌 라인을 만나면 그 계정·Text 확정 |
| 잔액 | 직전 잔액 + 입금 − 지출 (줄마다 누적) |
| 전기이월액 | 당년 누적입금 − 누적지출 (전월까지) |
목록에 실제 계정을 바로 보여 주는 이유
담당자가 알고 싶은 것은 '이 돈이 어디 쓰였나'입니다. 경유 계정을 그대로 보여 주면 한 줄마다 전표를 열어 확인해야 합니다. 추적을 화면이 대신하고 결과만 보여 주면 목록을 훑는 것만으로 사용처가 정리됩니다. 경로가 궁금하면 그때 눌러 보면 됩니다.
미결관리 추적 3단계
미결관리 계정을 만나면 한 단계씩 더 따라갑니다.
| 단계 | 계정 | 미결관리 여부 | 다음 동작 |
|---|---|---|---|
| 1단계 | 전도금 계정 | 미결관리 | 반제전표를 따라간다 |
| 2단계 | 경유 계정 (미지급비용 · 가지급금 등) | 미결관리 | 다시 반제전표를 따라간다 |
| 3단계 | 실제 비용 계정 | 미결관리 아님 | 계정과 Text 확정 — 목록에 표시 |
화면이 대신 따라가 준 덕분에 목록의 계정이 곧 실제 사용처입니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| Company Code | 필수 | 변경 못함. 로그인 사용자 → 사번 → 사원 Vendor 순으로 기본값 결정 |
| Doc. Date | 선택 | 기본값 당일. 이 날짜까지의 지출을 집계 |
| Imprest Account | 필수 | 전도금 계정 (Search help) |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 구분 | 입금 / 지출 |
| Company Code · G/L Account · Account Text | 회사코드와 계정. 추적이 끝난 실제 계정 |
| Item Text | 적요 |
| Incoming · Outgoing amount | 입금액과 지출액 |
| Balance | 줄마다 누적된 잔액 |
| Document No. · Line · Doc. date | 전표 키와 증빙일 |
| 추적 · 경유 계정 · 반제전표 | 미결관리를 거쳤는지와 그 경로 |
보조 기능
| 컬럼 | 의미 · 표시 |
|---|---|
| 전기이월액 | 전월 잔액과 근거 전표번호 |
| 당월 입금 · 지출 · 현재 잔액 | 상단 집계 |
| 사용률 | 지출 ÷ 입금. 높으면 경고 색 |
SAP 표준 기능 매핑
전표는 표준이 만들고, 이 화면은 그 관계를 따라가 실제 비목을 찾습니다.
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
BSIS | G/L 미결항목 | 전도금 계정의 전표번호 목록 |
BSEG | 전표 라인 | 라인 아이템과 미결관리 여부(XOPVW) |
FAGLFLEXT | 총계정원장 합계 | 누적 잔액 산출 근거 |
FBL3N 관점 | 계정 개별항목 | 전표 단위 확인 |
F-03 관점 | G/L 반제 | 미결관리 계정의 반제 처리 |
FB03 | 전표 조회 | 추적 경로의 전표 확인 |
운영 데이터 소스 매핑
| 항목 | SAP 원천 | 비고 |
|---|---|---|
| 전표 목록 | BSIS | BUKRS · HKONT · GJAHR · BLDAT |
| 라인 아이템 | BSEG | BELNR · BUZEI · HKONT · XOPVW · AUGBL · AUGDT |
| 입금 판정 | BSEG-VALUT | 해당월 1일 |
| 잔액 | FAGLFLEXT | 당년 누적입금 − 누적지출 |
| 정산 주기 | 분기 | 매월 정산하지 않음 (사양서) |
도입 시 확인이 필요한 부분
전도금 계정 목록과 미결관리 설정이 회사마다 다릅니다. 계정을 하드코딩하지 말고 설정 테이블이나 계정 그룹으로 관리하면 사업장이 늘어도 프로그램을 고치지 않아도 됩니다. 추적 단계에 상한을 두는 것도 필요합니다. 반제 관계가 순환하면 무한 조회로 빠질 수 있습니다.
참고 CDS 뷰
사용내역을 조회할 때는 전표 라인에 미결관리 여부와 반제 관계를 붙인 뷰가 편합니다.
@AbapCatalog.sqlViewName: 'ZCIMPREST'
@EndUserText.label: '전도금 사용내역 (Z)'
define view Z_C_IMPREST_USAGE
as select from bseg as Item
inner join bkpf as Header on Item.bukrs = Header.bukrs
and Item.belnr = Header.belnr
and Item.gjahr = Header.gjahr
left outer join skat as AcctText on Item.hkont = AcctText.saknr
and AcctText.spras = 'K'
left outer join bseg as Cleared on Item.bukrs = Cleared.bukrs
and Item.augbl = Cleared.belnr
{
key Item.bukrs as Bukrs,
key Item.gjahr as Gjahr,
key Item.belnr as Belnr,
key Item.buzei as Buzei,
Item.hkont as GlAccount,
AcctText.txt50 as GlAccountName,
Item.sgtxt as ItemText,
Header.bldat as DocumentDate,
Item.valut as ValueDate,
// 차변은 입금, 대변은 지출
case when Item.shkzg = 'S' then Item.dmbtr else 0 end as IncomingAmount,
case when Item.shkzg = 'H' then Item.dmbtr else 0 end as OutgoingAmount,
Item.xopvw as OpenItemMgmt,
Item.augbl as ClearingDoc,
Item.augdt as ClearingDate,
// 미결관리 계정이면 반제전표의 상대 계정을 이어 본다
Cleared.hkont as ClearedAccount
}
where Item.augbl <> Item.belnr사용내역을 조회할 때 쓰는 참고용 설계입니다. 미결관리 추적은 단계가 가변이라 실제로는 재귀 로직이나 반복 조회로 구현합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 · 상단 집계 · 사용내역 · 추적 경로 |
| 조회조건 | sap.m.Input · DatePicker · ComboBox |
| 상단 집계 | sap.m.ObjectStatus 5종 — 이월·입금·지출·잔액·사용률 |
| 사용내역 | sap.ui.table.Table — 구분·회사코드·계정 3컬럼 고정 |
| 추적 강조 | RowSettings.highlight — 입금은 초록, 추적 건은 파랑 |
| 추적 경로 | cellClick → 3단계 체인을 별도 테이블로 |
| CSV | Blob + UTF-8 BOM — 전기이월액을 첫 줄에 표기 |
상단에 이월액과 사용률을 함께 둔 이유
전도금은 잔액이 얼마 남았는지가 핵심입니다. 분기 정산이라 월말에 0이 되지 않으므로 이월액을 빼고는 현재 잔액을 설명할 수 없습니다. 사용률까지 함께 두면 이번 분기에 추가 지급이 필요한지도 목록을 보기 전에 가늠됩니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.imprest) · ko 로케일 · sap_horizon |
Component.js | 조회조건 모델 · 결과 모델 초기화 |
view/Main.view.xml | 조회화면 + 집계 + 사용내역 + 추적 경로 |
controller/Main.controller.js | 조회 · 집계 계산 · 추적 경로 · CSV |
model/ModelMock.js | 입금·지출 조회 · 잔액 누적 · 추적 체인 · 집계 |
model/formatter.js | 금액 · 일자 · 구분 · 추적 · 잔액상태 포맷터 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
localdata/imprest.json | 전도금 사용내역 시뮬레이션 데이터 |
검증 결과
화면 구성에 쓴 데이터는 직접 지출과 미결관리 경유가 섞인 전도금 사용내역입니다.
| 데이터 | 규모 | 구성 |
|---|---|---|
| 사용내역 | 39건 | 입금 5 · 지출 34 · 추적 16 |
| 전도금 계정 | 5개 | 사업장별 전도금 (인천·시흥·안산·시흥2·대구) |
| 금액 | 이월 8,700,000원 | 입금 15,000,000 · 지출 9,550,000 |
| 검증 항목 | 결과 |
|---|---|
| 모든 라인의 전도금 계정이 마스터에 존재 | 통과 |
| 전도금 계정마다 전기이월액과 해당 월 입금 1건 | 통과 |
| 입금 라인의 VALUT 이 해당월 1일 · 계정은 전도금 자신 | 통과 |
| 지출 증빙일이 해당월 1일 ~ 조회일자 사이 | 통과 |
| 잔액 = 직전 잔액 + 입금 − 지출 (계정별 누적) | 통과 |
| 최종 잔액 = 전기이월 + 입금합 − 지출합 | 통과 |
| 추적 건만 미결관리 표시와 반제전표 보유 | 통과 |
| 추적 체인 3단계 · 마지막 단계만 미결관리 아님 | 통과 |
| 체인의 전표번호가 서로 다름 · 반제전표가 2단계와 일치 | 통과 |
| 화면 렌더링 — 목록 → 추적 경로 → 계정 전환 → 일자 변경 | 6/6 |
계정·전표번호·금액은 모두 검증용 데이터입니다.
자주 묻는 질문
왜 미결관리 계정을 따라가야 하나요?
미결관리 계정은 돈이 거쳐 가는 자리입니다. 전도금에서 나갈 때는 미지급비용이나 가지급금으로 잡혔다가, 나중에 정산되면서 실제 비용 계정으로 넘어갑니다. 장부에 보이는 계정만 읽으면 '미지급비용 30만원'이 되어 무엇에 썼는지 알 수 없습니다.
추적이 세 단계까지 가는 이유는?
반제전표의 상대 라인이 또 미결관리 계정일 수 있기 때문입니다. 사양서도 그 경우 다시 반제전표를 조회하도록 정해 두었습니다. 미결관리가 아닌 라인을 만날 때까지 반복하므로 단계가 더 길어질 수도 있습니다.
전기이월액은 어떻게 계산하나요?
당년 누적입금에서 누적지출을 뺀 전월 잔액입니다. 전도금은 매월 정산하지 않고 분기 단위로 정산하기 때문에 월말에 0으로 떨어지지 않습니다. 그래서 전월 잔액을 이월해 이어서 봐야 현재 잔액이 맞습니다.
Clearing 전표를 제외하는 이유는?
반제 자체는 돈이 나간 거래가 아니라 정리 행위입니다. 목록에 넣으면 같은 금액이 두 번 잡혀 잔액이 어긋납니다. 사양서에서 AUGBL이 BELNR과 같은 라인을 빼도록 지정한 것도 그래서입니다.
SAP 표준 기능과 어떻게 이어지나요?
데이터는 BSIS·BSEG 표준 구조 그대로이고 미결관리 여부도 표준 필드로 판정합니다. 이 화면은 그 관계를 따라가 실제 비목을 찾아 주는 역할을 하며, 전표 단위 확인은 표준 개별항목 조회나 전표 조회 화면에서 이어집니다.