솔루션 홈
VKM1·VKM3·VKM4 · 신용관리

SAP 신용블록 판매문서 현황 — 왜 이 주문이 막혔는지 숫자로 보기

여신한도를 넘겨 블록된 수주와 출고 문서가 쌓이면, 담당자는 매번 "얼마가 넘었고 언제부터 막혀 있나"를 다시 계산해야 합니다. 노출액 구성과 처리 이력을 한 화면에서 보여주는 화면입니다.

영업 담당자가 주문을 넣었는데 시스템이 막아버리면, 가장 먼저 나오는 질문은 늘 같습니다. "이게 왜 막혔죠?" 계정 담당자가 답하려면 여신한도와 지금까지 쌓인 노출액, 그리고 이 문서가 얼마를 더하는지를 한 번에 봐야 합니다. 그런데 이 숫자들은 서로 다른 화면과 마스터에 흩어져 있어 매번 다시 계산하게 됩니다.

SAP 표준 신용관리 데이터 구조를 그대로 이어받아, 블록된 문서마다 여신한도 · 기존 노출액 · 이 문서 순금액 · 총 노출액 · 한도소진율을 한 줄에 담고, 자동블록부터 해제·거부까지의 처리 이력을 상세에서 함께 보여주도록 OpenUI5 화면으로 확장했습니다. 실제 구동 화면 2종을 함께 공개합니다.

SAP 표준 기능을 그대로 이어받은 부분

  • 판매문서 원천 — 수주(VBAK·VBAP)와 출고(LIKP) 헤더 구조를 그대로 사용
  • 신용관리 마스터 — 여신한도와 노출액(KNKK·KNKA)
  • 판매문서 상태 — 신용상태 코드(VBUK-CMGST)
  • 체크규칙 — 정적/동적 한도체크, 최대미결기일 체크
  • 릴리즈 실행 — 표준 트랜잭션 VKM1(리스트)·VKM3(수주 릴리즈)·VKM4(통합 릴리즈)
항목내용
업무 영역영업(SD) · 신용관리
Namespacezui5.creditblock
셸 구조조회조건 영역(우측 조회) + 신용블록 문서 목록, 노출액·이력 상세 Dialog
화면 수조회 화면 1개 + 상세 다이얼로그
대응 T-codeVKM1 · VKM3 · VKM4 (마스터 참조 FD32)
성격조회·검증형 — 블록 판정과 릴리즈 실행은 표준 트랜잭션이 담당
UI 테마sap_horizon 단일 적용

실제 화면 2종 둘러보기

회사코드·기준일자·처리상태를 넣고 조회하면 블록 문서가 목록으로 뜹니다 → 문서를 골라 노출액 구성과 처리 이력을 확인합니다.

아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.

신용블록 판매문서 현황 — Main.view.xml
신용블록 판매문서 목록
신용블록 판매문서 목록 — 회사코드·기준일자·처리상태를 넣고 조회하면 블록 문서가 목록으로 뜹니다. 여신한도·기존 노출액·총 노출액·한도소진율·한도초과금액·블록경과일을 같은 줄에서 보여주고, 경과일수와 초과금액이 큰 순으로 정렬됩니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
신용블록 판매문서 현황 — 상세
노출액 구성과 처리 이력 상세
노출액 구성과 처리 이력 상세 — 문서를 고르면 여신한도·기존 노출액·이 문서 순금액·총 노출액·한도소진율을 한 헤더에 모아 보여주고, 아래에 자동블록부터 해제·거부까지의 처리 이력이 시간순으로 펼쳐집니다.

조작 방법

  1. 회사코드기준일자는 필수입니다. 기준일자는 블록경과일수를 계산하는 기준이 됩니다.
  2. 판매조직·고객·판매문서·문서유형·처리상태로 범위를 좁힙니다. 처리상태 기본값은 "블록중(미해제)"입니다.
  3. 조회조건 입력필드에서 Enter 를 눌러도 바로 재조회됩니다(한 번 조회한 뒤부터는 조건을 바꿀 때마다 자동 재조회). 조회·초기화 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
  4. "한도초과 건만" 옵션을 켜면 총 노출액이 한도를 넘는 건만 남습니다.
  5. 목록의 행이나 상세 아이콘을 클릭하면 노출액 구성과 처리 이력을 담은 상세 다이얼로그가 열립니다.
  6. 목록과 상세 이력 모두 CSV 다운로드로 내려받습니다. UTF-8 BOM 이 붙어 엑셀에서 한글이 깨지지 않습니다.

노출액 산정 로직

SAP 신용관리는 문서 하나를 저장할 때마다 "이 문서가 반영되면 노출액이 얼마가 되는가"를 판단해 한도를 넘으면 그 문서를 블록합니다. 이 화면은 그 판정 결과를 사후에 재현해 담당자가 검토·릴리즈 우선순위를 잡을 수 있게 합니다.

산식의미
총 노출액 = 기존 노출액 + 문서 순금액이 문서가 반영되면 노출액이 얼마가 되는지
한도소진율 = 총 노출액 / 여신한도 × 100한도를 몇 % 쓰고 있는지
한도초과금액 = max(0, 총 노출액 − 여신한도)한도를 넘긴 만큼
블록경과일수 = 기준일자 − 문서 생성일블록중인 건만 계산, 해제·거부 건은 0

기존 노출액은 신용관리 마스터에 쌓이는 미결제 수주·미출고·미청구·미결제 금액의 누계입니다. 이 화면은 검증용 데이터로 문서별 스냅샷을 구성했고, 실제 서비스로 연결할 때는 참고 CDS 뷰(8절)의 노출액 항목으로 대체합니다.

블록 판정에서 해제까지, 처리 4단계

단계내용
① 자동 블록문서 저장 시점, 체크규칙(정적/동적/최대미결기일)에 따라 신용관리가 자동으로 문서를 잠급니다.
② 여신 담당자 검토VKM1·VKM3 리스트에서 초과금액·경과일수·블록사유를 확인합니다.
③ 릴리즈 판단한도 상향, 선수금 확보 등으로 위험이 해소됐으면 해제, 그렇지 않으면 거부하여 영업담당에게 재협의를 요청합니다.
④ 후속 처리해제된 문서는 다음 단계(출고·청구)로 진행되고, 거부된 문서는 재작성되거나 취소됩니다. 두 결과 모두 처리 이력에 남습니다.

이 네 단계 중 실제 판정과 릴리즈 실행은 표준 트랜잭션이 담당하고, 이 화면은 그 결과를 노출액 구성과 이력 관점으로 재구성해 보여줍니다.

조회조건

필드필수설명
회사코드필수대상 회사코드. 변경 시 판매조직 목록이 갱신됩니다.
기준일자필수블록경과일수 계산 기준일
판매조직선택전체 또는 특정 조직
고객선택코드·명 부분일치
판매문서선택문서번호 부분일치
문서유형선택전체 · 표준수주 · 출고(배송)
처리상태선택블록중(미해제) · 해제(승인) · 거부(반송) · 전체
한도초과 건만선택총 노출액이 한도를 넘는 건만 표시

결과 컬럼

컬럼의미 · 표시
판매문서 · 문서유형블록된 수주 또는 출고문서 번호와 유형
고객 · 판매조직거래처 코드·명, 판매조직명
생성일 · 작성자문서 생성일과 작성자
문서 순금액 · 여신한도우측정렬, 천단위 콤마
기존 노출액 · 총 노출액이 문서 반영 전/후 노출액
한도소진율 · 한도초과금액초과금액이 있으면 강조 표시
블록경과일블록중인 건만 계산, 그 외 "-"
신용그룹 · 블록사유신용관리 그룹 구분과 블록 사유 텍스트
처리상태 · 정합성블록중/해제/거부, 노출액 산식 검증 결과

SAP 표준 기능 매핑

표준 실행(VKM1·VKM3·VKM4)은 릴리즈 처리(승인·거부 액션)를 담당하고, 이 화면은 조회·검증 관점을 더해 확장합니다.

표준 기능이 화면이 확장한 부분
VKM1 (신용블록 문서 전체 리스트)회사·판매조직·고객·기준일자 조건을 조합해 조회하고, 한도소진율·초과금액을 자동 계산해 경과일수·초과금액 순으로 정렬
VKM3 · VKM4 (수주/통합 릴리즈)릴리즈 화면은 아니지만, 릴리즈 담당자가 검토에 필요한 노출액 구성과 처리 이력을 한 다이얼로그에서 확인
FD32 (고객 신용관리 마스터)여신한도를 조회 조건과 결과에 반영해 마스터 값을 벗어나지 않는지 즉시 대사

참고 CDS 뷰

운영 서비스로 연결할 때는 판매문서와 신용관리 마스터를 결합한 뷰로 서빙하는 구성을 제안합니다.

@AbapCatalog.sqlViewName: 'ZSDCREDITBLK'
define view Z_SD_CREDIT_BLOCK as select from vbak
  association[0..1] to knkk as _Credit on _Credit.kunnr = vbak.kunnr
  association[0..1] to vbuk as _Status on _Status.vbeln = vbak.vbeln
{
  key vbak.vbeln,
      vbak.kunnr,
      vbak.netwr,
      vbak.waerk,
      _Credit.klimk,
      _Credit.sauft            as PriorExposure,
      _Credit.sauft + vbak.netwr as TotalExposure,
      _Status.cmgst            as CreditStatus
}

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경의 신용관리 설정(체크규칙·신용그룹 범위)에 맞춰 조정합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.f.DynamicPage — 조회조건 헤더 + 결과 그리드
조회조건sap.m.Select·Input·DatePicker·CheckBox — 우측 끝에 조회 버튼
결과 그리드sap.ui.table.Table — 컬럼 18개, 가상 스크롤
상세sap.m.Dialog + ObjectHeader + sap.m.Table(처리 이력)
모델업무데이터(mainModel)와 화면상태(viewModel)를 분리한 2-모델 구성
포맷금액·비율·일자·처리상태·정합성 포맷터

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon · lodash · moment
Component.js디바이스 모델 초기화 · 라우터 시작
manifest.json앱 디스크립터 — 앱 ID(zui5.creditblock) · ko 로케일
view/Main.view.xml · fragments/*조회조건 · 결과 그리드 · 상세 다이얼로그
controller/Main.controller.js노출액 집계 · 조회 · 상세 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise)
model/formatter.js금액 · 비율 · 일자 · 상태 포맷
i18n/i18n_ko.propertiesko 로케일 리소스
localdata/*.json회사·판매조직 등 코드값, 블록 문서 42건, 처리 이력 67건

운영 전환 시에는 ModelMock 내부만 실제 서비스 호출로 바꾸면 화면과 집계 로직은 그대로 씁니다.

검증 결과

화면 구성에 쓴 데이터는 블록 문서 42건 · 처리 이력 67건이며, 총 노출액 합계 검증까지 포함해 전수 검증했습니다.

검증 항목결과
총 노출액 = 기존 노출액 + 문서 순금액 (42건 전수)통과
블록경과일수는 처리상태가 블록중인 건만 0보다 큼통과
해제·거부 이력의 처리일이 문서 생성일 이후통과
조회 버튼이 조회조건 영역 오른쪽 끝에 위치통과
적용 테마 sap_horizon 확인통과
Enter 키 입력으로 즉시 재조회통과
화면 렌더링 — 실브라우저에서 조회 → 상세 실동작 후 캡처2/2

거래처·금액·처리자는 모두 검증용 데이터입니다.

자주 묻는 질문

기존 노출액은 실제로 어디서 가져오나요?

표준에서는 고객 신용관리 마스터(KNKK)의 노출액 누계 항목입니다. 이 화면은 검증용 데이터로 문서별 스냅샷을 미리 구성했고, 실제 서비스로 연결할 때는 CDS 뷰로 그 값을 그대로 서빙합니다.

이 화면에서 블록을 직접 해제할 수 있나요?

아니요. 이 화면은 조회와 검증 전용입니다. 실제 해제·거부 액션은 표준 트랜잭션이 그대로 담당하고, 이 화면은 그 결과인 처리 이력을 보여줄 뿐입니다.

수주와 출고 블록을 왜 같은 화면에서 보나요?

신용관리는 문서 유형과 무관하게 노출액을 판단하기 때문에, 수주 단계에서 걸린 블록과 출고 단계에서 걸린 블록이 같은 고객 한도를 두고 경쟁합니다. 둘을 나눠 보면 그 고객의 전체 위험이 보이지 않아 하나의 화면에서 문서유형 조건으로만 구분합니다.

SAP 표준 기능과 어떻게 이어지나요?

블록 판정 자체는 표준 신용관리 로직이 하고, 릴리즈 실행도 표준 트랜잭션(VKM3·VKM4)이 담당합니다. 이 화면은 그 판정 결과를 노출액 구성과 처리 이력 관점으로 재구성해 담당자가 검토 우선순위를 빠르게 잡을 수 있도록 조회·검증 관점을 더한 것입니다.

신용관리 블록 검토, 지금 쓰는 SAP 위에서 확장해 보세요

노출액 구성과 처리 이력을 한 화면에서 보면 릴리즈 검토 시간이 줄어듭니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

신용관리여신한도VKM1VKM3FD32신용블록OpenUI5