구매 · 수입 · 자금

SAP 수입 은행별 L/C 한도 사용률 점검 — 신용장 점유액을 다시 계산해 약정 한도와 은행 통지에 견주고 해제 후보를 가리는 수입 자금 화면

은행별 사용률 · 판정 코드 · 해제 후 사용률 · 은행 통지 차이 · 스스로 하는 대사 검증 — 소개 영상과 실제 화면 7종, 그리고 CDS 코드까지

소개 영상블로그 목차 순서대로 · 자막 포함8개 장면 · 1분 22초처음 연 화면 → 점검 필요만 조회 → 해제 후보 → 통화별 · 구간별 → 한도 상세 → 대사 결과

도입 포인트 — 이 앱을 사용해야 하는 이유

수입 대금을 신용장(L/C)으로 치르는 회사에는 늘 같은 질문이 따라붙습니다. 이 은행에 한도가 얼마나 남았나, 은행이 말하는 사용액과 우리 장부가 같은가, 다 쓴 신용장이 한도를 붙잡고 있지는 않은가. 지금 이 답들은 은행 통지서 · 구매 · 자금 담당의 엑셀에 흩어져 있어, 개설 직전에 한도가 모자란다는 것을 알게 되는 일이 생깁니다. 이 앱은 신용장 한 건 한 건의 점유액을 다시 계산해 은행 단위로 합치고, 어긋난 은행에는 이유 후보까지 붙여 먼저 볼 순서를 정해 줍니다.

한 줄 요약 — 조회만 하는 리포트는 사용률을 보여 줄 뿐 그 숫자가 믿을 만한지는 사람이 따집니다. 이 앱은 점유액을 미사용 잔액 + 선적 후 미결제로 풀어 신용장마다 계산하고, 은행 · 통화 · 유효기간 구간 어느 방향으로 더해도 같은지 대사식 아홉 가지로 스스로 검산합니다. 최종 판단은 회사와 은행이 하며, 이 화면은 점검 후보를 가리는 도구입니다.

핵심 포인트 여섯 가지

포인트고객이 얻는 것지금 방식이라면
① 은행별 사용률을 다시 계산신용장별 점유액을 합쳐 약정 한도 대비 사용률과 여유 한도를 은행마다 보여 줍니다.은행 통지서와 엑셀 표를 사람이 맞춥니다.
② 은행 통지와 견주기은행이 통지한 사용액과 재계산 점유액의 차이를 금액과 비율로 보여 주고, 취소 미반영 후보를 함께 적습니다.차이가 있다는 것은 알아도 어느 신용장 때문인지 하나씩 뒤집니다.
③ 해제 후보를 걷어 낸 사용률유효기간이 지났는데 잔액이 남은 신용장을 가려 풀면 사용률이 얼마로 내려가는지 미리 보여 줍니다.만기 지난 신용장은 담당자 기억에 의존합니다.
④ 만기 구간으로 보기점유액을 유효기간이 가까운 순서로 나눠 언제 한도가 풀릴지, 언제 연장을 정해야 할지 알려 줍니다.신용장 목록을 만기 순으로 따로 정렬합니다.
⑤ 통화는 합치지 않는다다른 통화의 외화는 더하지 않고 원화 환산 금액으로만 합산해 통화별 점유를 따로 볼 수 있습니다.통화가 섞인 합계를 환산해 놓고 근거를 잃어버립니다.
⑥ 스스로 하는 대사화면의 모든 합계가 서로 맞는지 아홉 줄로 보여 주어 숫자를 믿는 근거를 같은 화면에서 확인합니다.검산은 검토자가 따로 합니다.

이 글은 먼저 실제 화면 일곱 장을 보고, 이어서 SAP 표준 기능과 어디가 이어지는지, 운영으로 올릴 때의 CDS 구성, 그리고 도입 상담에서 자주 나오는 질문 순서로 구성했습니다.

실행 화면

실제로 돌아가는 화면 7종을 순서대로 싣습니다. 그림을 누르면 크게 볼 수 있고, 화면마다 무엇을 하는 자리이고 왜 그렇게 두었는지를 아래에 적었습니다. 숫자는 모두 같은 가상 자료에서 나온 것이라 화면끼리 서로 맞춰 보셔도 됩니다.

처음 열었을 때

처음 연 화면 — 다섯 은행을 한 표에
처음 연 화면 — 다섯 은행을 한 표에 — 다섯 은행의 약정 한도 · 점유액 · 사용률 · 은행 통지 차이가 한 표에 놓입니다. 위쪽 요약에는 은행 5 · 약정 한도 22,000,000,000원 · 점유액 15,873,496,575원 · 전체 사용률 72.15% · 점검 필요 은행 3 · 해제 후보 1,647,400,425원이 뜹니다.

조회조건은 모두 선택이고 "전체"로 두면 조건을 보내지 않습니다. 화면을 열면 기본 조건으로 한 번 자동 조회합니다. 모든 금액은 원화 환산이며 서로 다른 통화의 외화는 합치지 않습니다. 한도 · 환율 · 기준은 모두 가정값이라고 화면 맨 위에 적어 두었습니다.

점검 필요만 조회 — 먼저 볼 은행
점검 필요만 조회 — 먼저 볼 은행 — 점검 상태를 "점검 필요"로 고르고 입력 칸에서 Enter 키로 조회한 결과입니다. 한도 초과 · 점검 기준 이상 · 통지 차이가 있는 은행만 남습니다.

라온은행은 사용률 105.58% 로 약정 한도를 넘었고(여유 한도 −128,318,465원), 다온은행은 92.48% 로 점검 기준(90%)을 넘었으며, 마루은행은 사용률은 47.98% 이지만 은행 통지 사용액이 재계산 점유액보다 1,064,433,440원 큽니다. 한 은행에 둘 이상 걸리면 가장 무거운 코드를 대표로 하고 나머지는 점검 내용에 이어 적습니다.

남은 한도와 만기 보기

해제 후보 신용장 — 쓰지 않고 남은 한도
해제 후보 신용장 — 쓰지 않고 남은 한도 — L/C 내역 탭에서 해제 후보만 고른 결과입니다. 유효기간이 기준일을 지났는데 미사용 잔액이 남은 신용장 7건이 나옵니다.

해제 후보의 미사용 잔액을 원화로 바꿔 더하면 1,647,400,425원입니다. 이것은 "풀면 이만큼 여유가 생길 수 있다"는 후보일 뿐이고, 실제로 풀 수 있는지는 거래 은행과 회사가 정합니다. 화면은 해제 가능 여부를 단정하지 않고 "확인 필요"로만 적습니다.

통화별 — 외화는 합치지 않는다
통화별 — 외화는 합치지 않는다 — 은행 · 통화마다 점유를 외화와 원화로 따로 집계한 탭입니다. 서로 다른 통화의 외화는 합치지 않고 원화 환산 금액으로만 합산합니다.

통화별 행 13개의 원화 점유를 모두 더하면 15,873,496,575원으로, 은행별 점유 합계와 같아야 합니다. 이 일치가 대사 03 번이며 차이는 0 입니다. 환율은 기준일 가정값이라 실제 고시값이 아닙니다.

유효기간 구간 — 언제 풀리는가
유효기간 구간 — 언제 풀리는가 — 점유액을 유효기간이 가까운 순서(경과 · 30일 이내 · 31~60일 · 61~90일 · 91일 이상)로 나눈 탭입니다.

구간 25행의 합계도 은행별 점유 합계와 같습니다(대사 04). 경과 구간은 해제 후보와 겹치고, 30일 이내 구간은 선적 예정이 있는지 연장할지 정해야 하는 자리입니다. 구간 경계는 샘플 기준일 2026-09-30 을 가정해 나눈 것입니다.

숫자를 믿어도 되는가

대사 결과 — 스스로 한 검산
대사 결과 — 스스로 한 검산 — 아홉 가지 대사의 좌변 · 우변 · 검사 건수 · 차이 건수 · 점검 대상 건수입니다. 모든 대사에서 차이 건수가 0 입니다.

01~06 번은 L/C 별 · 은행별 · 통화별 · 구간별 · 개설 금액 · 점유 금액이 어느 방향으로 더해도 같다는 것을 보이고, 07~09 번은 차이가 아니라 점검 대상을 세어 줍니다. 07 번(은행 통지 − 취소 미반영 = 재계산 점유액)의 점검 대상 3은 취소 미반영 신용장 3건, 08 번(점유액 − 해제 후보 = 해제 후 점유액)은 해제 후보 7건, 09 번(약정 한도 = 점유액 + 여유 한도)은 한도 초과 은행 1곳입니다.

은행 한 곳을 풀어 보기

한도 상세 — 은행 한 곳을 풀어 보기
한도 상세 — 은행 한 곳을 풀어 보기 — 은행 행을 누르면 열리는 상세 창입니다. 해제 후 사용률과 통지 차이, 진행 중인 신용장 목록이 함께 나옵니다.

예를 들어 라온은행은 해제 후보 1건(393,055,360원)을 풀면 사용률이 105.58% 에서 88.49% 로 내려갑니다. 은행 통지 사용액에서 취소 미반영 금액을 빼면 재계산 점유액과 같아져야 하며, 이 식이 대사 07 번입니다. 화면은 차이의 원인을 단정하지 않고 확인할 후보만 보여 줍니다.

SAP 표준 기능 확장 포인트

이 앱은 표준을 대체하지 않습니다. 구매 오더 · 대금 결제는 표준이 이미 기록하고 있고, 끊기는 곳은 신용장 한도 점유를 은행 단위로 모아 약정 한도와 은행 통지에 견주는 자리입니다. 표준이 하는 일은 그대로 두고 그 자리만 이어 붙입니다.

표준에서 어디를 보는가

문서 · 기능표준에서 보는 곳표준이 못 하는 일이 앱이 더하는 것
구매 발주구매 오더 조회 ME23N (헤더 EKKO · 품목 EKPO)신용장 개설 금액과 은행 한도 점유를 이어 보여 주지 않습니다.발주 금액 · 통화를 L/C 개설의 근거로 삼아 점유 계산에 씁니다.
대금 결제공급자 개별 항목 FBL1N결제가 신용장 점유를 얼마나 풀었는지 은행 한도 관점으로 모으지 않습니다.선적 후 미결제와 결제 완료 금액을 나눠 점유에 반영합니다.
환율환율표 TCURR신용장 점유를 어느 일자 환율로 환산할지 정하지 않습니다.기준일 환율로 원화 환산해 외화와 원화를 따로 보여 줍니다(이 자료에서는 가정값).
L/C 개설 · 은행 약정 한도회사마다 다름 — 표준 위치는 확인 필요한도 점유를 은행별로 합산해 약정에 견주는 표준 화면을 확정하기 어렵습니다.신용장 원장과 약정 한도를 이 앱의 서비스 구조로 받아 사용률을 계산합니다.
은행 통지은행 자료(전문 · 통지서) — 연결 방식 확인 필요통지 사용액과 장부 점유의 차이를 신용장 단위로 풀지 않습니다.통지 − 재계산 점유 차이와 취소 미반영 후보를 보여 줍니다.

표의 표준 이름은 일반적인 배치를 적은 것입니다. 신용장 개설 정보와 은행 약정 한도를 어느 테이블이나 사용자 정의 구조가 들고 있는지는 환경마다 다르므로, 도입 전에 가장 먼저 확인합니다.

이 앱의 서비스 구성

엔티티셋건수(검증용 자료)한 행이 뜻하는 것
BankSet5은행 한 곳 — 약정 한도 · 점유액 · 사용률 · 통지 차이 · 해제 후 사용률 · 판정
LcSet60신용장 한 건 — 금액 분해 · 점유(외화/원화) · 해제 후보 · 판정 문장
CurSet13은행 × 통화 — 외화 점유와 원화 환산
BucketSet25은행 × 유효기간 구간 — 건수와 점유액
ReconSet9대사 한 줄 — 좌변 · 우변 · 검사 건수 · 차이 건수 · 점검 대상 건수

서비스 이름은 lclimit_srv 이고 OData V2 입니다. 화면은 $filter · $orderby · $top · $inlinecount 와 읽기 전용 펑션 하나(GetMaxUtilPct, 필터를 건 은행들의 최고 사용률)만 씁니다. 같은 주소를 CDS 기반 서비스가 이어받으면 화면은 고치지 않아도 됩니다.

대사 결과 — 전수 검증

번호대사검사 건수차이 건수
01L/C별 점유액 합계 = 은행별 점유액600
02점유 외화 × 기준일 환율 = L/C 원화 점유600
03통화별 원화 점유 합계 = 은행별 점유액130
04유효기간 구간 합계 = 은행별 점유액250
05개설 금액 = 선적 사용 금액 + 미사용 잔액600
06점유 금액 = 미사용 잔액 + 선적 후 미결제 (진행 중 L/C)600
07은행 통지 사용액 − 취소 미반영 = 재계산 점유액50 (점검 대상 3)
08점유액 − 해제 후보 = 해제 후 점유액600 (점검 대상 7)
09약정 한도 = 점유액 + 여유 한도50 (점검 대상 1)

모든 대사에서 차이는 0 입니다. 원화 점유 합계 15,873,496,575원이 신용장별 · 은행별 · 통화별 · 만기 구간별 어느 경로로 더해도 같습니다.

CDS 구성

이 사례의 화면은 서비스가 내려 준 L/C 60건을 브라우저가 묶어 보여 줍니다. 데모라서 되는 일이고, 운영 데이터에서는 그렇게 하지 않습니다. 운영으로 올릴 때 가장 먼저 하는 일이 점유 계산과 집계를 CDS 로 내리는 것입니다. 아래는 그때 만드는 뷰들을 레이어 순서대로 적은 것입니다.

코드는 스케치입니다. 필드 이름과 표준 뷰 · 테이블 이름은 릴리스 · 환경에 따라 다르므로 그대로 붙여 넣기 전에 View Browser 로 실제 이름을 확인해야 합니다. 확인이 필요한 자리는 주석에 적어 두었습니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준zmm_lc_limit약정 한도 · 판정 기준기준을 코드에 박지 않으려는 것입니다.
차원ZI_LclmLc신용장 원장 읽기L/C 정보가 놓인 자리를 한 곳에 모읍니다.
환율ZI_LclmRate기준일 환율 선택환산 규칙이 한 곳에만 있게 합니다.
계산ZI_LclmOccupy신용장별 점유 · 해제 후보점유액의 정의를 한 번만 둡니다.
집계ZI_LclmBank은행별 사용률식이 화면이 아니라 여기 있어야 합계가 맞습니다.
쿼리ZC_LclmBankQuery판정 코드 부여비교 기준이 이 뷰에 있어야 설명할 수 있습니다.
권한ZI_LCLMBANK(DCL)회사코드 범위집계를 읽는 자리에 걸어야 뺄셈으로 새지 않습니다.
서비스zui_lclimit_srv엔티티셋 노출화면과의 계약을 이름으로 고정합니다.

① 약정 한도와 판정 기준 테이블

약정 한도와 판정 기준은 코드에 박지 않고 테이블로 둡니다. 유효기간을 둔 이유는 약정이 갱신되거나 기준이 바뀌어도 과거 판정이 흔들리지 않게 하기 위해서입니다. 이 자료의 주의 80% · 점검 90% · 통지 허용 0.5% 는 가정값이고, 실제 값은 약정서와 회사 기준으로 정합니다.

@EndUserText.label : '은행별 L/C 약정 한도'
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
define table zmm_lc_limit {
  key client     : abap.clnt not null;
  key bukrs      : bukrs not null;           " 회사코드
  key bank_code  : abap.char(10) not null;   " 은행 구분 — 하우스뱅크 키를 쓸지 확인 필요
  key valid_to   : abap.dats not null;       " 약정 유효 종료일
  limit_amt      : abap.curr(18,2);          " 약정 한도(원화) — 통화별 한도인지 확인 필요
  limit_cur      : waers;
  warn_pct       : abap.dec(5,2);            " 주의 기준(가정 80)
  check_pct      : abap.dec(5,2);            " 점검 기준(가정 90)
  notice_tol_pct : abap.dec(5,2);            " 통지 허용 오차(가정 0.5)
}

② 신용장 원장 뷰

신용장 한 건의 개설 · 선적 · 결제 금액을 한 곳에서 읽습니다. L/C 정보를 어디에 두는지(사용자 정의 테이블, 외환 모듈, 별도 시스템)가 환경마다 다르므로 이 뷰가 가장 먼저 환경에 맞춰야 하는 자리입니다. 구매 오더 번호로 발주 헤더와 이어 붙입니다.

@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck : #NOT_REQUIRED
@EndUserText.label : '신용장 원장'
define view entity ZI_LclmLc
  as select from zmm_lc_master as L          " L/C 원장 — 실제 테이블 확인 필요
  association [0..1] to ekko as _Po on _Po.ebeln = L.ebeln
{
  key L.lc_no,
      L.bukrs,
      L.bank_code,
      L.ebeln,                                " 구매 오더(ME23N 에서 확인)
      L.waers,
      L.open_date,
      L.expiry_date,
      L.status,                               " 진행 · 종결 · 취소
      @Semantics.amount.currencyCode : 'waers'
      L.open_amt,                             " 개설 금액
      @Semantics.amount.currencyCode : 'waers'
      L.ship_amt,                             " 선적 사용 금액
      @Semantics.amount.currencyCode : 'waers'
      L.settled_amt,                          " 결제 완료 금액
      _Po
}

③ 기준일 환율 뷰

외화 점유를 원화로 바꾸는 환율을 한 곳에서 정합니다. 환율표(TCURR)에서 기준일에 유효한 행을 고르는 규칙이 여기에 있어야 통화별 · 은행별 합계가 서로 어긋나지 않습니다. 환율 종류와 기준일(개설일 · 마감일)은 회사 기준으로 합의해야 하는 항목입니다.

@EndUserText.label : '기준일 환율'
define view entity ZI_LclmRate
  with parameters p_keydate : abap.dats
  as select from tcurr
{
  key fcurr,                       " 외화
  key tcurr,                       " 원화
      kurst,                       " 환율 종류 — 'M' 사용 여부 확인 필요
      ukurs as rate,
      gdatu                        " 입력 형식(역일자) 변환 규칙은 환경에서 확인 필요
}
where kurst = 'M'
  and tcurr = 'KRW'
  /* 기준일에 유효한 최신 행만 고르는 조건은 환경에 맞춰 추가 */

④ 신용장별 점유 계산 뷰

점유액의 정의를 이 한 곳에 둡니다. 진행 중인 신용장만 대상으로 미사용 잔액 + 선적 후 미결제를 구하고 기준일 환율을 곱합니다. 해제 후보 판정(유효기간 경과 + 미사용 잔액)도 이 뷰에서 정해야 화면과 서비스의 정의가 갈라지지 않습니다.

@EndUserText.label : '신용장별 점유액'
define view entity ZI_LclmOccupy
  with parameters p_keydate : abap.dats
  as select from ZI_LclmLc as L
  left outer join ZI_LclmRate( p_keydate : $parameters.p_keydate ) as R
    on R.fcurr = L.waers
{
  key L.lc_no,
      L.bukrs,
      L.bank_code,
      L.waers,
      L.expiry_date,
      /* 미사용 잔액 = 개설 − 선적, 선적 후 미결제 = 선적 − 결제 */
      case when L.status = 'OPEN'
           then ( L.open_amt - L.ship_amt ) + ( L.ship_amt - L.settled_amt )
           else 0 end                                            as occupy_amt,
      cast( case when L.status = 'OPEN'
           then ( L.open_amt - L.settled_amt ) * R.rate
           else 0 end as abap.dec(18,0) )                        as occupy_krw,
      case when L.status = 'OPEN'
            and L.expiry_date < $parameters.p_keydate
            and ( L.open_amt - L.ship_amt ) > 0
           then 'X' else '' end                                  as release_flag
}

⑤ 은행별 집계 뷰 — 사용률

신용장별 점유를 은행 단위로 더하고 약정 한도에 견줍니다. 사용률 = 점유액 ÷ 약정 한도, 여유 한도 = 약정 한도 − 점유액이며 모두 이 뷰에서 한 번만 정의합니다. 화면이 따로 계산하지 않는 이유는 식이 한 곳에만 있어야 합계가 어긋날 자리가 없기 때문입니다.

@EndUserText.label : '은행별 한도 사용률'
define view entity ZI_LclmBank
  with parameters p_keydate : abap.dats
  as select from ZI_LclmOccupy( p_keydate : $parameters.p_keydate ) as O
  association [1..1] to zmm_lc_limit as _Limit
    on _Limit.bank_code = O.bank_code and _Limit.bukrs = O.bukrs
{
  key O.bukrs,
  key O.bank_code,
      sum( O.occupy_krw )                                          as used_krw,
      _Limit.limit_amt                                             as limit_krw,
      /* 사용률 = 점유액 ÷ 약정 한도 × 100 */
      cast( sum( O.occupy_krw ) * 100 / _Limit.limit_amt as abap.dec(9,2) ) as util_pct,
      _Limit.limit_amt - sum( O.occupy_krw )                       as room_krw,
      _Limit
}
group by O.bukrs, O.bank_code, _Limit.limit_amt

⑥ 판정 쿼리

한도 초과 · 점검 기준 이상 · 주의 판정과 우선순위를 쿼리 뷰에 둡니다. 아래 순서는 스케치이며 어느 판정이 먼저 걸리는지는 회사 기준으로 합의해야 합니다. 은행 통지 차이(NOTI)는 은행 자료를 받아 이어 붙인 뒤에 같은 방식으로 더합니다.

@EndUserText.label : '한도 사용률 판정'
@Analytics.query : true
define view entity ZC_LclmBankQuery
  with parameters p_keydate : abap.dats
  as select from ZI_LclmBank( p_keydate : $parameters.p_keydate ) as B
{
  key B.bukrs,
  key B.bank_code,
      B.used_krw, B.limit_krw, B.util_pct, B.room_krw,
      case when B.util_pct >  100                    then 'OVER'
           when B.util_pct >= B._Limit.check_pct     then 'NEAR'
           when B.util_pct >= B._Limit.warn_pct      then 'WARN'
           else 'OK' end                             as check_code
      /* NOTI(통지 차이)는 은행 통지 사용액 연결 후 추가 — 확인 필요 */
}

⑦ 권한(DCL)

집계를 읽는 뷰에 회사코드 범위를 겁니다. 합계 뷰에 걸지 않으면 합계에서 빠진 만큼으로 범위 밖 금액을 짐작할 수 있습니다. 자금 조직 단위로 나눠 쓰는 회사는 권한 객체와 필드 이름을 환경에서 확인해 맞춥니다.

@EndUserText.label : 'L/C 한도 회사코드 권한'
@MappingRole : true
define role ZI_LCLMBANK {
  grant select on ZI_LclmBank
    where ( bukrs ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
  /* 권한 객체는 일반적인 예시 — 회사 권한 설계에 맞춰 확인 필요 */
}

⑧ 서비스 정의와 화면이 부르는 질의

화면이 부르는 엔티티셋을 서비스로 열어 둡니다. 화면은 표준 질의만 쓰므로 이 서비스가 같은 이름의 엔티티셋을 내려 주면 화면은 고치지 않아도 됩니다. 아래 질의는 점검 필요 은행만 사용률이 높은 순으로 가져오는 예입니다.

@EndUserText.label : 'L/C 한도 사용률 점검 서비스'
define service zui_lclimit_srv {
  expose ZC_LclmBankQuery as BankSet;
  expose ZI_LclmOccupy    as LcSet;
}

" 화면이 보내는 질의 예 (상대 경로)
GET ./odata/lclimit_srv/BankSet?$filter=CheckStatus eq 'CHECK'
    &$orderby=UtilPct desc&$inlinecount=allpages&$format=json
GET ./odata/lclimit_srv/LcSet?$filter=ReleaseFlag eq 'X'
    and ExpiryDate ge datetime'2026-01-01T00:00:00'
    and ExpiryDate le datetime'2026-09-30T00:00:00'&$orderby=ExpiryDate asc

운영 전환에서 정해야 할 것

항목정할 것정하지 않으면
점유액의 정의미사용 잔액 + 선적 후 미결제를 쓸지, 은행 약정 방식과 같은지은행이 말하는 사용액과 영영 맞지 않습니다.
환율 기준개설일 · 기준일 · 마감일 중 어느 환율인지원화 점유가 달라져 사용률이 흔들립니다.
판정 기준주의 · 점검 기준, 통지 허용 오차판정 건수가 사람마다 다르게 읽힙니다.
통지 자료은행 사용액을 어떤 경로로 받을지통지 차이 점검을 쓸 수 없습니다.
해제 처리해제 후보를 누가 확인하고 은행에 어떻게 요청하는지후보만 쌓이고 한도는 풀리지 않습니다.
권한회사코드 · 자금 조직 범위범위 밖 금액이 합계로 새어 나옵니다.

자주 묻는 질문

도입 상담과 데모에서 나올 만한 질문을 네 묶음으로 적었습니다.

숫자와 판정

은행별 L/C 한도 사용률 점검은 무엇을 합니까?

은행이 준 약정 한도에 대해 회사의 신용장이 얼마나 한도를 쓰고 있는지를 신용장 단위로 다시 계산해 은행마다 합산하고, 은행이 통지한 사용액과 견주어 어긋난 곳을 가립니다. 한도 초과 · 점검 기준 이상 · 통지 차이 · 해제 후보를 한 화면에서 먼저 볼 순서대로 보여 주는 점검 도구이며, 한도를 바꾸거나 신용장을 취소하지는 않습니다.

점유액은 무엇을 기준으로 계산합니까?

진행 중인 신용장의 미사용 잔액과 선적 후 아직 결제하지 않은 금액을 더한 값을 기준일 환율로 원화 환산한 것입니다. 종결 · 취소된 신용장은 제외합니다. 개설 금액 = 선적 사용 + 미사용, 선적 후 미결제 = 선적 사용 − 결제 완료의 관계가 성립해야 하며 대사 05 · 06 번이 이를 전수로 확인합니다. 회계기준이 정한 산식이 아니라 한도 운영을 점검하기 위한 업무 지표이고, 회사와 은행의 약정 방식이 다르면 정의부터 맞춰야 합니다.

사용률과 여유 한도는 어떻게 구합니까?

사용률 = 점유액 ÷ 약정 한도 × 100, 여유 한도 = 약정 한도 − 점유액입니다. 이 자료에서 라온은행은 점유액이 약정 한도 2,300,000,000원을 넘어 사용률 105.58%, 여유 한도 −128,318,465원이었습니다. 전체로는 점유액 15,873,496,575원이 약정 한도 합계 22,000,000,000원의 72.15% 입니다.

판정 코드는 어떻게 나뉩니까?

은행 단위로 한도 초과(OVER) · 점검 기준 이상(NEAR) · 통지 차이(NOTI) · 주의(WARN)를 두고, 신용장 단위로 해제 후보(REL) · 취소 미반영(PEN) · 유효기간 임박(EXP)을 둡니다. OVER · NEAR · NOTI · REL · PEN 은 점검 필요, WARN · EXP 는 주의(정보), 나머지는 정상입니다. 한 은행에 둘 이상 걸리면 OVER → NEAR → NOTI → WARN 순으로 대표 코드를 정합니다. 이 순서는 스케치이며 도입 때 회사 기준으로 합의해야 합니다.

주의 80%, 점검 90%, 통지 허용 오차 0.5% 는 어디서 온 숫자입니까?

가정값입니다. 샘플을 만들면서 임의로 둔 값이고 화면 맨 위에도 그렇게 적혀 있습니다. 실제 기준은 은행 약정서와 회사의 자금 운용 기준으로 정해야 하며, 같은 자료라도 기준을 바꾸면 점검 필요 건수가 달라집니다.

해제 후보는 풀어도 되는 한도입니까?

아닙니다. 유효기간이 기준일을 지났는데 미사용 잔액이 남은 신용장을 해제를 검토할 후보로 올린 것입니다. 이 자료의 후보는 7건, 미사용 잔액의 원화 환산 합계 1,647,400,425원입니다. 실제로 취소할 수 있는지, 수익자 동의나 연장 협의가 필요한지는 거래 은행과 회사가 정하며 화면은 "확인 필요"까지만 말합니다.

해제 후 사용률은 어디에 쓰입니까?

해제 후보를 모두 풀었다고 가정했을 때의 사용률입니다. 라온은행은 105.58% 에서 88.49% 로, 나래은행은 86.18% 에서 69.27% 로 내려갑니다. 한도 초과 은행이 해제만으로 정리될 수 있는지, 아니면 신규 개설을 미뤄야 하는지를 가늠하는 참고 지표입니다.

은행 통지 사용액과 차이가 나면 어떻게 봅니까?

통지 차이 = 은행 통지 사용액 − 재계산 점유액이고, 절대 차이가 점유액의 0.5% 를 넘으면 "점검 필요"로 올립니다. 이 자료에서는 라온은행 +311,819,750원(12.84%), 마루은행 +1,064,433,440원(52.82%) 이었습니다. 샘플은 회사가 취소했지만 은행에 반영되지 않은 신용장 3건을 차이의 원인 후보로 보여 주며, 운영에서는 결제 반영 시차 · 환율 차이 · 취소 미반영 순으로 은행 자료와 대조해 확인합니다. 원인은 단정하지 않습니다.

환율은 무엇을 씁니까?

통화별 기준일 환율을 한 표로 둔 가정값(USD · EUR · JPY · CNY)을 외화 점유에 곱해 원 단위로 반올림합니다. 실제 고시값이 아닙니다. 운영에서는 어느 일자의 환율(개설일 · 기준일 · 마감일)을 쓸지부터 합의해야 하고, SAP 에서는 환율표(TCURR)에서 읽는 구성이 일반적입니다.

대사 결과 탭은 무엇을 보여 줍니까?

화면의 숫자가 서로 맞는지 스스로 검산한 아홉 줄입니다. L/C 별 합계 = 은행별 합계, 외화 × 환율 = 원화, 통화별 합계 · 구간별 합계 = 은행별 합계, 개설 = 선적 + 미사용, 점유 = 미사용 + 미결제, 통지 − 취소 미반영 = 재계산 점유, 점유 − 해제 후보 = 해제 후 점유, 약정 한도 = 점유 + 여유 한도로 이루어지며 이 자료에서는 모두 차이 0 입니다(07~09 번은 점검 대상을 함께 세어 줍니다).

화면과 조회

조회조건에 필수가 있습니까?

없습니다. 은행 · 통화 · 점검 상태 · 해제 후보 · 유효기간(부터/까지)은 모두 선택이며 "전체"를 고르면 그 조건은 서비스로 보내지 않습니다. 통화 · 해제 후보 · 유효기간 조건은 L/C 내역 탭과 통화별 탭에 적용되고, 은행별 한도는 통화를 가르지 않고 집계합니다.

조회 버튼 말고 Enter 로도 조회됩니까?

됩니다. 유효기간 입력 칸에서 Enter 를 누르면 같은 조회가 돌고, 조회 버튼은 조건 영역 안 입력 칸들의 가장 오른쪽에 있으며 초기화 버튼이 그 옆에 있습니다. 화면을 열면 기본 조건(전체)으로 한 번 자동 조회합니다.

탭이 다섯 개인 이유가 있습니까?

같은 자료를 다섯 번 다르게 묶은 것입니다. 은행별 한도 → L/C 내역 → 통화별 → 유효기간 구간 → 대사 결과 순으로 보시면 됩니다. 앞의 네 탭은 합계가 서로 같아야 하고, 마지막 탭이 그 일치를 스스로 확인합니다.

행을 누르면 무엇이 열립니까?

그 은행의 한도 상세 창입니다. 점유 · 통지 차이 · 해제 후 사용률과 진행 중인 신용장 목록이 함께 나옵니다. 신용장 단위의 점검 내용은 L/C 내역 탭의 판정 문장으로도 읽을 수 있습니다.

CSV 로 내려받을 수 있습니까?

화면 아래 버튼이 지금 열려 있는 탭의 내용을 UTF-8 CSV 로 내려받습니다. 필터를 건 상태라면 걸린 결과만 담깁니다.

설계와 기술

OData 서비스는 어떻게 생겼습니까?

OData V2 서비스(lclimit_srv)에 엔티티셋 다섯 개(BankSet · LcSet · CurSet · BucketSet · ReconSet)와 펑션 하나(GetMaxUtilPct)가 있습니다. 화면은 $filter · $orderby · $top · $inlinecount 와 이 펑션만 쓰고, 동작 이름이 붙은 주소는 없습니다. 같은 주소를 CDS 기반 서비스가 이어받으면 화면은 고치지 않아도 됩니다.

날짜 조건에서 흔히 생기는 문제는 어떻게 막았습니까?

시작과 끝 날짜를 or 로 묶어 내보내는 일이 있으면 모든 날짜가 통과해 버립니다. 그래서 시작과 끝을 and 한 묶음으로 보내고 서비스가 날짜 필터를 직접 해석합니다. 이 자료에서 유효기간 시작 이후 55건 · 종료 이전 6건 · 기간 안 9건으로 시험해 모두 일치했습니다.

데이터는 실제 고객 자료입니까?

아닙니다. 은행 · 거래처 · L/C 번호는 모두 검증용 가상 자료입니다. 가상 은행 5곳, L/C 60건(진행 46 · 종결 11 · 취소 3), 통화 USD · EUR · CNY · JPY 로 만들었고 기준일은 2026-09-30 로 가정했습니다.

운영 데이터가 수십만 건이면 어떻게 됩니까?

조회는 $top 으로 나눠 받을 수 있지만 합계와 탭 집계를 화면에서 더하는 부분은 느려집니다. 운영에서는 점유 계산과 은행별 집계를 CDS 뷰로 내려 DB 가 계산하게 하고 화면은 결과만 받습니다. CDS 구성 절의 뷰 순서가 그 설계입니다.

도입과 운영

이 앱이 최종 판단을 내려 줍니까?

아닙니다. 화면 맨 위에도 적혀 있듯 점검 후보를 가리는 조회 도구입니다. 한도 해제와 조정은 거래 은행과 회사가, 회계 처리와 공시 판단은 회사와 감사인이 합니다. 앱은 어느 은행을 먼저 열어 볼지 정해 줄 뿐 신용장을 취소하거나 한도를 바꾸지 않습니다.

어떤 회사에 맞습니까?

여러 은행에 신용장 한도를 나눠 두고 수입 대금을 L/C 로 치르는 회사입니다. 구매팀은 개설 계획을, 자금팀은 한도 여유를, 회계팀은 은행 통지와 장부를 따로 보기 때문에 한 은행의 사용률이 어디서 어긋나는지 한 줄로 설명하기 어려운 곳에 특히 맞습니다.

도입 때 가장 먼저 정할 것은 무엇입니까?

점유액의 정의(미사용 잔액 + 선적 후 미결제를 쓸지), 환율 기준일, 주의 · 점검 기준, 통지 허용 오차, 그리고 은행 통지 자료를 어떻게 받을지입니다. 도입 때 정해야 할 항목은 CDS 구성 절 끝에 표로 적었습니다.

권한은 어떻게 겁니까?

집계를 읽는 뷰에 회사코드 또는 자금 조직 범위의 권한(DCL)을 겁니다. 합계 뷰에 걸지 않으면 내 범위가 아닌 금액이 합계에서 빠진 만큼 보이는 경로가 생깁니다. 코드는 CDS 구성 절에 있습니다.

AI 는 쓰였습니까?

점유 계산과 판정에는 쓰지 않습니다. 모든 숫자는 규칙으로 계산되고 같은 입력이면 같은 결과가 나옵니다. 판정이 흔들리면 감사 때 설명할 수 없기 때문입니다.

현재 SAP 환경에서 어떻게 적용되는지 궁금합니다.

신용장 개설 정보와 은행 약정 한도를 SAP 의 어디에 두는지, 구매 오더와 어떻게 이어 두는지가 회사마다 다릅니다. 왼쪽 목차의 "문의하기"로 남겨 주시면 환경에 맞춰 어디까지 표준으로 되고 어디부터 확장이 필요한지 함께 살펴 드립니다.