SAP 공급업체 잔액 조회 — 잔액에서 전표까지 한 화면에서
공급업체별 잔액과 미결제·연체 금액을 함께 보고, 행을 눌러 월별 증감과 전표 내역까지 내려가는 화면입니다.
월 마감 때 매입채무 담당자는 같은 동작을 반복합니다. FK10N 으로 잔액을 보고 FBL1N 으로 전표를 파고드는 일입니다.
게다가 표준 잔액 화면에는 연체 개념이 없습니다. 잔액이 큰 것과 연체가 많은 것은 다른 문제인데 한 화면에서 구분되지 않습니다. 두 화면을 합치고 연체 지표를 얹도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 5종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 공급업체 — 코드(
LFA1-LIFNR)와 명칭 · 계정그룹(KTOKK) - 잔액 — 회계연도·월별 누계(
LFC1) - 전표 — 미결(
BSIK)과 반제(BSAK) - 조정계정 — 회사코드별 설정(
LFB1-AKONT) - 금액 — 전표통화(
WRBTR)와 현지통화(DMBTR)
| 항목 | 내용 |
|---|---|
| 대응 T-code | FK10N · FBL1N · S_ALR_87012082 |
| 업무 영역 | 재무회계(FI-AP) · 매입채무 |
| Namespace | zui5.vendorbal |
| 셸 구조 | DynamicPage + 조회조건 Panel + 잔액 테이블(16열) + 상세 Dialog |
| 데이터 | OData 미구현 — ModelMock 이 localdata JSON 을 fetch |
| UI5 / 테마 | OpenUI5 1.120.49 · sap_horizon · lodash · moment |
| 성격 | 조회형(Read-Only) — 전기는 표준이 담당 |
실제 화면 5종 둘러보기
회사코드·회계연도·기준월로 조회하면 공급업체별 잔액이 나옵니다 → 미결제와 연체 금액을 확인하고 → 행을 눌러 월별 증감과 전표 내역으로 내려갑니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도를 고릅니다.
- 기준월을 정합니다. 연초부터 그 월까지 누계로 집계됩니다.
- 공급업체 코드·명칭은 부분일치로 찾습니다. Enter 키로 바로 조회됩니다.
- 계정그룹·조정계정으로 범위를 좁힐 수 있습니다.
- 잔액 0 제외와 연체 보유업체만 체크박스로 목록을 추립니다.
- 연체비중이 높은 행은 색으로 구분됩니다. 거기부터 확인합니다.
- 행을 누르면 월별 증감과 전표 내역이 열립니다.
연체 판정과 as-of 계산
기준월 시점의 미결제 상태를 다시 계산합니다.
기말잔액 = 이월 + 대변 − 차변 (기준월까지 누계)
as-of 미결제 판정
청산전표 전기월 > 기준월 → 그 시점에는 미결제
즉 단순 최종잔액이 아니라 기준월 시점으로 재계산
연체금액 = 미결제 중 만기일 < 기준월 말일 인 금액
연체비중 = 연체금액 ÷ 미결제금액 × 100
비중 구간에 따라 행 highlight (Warning / Error)
기준월 시점으로 되돌려 계산하는 이유
지금 조회하면서 과거 어느 달을 보려는데, 그 뒤에 결제된 건까지 반영되면 그 달에는 미결이었던 금액이 사라집니다. 당시 상황을 재현하려면 청산전표의 전기월을 기준으로 미결 여부를 다시 판정해야 합니다.
표준 대비 차별화 지점
| 항목 | 내용 | 효과 |
|---|---|---|
| 잔액 + 전표 결합 | LFC1 잔액에서 BSIK/BSAK 전표로 드릴다운 | FK10N→FBL1N 한 화면 |
| 연체 지표 | 표준 FK10N 에는 연체 개념 없음 | 연체금액·비중 신설 |
| as-of 계산 | 기준월 시점 미결 상태 재계산 | 단순 최종잔액 아님 |
| 통화 병기 | 전표통화와 현지통화를 환율과 함께 | 수입 거래 통화 혼동 방지 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 BUKRS | 필수 | 1000 한국법인(KRW) · 2000 미국법인(USD) |
회계연도 GJAHR | 필수 | 2026 |
기준월 MONAT | 필수 | 01~08. 연초부터 누계 |
공급업체 코드 LIFNR | 선택 | 부분일치. Enter 즉시 조회 |
공급업체명 NAME1 | 선택 | 부분일치(대소문자 무시) |
계정그룹 KTOKK | 선택 | KRED / LIEF / SERV / CPD |
조정계정 AKONT | 선택 | 2010100 / 2010200 / 2011000 |
| 잔액 0 제외 | 선택 | 기말잔액 0 인 업체 제외 |
| 연체 보유업체만 | 선택 | 연체금액 > 0 인 업체만 |
결과 컬럼
메인 — 공급업체별 잔액 (16열)
| 컬럼 | 의미 |
|---|---|
| 공급업체 · 명칭 | 거래처 식별 |
| 계정그룹 · 조정계정 | 분류와 귀속 계정 |
| 이월잔액 | 전기 이월 |
| 차변 · 대변 거래액 | 기준월까지 누계 |
| 기말잔액 | 이월 + 대변 − 차변 |
| 미결제 건수 · 금액 | as-of 기준 |
| 연체금액 · 연체비중 | 만기 경과분. 행 highlight |
| 통화 · 환율 | 전표통화와 현지통화 |
| 지급조건 | 결제 조건 |
상세 Dialog
| 컬럼 | 의미 |
|---|---|
| 월별 증감 | 이월 + 대변 − 차변 = 기말 |
| 전표번호 · 전표유형 | 송장(KR) · 지급(KZ) · 대변메모(KG) |
| 전기일 · 만기일 | 날짜 정보 |
| 현지통화 · 전표통화 금액 | 두 기준 병기 |
| 상대계정 · 결제상태 | 거래 상대와 진행 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FK10N | 공급업체 잔액 표시 | 연체 지표와 드릴다운 추가 |
FBL1N | 공급업체 라인아이템 | 상세 Dialog 로 통합 |
S_ALR_87012082 | 공급업체 잔액 리스트 | 목록 형태 참고 |
LFC1 | 공급업체 기간 잔액 | 잔액 원천 |
BSIK · BSAK | 미결·반제 항목 | 전표 원천 |
LFA1 · LFB1 | 공급업체 마스터 | 명칭·조정계정 |
도입 시 확인이 필요한 부분
만기일 기준이 지급조건에 맞게 채워져야 연체 판정이 맞습니다. 기산일이나 지급조건이 비어 있으면 만기가 전기일로 잡혀 실제보다 연체가 많게 보입니다. 전기 시 지급 조건 입력 규칙을 먼저 점검해야 합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCVENDORBAL'
@EndUserText.label: '공급업체 잔액 조회 (Z)'
define view Z_C_VENDOR_BALANCE
as select from lfc1 as Bal
inner join lfa1 as Vendor on Bal.lifnr = Vendor.lifnr
left outer join lfb1 as Company on Bal.lifnr = Company.lifnr
and Bal.bukrs = Company.bukrs
{
key Bal.bukrs,
key Bal.lifnr,
key Bal.gjahr,
Vendor.name1 as VendorName,
Vendor.ktokk as AccountGroup,
Company.akont as ReconAccount,
Company.zterm as PaymentTerms,
Bal.umsav as CarryForward,
Bal.um01s, Bal.um01h // 월별 차변·대변 (01~12)
// 기말잔액 = 이월 + 대변 − 차변 (기준월까지 누계)
// 미결제·연체는 BSIK/BSAK 를 기준월 as-of 로 판정해 조인
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.f.DynamicPage + 조회조건 Panel + 결과 테이블 |
| 조회조건 | sap.m.Select · sap.m.Input · sap.m.CheckBox — 우측 끝에 조회·초기화 |
| 이벤트 | change · submit 핸들러로 조회 이력이 있으면 즉시 재조회 |
| 잔액 테이블 | sap.ui.table.Table — 16열, 합계 바 |
| 행 강조 | MessageType Warning / Error — 연체비중 구간 |
| 상세 | sap.m.Dialog — 월별 증감 + 전표 내역 |
| 모델 | ModelMock — localdata JSON fetch, read() Promise |
전표통화와 현지통화를 함께 두는 이유
수입 거래가 섞이면 같은 목록에 원화 건과 외화 건이 나옵니다. 한쪽 통화만 보이면 숫자 크기로 규모를 오해합니다. 환율과 두 금액을 함께 두면 어느 쪽 기준인지 헷갈릴 일이 없습니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.vendorbal) · ko 로케일 |
view/Main.view.xml | DynamicPage · 조회조건 · 잔액 테이블 |
view/DetailDialog.fragment.xml | 월별 증감과 전표 내역 |
controller/Main.controller.js | 조회 · as-of 계산 · 연체 판정 |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 통화 · 연체 색 포맷터 |
i18n/i18n_ko.properties | 한국어 텍스트 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 기말잔액 = 이월 + 대변 − 차변 (전 업체) | 통과 |
| 월별 증감 합계 = 기말잔액 | 통과 |
| 미결제 판정이 기준월 as-of 로 재계산 | 통과 |
| 연체비중 = 연체금액 ÷ 미결제금액 × 100 | 통과 |
| 전표통화 × 환율 = 현지통화 금액 | 통과 |
| 공급업체명 Enter 조회 실동작 확인 | 통과 |
| 화면 렌더링 — 실브라우저 조회 → 상세 실동작 후 캡처 | 5/5 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
연체 판정 기준은 무엇인가요?
만기일이 기준월 말일보다 이른 미결제 건입니다. 지급조건으로 계산된 만기일을 쓰므로 지급조건이 비어 있으면 판정이 부정확해집니다.
과거 월을 조회하면 지금 결제된 건은요?
그 시점 기준으로 미결제로 나옵니다. 청산전표의 전기월을 보고 재계산하기 때문에 당시 상황이 그대로 재현됩니다.
잔액이 0인데 전표가 있는 업체는요?
차변과 대변이 상쇄된 경우입니다. 잔액 0 제외를 켜면 목록에서 빠지지만 거래 내역 자체는 상세에서 확인할 수 있습니다.
SAP 표준 기능과 어떻게 이어지나요?
잔액과 전표는 표준 구조 그대로입니다. 이 화면은 두 T-code 를 오가던 동작을 한 화면에 묶고 연체 지표를 더한 확장입니다.