SAP 외상매출금 명세서 — 여신한도와 미수 내역을 한 화면에
고객별 여신한도와 소진율을 위에 두고 그 아래 전표 단위 미수 내역을 펼쳐, 한도를 넘기 전에 상황을 알아채는 명세서입니다.
외상매출금 명세서를 보는 사람은 대개 두 가지를 동시에 궁금해합니다. 이 고객에게 얼마가 물려 있는가, 그리고 더 팔아도 되는가입니다.
앞의 질문은 채권 명세가, 뒤의 질문은 여신한도가 답합니다. 그런데 두 정보는 보통 다른 화면에 있습니다. SAP 표준 고객 채권 구조를 그대로 이어받아 한도와 소진율을 위에, 전표 내역을 아래에 둬서 한 화면에서 답이 나오도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 여신한도 — 고객 신용관리의 한도(
klimk)를 그대로 사용 - 영업 조직 — 영업조직(
vkorg) · 영업소(vkbur) · 담당자(vbevn) 표준 구조 - 전표 키 — 전표번호(
belnr) · 라인(buzei) · 전표유형(blart) - 결제조건 — 지급조건(
zterm)과 만기일(netdt) 표준 필드 - 영업 문서 — 청구문서(
vbeln) · 수주문서(vbelv) 로 SD 연결
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI-AR) · 매출채권 관리 |
| Namespace | zui5.arstmt |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 고객 요약 + 전표 명세 |
| 화면 수 | 조회 화면 1개 |
| 데이터 | 채권 명세 240건 (28개 필드) |
| 성격 | 조회형(Read-Only) — 전기와 여신 설정은 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 1종 둘러보기
회사코드·고객·영업조직으로 조회하면 고객 요약과 채권 명세가 함께 나옵니다 → 여신 소진율로 여유가 없는 고객을 먼저 보고 → 만기일과 전표 링크로 어느 건이 걸려 있는지 추적합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 고객을 넣습니다. 영업조직이나 담당자로도 묶어 볼 수 있습니다.
- 기준일을 넣으면 만기 경과 여부가 그 날짜 기준으로 판정됩니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 위쪽 요약에서 소진율을 먼저 봅니다. 한도에 가까운 고객은 추가 수주 전에 확인이 필요합니다.
- 아래 명세에서 만기일이 지난 건을 가려냅니다. 상태 색으로 구분됩니다.
- 전표번호 · 청구문서 · 수주문서 링크로 원 문서까지 따라갑니다.
- 결과는 CSV 다운로드로 내려받습니다. UTF-8 BOM 이 붙어 엑셀에서 한글이 깨지지 않습니다.
소진율과 만기 판정
요약의 두 숫자가 이 화면의 핵심입니다. 하나는 얼마나 물려 있는지, 다른 하나는 얼마나 여유가 있는지를 말합니다.
총계 = Σ(고객의 미수 원화환산금액)
소진율 = 총계 ÷ 여신한도(klimk) × 100
소진율 낮음 → 여유 있음
소진율 높음 → 주의 — 추가 수주 전 확인
소진율 100% 초과 → 한도 초과 — 승인 절차 필요
만기 경과 = 기준일 > 만기일(netdt) → 만기일 열을 경고 색으로
한도와 명세를 한 화면에 둔 이유
영업에서 오는 질문은 "이 고객 더 받아도 되나요" 인데, 답하려면 한도와 현재 미수를 둘 다 봐야 합니다. 두 정보가 다른 화면에 있으면 매번 두 번 조회하고 암산으로 비교하게 됩니다. 소진율 한 줄로 요약해 두면 그 질문이 화면 한 번으로 끝납니다.
명세를 보는 세 가지 관점
같은 데이터를 누가 보느냐에 따라 먼저 읽는 열이 달라집니다.
| 보는 사람 | 먼저 읽는 열 | 답하는 질문 |
|---|---|---|
| 자금 · 회계 | 만기일 · 금액 · 지급조건 | 언제 얼마가 들어오는가 |
| 영업 | 여신한도 · 소진율 · 담당자 | 더 팔아도 되는가 |
| 대사 · 감사 | 전표번호 · 지정 · 청구문서 · 수주문서 | 이 금액의 근거는 무엇인가 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 bukrs | 필수 | 대상 회사코드 |
고객 kunnr | 선택 | 고객 코드·명칭 |
영업조직 vkorg | 선택 | 영업조직 단위 집계 |
영업소 vkbur | 선택 | 영업소 단위 |
영업담당자 vbevn | 선택 | 담당자별 채권 현황 |
| 기준일 | 선택 | 만기 경과 판정 기준일 |
전기일 budat | 선택 | 기간 From~To |
결과 컬럼
고객 요약
| 컬럼 | 의미 · 표시 |
|---|---|
고객 kunnr · name1 | 코드와 명칭 |
영업조직 vkorg · 영업소 vkbur | 조직 귀속 |
영업담당자 vbevn | 담당자 코드와 이름 |
여신한도 klimk | 고객 신용한도 |
| 총계 | 미수 합계. 상태 색으로 표시 |
| 소진율 | 총계 ÷ 여신한도. 구간에 따라 상태 색 |
| 이전년도 | 전년도 실적으로 이동하는 링크 |
전표 명세
| 컬럼 | 의미 · 표시 |
|---|---|
전표번호 belnr · 항목 buzei | 링크로 원전표 연결 |
전표유형 blart · blartTx | 코드와 텍스트 |
전기일자 budat · 증빙일자 bldat | 원장 반영일과 증빙 날짜 |
G/L 계정 racct | 조정계정과 명칭 |
지정 zuonr | 대사 단위로 쓰는 지정 값 |
만기일 netdt | 결제 기한. 기준일을 넘기면 경고 색 |
지급조건 zterm · ztermTx | L/C 90일 등 결제 조건 |
| 통화 · 거래통화금액 · 원화환산금액 | 금액 정보 |
Billing Doc vbeln | 청구문서 링크 |
Sales Doc vbelv | 수주문서 링크 |
SAP 표준 기능 매핑
채권과 여신은 표준이 관리합니다. 이 화면은 두 정보를 한 화면에 모으고 영업 문서까지 이어 붙이는 확장입니다.
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FBL5N | 고객 개별항목 조회 | 여신 요약을 위에 두고 명세를 아래에 배치 |
FD32 | 고객 신용관리 | 한도를 읽어 소진율로 환산해 표시 |
FD10N | 고객 잔액 조회 | 잔액을 전표 단위 명세와 함께 제시 |
BSID · BSAD | 고객 미결 · 반제 항목 | 명세 원천 |
KNA1 · KNKK | 고객 마스터 · 신용 데이터 | 고객명과 여신한도 |
VBRK · VBAK | 청구문서 · 수주문서 헤더 | 영업 문서 링크로 연결 |
ACDOCA | 유니버설 저널 (S/4HANA) | 원천을 표준 CDS 로 교체 가능 |
도입 시 확인이 필요한 부분
여신한도는 신용관리 영역별로 관리되며, 회사코드와 신용관리 영역이 1:1이 아닌 경우 한도를 어느 단위로 볼지 정해야 합니다. 또 소진율 분모에 미결 채권만 넣을지, 미청구 수주까지 포함할지에 따라 숫자가 달라지므로 영업·재무가 같은 정의를 쓰는지 먼저 맞춰야 합니다.
참고 CDS 뷰
운영 서비스로 연결할 때는 고객 채권에 여신 한도와 영업 조직을 붙인 뷰를 제안합니다.
@AbapCatalog.sqlViewName: 'ZCARSTMT'
@EndUserText.label: '외상매출금 명세 (Z)'
define view Z_C_AR_STATEMENT
as select from bsid as Item
inner join kna1 as Customer on Item.kunnr = Customer.kunnr
left outer join knkk as Credit on Item.kunnr = Credit.kunnr
left outer join skat as AcctText on Item.hkont = AcctText.saknr
and AcctText.spras = 'K'
{
key Item.bukrs, key Item.gjahr, key Item.belnr, key Item.buzei,
Item.kunnr,
Customer.name1 as Name1,
Credit.klimk as Klimk,
Item.hkont as Racct,
AcctText.txt50 as RacctTx,
Item.blart, Item.budat, Item.bldat, Item.zuonr, Item.zterm,
Item.zfbdt as Netdt,
Item.waers, Item.wrbtr, Item.dmbtr,
Item.vbeln
// 영업조직·담당자는 VBRK/VBAK 와 조인하는 연장 뷰에서
// 소진율 = 고객별 미수 합계 ÷ 여신한도 — 집계 소비 뷰에서 계산
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 신용관리 영역 구조와 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 고객 요약 · 전표 명세 |
| 조회조건 | sap.m.Input · sap.m.Select · sap.m.DatePicker — 우측 끝에 조회·초기화 |
| 요약 영역 | sap.m.Table — 한도·총계·소진율을 한 줄로 |
| 명세 테이블 | sap.m.Table — 열이 많아 popin 반응형 |
| 상태 표시 | sap.m.ObjectStatus — 소진율 구간, 만기 경과 |
| 문서 링크 | sap.m.Link — 전표 · 청구문서 · 수주문서 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
영업 문서를 링크로 둔 이유
"이 금액이 어느 건이냐" 는 질문은 전표번호만으로 끝나지 않습니다. 결국 어느 수주에서 나온 청구인지까지 가야 합니다. 청구문서와 수주문서를 링크로 두면 재무에서 영업 문서로 넘어가는 길이 한 번의 클릭이 되고, 영업 담당자에게 전달할 때도 문서 번호를 그대로 복사해 쓸 수 있습니다.
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon |
Component.js | 조회조건 모델 · 결과 모델 초기화 |
manifest.json | 앱 디스크립터 — 앱 ID(zui5.arstmt) · ko 로케일 |
view/Main.view.xml | 조회조건 · 고객 요약 · 전표 명세 |
controller/Main.controller.js | 조회 · 소진율 계산 · 만기 판정 · 링크 이동 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
model/formatter.js | 금액 · 일자 · 소진율 · 상태 색 포맷터 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
localdata/arstmt.json | 채권 명세 240건 (28개 필드) |
소진율 기준이나 만기 판정이 바뀌어도 컨트롤러와 포맷터 두 파일만 손보면 됩니다.
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 소진율 = 고객별 미수 합계 ÷ 여신한도 (재계산) | 통과 |
| 고객 요약의 총계 = 명세 금액 합계 | 통과 |
| 원화환산 = 거래통화금액 × 환율 | 통과 |
| 만기 경과 판정 = 기준일과 만기일 비교값과 일치 | 통과 |
| 코드가 있는 항목은 명칭도 존재 (고객 · 계정 · 영업조직 · 담당자) | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 후 캡처 | 통과 |
| 테마 런타임 확인 | sap_horizon |
고객·금액·여신한도는 모두 검증용 데이터입니다.
자주 묻는 질문
소진율 분모에 무엇이 들어가나요?
여신한도입니다. 분자에 미결 채권만 넣을지, 아직 청구하지 않은 수주까지 포함할지는 회사 기준에 따라 달라지므로 영업과 재무가 같은 정의를 쓰는지 먼저 맞춰야 합니다.
청구문서와 수주문서 링크는 어디로 가나요?
표준 영업 문서 조회 화면으로 연결합니다. 재무에서 시작해 어느 수주에서 나온 청구인지까지 한 번에 따라갈 수 있어, 금액 근거를 확인하는 시간이 줄어듭니다.
영업담당자별로 볼 수 있나요?
가능합니다. 담당자 조건으로 묶으면 그 담당자가 맡은 고객들의 채권과 소진율이 한 화면에 모입니다. 영업 회의 자료로 그대로 쓸 수 있습니다.
SAP 표준 기능과 어떻게 이어지나요?
채권은 표준 전기가, 여신한도는 신용관리가 만듭니다. 이 화면은 FBL5N 과 FD32 를 오가야 알 수 있던 두 정보를 한 화면에 모으고, 청구·수주 문서까지 링크로 이어 붙인 확장입니다.