SAP 고객 여신한도 관리 — 한도를 넘기 전에 알아채기
거래처별 여신한도와 채권·수주 노출액을 합쳐 가용한도와 사용률을 계산하고, 한도 초과와 차단 거래처를 먼저 보여 주는 화면입니다.
여신 관리에서 늦은 정보는 없는 정보와 같습니다. 한도를 넘긴 뒤에 알면 이미 물건은 나갔습니다.
노출액은 받을 채권만이 아니라 아직 청구하지 않은 수주까지 포함해야 실제 위험이 보입니다. SAP 표준 신용관리 구조를 그대로 이어받아 두 가지를 합쳐 가용한도로 환산하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 신용관리영역 —
KKBER단위로 한도를 관리하는 표준 구조 - 여신한도 — 고객 신용 데이터의 한도(
CreditLimit) - 위험등급 — 표준 위험등급 코드(
RiskCategory)와 텍스트 - 차단 — 수동 차단 표시(
ManualBlocked)와 사유 - 거래처 · 영업조직 — 고객(
Kunnr)과 영업조직(SalesOrg)
| 항목 | 내용 |
|---|---|
| 대응 T-code | FD32 · FD33 · S_ALR_87012218 |
| 업무 영역 | 재무회계(FI-AR) · 신용관리 |
| Namespace | zui5.credit |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 여신 현황 목록, 행 선택 시 이력 |
| 화면 수 | 조회 화면 1개 + 한도 변경 이력 |
| 데이터 | 여신 현황 20건 · 고객 목록 20건 |
| 성격 | 조회형(Read-Only) — 한도 설정과 차단은 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·신용관리영역으로 조회하면 거래처별 한도와 노출액이 나옵니다 → 사용률이 높은 거래처와 차단 건을 먼저 보고 → 행을 눌러 한도 변경 이력과 최근 검토일을 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 신용관리영역을 고릅니다. 한도는 신용관리영역 단위로 관리됩니다.
- 위험등급으로 좁혀 고위험 거래처만 볼 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 사용률이 높은 순으로 봅니다. 한도에 가까운 거래처가 먼저 나옵니다.
- 한도초과와 차단 표시가 있는 건은 수주 승인 전에 확인이 필요합니다.
- 행을 선택하면 한도 변경 이력이 열립니다. 최근 검토일이 오래됐으면 재검토 대상입니다.
- 결과는 CSV 다운로드로 내려받습니다.
노출액과 사용률 산식
여신 판단은 세 줄의 계산으로 끝납니다.
노출액(Exposure) = 미수채권(OpenAR) + 미청구수주(OpenOrders)
가용한도(Available) = 여신한도(CreditLimit) − 노출액
사용률(UtilizationPct) = 노출액 ÷ 여신한도 × 100
가용한도 < 0 → 한도초과 (OverLimit)
수동 차단 표시 있음 → 차단 (Blocked) — 사유와 함께 표시
수주를 노출액에 넣는 이유
미수채권만 보면 이미 나간 물건만 셉니다. 그런데 수주를 받아 둔 물량은 곧 채권이 됩니다. 출하 직전에 한도를 넘는 것을 막으려면 아직 청구하지 않은 수주까지 미리 세어야 합니다. 그래서 노출액은 채권과 수주의 합으로 잡습니다.
여신 상태 4구간
| 상태 | 판정 | 통상 대응 |
|---|---|---|
| 여유 | 사용률이 낮음 | 정상 거래 |
| 주의 | 한도에 근접 | 추가 수주 전 확인 · 한도 재검토 검토 |
| 한도초과 | 가용한도 < 0 | 수주 승인 보류 · 승인 절차 필요 |
| 차단 | 수동 차단 설정됨 | 사유 확인 후 해제 또는 거래 중단 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
신용관리영역 KKBER | 필수 | 한도 관리 단위 |
고객 Kunnr | 선택 | 특정 거래처만 |
위험등급 RiskCategory | 선택 | 저위험 · 중위험 · 고위험 |
| 상태 | 선택 | 전체 / 한도초과만 / 차단만 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
고객 Kunnr · Name1 | 코드와 명칭 |
영업조직 SalesOrg | 거래 조직 |
위험등급 RiskCategory · RiskCategoryText | 저·중·고위험 |
여신한도 CreditLimit | 설정된 한도 |
미수채권 OpenAR | 아직 회수되지 않은 채권 |
미청구수주 OpenOrders | 수주는 받았으나 청구 전인 금액 |
노출액 Exposure | 미수채권 + 미청구수주 |
가용한도 Available | 여신한도 − 노출액. 음수면 경고 |
사용률 UtilizationPct | 노출액 ÷ 여신한도. 구간별 상태 색 |
한도초과 OverLimit · 차단 Blocked | 상태 표시와 차단 사유 |
최근 검토일 LastReviewDate | 한도를 마지막으로 점검한 날 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FD32 · FD33 | 고객 신용관리 · 조회 | 한도와 노출액을 합쳐 사용률로 환산 |
S_ALR_87012218 | 신용한도 개요 리포트 | 수주까지 포함한 노출액과 차단 상태를 함께 |
KNKK | 고객 신용 데이터 — 한도 · 위험등급 | 한도와 등급 원천 |
BSID | 고객 미결 항목 | 미수채권 산출 |
VBAK | 수주 헤더 | 미청구 수주 산출 |
KNA1 | 고객 마스터 | 거래처 명칭 |
도입 시 확인이 필요한 부분
노출액 정의가 회사마다 다릅니다. 미청구 수주를 전액 넣는 곳과 출하 예정분만 넣는 곳이 있고, 어음으로 받은 채권을 제외하기도 합니다. 정의가 영업과 재무에서 다르면 같은 화면을 보고도 결론이 갈리므로 먼저 합의해야 합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCCREDIT'
@EndUserText.label: '고객 여신 현황 (Z)'
define view Z_C_CUSTOMER_CREDIT
as select from knkk as Credit
inner join kna1 as Customer on Credit.kunnr = Customer.kunnr
{
key Credit.kkber as Kkber,
key Credit.kunnr as Kunnr,
Customer.name1 as Name1,
Credit.klimk as CreditLimit,
Credit.ctlpc as RiskCategory,
Credit.dtrev as LastReviewDate
// 미수채권(BSID)·미청구수주(VBAK)는 집계 뷰와 조인해
// Exposure = OpenAR + OpenOrders, Available = CreditLimit − Exposure
// UtilizationPct = Exposure / CreditLimit × 100 으로 소비 뷰에서 계산
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 여신 현황 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 현황 테이블 | sap.m.Table — 금액 우측정렬 |
| 사용률 | sap.m.ObjectStatus — 구간별 상태 색 |
| 이력 화면 | sap.m.Dialog — 한도 변경 이력 |
가용한도를 금액으로 보여 주는 이유
사용률만 있으면 "73%" 라는 비율이 얼마인지 다시 계산해야 합니다. 영업에서 묻는 것은 "얼마까지 더 받을 수 있나" 이므로, 가용한도를 금액으로 함께 두면 답이 바로 나옵니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.credit) · ko 로케일 |
view/Main.view.xml | 조회조건과 여신 현황 테이블 |
controller/Main.controller.js | 조회 · 노출액·사용률 계산 · 이력 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 비율 · 상태 색 포맷터 |
localdata/credit.json | 여신 현황 20건 |
localdata/custlist.json | 고객 목록 20건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 노출액 = 미수채권 + 미청구수주 (전 건) | 통과 |
| 가용한도 = 여신한도 − 노출액 | 통과 |
| 사용률 = 노출액 ÷ 여신한도 × 100 | 통과 |
| 가용한도 < 0 인 건만 한도초과 표시 | 통과 |
| 차단 건은 차단 사유 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 이력 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
미청구 수주를 꼭 넣어야 하나요?
출하 전에 막으려면 넣어야 합니다. 다만 수주 후 취소가 잦은 업종은 과대 계상이 되므로, 출하 예정분만 넣는 방식도 씁니다. 회사 정책으로 정하면 됩니다.
한도 초과인데 차단이 안 걸리는 경우가 있나요?
있습니다. 차단은 자동 판정과 별개로 수동 설정이 가능해, 한도를 넘겨도 예외 승인으로 거래를 이어가는 경우가 있습니다. 두 상태를 별도 열로 둔 이유입니다.
최근 검토일은 왜 표시하나요?
한도는 한 번 정하면 잊히기 쉽습니다. 거래 규모가 커졌는데 한도가 3년 전 값이면 실질적인 통제가 되지 않습니다. 검토일이 오래된 거래처를 주기적으로 걸러 내는 용도입니다.
SAP 표준 기능과 어떻게 이어지나요?
한도 설정과 차단은 FD32 가 담당하고 데이터는 표준 신용 구조에 남습니다. 이 화면은 그 한도에 채권과 수주 노출액을 합쳐 사용률로 환산하고, 초과·차단 건을 먼저 보여 주는 조회 전용 확장입니다.