SAP 영업 여신 통합 관리 — 한도 변경부터 수주 여신 점검 · 청구 전환 · 보류 · 연체 독촉 · 수금까지 한 앱에서 처리하고 승인 · 대사 · 분석으로 닫는 여신 운영
고객 여신 마스터 · 직무 분리 승인과 역처리 · 연체 독촉 일괄 실행 · 대사와 예외 조치 · 다차원 분석과 드릴스루 · 계획 대비 차이 요인분해 · 숫자를 모델에 맡기지 않는 AI 분석과 에이전트 — 소개 영상과 실제 화면 25종, 그리고 CDS 코드까지
소개 영상블로그 목차 순서대로 · 자막 포함
도입 포인트 — 이 앱을 사용해야 하는 이유
여신 업무의 질문은 늘 같습니다. 이 고객에게 이 수주를 받아도 되는가, 한도를 올려 줄 것인가, 연체 고객에게 누가 어떤 단계로 독촉할 것인가, 그리고 지금 보이는 숫자가 맞는가. 현업은 이 답을 한도 변경(FD32), 차단된 SD 문서(VKM1), 판매 오더(VA03), 고객 라인 아이템(FBL5N), 독촉(F150), 수금 반영(F-28)처럼 표준 화면 여럿을 오가며 얻고, 승인은 메일로 받고, 대사는 월말 엑셀로 맞춥니다. 표준 화면이 부족해서가 아니라 업무가 한 줄로 이어져 남지 않기 때문에 느려지는 자리입니다.
이 앱은 그 자리를 메웁니다. 한도 변경에서 수금 반영까지 일곱 가지 문서를 같은 상태 흐름(임시저장 → 검토요청 → 승인 → 확정, 필요하면 반려와 취소)으로 처리하고, 일괄 실행과 대사, 다차원 분석, 영역 간 문서 흐름, 감사 이력까지 한 앱 안에 둡니다. 업무 흐름 범위는 한도 변경 → 수주 여신 점검 → 청구 전환 → 여신 보류 · 해제 → 연체 독촉 → 수금 반영이며, 특정 기준서의 적용 판단을 대신하는 앱이 아니라 처리와 점검을 돕는 도구입니다.
핵심 포인트 여덟 가지
| 핵심 포인트 | 고객이 얻는 것 | 지금 방식이라면 |
|---|---|---|
| ① 한 화면 묶음에서 끝나는 여신 업무 | 한도 변경 · 수주 여신 점검 · 청구 전환 · 여신 보류와 해제 · 연체 독촉 · 수금 반영을 같은 앱, 같은 상태 흐름으로 처리합니다. 문서 하나가 어디까지 왔는지가 한 곳에 남습니다. | VA03 · VKM1 · FBL5N · F150 · F-28 을 오가며 처리하고, 어느 단계까지 갔는지는 메일과 엑셀로 맞춥니다. |
| ② 직무 분리를 화면이 아니라 서버가 지킨다 | 작성자는 자기 문서를 승인할 수 없고, 2단계 문서는 1단계 승인자와 다른 관리자만 두 번째 승인을 합니다. 버튼을 숨기는 데서 멈추지 않고 직접 요청해도 서버가 거절합니다. | 권한 설계가 화면마다 흩어져 있고, 같은 사람이 올리고 승인한 건은 사후 점검에서야 드러납니다. |
| ③ 점검 결과가 한 가지 말로 남는다 | 보류 · 연체일 초과 · 등급 한도 초과 · 한도 초과 · 이내 — 다섯 가지 중 가장 무거운 하나가 문서에 남습니다. 승인자는 왜 올라왔는지를 열어 보지 않고도 압니다. | 한도 초과인지, 연체 때문인지, 보류 때문인지를 문서마다 따로 열어 확인합니다. |
| ④ 시뮬레이션을 본 뒤에만 실행되는 일괄 처리 | 연체 독촉과 정기 한도 재산정을 먼저 미리 봅니다. 실행은 미리 본 결과와 같은 상태일 때만 되고, 같은 조건 재실행은 중복 문서를 만들지 않고 거절됩니다. | 독촉 대상을 엑셀로 뽑아 손으로 만들고, 같은 거래처에 독촉이 두 번 나가지 않았는지 사후에 확인합니다. |
| ⑤ 되돌리면 반대 문서가 원문서와 이어진다 | 확정한 문서를 역처리하면 부호가 반대인 문서가 생기고 원문서는 취소로 남습니다. 연계 문서 탭에서 둘이 한 줄로 이어져 보이고 고객 잔액도 함께 되돌아갑니다. | 수정 전표를 새로 만들고 원래 전표와의 관계는 메모로 적어 둡니다. |
| ⑥ 대사 6 규칙과 예외 조치까지 | 고객 연체 잔액 · 미결 채권 · 노출액 · 보류 잔액 · 수주 잔액 · 원장 합계를 규칙으로 돌립니다. 차이가 난 고객은 정정 문서로 조치하고, 다시 돌리면 해소로 바뀝니다. | 월말에 엑셀로 고객 잔액과 문서 합계를 맞추고, 차이 사유는 메일함에서 찾습니다. |
| ⑦ 같은 큐브에서 나오는 분석 | 피벗 · 드릴스루 · 계획 대비 차이 · 다섯 요인 분해가 하나의 큐브를 봅니다. 축을 바꿔도 합계가 변하지 않고 서버를 다시 부르지 않습니다. | 관점마다 리포트를 따로 만들어 서로 합계가 다르면 리포트를 맞추는 회의를 엽니다. |
| ⑧ 숫자는 서비스가 만들고 AI 는 설명만 한다 | AI 분석은 서비스가 계산한 값을 읽어 요약하고 근거 표를 함께 보여 줍니다. 모델은 기본으로 꺼져 있고, 에이전트는 규칙에 걸린 고객을 역할별 대기함에 올립니다. | AI 가 만든 숫자를 보고에 써도 되는지부터 따져야 하고, 점검은 누군가 화면을 열 때만 돕니다. |
사례로 보는 효과
검증용 샘플 데이터(고객 48곳 · 문서 570건 · 문서 항목 3,678건 · 채권 808건)에서 2026-01 ~ 2026-10 수주 여신 점검액은 실적 64,236,219,000원, 계획 60,010,088,000원이었습니다. 표준 리포트는 여기서 총차이 4,226,131,000원이 났다는 데까지 말해 줍니다. 이 앱은 차이를 다섯 요인으로 가릅니다.
| 요인 | 금액(원) | 읽는 법 |
|---|---|---|
| 신규 발생 | +4,113,200,000 | 계획에는 없던 고객 · 조합에서 새로 생긴 수주 점검액 |
| 계획 소멸 | −1,030,131,000 | 계획에는 있었지만 실적이 없는 조합 |
| 환율 | +493,317,000 | 외화 고객 행에서 계획 환율 대비 환율 차이로 생긴 몫(가정 환율 기준) |
| 초과 | +5,262,040,000 | 계획과 실적이 모두 있고 실적이 큰 조합의 차이 합 |
| 미달 | −4,612,295,000 | 계획과 실적이 모두 있고 실적이 작은 조합의 차이 합 |
| 요인 합 = 총차이 | +4,226,131,000 | 화면이 매번 검산 줄로 차이 0 임을 보여 줍니다 |
총차이만 보면 “약 42억 원 더 받았다”로 끝나지만, 요인으로 가르면 초과 +52.6억 원과 미달 −46.1억 원이 서로 상쇄하고 있고 신규 발생이 +41.1억 원이라는 점이 드러납니다. 원인은 화면이 단정하지 않습니다 — 점검 필요 항목으로만 올리고, 판단은 담당자가 합니다. 같은 샘플에서 연체 독촉 일괄 실행은 시뮬레이션이 미리 보여 준 문서 9건 · 3,877,300,000원과 실행 뒤 생성된 문서 합계가 같았고, 대사는 247건을 점검해 의도적으로 심어 둔 예외 12건 외에는 차이가 0이었습니다.
도입하면 달라지는 것
- 승인 대기와 반려가 할 일로 모인다 — 문서 승인 대기 22건 · 반려 18건이 개요 화면의 할 일로 보입니다.
- 독촉 준비 시간이 줄어든다 — 독촉 대상 9건을 시뮬레이션으로 미리 보고 한 번에 만듭니다.
- 월말 대사가 규칙이 된다 — 6개 규칙 · 247건 점검에서 의도적 예외 12건만 남습니다.
- 차이 설명이 한 화면에서 나온다 — 총차이 4,226,131,000원을 다섯 요인으로 가르고 검산합니다.
사람 · 회의 · 마감 관점에서 보면, 승인자는 메일 대신 할 일 목록에서 점검 결과가 붙은 문서를 열고, 회의의 주제는 “어느 숫자가 맞나”에서 “이 고객에게 무엇을 할 것인가”로 옮겨 갑니다.
이런 회사에 맞습니다
고객별 여신 한도를 운영하고 수주 · 청구 · 수금이 매달 수백 건 이상 오가는 영업 조직. 여신 담당 · 영업 책임자 · 물류 담당이 같은 고객을 서로 다른 화면으로 보고 있는 회사. 표준 화면은 쓰지만 승인 근거와 대사 증적을 엑셀과 메일로 남기고 있는 경영지원 조직. 법인 · 사업장 수가 늘수록, 승인 단계가 둘 이상일수록, 독촉과 보류 해제를 여러 부서가 나눠 처리할수록 이 앱이 하나로 묶어 주는 몫이 커집니다.
실행 화면
아래 화면은 모두 검증용 샘플 데이터로 실제 브라우저에서 찍은 것입니다(고객 이름 · 한도 · 환율은 가상 값과 가정값입니다). 왼쪽 메뉴 순서와 같게 개요 → 기준정보 → 문서 처리 → 일괄 실행 → 대사 → 분석 → 영역 간 연계 → 이력 · 감사 순서로 따라갑니다.
사용 방법
- 조회조건을 넣습니다. 위쪽 조회조건 줄에 영업조직(기본 전체) · 기간 시작 / 종료(필수,
2026-01형식, 기본 2026-01 ~ 2026-10) · 고객(선택, 고객 코드)이 있습니다. 기간이 거꾸로면 안내 메시지가 뜹니다. - 조회 버튼은 조회조건 줄의 오른쪽 끝에 있고, 입력 칸에서 Enter 키를 눌러도 조회됩니다. 개요 화면은 열 때 바로 읽고, 분석 화면은 [조회]를 눌러야 큐브를 한 번 읽어 옵니다.
- 개요에서 요약을 봅니다. 총 여신 한도 · 총 노출액 · 한도 사용률 · 보류 고객 수 · 연체 잔액 · 승인 대기 · 반려 · 미해결 대사 예외 · 확정 문서 · 열린 할 일, 열 개 카드와 역할별 요약이 나옵니다.
- 왼쪽 메뉴 순서대로 이동합니다. 개요 · 할 일 → 기준정보 관리 → 문서 처리 → 일괄 실행 → 대사 · 점검 → 분석 → 영역 간 연계 → 이력 · 감사 · 권한. 메뉴는 ☰ 로 접고 펼 수 있습니다.
- 행을 누르면 상세가 열립니다. 문서 처리는 오른쪽에 상세가 열리고 항목 · 상태 이력 · 연계 문서 · 감사 로그 탭이 있습니다. 기준정보는 행 앞 선택 칸을 누른 뒤 수정 · 사용 중지 · 변경 이력 · 고객 문서 버튼을 씁니다.
- 처리는 상태 순서대로 합니다. 생성 → 저장(임시저장) → 검토 요청 → 승인 → 확정(전기) 순이고, 확정한 문서는 역처리(취소)로 되돌립니다. 지금 누를 수 없는 버튼은 보이지 않거나 사유가 안내됩니다.
- 내려받기는 목록 머리의 CSV · xlsx, 분석 화면의 PowerPoint · CSV 입니다. 문서는 xlsx 로 한꺼번에 올릴 수도 있고, 형식 검사 결과를 미리 본 뒤 반영합니다.
- 사용자 전환은 오른쪽 위 목록에서 합니다(조회자 · 처리자 · 승인자 · 관리자). 이 전환은 시연용이며, 역할에 따라 보이는 버튼과 서버가 허용하는 처리가 달라집니다.
무엇으로 만들었나
| 자리 | 무엇 | 왜 그렇게 두었나 |
|---|---|---|
| 화면 컨트롤 | OpenUI5 1.120 표준 컨트롤 — 셸(sap.tnt.ToolPage), 목록 · 표 · 대화상자(sap.m), 문서 상세 영역(sap.uxap), 행 표(sap.ui.table) | 표준 컨트롤만 쓰면 별도 라이브러리 반입 심사가 필요 없고 Fiori 와 같은 조작감을 얻습니다. |
| 테마 | sap_horizon | SAP 표준 화면과 나란히 놓아도 이질감이 없도록 같은 테마를 씁니다. |
| 처리 · 판정 로직 | 상태 전이 · 채번 · 금액 계산 · 점검 결과 · 직무 분리 · 중복 방지는 모두 서비스 로직이 판정 | 화면이 판정하면 우회가 가능합니다. 화면은 서비스 결과를 보여 주고, 같은 요청을 직접 보내도 같은 거절이 나옵니다. |
| OData 구성 | 화면은 OData V2 모델 하나(서비스 하나)만 바라봅니다. 조회조건은 Filter 객체, 정렬 · 페이징은 모델 기능, 처리는 서비스가 노출한 펑션을 호출합니다. 서비스에 붙지 못하면 사용자 메시지가 뜹니다. | 운영에서 서비스 주소만 바꿔 같은 화면을 쓰도록, 서비스 경로는 설정 한 곳에만 두고 화면은 엔티티셋 이름에만 묶습니다. |
| 피벗 · 차트 | 큐브를 한 번 읽어 와 화면에서 축 조합을 다시 묶습니다. 차트는 외부 라이브러리 없이 직접 그린 SVG, 색은 테마 변수를 따릅니다. | 축을 바꿔도 서버를 다시 부르지 않으므로 합계가 갈라질 자리가 없습니다. |
| 내려받기 | xlsx · PowerPoint · CSV 를 브라우저에서 직접 만듭니다(외부 라이브러리 없음) | 사내망에서 외부 반입 없이 쓰고, 보고 있는 범위 그대로 파일이 나옵니다. |
| 항목 | 내용 |
|---|---|
| 영역 | 영업 |
| 업무 흐름 범위 | 한도 변경 → 수주 여신 점검 → 청구 전환 → 여신 보류 · 해제 → 연체 독촉 → 수금 반영 |
| 모듈 구성 | M1 개요 · 할 일 / M2 기준정보 / M3 문서 처리 / M4 일괄 실행 / M5 대사 · 점검 / M6 분석 / M7 영역 간 연계 / M8 이력 · 감사 · 권한 |
| 업무 영역 | 영업 여신 관리 · 채권 · 수주 · 청구 · 수금 |
| 관련 기준서 · 대상 영역 | - (기준서 적용 판단을 하지 않는 처리 · 점검 도구입니다. 대상 영역: 영업) |
| SAP 표준 T-code | FD32 · FD33 · UKM_BP · VKM1 · VA03 · VF03 · FBL5N · F150 · F-28 · FB08 |
| Namespace | zui5.credithub |
| 화면 성격 | 통합 관리(처리 · 승인 · 일괄 실행 · 대사 · 분석 · 감사) |
| 데이터 연동 | OData V2 (검증용 샘플 데이터로 시연) |
| 테마 | sap_horizon |
처음 열었을 때 — 할 일부터 보인다

맨 위 열 개 카드는 조회 범위 기준 값입니다. 총 여신 한도 49,980백만 원, 총 노출액 36,908백만 원(수주 잔액 + 미결 채권), 한도 사용률 73.8%(노출액 ÷ 한도), 연체 잔액 6,133백만 원, 승인 대기 22건, 반려 18건, 미해결 대사 예외 11건, 확정 문서 457건, 열린 할 일 80건입니다. 사용률 80% 이상은 점검 필요로 칠합니다. 카드 아래 역할별 요약(경영진 · 영업 책임자 · 여신 담당 · 물류 담당)을 누르면 분석 화면이 그 역할의 관점(측정값과 쪼개는 차원)으로 열립니다. 아래에는 내 역할의 할 일과 에이전트가 올린 알림이 나옵니다.
기준정보 관리 — 한도와 등급을 한곳에서

탭은 고객 여신 마스터와 등급 정책 두 개입니다. 사용률이 100%를 넘으면 빨갛게 보이고(예: 누리솔루션 168.1%), 한도가 0인 신규 고객은 사용률 0%입니다. 위 검색어(코드 · 이름) · 여신 상태 · 등급 · 상태로 거르고, 관리자 역할만 생성 · 수정 · 사용 중지 · 다시 사용을 할 수 있습니다. 모든 변경은 변경 이력에 남습니다.

한도를 3억 원에서 3.5억 원으로 바꾸고 저장하면 새로 고친 뒤에도 350,000,000원으로 남습니다(서비스가 실제로 기록합니다). 한도는 0 이상이어야 하고, 필수 칸이 비면 저장되지 않습니다. 사용 중지는 아직 확정되지 않은 문서가 그 고객을 쓰고 있으면 서버가 안내하며 막습니다.
문서 처리와 승인 — 같은 상태 흐름으로

목록은 문서번호 · 구분 · 고객 · 영업조직 · 문서일 · 금액 · 통화 · 점검 결과 · 상태 순입니다. 위 [생성] · [한도 점검] · [업로드(xlsx)] · [CSV] · [xlsx] 버튼이 있고, 점검 결과가 한도 초과인 문서는 빨간 글씨로 표시됩니다. 역처리 문서(RV 로 시작)는 금액이 음수로 보입니다.

고객 다온시스템에 600,000,000원 수주를 점검하면 점검 결과가 한도 초과(점검 필요), 사용 후 노출액 600,000,000원, 사용률 133.3%로 나옵니다. 승인 단계는 0 / 2단계 — 금액이 1억 원 이상이고 점검 결과가 이내가 아니므로 두 단계 승인 대상입니다. 아래 상태 이력에 만든 사람과 일시가 남습니다.

화면 아래 토스트 메시지 “검토 요청했습니다.”가 잠깐 뜨고 같은 문서는 승인자의 할 일에 올라갑니다. 이 시점부터 작성자는 내용을 고칠 수 없습니다. 반려된 문서(90)는 보완한 뒤 같은 버튼으로 다시 요청합니다.

메시지는 “2단계 승인은 1단계 승인자와 다른 관리자만 할 수 있습니다.”입니다. 작성자 본인이 자기 문서를 승인하려는 경우도 같은 방식으로 거절됩니다. 거절된 요청은 감사 로그에 “권한 없음”으로 남아, 막힌 시도도 증적이 됩니다.

대화상자에는 “금액 600,000,000 KRW — 2단계 승인 대상입니다. (현재 0단계 완료)”와 함께 한도 점검 결과가 한 줄로 적혀 있습니다. 승인 메모에 예외 사유(여기서는 담보 확인 후 예외 승인)를 적어야 [확인]이 동작하며, 사유 없이 서버로 보내도 거절됩니다.

승인 단계는 2 / 2로 바뀌고 승인자 항목에 마지막 승인자가 남습니다. 확정은 승인자 역할 이상만 누를 수 있으며, 점검 결과가 보류인 수주 · 청구 문서는 승인돼 있어도 확정이 거절됩니다(보류 해제 후 진행).

이 화면에서는 상태가 확정이고 역처리(취소)와 후속 문서 만들기가 나타납니다. 수주 점검은 청구 전환으로, 보류는 보류 해제로, 연체 독촉은 수금 반영으로 이어지며, 후속 문서는 원문서의 남은 금액 안에서만 만들 수 있습니다.

연계 문서 탭에 앞 문서 OC26000135 → 뒤 문서 RV26000027(확정 취소)이 한 줄로 이어져 보이고, 출하 일정을 참조한 물류 문서도 같은 흐름에 나옵니다. 아래 감사 로그에는 승인 → 확정 → 역처리 순서와 처리자가 남습니다. 역처리는 한도 변경 · 수주 점검 · 보류 · 해제 · 수금만 가능하고, 닫힌 기간의 문서는 거절됩니다.

남는 것은 목록을 내려받는 CSV · xlsx 뿐입니다. 버튼을 숨기는 것으로 끝나지 않고, 조회자가 처리 요청을 직접 보내도 서버가 권한 없음으로 거절합니다.
일괄 실행 — 시뮬레이션 합계와 실행 결과가 같다

국내 영업(S100) 2026-10 기준일 2026-10-16로 돌리면 생성 9건 · 제외 2건 · 문서 금액 3,877,300,000 KRW가 나옵니다. 고객마다 최대 연체일과 비고(1차 독촉 · 2차 독촉 · 보류 검토 필요)가 붙고, 이미 진행 중인 독촉 문서에 담긴 청구서만 있는 고객은 제외 사유와 함께 따로 보입니다. 시뮬레이션은 아무것도 저장하지 않습니다.

실행 이력의 RN00006은 문서 수 9건, 문서 금액 3,877,300,000 KRW로 시뮬레이션 합계와 같습니다. 같은 조건으로 다시 돌리면 중복 문서를 만들지 않고 거절되며, 만들어진 문서는 모두 임시저장이라 검토 요청부터 진행합니다. 아래 실행 로그에서 문서별 생성 내용을 확인합니다.
대사와 예외 조치 — 차이를 규칙으로 잡고 조치로 닫는다

규칙은 고객 연체 잔액 · 미결 채권 · 노출액 · 보류 잔액 · 수주 잔액(고객 기준 5개)과 원장 합계(1개)입니다. 결과 표에서 규칙마다 점검 건수 48건(원장 합계는 측정값 7건), 차이 건수, 좌 · 우 합계, 최대 차이를 봅니다. 의도적으로 심어 둔 차이가 R1 2건 · R2 3건 · R3 2건 · R4 2건 · R5 3건, 합계 12건이며 최대 차이는 R5의 15,000,000원입니다.

마루정밀(R1)의 차이 −2,800,000원은 정정 문서 생성으로 조치합니다. 사유를 적고 [조치]를 누르면 정정 문서가 만들어져 예외에 연결되고, 상태는 미해결에서 조치 중으로 바뀝니다.

EX000001은 해소, EX000002는 조치 중(정정 문서 연결), 나머지는 미해결입니다. 조치 중인 예외는 [대사 실행(재대사)]을 다시 돌려 차이가 사라지면 해소로 바뀌며, 이 흐름은 서비스 검증에서 확인했습니다. 12건의 합은 언제나 미해결 + 조치 중 + 해소와 같습니다.
분석 — 같은 큐브에서 나오는 피벗 · 차이 · 드릴스루

기본 배치는 행 축 등급, 열 축 기간이며 측정값은 수주 점검액입니다. 전체 합계 64,236,219,000원이 등급별(A 41,519,156,380 + B 15,196,408,240 + C 6,180,005,200 + D 1,340,649,180)로 나뉘어 합이 같습니다. 칸을 누르면 그 금액을 만든 문서 라인(드릴스루)이 열리고, 행 축은 최대 3단계 · 열 축은 최대 2단계(열 36개 상한)까지 둘 수 있습니다.

[행↔열 바꾸기]를 누르면 행 축이 기간, 열 축이 등급으로 바뀌고 전체 합계는 그대로 64,236,219,000원입니다(요청 0건 확인). 차원 칩을 끌어다 놓아도 같습니다. 비교 기준을 계획으로 켜면 같은 표가 칸마다 차이와 증감률을 보여 주는 차이 리포트가 되고, 색은 금액 1백만 원과 증감률 5%를 둘 다 넘을 때만 칠합니다.
AI 분석과 에이전트 — 숫자는 서비스가, 설명만 AI 가

화면 맨 위에 “AI 는 숫자를 만들지 않습니다”가 먼저 나옵니다. 요약은 실적 64,236,219,000원, 계획 60,010,088,000원, 차이 +4,226,131,000원(7%)이고 가장 큰 요인은 초과(+5,262,040,000원)이지만 “원인은 확인 필요”로 끝납니다. 핵심 발견은 수연바이오(+212.1%)처럼 계획 대비 크게 벌어진 고객을 점검 필요로 올립니다. 모델 연결은 서비스 설정에서만 켤 수 있고 기본은 꺼져 있으며, [PowerPoint 보고서]로 같은 내용을 내려받습니다.

[지금 실행]을 누르면 “감시 규칙 4건 점검 — 걸린 항목 28건, 대기함에 보고 올림”이 나옵니다(여신 사용률 90% 초과 12건 · 연체 비중 30% 초과 12건 · 보류 30일 초과 3건 · 승인 대기 적체 1건). 하루 한 번 제한은 서버가 판정하므로 같은 날 두 번째 호출은 “활동 기록만 남겼습니다”로 끝납니다. 운영에서는 이 호출을 배치(SM36)나 cron 으로 매일 한 번 돌립니다.
영역 간 연계 — 영업 문서가 물류 · 재무로 이어지는 흐름

수주 여신 점검 OC26000010은 물류의 출하 일정 참조(DL26000010)와 영업의 청구 전환(BL26000013)으로 이어지고, 청구 전환은 재무의 매출채권 전표(FI26000013)로 이어집니다. 같은 영역 문서는 누르면 문서 처리로 이동하고, 다른 영역 문서는 흐름만 보여 줍니다. 아래 표는 연계 내역과 금액, 비고(어떤 표준 단계에 해당하는지)를 CSV 로 내려받을 수 있습니다.
이력 · 감사 · 역할 — 막힌 시도까지 남는다

조회자는 READ 뿐이고, 처리자는 편집 · 검토 요청 · 생성 · 일괄 실행 · 대사 · 조치 · 업로드, 승인자는 여기에 승인 · 반려 · 확정 · 역처리를, 관리자는 기준정보 관리까지 가집니다. 아래 표의 상태 전이(임시저장 → 검토요청 → 승인 → 확정 → 취소) 밖의 요청은 서버가 안내와 함께 거절하며, 거절된 요청도 감사 로그에 남습니다. 운영에서는 이 역할을 SAP 권한 객체와 역할로 옮깁니다.
레이아웃과 좁은 화면 — 휴대폰에서도 같은 숫자

긴 표는 가로로 넘기고 상한을 넘는 축 조합에는 안내 문구가 뜹니다. 레이아웃은 이름을 붙여 저장해 두었다가 다시 불러올 수 있고, 기본 레이아웃 + 자동 조회로 지정하면 열자마자 조회된 채 시작합니다.

숫자 · 판정은 넓은 화면과 같은 서비스 값을 쓰므로 폭이 달라져도 합계가 달라지지 않습니다.
화면 뒤에서 일어나는 일
화면은 서비스가 판정한 결과를 보여 줄 뿐입니다. 판정은 다음 순서로 이루어집니다.
점검 결과 판정 규칙
수주 점검 · 청구 전환 · 한도 변경 문서에는 점검 결과가 하나만 붙고, 여러 조건이 겹치면 가장 앞선(무거운) 것이 남습니다.
| 순서 | 판정 조건 | 결과 | 사용자 조치 |
|---|---|---|---|
| 1 | 고객 여신 상태가 정상이 아닌데 수주 · 청구를 시도 | 보류(HLD) | 보류 해제 문서를 먼저 처리합니다. 보류 상태의 수주 · 청구 문서는 확정이 거절됩니다. |
| 2 | 고객의 최대 연체일이 등급 정책의 허용 연체일을 초과 | 연체일 초과(OVD) | 연체 독촉 · 수금 반영 현황을 확인합니다. 승인 시 예외 사유가 필요합니다. |
| 3 | 한도 변경 결과 한도가 등급의 최대 한도를 초과 | 등급 한도 초과(GRD) | 등급 정책을 확인하거나 한도 증액 폭을 조정합니다. |
| 4 | 수주 점검: 노출액 + 이번 금액 > 고객 한도 | 한도 초과(OVR) | 점검 필요 — 승인자가 예외 사유를 적어 승인할 수 있습니다. |
| 5 | 위 조건에 해당 없음 | 이내(OK) | 일반 승인 흐름으로 진행합니다. |
보류 · 보류 해제 · 연체 독촉 · 수금 반영 · 정정 문서는 해당 없음으로 표시합니다. 승인 단계는 기본 1단계이고, 점검 결과가 이내가 아니면서 금액이 1억 원 이상이거나 한도 변경의 증감 합계가 3억 원 이상이면 2단계입니다. 1단계는 승인자(또는 관리자), 2단계는 1단계 승인자와 다른 관리자가 승인합니다.
문서 유형과 확정 효과
| 유형 | 항목 | 확정(전기)했을 때 일어나는 일 | 역처리 |
|---|---|---|---|
| 한도 변경 | 증감액 | 고객 여신 한도에 증감액을 더함(결과는 0 이상) | 가능 |
| 수주 여신 점검 | 수주 항목 | 고객 수주 잔액 증가 | 청구 전환이 없을 때 가능 |
| 청구 전환 | 수주 항목 참조 | 수주 잔액 감소 · 미결 채권 증가 · 채권(청구서) 행 생성 | 불가 |
| 여신 보류 | 보류 금액 | 보류 잔액 증가, 여신 상태 보류 | 보류 해제가 없을 때 가능 |
| 보류 해제 | 보류 항목 참조 | 보류 잔액 감소, 0 이면 여신 상태 정상 | 가능 |
| 연체 독촉 | 채권(청구서) | 대상 채권의 독촉 단계 +1 | 불가 |
| 수금 반영 | 채권(청구서) | 미결 채권 감소 · 채권 미결 금액 감소 · 연체 채권이면 연체 잔액 감소 | 가능 |
| 정정 | 대사 예외 조치로만 생성 | 고객 필드를 대사 기준값으로 보정 | 불가 |
상태 전이와 직무 분리
| 현재 상태 | 동작 | 다음 상태 | 필요 역할 | 비고 |
|---|---|---|---|---|
| 10 임시저장 · 90 반려 | 검토 요청 | 20 검토요청 | 처리자 | 작성자 |
| 20 검토요청 | 승인 | 30 승인 | 승인자 | 작성자 본인 불가, 2단계는 다른 관리자 |
| 20 검토요청 | 반려 | 90 반려 | 승인자 | 사유 필수 |
| 30 승인 | 확정(전기) | 40 확정 | 승인자 | 원장 · 큐브 · 고객 잔액에 반영 |
| 40 확정 | 역처리 | 99 취소 | 승인자 | 반대 문서 생성 · 닫힌 기간은 거절 |
일괄 실행의 처리 단계
- 시뮬레이션 — 대상을 모아 문서 미리보기와 상태 해시를 돌려줍니다. 아무것도 저장하지 않습니다.
- 실행 — 해시가 시뮬레이션 때와 같을 때만 문서를 만듭니다. 달라졌으면 다시 시뮬레이션하라는 안내와 함께 거절합니다.
- 중복 방지 — 같은 유형 · 기간 · 영업조직 · 동일 대상의 재실행, 이미 진행 중인 문서에 담긴 대상은 서버가 제외하거나 거절합니다.
- 로그 — 실행번호 · 유형 · 기간 · 문서 수 · 금액과 문서별 생성 내용이 남습니다. 합계는 시뮬레이션 합계와 같아야 합니다.
연체 독촉 일괄(기준일 2026-10-16)은 연체일 1일 이상의 미결 채권을 고객별로 묶어 고객당 문서 1건을 만들고, 연체일이 60일을 넘으면 “보류 검토 필요”로 표시합니다. 정기 한도 재산정은 재산정 시기가 도래한 활성 고객의 제안 한도를 노출액 × 1.3을 1천만 원 단위로 올림하되 최소 1천만 원, 등급 최대 한도 이내로 계산하고 증감이 1천만 원 이상일 때만 한도 변경 문서를 만듭니다.
대사식
- R1 고객 연체 잔액 = 미결 채권 중 연체(연체일 1일 이상) 미결 금액 합
- R2 고객 미결 채권 = 채권 미결 금액 합
- R3 고객 노출액 = 수주 잔액 + 미결 채권
- R4 고객 보류 잔액 = 확정 보류 − 확정 보류 해제(역처리 반영)
- R5 고객 수주 잔액 = 확정 수주 점검 − 확정 청구 전환(역처리 반영)
- R6 측정값별 원장 합계 = 확정 문서 항목 합계 (허용 오차는 규칙마다 1원)
조회조건
| 필드 | 필수 | 기본값 | 조회에 쓰는 조건 |
|---|---|---|---|
| 영업조직 | 선택 | 전체 | 영업조직 같음(SalesOrg eq) |
| 기간 (시작) | 필수 | 2026-01 | 기간 이상(Period ge) — 2026-01 형식 |
| 기간 (종료) | 필수 | 2026-10 | 기간 이하(Period le) — 시작보다 늦어야 함 |
| 고객 | 선택 | 비움 | 고객 코드 같음(CustNo eq) |
| 문서번호 · 고객 / 구분 / 상태 | 선택 | 전체 | 문서 목록 전용 — 번호 · 이름 포함 검색, 문서 유형, 상태 같음 |
| 검색어 / 여신 상태 / 등급 / 상태 | 선택 | 전체 | 기준정보 전용 — 코드 · 이름 포함 검색 등 |
결과 컬럼
| 컬럼 | 의미 | 산출식 |
|---|---|---|
| 여신 한도 | 고객에게 허용된 한도 | 기준정보 값(등급 최대 한도 이내) |
| 노출액 | 지금 한도를 쓰고 있는 금액 | 수주 잔액 + 미결 채권 |
| 사용률 | 한도 대비 노출 | 노출액 ÷ 한도 × 100 (한도 0 이면 0) |
| 연체 잔액 | 기한이 지난 미결 채권 | 미결 채권 중 연체일 1일 이상 미결 금액 합 |
| 보류 잔액 | 여신 보류로 묶인 금액 | 확정 보류 − 확정 해제 |
| 사용 후 노출액 | 문서를 확정했을 때의 노출액 | 현재 노출액 + 문서 금액(문서 시점) |
| 점검 결과 | 보류 · 연체일 초과 · 등급 한도 초과 · 한도 초과 · 이내 | 위 판정 규칙 표의 순서 |
| 금액(원) | 원화 환산 금액 | 외화 금액 × 기간별 가정 환율(합계는 원화로만 더함) |
좁은 화면에서 달라지는 것
- 왼쪽 메뉴는 아이콘만 남기고 접히며 ☰ 로 다시 펼칩니다.
- 조회조건은 한 줄에 하나씩 세로로 쌓이고 [조회] 버튼은 조건 아래에 놓입니다.
- 차트는 표 옆이 아니라 표 아래로 내려갑니다. 열 상한(36개)을 넘는 축 조합은 안내 문구로 줄이도록 알려 줍니다.
- 합계 · 판정은 넓은 화면과 같은 서비스 값입니다. 폭이 달라져도 숫자가 달라지지 않습니다.
파일 구성
(앱 폴더)
├─ index.html 앱 진입점
├─ Component.js · manifest.json 서비스 선언 · 모델 설정 · 라우팅
├─ view/ 개요 · 기준정보 · 문서 · 일괄 실행 · 대사 · 분석 · 연계 · 감사 화면과 대화상자
├─ controller/ 화면별 컨트롤러 (판정은 하지 않고 서비스 결과를 보여 줌)
├─ model/ 오류 처리 · 권한 표시 · 큐브 피벗 · 차트 · xlsx/pptx 작성 · 포맷터
├─ i18n/ · css/ 문구 · 스타일
├─ odata/ 서비스 선언(메타데이터) · 서비스 로직 · 샘플 json
└─ readme.html 설명서
SAP 표준 기능 확장 포인트 — 표준 T-code 와 어떻게 연계되는지
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 처리와 점검 관점을 더해 확장합니다. 표준 화면을 없애는 앱이 아니라, 표준 화면 여럿에 흩어진 여신 업무를 한 줄로 이어 주고 승인 · 대사 · 분석 근거를 남기는 앱입니다. 아래 표와 설명은 어느 일이 표준으로 충분한지, 어느 자리에서 이 앱이 이어받는지, 운영에서 어디를 손대는지를 순서대로 정리한 것입니다.
표준으로 되는 것과 더하는 것
왼쪽 두 열은 표준 화면으로 충분한 일이고, 오른쪽 두 열은 이 앱이 더하는 관점입니다. 법정 · 감사 · 세무 신고에 쓰는 자료는 표준에서 만든 것이 기준이며, 이 앱의 결과는 그것을 점검하고 설명하는 보조 자료입니다.
| 하고 싶은 일 | SAP 표준 | 표준 화면 단위로 남는 자리 | 이 앱이 하는 일 |
|---|---|---|---|
| 고객 여신 한도 변경 | FD32 · UKM_BP 에서 한도를 바꾸고 FD33 으로 조회 | 한도 변경 근거와 승인 흐름은 화면 밖(메일 · 결재)에서 맞춥니다 | 한도 변경 문서에 승인 단계와 직무 분리를 붙이고, 등급 정책 최대 한도를 넘기면 점검 결과로 표시 |
| 수주가 한도에 걸렸는지 확인 | VKM1 · VKM3 에서 차단된 판매 문서를 처리, VA03 으로 수주 조회 | 차단 문서는 문서 단위로 열어 이유를 확인합니다 | 노출액 + 신규 수주를 한도와 비교해 보류 · 연체 · 등급 한도 · 한도 초과 · 이내 중 하나로 문서에 남김 |
| 청구 전환과 미결 채권 확인 | VF03 으로 청구 문서 조회, FBL5N 으로 고객 라인 아이템 확인 | 수주 → 청구 → 채권이 서로 다른 화면의 숫자입니다 | 청구 전환 문서가 수주 점검 항목과 이어지고 미결 채권 행을 만들며, 잔여 금액까지 서버가 계산 |
| 연체 고객 독촉 | F150 독촉 프로그램 | 독촉 대상 확인과 독촉 단계 점검은 실행 전 · 후로 나뉩니다 | 시뮬레이션으로 대상 · 금액 · 단계를 미리 보고, 같은 상태일 때만 실행하며 중복 실행은 거절 |
| 수금 반영 | F-28 입금 전기, 확정 후 정정은 FB08 로 전표 역분개 | 반영 결과가 여신 노출액에 어떻게 돌아왔는지는 따로 확인합니다 | 수금 반영 문서가 채권 미결 금액과 고객 연체 잔액을 함께 줄이고, 역처리는 반대 문서로 이어서 보여 줌 |
| 월말 잔액 대사 | FBL5N 합계와 여신 잔액을 엑셀로 대조 | 고객 잔액과 문서 · 채권 합계를 맞추는 규칙은 사용자가 만듭니다 | 대사 6 규칙을 한 번에 돌리고 예외는 정정 문서 · 보류 · 사유 기록으로 조치한 뒤 다시 대사 |
| 차이를 요인으로 설명 | 표준 리포트는 계획 대비 실적 총차이까지 | 요인으로 가르는 일은 엑셀에서 합니다 | 신규 발생 · 계획 소멸 · 환율 · 초과 · 미달 다섯 요인으로 가르고 합이 총차이와 같은지 매번 검산 |
T-code 별 연계 지점
이 앱의 결과를 표준 T-code 로 원천 확인하고, 표준 화면의 값을 이 앱에서 다시 보는 방법을 T-code 마다 정리했습니다. 두 화면의 숫자를 맞춰 보는 지점은 대사 R1 ~ R6 이 그대로 받아 줍니다.
| T-code | 이름 | 연계 지점 |
|---|---|---|
FD32 · FD33 | 고객 여신 한도 변경 · 조회 | 한도 변경 문서(LM)의 확정 효과가 반영하는 고객 한도와 같은 값을 봅니다. 두 화면의 한도가 같은지는 고객 여신 마스터 목록에서 맞춰 봅니다. |
UKM_BP | 여신 관리 비즈니스 파트너 | 운영 환경에서 여신 정보가 비즈니스 파트너 쪽에 있다면 고객 여신 마스터의 원천으로 연결하는 자리입니다. 필드 매핑은 보유 릴리스에서 확인이 필요합니다. |
VKM1 · VKM3 | 차단된 SD 문서 · 문서 조회 | 여신 보류 문서(HD)와 수주 점검 결과가 보류로 나온 문서를 표준의 차단 문서와 나란히 맞춰 봅니다. 해제는 표준 화면에서, 해제 이력과 승인 근거는 이 앱의 보류 해제 문서에 남깁니다. |
VA03 | 판매 오더 조회 | 수주 점검 문서의 항목에 수주 번호가 있습니다. 이 앱의 결과에서 해당 수주를 VA03 으로 열어 원천을 확인합니다. |
VF03 | 청구 문서 조회 | 청구 전환 문서의 항목은 청구 문서를 가리킵니다. 청구 금액이 맞는지는 VF03 에서 확인하고, 이 앱에서는 수주 점검 항목과의 잔여 금액을 봅니다. |
FBL5N | 고객 라인 아이템 | 미결 채권 · 연체 잔액 대사(R1 · R2)의 기준이 되는 자리입니다. 대사 결과의 고객을 FBL5N 에서 열어 같은 합계인지 맞춰 봅니다. |
F150 | 독촉 프로그램 | 연체 독촉 일괄 실행이 만드는 독촉 문서의 대상 · 단계와 표준 독촉 실행 결과를 맞춰 보는 자리입니다. 실제 독촉장 출력과 발송은 표준에 남깁니다. |
F-28 | 수금 반영(입금 전기) | 수금 반영 문서의 금액이 표준 입금 전기와 같은지 맞춰 봅니다. 회계 전표 자체는 표준에서 만들고 이 앱은 여신 관점의 잔액 변화를 보여 줍니다. |
FB08 | 전표 역분개 | 이 앱의 역처리는 반대 부호 문서를 만들어 원문서와 잇는 방식입니다. 회계 전표 역분개가 필요한 건은 표준 FB08 에서 처리합니다. |
오가는 방법
- 이 앱 → 표준: 문서 상세에서 수주 번호 · 청구 번호 · 고객 번호를 확인한 뒤 VA03 · VF03 · FBL5N 에서 같은 번호로 엽니다. 대사 예외의 고객은 FBL5N 과 FD33 으로 확인합니다.
- 표준 → 이 앱: 표준 화면에서 본 고객 번호로 이 앱의 고객 여신 마스터를 열면 한도 · 노출액 · 사용률이 보입니다. 문서 목록에서 같은 고객으로 거르면 처리 중인 문서와 연체 독촉 단계가 보입니다.
- 숫자가 다를 때: 대사 화면에서 규칙(R1 ~ R6)을 돌려 어느 규칙에서 차이가 났는지부터 봅니다. 차이가 난 고객은 정정 문서 · 보류 · 사유 기록 중 하나로 조치하고 다시 돌립니다.
S/4HANA 분석 스택과의 자리
S/4HANA 에는 CDS 분석 쿼리와 Fiori 분석 앱, Analysis for Office 같은 표준 분석 도구가 있습니다. 이 앱의 분석 화면은 그와 경쟁하는 자리가 아니라 여신 문서 흐름을 기준으로 한 분석 화면입니다. 표준 분석 도구는 회계 · 판매 데이터를 폭넓게 보는 데, 이 앱은 여신 문서(한도 변경 · 수주 점검 · 청구 전환 · 보류 · 독촉 · 수금)를 기준으로 계획과 비교하고 차이를 요인으로 가르는 데 쓰입니다. 운영에서는 아래 CDS 구성을 표준 분석 스택의 큐브와 같은 방식으로 만들기 때문에, 분석 쿼리를 Fiori 분석 앱이나 Analysis for Office 에서 열어도 같은 큐브를 봅니다.
- 표준 CDS 뷰와의 관계 — 고객은
I_Customer, 판매 문서 항목은I_SalesDocumentItem, 미결 채권 원천은I_OperationalAcctgDocItem을 기준으로 삼습니다. 확인하지 못한 표준 뷰는 사용하지 않고 원천 테이블 기준으로 쓰며, 아래 CDS 구성에서는 확인 필요로 표시했습니다. - Fiori 분석 앱과의 관계 — 구체적인 Fiori 앱 이름은 보유 릴리스의 앱 라이브러리에서 확인한 뒤 연결합니다(확인 필요). 이 글에서는 확인하지 못한 앱 이름을 쓰지 않습니다.
- Analysis for Office 와의 관계 — 분석 쿼리를 서비스로 게시하면 엑셀 쪽 분석 도구에서도 같은 쿼리를 열 수 있습니다. 화면의 피벗 · 드릴스루 · 차이 분해는 이 앱 안에서 바로 쓰고, 엑셀 작업이 필요한 사용자는 같은 쿼리를 엽니다.
확장 포인트 — 운영에서 실제로 손대는 자리
고객사마다 달라지는 자리는 대체로 일곱 곳입니다. 운영에서는 아래 표의 값을 코드가 아니라 설정이나 매핑 테이블에 두는 것을 권합니다.
| 확장 자리 | 무엇이 달라지나 | 어떻게 손대나 | 누가 정하나 |
|---|---|---|---|
| 등급 정책 | 등급별 최대 한도 · 최대 연체일 · 자동 보류율 · 재산정 주기 | 등급 정책 테이블 값을 바꾸면 점검 결과 판정이 바뀝니다 | 여신 담당 · 관리자 |
| 승인 단계 기준 | 2단계로 올라가는 금액(문서 1억 · 한도 변경 3억)과 대상 점검 결과 | 설정 값으로 분리해 두면 개정이 코드 변경 없이 끝납니다 | 경영지원 · 감사 |
| 고객 매핑 | 고객 · 영업조직 · 채널 · 그룹을 어느 표준 필드에서 가져오나 | 고객 마스터 확장 필드가 있다면 차원 뷰의 association 에 추가합니다 | 영업 운영 · IT |
| 채권 원천 | 미결 채권을 어느 원천에서 가져오나 | 고객 라인 아이템 기준으로 연결하고, 특별 총계정 항목의 포함 여부를 정합니다 | 재무 · IT |
| 권한 | 조회 · 처리 · 승인 · 관리 네 역할 | 데모의 사용자 전환을 걷어내고 PFCG 역할과 권한 객체로 옮깁니다 | IT · 감사 |
| 확장 필드 · BAdI | 고객별 여신 메모, 승인 근거 첨부, 업종 구분 같은 고객사 고유 항목 | 확장 필드는 마스터 뷰에, 검증 로직은 BAdI 또는 RAP determination · validation 에 둡니다 | IT |
| 환율 | 외화 고객의 환산에 쓰는 환율 유형과 시점 | 문서일 기준인지 기간 말 기준인지 정해 두어야 요인분해의 환율 요인이 의미를 갖습니다 | 재무 |
분석 지표 정의
이 앱의 분석 화면은 일곱 가지 측정값을 같은 큐브에서 보여 줍니다. 계산항목은 측정값 코드로 식을 적어 두고, 차이 요인은 서비스가 계산합니다.
| 지표 | 산식 | 판정 기준 | 대응 기능 | 원천 데이터 | 비고 |
|---|---|---|---|---|---|
| 수주 점검액 | ORD = 확정 수주 점검 문서 항목 금액 합 | 계획 대비 초과 · 미달 | 분석 · 계획 대비 | 확정 수주 점검 문서 항목 | 외화는 환산 금액(KRW)만 더함 |
| 청구 전환액 | BIL = 확정 청구 전환 문서 항목 금액 합 | 수주 점검액 대비 전환율 | 분석 · 계산항목 | 확정 청구 전환 문서 항목 | 전환율 = BIL ÷ ORD |
| 수금 반영액 | PAY = 확정 수금 반영 문서 항목 금액 합 | 청구 전환액 대비 회수율 | 분석 · 계산항목 | 확정 수금 반영 문서 항목 | 회수율 = PAY ÷ BIL |
| 보류액 · 해제액 | HLD · REL | 보류 잔액 = HLD − REL | 분석 · 대사 R4 | 확정 보류 · 해제 문서 항목 | 역처리 반영 |
| 독촉 연체액 | OVD = 확정 연체 독촉 문서 항목 금액 합 | 연체 비중 | 분석 · 에이전트 규칙 | 확정 독촉 문서 항목 | 연체일은 항목에 보관 |
| 한도 증감액 | LMT = 확정 한도 변경 문서 항목 금액 합 | 증감 방향 | 분석 · 한도 재산정 | 확정 한도 변경 문서 항목 | 음수 가능 |
CDS 구성 — 운영 환경에서 이 앱을 어떻게 만드나
데모는 모델 수준의 서비스로 돌지만, 운영에서는 같은 구조를 CDS 뷰와 RAP 로 옮깁니다. 아래는 기준 → 차원 → 기초 → 큐브 → 쿼리 → 권한 → 서비스 순서로 쌓은 구성과 객체별 코드입니다. 이름과 필드는 기능을 뜻하는 영문으로 지었고, 표준 뷰와 표준 필드 중 확인하지 못한 것은 코드 주석에 확인 필요로 적었습니다. 코드는 구조를 보이기 위한 것이라 보유 릴리스에서 활성화를 확인한 뒤 씁니다.
뷰 레이어 구성
| 레이어 | 뷰 | 하는 일 | 왜 나누나 |
|---|---|---|---|
| 기준 | zcrd_grade_pol | 등급별 최대 한도 · 최대 연체일 · 자동 보류율 · 재산정 주기 | 점검 결과 판정의 기준이 코드가 아니라 표 한 장이 되도록 |
| 차원 | ZI_CreditCustomer | 고객 한 명당 한 행 — 영업조직 · 지역 · 채널 · 그룹 · 등급 · 한도 | 큐브에서 join 을 한 번만 걸고 값 도움말 · 텍스트가 한 뷰를 보게 하려고 |
| 기초 | ZI_CreditExposure | 고객별 미결 채권 · 연체 잔액 · 수주 잔액 · 노출액 · 사용률 | 표준 원천에서 오는 숫자와 이 앱 문서에서 오는 숫자를 한 뷰에서 합쳐 대사의 한쪽 변이 되게 |
| 큐브 | ZI_CreditLedgerCube | 확정 문서 항목을 기간 · 조직 · 고객 · 등급 · 점검 결과 × 측정값 7개로 집계 | 피벗 · 드릴스루 · 차이 분해가 모두 같은 합계를 보게 |
| 계획·차이 | ZI_CreditVariance | 실적과 계획을 같은 키로 맞춰 신규 · 소멸 · 초과 · 미달로 분류 | 요인분해의 분류 규칙을 뷰 한 곳에 고정하려고 |
| 쿼리 | ZC_CreditUsageQuery | 화면이 읽는 분석 쿼리 — 필터 · 축 기본 배치 · 표시 형식 | 화면은 쿼리만 읽고 계산은 아래 레이어에 두려고 |
| 권한 | ZI_CreditLedgerCube_DCL | 영업조직 단위 접근 제어(PFCG 역할) | 조회자가 볼 수 있는 범위를 데이터 레이어에서 막으려고 |
| 서비스 | ZR_CreditDoc · ZUI_CreditMgmt | 문서 처리 액션(검토 요청 · 승인 · 반려 · 확정 · 역처리)과 서비스 게시 | 화면과 같은 규칙을 서버가 다시 한 번 지키게 |
① 등급 정책 테이블
점검 결과가 한도 초과인지 연체 초과인지는 모두 이 표의 값에서 갈립니다. 운영 전환에서 가장 먼저 확정해야 하는 표이고, 값을 바꾸는 일이 개발 요청이 되지 않도록 고객 유지(customizing) 테이블로 둡니다.
" ────────────────────────────────────────────────────────────────
" zcrd_grade_pol — 고객 등급별 여신 정책 (투명 테이블)
" 최대 한도 · 최대 연체일 · 자동 보류율 · 재산정 주기를 등급 하나당 한 행으로 둔다.
" 코드에 박지 않는 이유 : 정책 개정 때마다 개발자를 부르면
" 점검 결과가 곧바로 낡는다. 값만 바꾸면 판정이 바뀐다.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '고객 등급별 여신 정책'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C " 고객 유지 — 전송(TR)으로 옮긴다
@AbapCatalog.dataMaintenance : #ALLOWED " 유지보수 뷰를 함께 만들어 둔다
define table zcrd_grade_pol {
key mandt : mandt not null;
key grade : abap.char(1) not null; " A ~ D
grade_text : abap.char(40);
@Semantics.amount.currencyCode : 'zcrd_grade_pol.currency'
max_limit : abap.curr(15,2); " 등급별 최대 한도
currency : waers;
max_overdue_days : abap.int4; " 이 일수를 넘으면 점검 결과 OVD
auto_hold_rate : abap.dec(5,2); " 사용률(%)이 이 값을 넘으면 자동 보류 검토
review_months : abap.int4; " 정기 한도 재산정 주기
active : abap_boolean;
}
② 고객 차원 뷰
고객 한 명이 한 행이고, 영업조직 · 지역 · 채널 · 그룹 · 등급이 모두 여기에서 나옵니다. 값 도움말과 텍스트가 이 뷰 하나를 보게 하면 큐브는 join 을 한 번만 걸면 됩니다. 한도는 표준 여신 관리 쪽에 있다면 그 원천에서 읽고, 그 필드명은 확인 필요입니다.
" ────────────────────────────────────────────────────────────────
" ZI_CreditCustomer — 고객 차원
" 고객 한 명당 한 행. 등급 정책과 한도를 여기서 붙인다.
" 차원 뷰를 따로 두는 이유 : 큐브 · 쿼리 · 대사 뷰가 모두 같은 고객 속성을
" 보게 하고, 값 도움말과 텍스트를 한 곳에 모으기 위해서다.
" ────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck : #NOT_REQUIRED
@EndUserText.label : '여신 고객 차원'
@Analytics.dataCategory : #DIMENSION
@ObjectModel.representativeKey : 'Customer'
define view entity ZI_CreditCustomer
as select from I_Customer as Cust
left outer join zcrd_cust_ext as Ext // 등급 · 채널 · 그룹 확장 (고객사 고유)
on Ext.customer = Cust.Customer
left outer join zcrd_grade_pol as Pol
on Pol.grade = Ext.grade
association [0..1] to I_CustomerText as _Text // 확인 필요 : 보유 릴리스의 텍스트 뷰 이름
on _Text.Customer = $projection.Customer
{
@ObjectModel.text.association : '_Text'
key Cust.Customer as Customer,
Ext.sales_org as SalesOrg,
Ext.region as Region,
Ext.channel as Channel,
Ext.cust_group as CustomerGroup,
Ext.grade as Grade,
Pol.max_overdue_days as MaxOverdueDays,
Pol.auto_hold_rate as AutoHoldRate,
// 한도 : 여신 세그먼트 테이블(UKMBP_CMS_SGM)의 한도 필드를 읽는다 — 필드명 확인 필요
_Text
}
③ 노출액 기초 뷰
노출액은 수주 잔액과 미결 채권의 합입니다. 미결 채권은 표준 회계 항목에서, 수주 잔액은 판매 문서 항목에서 오고, 두 값이 한 뷰에서 만나야 대사 R3 이 성립합니다. 연체일은 저장하지 않고 조회 시점의 기준일로 계산합니다.
" ────────────────────────────────────────────────────────────────
" ZI_CreditExposure — 고객별 노출액 기초
" 미결 채권(표준 회계 항목) + 수주 잔액(판매 문서 항목) = 노출액.
" 연체일을 저장하지 않는 이유 : 저장하면 하루가 지날 때마다 낡는다.
" 기준일은 파라미터로 받아 대사 · 화면이 같은 날짜를 보게 한다.
" ────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '고객별 노출액 기초'
define view entity ZI_CreditExposure
with parameters
P_KeyDate : abap.dats
as select from I_OperationalAcctgDocItem as Item // 필드명 확인 필요
{
key Item.Customer as Customer,
Item.CompanyCodeCurrency as Currency,
@Semantics.amount.currencyCode : 'Currency'
sum( case when Item.ClearingDate is initial
then Item.AmountInCompanyCodeCurrency else 0 end ) as OpenReceivable,
@Semantics.amount.currencyCode : 'Currency'
sum( case when Item.ClearingDate is initial
and Item.NetDueDate < $parameters.P_KeyDate
then Item.AmountInCompanyCodeCurrency else 0 end ) as OverdueReceivable,
max( case when Item.ClearingDate is initial
and Item.NetDueDate < $parameters.P_KeyDate
then dats_days_between( Item.NetDueDate, $parameters.P_KeyDate )
else 0 end ) as MaxOverdueDays
}
where Item.FinancialAccountType = 'D' // 고객 계정
and Item.SpecialGLCode = '' // 특별 총계정 항목은 포함 여부를 정해야 한다
group by Item.Customer, Item.CompanyCodeCurrency
// 수주 잔액은 판매 문서 항목(I_SalesDocumentItem)에서 별도 뷰로 읽어 같은 고객 키로 붙인다.
// 미출하 · 미청구 잔여 계산에 쓰는 필드는 보유 릴리스에서 확인 필요.
④ 원장 큐브
화면의 피벗 · 드릴스루 · 차이 분해가 모두 읽는 뷰입니다. 확정된 문서 항목 한 줄이 측정값 한 칸만 채우도록 case 로 가르고 sum 으로 모읍니다. 금액은 환산 금액(원화)만 더하고 외화 금액은 통화 필드와 함께 두어 서로 다른 통화가 합쳐지지 않게 합니다. 이 큐브의 합계가 원장 합계와 같은지가 검증 표의 첫 줄입니다.
" ────────────────────────────────────────────────────────────────
" ZI_CreditLedgerCube — 여신 원장 큐브
" 확정 문서 항목 → 기간 · 조직 · 고객 · 등급 · 점검 결과 × 측정값 7개.
" 측정값 : ORD 수주 점검 · BIL 청구 전환 · PAY 수금 반영 · HLD 보류 · REL 해제
" OVD 독촉 연체 · LMT 한도 증감
" case 로 나누는 이유 : 한 행에 측정값 하나만 채워 같은 키 아래에서
" 피벗 축을 바꿔도 합계가 변하지 않게 한다.
" ────────────────────────────────────────────────────────────────
@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '여신 원장 큐브'
@Analytics.dataCategory : #CUBE
define view entity ZI_CreditLedgerCube
as select from zcrd_doc_item as Item
inner join zcrd_doc_head as Head
on Head.doc_no = Item.doc_no
and Head.fiscal_year = Item.fiscal_year
association [0..1] to ZI_CreditCustomer as _Customer
on _Customer.Customer = $projection.Customer
{
@ObjectModel.foreignKey.association : '_Customer'
key Head.cust_no as Customer,
key Head.period as Period,
key Head.sales_org as SalesOrg,
key Head.limit_result as CheckResult, // HLD · OVD · GRD · OVR · OK
key Head.currency as Currency,
@DefaultAggregation : #SUM
@Semantics.amount.currencyCode : 'Currency'
sum( case when Head.doc_type = 'OC' then Item.amount else 0 end ) as OrdAmt,
@DefaultAggregation : #SUM
@Semantics.amount.currencyCode : 'Currency'
sum( case when Head.doc_type = 'BL' then Item.amount else 0 end ) as BilAmt,
@DefaultAggregation : #SUM
@Semantics.amount.currencyCode : 'Currency'
sum( case when Head.doc_type = 'PY' then Item.amount else 0 end ) as PayAmt,
@DefaultAggregation : #SUM
@Semantics.amount.currencyCode : 'Currency'
sum( case when Head.doc_type = 'HD' then Item.amount else 0 end ) as HldAmt,
@DefaultAggregation : #SUM
@Semantics.amount.currencyCode : 'Currency'
sum( case when Head.doc_type = 'RL' then Item.amount else 0 end ) as RelAmt,
@DefaultAggregation : #SUM
@Semantics.amount.currencyCode : 'Currency'
sum( case when Head.doc_type = 'DN' then Item.amount else 0 end ) as OvdAmt,
@DefaultAggregation : #SUM
@Semantics.amount.currencyCode : 'Currency'
sum( case when Head.doc_type = 'LM' then Item.amount else 0 end ) as LmtAmt,
count( * ) as Lines,
_Customer
}
where Head.status = '40' // 확정 문서만
group by Head.cust_no, Head.period, Head.sales_org,
Head.limit_result, Head.currency
⑤ 계획 테이블과 차이 분류 뷰
계획 대비 차이를 요인으로 가르려면 실적과 계획이 같은 키에 놓여야 합니다. 실적에만 있으면 신규 발생, 계획에만 있으면 계획 소멸, 둘 다 있으면 크기에 따라 초과 또는 미달입니다. 이 분류를 뷰 한 곳에 고정해 두어야 화면의 다섯 요인과 합계 검산이 같은 규칙을 씁니다. 환율 요인은 외화 행에서 환율 차이로 생긴 몫이며, 환율 유형과 시점은 운영에서 정합니다.
" ────────────────────────────────────────────────────────────────
" zcrd_plan · ZI_CreditVariance — 계획과 차이 분류
" 계획 테이블은 실적 큐브와 같은 키(기간 · 조직 · 고객 · 통화 · 측정값)를 가진다.
" 분류를 뷰에 두는 이유 : 화면 · 에이전트 · 보고서가 같은 규칙을 쓰게 한다.
" full outer join 을 쓰지 않고 두 쪽 키를 union 한 뒤 양쪽을 left outer join 한다.
" ────────────────────────────────────────────────────────────────
define table zcrd_plan {
key mandt : mandt not null;
key version : abap.char(8) not null; " 예: PLAN
key period : abap.char(7) not null; " 2026-01 형식
key cust_no : kunnr not null;
key measure : abap.char(3) not null; " ORD · BIL · PAY ...
sales_org : vkorg;
currency : waers;
@Semantics.amount.currencyCode : 'zcrd_plan.currency'
plan_value : abap.curr(17,2);
}
@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '실적과 계획 키 합집합'
define view entity ZI_CreditVarianceKey
as select distinct from ZI_CreditLedgerCube { key Period, key Customer, SalesOrg, Currency }
union
select distinct from zcrd_plan { key period as Period, key cust_no as Customer,
sales_org as SalesOrg, currency as Currency }
@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '수주 점검액 계획 대비 차이'
@Analytics.dataCategory : #CUBE
define view entity ZI_CreditVariance
as select from ZI_CreditVarianceKey as K
left outer join ZI_CreditLedgerCube as Act
on Act.Period = K.Period and Act.Customer = K.Customer
left outer join zcrd_plan as Pln
on Pln.period = K.Period and Pln.cust_no = K.Customer
and Pln.measure = 'ORD' and Pln.version = 'PLAN'
{
key K.Period,
key K.Customer,
K.Currency,
@Semantics.amount.currencyCode : 'Currency'
coalesce( Act.OrdAmt, 0 ) as Actual,
@Semantics.amount.currencyCode : 'Currency'
coalesce( Pln.plan_value, 0 ) as Plan,
@Semantics.amount.currencyCode : 'Currency'
coalesce( Act.OrdAmt, 0 ) - coalesce( Pln.plan_value, 0 ) as Diff,
case
when coalesce( Pln.plan_value, 0 ) = 0 and coalesce( Act.OrdAmt, 0 ) <> 0 then 'NEW' // 신규 발생
when coalesce( Act.OrdAmt, 0 ) = 0 and coalesce( Pln.plan_value, 0 ) <> 0 then 'GONE' // 계획 소멸
when coalesce( Act.OrdAmt, 0 ) >= coalesce( Pln.plan_value, 0 ) then 'OVER' // 초과
else 'UNDER' // 미달
end as FactorKind
// 환율 요인은 외화 행의 (실적 − 실적 × 계획환율 ÷ 실적환율)로 따로 계산한다 — 환율 테이블 확인 필요
}
⑥ 분석 쿼리
화면이 읽는 것은 이 쿼리뿐입니다. 필터와 축의 기본 배치, 표시 형식만 여기서 정하고 계산은 아래 레이어에 둡니다. 그래서 같은 쿼리를 엑셀 쪽 분석 도구에서 열어도 같은 숫자가 나옵니다.
" ────────────────────────────────────────────────────────────────
" ZC_CreditUsageQuery — 여신 사용 분석 쿼리
" 기간 · 영업조직은 필터로, 등급 × 기간은 기본 축으로 둔다.
" 쿼리에 계산을 두지 않는 이유 : 계산이 쿼리마다 흩어지면 합계가 달라진다.
" ────────────────────────────────────────────────────────────────
@AccessControl.authorizationCheck : #CHECK
@EndUserText.label : '여신 사용 분석'
@Analytics.query : true
@Metadata.allowExtensions : true
define view entity ZC_CreditUsageQuery
as select from ZI_CreditLedgerCube
{
@AnalyticsDetails.query.axis : #ROWS
@AnalyticsDetails.query.displayHierarchy : #OFF
@Consumption.filter : { selectionType : #INTERVAL, multipleSelections : false, mandatory : true }
Period,
@AnalyticsDetails.query.axis : #ROWS
@Consumption.filter : { selectionType : #SINGLE, multipleSelections : true }
SalesOrg,
@AnalyticsDetails.query.axis : #ROWS
_Customer.Grade as Grade,
@AnalyticsDetails.query.axis : #COLUMNS
@UI.lineItem : [{ position : 10 }]
OrdAmt,
@AnalyticsDetails.query.axis : #COLUMNS
@UI.lineItem : [{ position : 20 }]
BilAmt,
@AnalyticsDetails.query.axis : #COLUMNS
@UI.lineItem : [{ position : 30 }]
PayAmt,
@AnalyticsDetails.query.axis : #COLUMNS
@UI.lineItem : [{ position : 40 }]
OvdAmt
}
⑦ 접근 제어(DCL)
조회자가 어떤 영업조직의 숫자를 볼 수 있는지는 화면이 아니라 데이터 레이어에서 막습니다. 표준 영업조직 권한 객체를 쓰면 PFCG 역할을 새로 만들지 않고 기존 권한 설계에 올라탈 수 있습니다. 객체와 필드 구성은 운영 권한 설계에서 확인합니다.
" ────────────────────────────────────────────────────────────────
" ZI_CreditLedgerCube_DCL — 영업조직 단위 접근 제어
" 표준 영업조직 권한 객체(V_VBAK_VKO)의 영업조직 · 활동 값을 그대로 쓴다.
" DCL 로 막는 이유 : 직접 서비스를 호출해도 같은 제한이 걸린다.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '여신 원장 큐브 접근 제어'
@MappingRole : true
define role ZI_CreditLedgerCube_DCL {
grant select on ZI_CreditLedgerCube
where ( SalesOrg ) = aspect pfcg_auth( V_VBAK_VKO, VKORG, ACTVT = '03' );
}
⑧ 문서 처리 — RAP 동작 정의와 서비스 게시
상태 전이와 직무 분리는 화면이 아니라 서버가 지킵니다. RAP 의 액션과 검증으로 옮기면 어느 경로로 호출해도 같은 거절이 나옵니다. 아래는 문서 루트의 동작 정의이고, 승인 액션에서 작성자 본인과 1단계 승인자의 재승인을 막는 검증을 붙입니다.
" ────────────────────────────────────────────────────────────────
" ZR_CreditDoc — 여신 문서 루트의 동작 정의
" 상태 전이(검토 요청 · 승인 · 반려 · 확정 · 역처리)를 액션으로, 직무 분리를 검증으로 둔다.
" 서버에서 막는 이유 : 화면에서 버튼을 숨겨도 직접 호출하면 뚫린다.
" ────────────────────────────────────────────────────────────────
managed implementation in class zbp_r_creditdoc unique;
strict ( 2 );
define behavior for ZR_CreditDoc alias CreditDoc
persistent table zcrd_doc_head
lock master
authorization master ( instance )
etag master ChangedAt
{
create;
update ( features : instance );
association _Item { create; }
field ( readonly ) DocNo, Status, LimitResult, ExposureAfter, UsageRate;
action ( features : instance ) Submit; // 임시저장 · 반려 → 검토요청
action ( features : instance ) Approve; // 1단계 · 2단계 승인
action ( features : instance ) Reject parameter ZA_RejectReason;
action ( features : instance ) Post; // 확정 — 원장 · 큐브 · 고객 잔액 반영
action ( features : instance ) Reverse parameter ZA_ReverseReason; // 반대 문서 생성
determination CheckLimit on save { create; update; } // 점검 결과 판정
validation ValidateSegregation on save { field Status; } // 작성자 본인 · 같은 사람의 2단계 승인 거절
validation ValidateStatusFlow on save { field Status; } // 허용되지 않는 상태 전이 거절
}
" ────────────────────────────────────────────────────────────────
" ZUI_CreditMgmt — 서비스 정의
" 화면이 읽는 쿼리와 처리하는 문서를 한 서비스로 게시한다.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '영업 여신 통합 관리 서비스'
define service ZUI_CreditMgmt {
expose ZR_CreditDoc as CreditDoc;
expose ZC_CreditUsageQuery as UsageQuery;
expose ZI_CreditCustomer as Customer;
}
운영 시점에 해야 할 일
운영 전환은 개발보다 정하는 일이 많습니다. 아래 표의 항목을 정하지 않은 채 코드부터 옮기면 같은 질문이 나중에 장애처럼 돌아옵니다.
| 해야 할 일 | 무엇을 정하나 | 정하지 않으면 | 누가 |
|---|---|---|---|
| 상태 흐름 · 승인 단계 · 금액 구간 | 임시저장 → 검토요청 → 승인 → 확정, 2단계로 올라가는 금액(문서 1억 · 한도 변경 3억)과 대상 점검 결과 | 승인 기준이 사람마다 달라지고 감사 때 설명이 안 됩니다 | 여신 담당 · 경영지원 |
| 직무 분리 · 역할 | 조회 · 처리 · 승인 · 관리 네 역할을 SAP 권한 객체와 PFCG 역할로 옮기고 데모의 사용자 전환을 제거 | 화면에서만 막힌 직무 분리가 직접 호출로 뚫립니다 | IT · 감사 |
| 처리 펑션 연결 | 확정 · 역처리 액션을 표준 BAPI · RAP 액션과 연결하고, 독촉 실행은 표준 독촉 프로그램(F150)과 역할을 나눔 | 앱과 표준이 같은 일을 이중으로 하거나 서로 비는 자리가 생깁니다 | IT · 재무 |
| 문서 번호 범위 | 유형별 채번 접두와 범위, 연도 전환 처리 | 번호가 겹치거나 건너뛰어 대사에서 문서를 못 찾습니다 | IT |
| 영역 간 문서 흐름 키 | 수주 → 출하 → 청구 → 채권으로 이어지는 문서의 연결 키 | 다른 영역 문서가 흐름도에 끊겨 보입니다 | IT · 영업 운영 |
| 대사 규칙 · 허용 오차 | R1 ~ R6 의 허용 오차(데모는 규칙마다 1원)와 예외 조치 방식 | 반올림 차이가 예외로 쏟아지거나 진짜 차이가 묻힙니다 | 재무 · 감사 |
| 환율 유형 · 환산 시점 | 외화 고객 금액을 어느 환율 유형으로 어느 시점에 환산하나 | 요인분해의 환율 요인이 의미를 잃습니다 | 재무 |
| 원천 확정 | 미결 채권 · 수주 잔액 · 계획의 원천(표준 테이블 · 계획 도구)과 범위 | 숫자의 출처가 사람마다 달라집니다 | 재무 · 영업 운영 |
| 권한 설계 · 성능 기준 | 영업조직 단위 접근 제어, 조회 필수 파라미터, 응답 시간 기준 | 대용량에서 화면이 느려지거나 볼 수 없는 데이터가 보입니다 | IT · 보안 |
| 전송(TR) 순서 · 서비스 활성화 | 기준 테이블 → 차원 → 큐브 → 쿼리 → 권한 → 서비스 순으로 전송하고 /IWFND/MAINT_SERVICE 또는 Binding 게시, manifest.json 의 서비스 주소 교체 | 의존하는 뷰가 없어 활성화가 실패합니다 | IT |
| 배치 등록 | 정기 한도 재산정과 에이전트 점검을 정기 작업으로 등록 | 사람이 열 때만 점검이 돕니다 | IT · 여신 담당 |
숫자를 믿을 수 있는가 — 검증 결과
검증용 샘플 데이터(고객 48 · 문서 570 · 문서 항목 3,678 · 채권 808 · 원장 3,052)에서 대사식마다 전수로 맞춰 본 결과입니다. 도입 포인트의 “사례로 보는 효과”에 쓴 숫자와 같습니다. 의도적 예외 12건은 대사가 잡아내는지 보려고 일부러 심어 둔 것이며, 그 12건을 제외하면 어떤 식에서도 차이가 없었습니다.
| 대사식 | 검사 건수 | 차이 건수 | 비고 |
|---|---|---|---|
| R1 고객 연체 잔액 = 미결 채권 중 연체 합 | 48 | 2 | 의도적 예외 |
| R2 고객 미결 채권 = 채권 미결 합 | 48 | 3 | 의도적 예외 |
| R3 고객 노출액 = 수주 잔액 + 미결 채권 | 48 | 2 | 의도적 예외 |
| R4 고객 보류 잔액 = 확정 보류 − 확정 해제 | 48 | 2 | 의도적 예외 |
| R5 고객 수주 잔액 = 확정 수주 − 확정 청구 | 48 | 3 | 의도적 예외 |
| R6 원장 합계 = 확정 문서 항목 합계(측정값 7개) | 7 | 0 | |
| 대사 R1 ~ R6 합계 | 247 | 12 | 12건 모두 의도적 예외, 그 외 차이 0 |
| 큐브 합계 = 원장 합계(측정값 7개) | 7 | 0 | 원천 라인 3,052건 → 큐브 329행 |
| 요인 합 = 총차이(수주 점검액, 2026-01 ~ 2026-10) | 1 | 0 | +4,226,131,000원 |
| 고객 파생값 = 문서 · 채권 재계산값(예외 고객 제외) | 180 | 0 | |
| 문서 상태별 건수 합계 = 전체 헤더 수 | 570 | 0 | |
| 서비스 호출 검증 | 196 | 0 | 196건 모두 통과 |
운영 데이터로 갈 때
데모의 원천 라인은 3,052건이지만 운영의 전표와 문서 흐름은 수천만 건이 됩니다. 이때 정해야 하는 것은 네 가지입니다.
- 집계 위치 — 큐브 집계는 데이터베이스에서 돌려야 합니다. 조회 때마다 전체를 합치기 어려우면 월 단위로 확정된 기간은 집계 테이블에 미리 쌓고 열린 기간만 그때그때 합치는 방식을 씁니다.
- 필수 파라미터 — 기간과 영업조직을 필수 필터로 둡니다. 개요 화면처럼 열자마자 읽는 화면도 기본 기간을 좁게 두어 전체 기간 조회가 기본이 되지 않게 합니다.
- 인덱스와 키 — 큐브가 group by 하는 키(기간 · 영업조직 · 고객 · 점검 결과)에 맞춰 문서 헤더와 항목 테이블의 보조 인덱스를 설계합니다. 인덱스는 실제 쿼리 계획으로 확인한 뒤 정합니다.
- 응답 시간 기준 — 화면별로 “처음 보이는 데까지 몇 초”를 사전에 합의합니다. 드릴스루는 칸을 누른 범위의 라인만 읽도록 필터를 그대로 넘기고, 목록은 한 번에 읽는 건수를 제한해 이어서 읽습니다.
자주 묻는 질문
도입을 검토할 때 자주 나오는 질문을 숫자와 산식 · 화면과 조작 · 분석 기능 · 도입과 운영으로 나눠 답합니다.
숫자와 산식
숫자가 어떻게 만들어지는지, 어디까지 믿어도 되는지에 대한 질문입니다.
점검 결과는 어떤 순서로 정해지나요?
문서마다 다섯 가지 점검 결과 중 가장 무거운 하나가 남습니다. 순서는 보류(HLD) > 연체일 초과(OVD) > 등급 한도 초과(GRD) > 한도 초과(OVR) > 이내(OK) 입니다. 고객이 보류 상태인데 수주 점검이나 청구 전환을 시도하면 보류, 고객의 최대 연체일이 등급 정책의 최대 연체일을 넘으면 연체일 초과, 한도 변경 결과가 등급별 최대 한도를 넘으면 등급 한도 초과, 노출액에 신규 금액을 더한 값이 한도를 넘으면 한도 초과입니다. 보류 · 해제 · 독촉 · 수금 · 정정 문서는 해당 없음으로 표시합니다.
2단계 승인은 언제 필요한가요?
기본은 1단계 승인입니다. 점검 결과가 이내가 아니면서 문서 금액이 1억 원 이상이거나, 한도 변경의 증감 합계(절댓값)가 3억 원 이상이면 2단계로 올라갑니다. 1단계는 승인자(또는 관리자)가 하고, 2단계는 1단계 승인자와 다른 관리자만 할 수 있습니다. 이 금액 기준은 설정 값으로 분리해 운영에서 바꾸는 것을 권하며, 어떤 구간에서 몇 단계로 할지는 회사가 정할 일입니다.
노출액과 사용률은 어떻게 계산하나요?
고객의 노출액은 수주 잔액과 미결 채권의 합이고, 사용률은 노출액을 한도로 나눈 값(%)입니다. 한도가 0이면 사용률은 0으로 둡니다. 문서를 확정하면 고객의 수주 잔액 · 미결 채권 · 보류 잔액 · 연체 잔액이 함께 바뀌고, 문서 헤더에는 확정(또는 점검) 시점의 사용 후 노출액과 사용률이 남습니다. 이 값들이 문서 · 채권에서 다시 계산한 값과 같은지는 대사 규칙이 매번 확인합니다.
외화 고객의 금액은 어떻게 더하나요?
외화 고객은 항목에 외화 금액을 입력하고, 서비스가 기간별 환율을 곱해 원화 금액을 만듭니다. 모든 합계는 원화 금액으로만 더하며 서로 다른 통화의 외화 금액은 더하지 않습니다. 샘플의 환율은 설명용 가정값이고 실제 환율이 아닙니다. 운영에서는 환율 유형과 환산 시점(문서일 기준인지 기간 말 기준인지)을 먼저 정해야 요인분해의 환율 요인이 의미를 갖습니다.
계획 대비 차이의 다섯 요인은 무엇인가요?
신규 발생(계획에는 없던 조합의 실적), 계획 소멸(계획은 있었는데 실적이 없는 조합), 환율(외화 행에서 계획 환율 대비 환율 차이로 생긴 몫), 초과(둘 다 있고 실적이 큰 조합의 차이 합), 미달(둘 다 있고 실적이 작은 조합의 차이 합)입니다. 샘플에서는 신규 발생 +4,113,200,000, 계획 소멸 −1,030,131,000, 환율 +493,317,000, 초과 +5,262,040,000, 미달 −4,612,295,000이고, 합은 총차이 +4,226,131,000원과 같습니다. 원인은 화면이 단정하지 않고 점검 필요 항목으로만 올립니다.
요인 합이 총차이와 다르면 어떻게 되나요?
화면은 요인 합에서 총차이를 뺀 검산 줄을 매번 함께 보여 줍니다. 정상이라면 이 값은 0이고, 0이 아니면 숫자를 믿지 말고 범위와 계획 버전을 확인하라는 신호입니다. 샘플에서는 사용한 모든 범위에서 0이었습니다. 요인 분류가 같은 규칙으로 고정되어 있어 화면 · 보고서 · 에이전트가 같은 값을 냅니다.
큐브 합계와 원장 합계가 같다는 것을 어떻게 아나요?
서비스에 측정값별 검산(CubeCheck)이 있어 큐브 합계와 원장 합계를 비교한 차이를 돌려줍니다. 샘플에서는 수주 점검 · 청구 전환 · 수금 반영 · 보류 · 해제 · 독촉 연체 · 한도 증감 일곱 측정값 모두 차이가 0이었습니다. 원천 라인 3,052건이 큐브 329행으로 모인 결과입니다. 이 검산은 대사 R6 과도 이어져, 확정 문서 항목 합계와 원장 합계가 같은지를 규칙으로 돌립니다.
대사에서 나온 예외 12건은 무엇인가요?
대사가 실제로 차이를 잡아내는지 보려고 샘플에 일부러 심어 둔 12건입니다. R1에 2건, R2에 3건, R3에 2건, R4에 2건, R5에 3건이 분산되어 있고 R6은 차이가 없습니다. 247건을 점검해 이 12건 외에는 차이가 0이었습니다. 예외마다 정정 문서 생성 · 보류 · 사유만 기록 중 하나로 조치하고 다시 대사하면 해소로 바뀝니다.
화면과 조작
화면을 쓰는 방법과 처리 규칙에 대한 질문입니다.
조회조건은 무엇이 필수인가요?
기간 시작과 종료가 필수이고 형식은 2026-01 입니다. 영업조직은 기본이 전체입니다. 조회는 조회조건 줄 오른쪽 끝의 버튼 또는 입력 칸의 Enter 로 합니다. 개요 화면은 열 때 바로 읽고, 분석 화면은 조회를 눌러야 읽습니다.
직무 분리는 어떻게 지켜지나요?
작성자는 자기 문서를 승인할 수 없고, 2단계 문서의 두 번째 승인은 1단계 승인자와 다른 관리자만 합니다. 화면에서 버튼을 숨기는 데서 멈추지 않고 서버가 같은 규칙으로 거절하므로 요청을 직접 보내도 막힙니다. 거절된 시도도 감사 로그에 남습니다. 운영에서는 데모의 사용자 전환을 걷어내고 SAP 권한 객체와 역할로 옮깁니다.
확정한 문서를 되돌릴 수 있나요?
한도 변경 · 수주 점검 · 보류 · 보류 해제 · 수금 반영은 역처리로 되돌릴 수 있습니다. 수주 점검은 후속 청구 전환이 없을 때, 보류는 후속 해제가 없을 때만 가능합니다. 청구 전환 · 연체 독촉 · 정정은 역처리할 수 없고 이유가 안내됩니다. 역처리하면 부호가 반대인 문서가 만들어지고 원문서는 취소로 남으며 고객 잔액도 함께 되돌아갑니다.
연체 독촉 일괄 실행을 두 번 누르면 어떻게 되나요?
먼저 시뮬레이션으로 만들어질 문서와 금액을 저장하지 않고 미리 봅니다. 실행은 시뮬레이션과 같은 상태일 때만 되고, 그 사이에 상태가 바뀌었으면 거절됩니다. 같은 조건으로 다시 실행하면 중복 문서를 만들지 않고 거절됩니다. 샘플의 실행 결과는 문서 9건 · 3,877,300,000원으로 시뮬레이션 합계와 같았습니다.
조회자 역할로 들어가면 무엇이 보이나요?
조회자는 읽기만 가능해 처리 · 승인 · 실행 버튼이 보이지 않습니다. 보이지 않는 데서 끝나지 않고 서버도 같은 요청을 거절합니다. 처리자는 편집 · 검토 요청 · 일괄 실행 · 대사 · 조치를, 승인자는 여기에 승인 · 반려 · 확정 · 역처리를, 관리자는 기준정보 관리까지 가집니다.
내려받을 수 있는 형식은 무엇인가요?
목록 머리에서 CSV 와 xlsx, 분석 화면에서 PowerPoint 와 CSV 를 내려받을 수 있습니다. 문서는 xlsx 로 한꺼번에 올릴 수도 있습니다.
휴대폰에서도 같은 숫자가 나오나요?
나옵니다. 좁은 화면에서는 메뉴가 아이콘으로 접히고 조회조건이 세로로 쌓이며 표는 가로로 넘기지만, 숫자와 판정은 넓은 화면과 같은 서비스 값을 씁니다. 그래서 폭이 달라져도 합계가 달라지지 않습니다.
분석 기능
피벗 · 드릴스루 · AI 분석 · 에이전트에 대한 질문입니다.
피벗 축을 바꾸면 숫자가 달라지지 않나요?
달라지지 않습니다. 모든 축이 같은 큐브에서 나오기 때문에 행 ↔ 열 바꾸기나 차원 끌어다 놓기를 해도 전체 합계는 그대로입니다(샘플의 수주 점검액 64,236,219,000원). 이 화면의 축 바꾸기는 서버를 다시 부르지 않고 이미 읽은 값을 다시 배치하는 일입니다.
칸을 누르면 어디까지 내려가나요?
그 금액을 만든 문서 라인까지 내려갑니다. 칸을 누르면 같은 조건으로 원천 라인을 읽어 합계가 칸의 금액과 같은지 그 자리에서 보여 줍니다. 문서는 눌러서 문서 처리 화면으로 이동할 수 있어, 숫자 → 문서 → 원천 확인 순서로 따라갈 수 있습니다.
AI 분석이 숫자를 지어낼 수 있나요?
숫자는 모델이 만들지 않습니다. 금액과 비율은 서비스가 큐브에서 계산하고, 모델은 그 값을 읽어 설명만 합니다. 모델 연결은 서비스 설정에서만 켤 수 있고 기본은 꺼져 있으며, 꺼져 있어도 같은 근거로 규칙 기반 해설이 나옵니다. 근거 표를 화면에서 펼쳐 볼 수 있고, 원인은 단정하지 않고 “확인 필요”로 끝납니다.
에이전트는 무엇을 하나요?
여신 사용률 · 연체 비중 · 보류 일수 · 승인 대기 적체 같은 감시 규칙 4개를 점검해 걸린 항목을 받을 역할(경영진 · 영업 책임자 · 여신 담당 · 물류 담당)의 대기함에 올립니다. 샘플에서는 걸린 항목 28건이 올라왔습니다. 하루 한 번 제한은 서버가 판정하므로 같은 날 두 번째 실행은 활동 기록만 남깁니다. 운영에서는 정기 작업으로 등록해 사람이 화면을 열지 않아도 돌게 합니다.
레이아웃은 저장할 수 있나요?
축 배치에 이름을 붙여 저장해 두었다가 다시 불러올 수 있습니다. 기본 레이아웃 + 자동 조회로 지정하면 열자마자 조회된 채 시작합니다. 행 축은 최대 3단계, 열 축은 최대 2단계(열 36개 상한)까지 둘 수 있고 상한을 넘는 조합에는 안내 문구가 뜹니다.
도입과 운영
도입 효과, 표준 화면과의 관계, 운영 전환에 대한 질문입니다.
도입하면 무엇이 달라지고 누가 쓰나요?
승인 대기와 반려가 할 일로 모이고, 승인자는 메일 대신 점검 결과가 붙은 문서를 엽니다. 독촉 대상은 시뮬레이션으로 미리 보고 한 번에 만들며, 월말 대사는 규칙이 돌려 예외만 남깁니다. 쓰는 사람은 여신 담당(처리), 영업 책임자와 여신 승인자(승인), 경영지원과 감사(조회 · 대사 · 분석)입니다. 효과 수치는 샘플 데이터에서 나온 숫자만 글에 실었고 시간 절감률 같은 추정치는 쓰지 않았습니다.
이 앱의 적용 범위는 어디까지인가요?
업무 흐름 범위는 한도 변경 → 수주 여신 점검 → 청구 전환 → 여신 보류 · 해제 → 연체 독촉 → 수금 반영입니다. 특정 기준서의 적용 판단이나 충당금 계산을 대신하지 않으며, 처리와 점검을 돕는 도구입니다. 법인 · 영업조직 · 고객 범위는 운영에서 설정으로 정합니다.
표준 화면은 없애야 하나요?
없애지 않습니다. 한도 변경(FD32), 차단 문서(VKM1), 판매 오더(VA03), 청구 조회(VF03), 고객 라인 아이템(FBL5N), 독촉(F150), 수금 반영(F-28) 같은 표준 화면은 그대로 두고 이 앱이 처리와 점검 관점을 더합니다. 이 앱의 결과를 표준 화면의 원천과 맞춰 보는 지점은 대사 R1 ~ R6 이 받아 줍니다. 법정 · 감사 · 세무 신고에 쓰는 자료는 표준에 남겨 둡니다.
데이터는 어디에서 가져오나요?
데모는 검증용 샘플 데이터(고객 48 · 문서 570 · 문서 항목 3,678 · 채권 808)로 돌고, 이름과 금액은 모두 가상 값입니다. 운영에서는 고객은 표준 고객 마스터, 미결 채권은 표준 회계 항목, 수주 잔액은 판매 문서 항목, 한도는 여신 관리 쪽 원천에서 읽습니다. 표준 뷰와 필드 중 확인하지 못한 것은 CDS 구성에 확인 필요로 표시했습니다.
운영에 연결하는 절차는 어떻게 되나요?
순서는 ① 정할 일 확정(상태 · 승인 단계 · 금액 구간 · 대사 허용 오차 · 환율), ② 등급 정책 테이블과 매핑 이관, ③ 차원 → 큐브 → 쿼리 → 권한 순서로 뷰 구성, ④ 문서 처리 액션을 표준 BAPI · RAP 에 연결, ⑤ 서비스 게시와 화면의 서비스 주소 교체, ⑥ 대사로 표준 화면과 숫자 맞춰 보기입니다. 소요는 연결할 원천의 수와 정할 일이 얼마나 빨리 정해지느냐에 달려 있어 일정을 단정하지 않습니다. 정할 일은 CDS 구성의 “운영 시점에 해야 할 일” 표에 정리했습니다.
권한과 보안은 어떻게 되나요?
권한은 세 겹입니다. 첫째 데이터 레이어의 접근 제어(영업조직 단위)가 서비스 호출에도 같은 제한을 겁니다. 둘째 문서 처리 규칙(상태 전이 · 직무 분리)을 서버가 판정합니다. 셋째 변경 · 거절 · 실행은 감사 로그에 남습니다. 운영에서는 데모의 사용자 전환을 제거하고 PFCG 역할과 권한 객체로 옮깁니다.
데이터가 많아지면 느려지지 않나요?
샘플은 원천 라인 3,052건이지만 운영의 전표와 문서 흐름은 훨씬 큽니다. 집계는 데이터베이스에서 돌리고, 기간과 영업조직을 필수 필터로 두며, 확정된 기간은 집계를 미리 쌓고 열린 기간만 그때그때 합치는 방식을 권합니다. 드릴스루는 칸의 조건을 그대로 넘겨 해당 라인만 읽습니다. 응답 시간 기준은 화면별로 사전에 합의하는 것이 좋습니다.
고객 등급이나 매핑이 바뀌면 어떻게 하나요?
등급별 최대 한도 · 최대 연체일 · 자동 보류율은 정책 테이블 값이라 값을 바꾸면 점검 결과 판정이 바뀝니다. 고객의 등급 · 채널 · 그룹 · 지역은 고객 차원 뷰의 매핑에서 오며, 바뀐 뒤 대사를 돌려 분석 숫자가 문서와 맞는지 확인합니다. 정책을 바꾼 기록은 기준정보 변경 이력에 남습니다.
이 앱의 결과를 최종 판단으로 써도 되나요?
이 앱은 점검 도구이고 최종 판단은 회사와 감사인이 합니다. 한도 변경 승인, 보류 · 해제, 독촉 단계, 대사 예외의 조치는 모두 사람이 확정하며, 앱은 근거와 이력을 남깁니다. 법정 · 감사 · 세무 신고에 쓰는 숫자는 표준에서 만든 자료가 기준이고, 이 앱의 결과는 그것을 점검하고 설명하는 보조 자료입니다.
감사 로그에는 무엇이 남나요?
쓰기 · 상태 전이 · 일괄 실행 · 대사 조치가 모두 남고, 거절된 시도도 함께 남습니다(예: 같은 사람의 2단계 승인 시도). 문서마다 상태 이력과 연계 문서 탭이 있고, 기준정보는 변경 이력에서 누가 언제 무엇을 바꿨는지 볼 수 있습니다. 샘플 시점의 감사 로그 건수는 쓰기 · 전이 · 실행 건수와 맞는지 검증 표에서 확인했습니다.