솔루션 홈
MRBR · 구매송장 차단

SAP 구매송장 지급차단 해제 현황 — 왜 이 송장은 아직 안 풀렸을까

가격이 틀렸는지, 수량이 안 맞는지, 날짜가 지났는지. 차단된 송장을 사유별로 모아 경과일수까지 한눈에 보여주는 화면입니다.

구매송장이 지급되지 않고 멈춰 있으면, 담당자는 "왜 안 나갔지"부터 확인해야 합니다. 이유는 대개 셋 중 하나입니다. 발주보다 비싸게 청구됐거나, 들어온 것보다 많이 청구됐거나, 발주 유효기간이 지난 뒤 뒤늦게 들어왔거나. 여기에 내부통제용 임의검사 대상까지 섞이면 차단된 송장 목록을 사유별로 나눠 보지 않고서는 무엇부터 처리해야 할지 가늠하기 어렵습니다.

SAP 표준 송장검증(MIRO)과 지급차단 해제(MRBR) 데이터 구조를 그대로 이어받아, 차단된 송장을 회사코드·구매조직·구매처·차단사유·경과일수로 조회하고 발주·입고 대비 산출근거까지 드릴다운하도록 OpenUI5 화면으로 확장한 것이 이번 화면입니다. 실제 구동 화면 4종을 함께 공개합니다.

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

  • 송장 원천 — 헤더(RBKP)와 항목(RSEG) 구조를 그대로 사용
  • 차단 판정 기준 — 가격·수량·일자차이 3자 대사(발주 EKPO · 입고 EKBE)
  • 대상 T-code — 지급차단 해제(MRBR), 송장 표시(MIR4/MIR6)
  • 텍스트 — 구매조직(T024E) · 회사코드(T001) · 거래처(LFA1)
항목내용
업무 영역구매관리(MM) · 송장검증 · 지급차단 해제
Namespacezui5.invblock
셸 구조조회조건 영역(우측 조회) + 차단 송장 그리드(sap.ui.table.Table), 상세 Dialog
화면 수조회 화면 1개 + 상세보기 다이얼로그
대응 T-codeMRBR(지급차단 송장 해제) · MIR4/MIR6(송장 표시) 참고
성격조회·검토형 — 차단 해제 실행은 표준 트랜잭션이 담당
UI 테마sap_horizon 단일 적용

실제 화면 4종 둘러보기

회사코드·구매처·차단사유 조건을 넣고 조회하면 차단 송장이 목록으로 뜹니다 → 구매처로 좁혀 재조회하고 → 행을 열어 발주·입고 대비 산출근거를 확인합니다.

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

Main.view.xml
조회조건 초기화면
조회조건 초기화면 — 회사코드·구매조직·구매처·차단사유·전기일·경과일수 조건을 필요한 만큼 골라 조회합니다. 조회 버튼은 조회조건 영역 오른쪽 끝에 있습니다.
전체 차단 목록
차단 송장 전체 조회 결과
차단 송장 전체 조회 결과 — 현재 차단중인 59건이 경과일수 내림차순으로 뜹니다. 경과 30일 이상 건은 빨간 강조선으로, 차단사유는 색상으로 구분됩니다.
구매처 필터(Enter 조회)
구매처 입력 후 Enter 키 재조회 결과
구매처 입력 후 Enter 키 재조회 — 구매처 입력란에 코드를 넣고 Enter 키를 누르면 버튼을 누르지 않아도 바로 재조회됩니다. 특정 거래처 건만 7건으로 좁혀졌습니다.
상세보기
송장 차단 상세 다이얼로그 — 산출근거
송장 차단 상세 — 산출근거 — 금액 구성(순액·부가세·총액), 차단사유와 차이 상세, 항목별 발주/입고 수량·단가 대비, 산출 근거를 한 다이얼로그에서 확인합니다.

조작 방법

  1. 회사코드·구매조직·구매처·차단사유·전기일(~까지)·경과일수 조건을 필요한 만큼 선택합니다. 기본값은 조건 미지정 + 현재 차단중인 송장만입니다.
  2. 조회조건 영역 오른쪽의 조회 버튼을 누르거나, 입력 필드에서 Enter 를 눌러도 즉시 재조회됩니다. Select·DatePicker는 값이 바뀌는 즉시 재조회됩니다.
  3. "해제된 송장도 포함" 체크박스를 켜면 이미 해제된 송장도 함께 조회해 차단 이력을 비교할 수 있습니다.
  4. 결과 그리드 행 오른쪽 화살표를 누르면 금액·차단사유·항목별 발주/입고 대비·산출근거를 담은 상세 다이얼로그가 열립니다.
  5. 목록은 CSV 다운로드로 내려받습니다. UTF-8 BOM 이 붙어 엑셀에서 한글이 깨지지 않습니다.

차단사유 자동판정 로직

SAP 표준 송장검증(MIRO)은 발주(EKPO)·입고(EKBE) 데이터와 송장을 자동 대사하고, 허용오차를 벗어나면 지급을 차단합니다. 이 화면은 그 4가지 표준 차단사유를 판정식으로 재현했습니다.

사유판정식의미
P 가격차이(송장단가 − 발주단가) × 송장수량 > 0발주보다 비싸게 청구된 경우
Q 수량차이송장수량 − 입고수량 > 0실제 입고보다 많은 수량이 청구된 경우
D 일자차이발주 유효기간 경과일수 > 0발주 근거 유효기간이 지난 뒤 접수된 송장
R 수동차단금액·수량과 무관, 임의 추출내부통제 목적의 표본 검토(Stochastic Block) 대상

경과일수를 함께 보여주는 이유

차단사유만 알아서는 무엇부터 처리할지 정하기 어렵습니다. 같은 가격차이라도 어제 걸린 것과 40일째 묶여 있는 것은 우선순위가 다릅니다. 그래서 경과일수(오늘−전기일) 30일 이상은 위험, 14~29일은 경고로 구분해 장기 미해제 건을 먼저 식별하도록 했습니다.

송장검증 → 차단 → 해제 처리 4단계

단계내용
1. 송장 등록MIRO로 송장을 입력하면 발주(EKPO)·입고(EKBE) 데이터와 자동 대사됩니다.
2. 차단 판정가격·수량·일자 허용오차를 벗어나거나 임의검사 대상이면 차단 플래그와 사유가 기록됩니다.
3. 조회·검토이 화면(MRBR 대응)에서 차단 목록을 사유·경과일수·구매처별로 검토합니다.
4. 해제·지급담당자가 근거를 확인한 뒤 MRBR에서 해제하면 지급 프로세스가 재개됩니다.

조회조건

필드설명
회사코드 / 구매조직Select, 전체 선택 가능
구매처(코드/명)부분일치 검색
차단사유가격/수량/일자/수동, 전체
전기일(~까지)지정일 이전 전기 건만
경과일수7/14/30일 이상 필터
해제된 송장도 포함기본 미체크 = 차단중만 조회

결과 컬럼

컬럼의미 · 표시
송장번호 · 구매처코드/명 함께 표시
구매조직 · 발주번호
전기일 · 송장총액우측정렬, 천단위 콤마 + 통화
상태차단중/해제됨 아이콘
차단사유 · 차이내역사유별 색상 구분 + 차이금액/수량/경과일 텍스트
경과일수30일↑ 위험, 14~29일 경고 강조

SAP 표준 기능 매핑

표준 실행은 MRBR(지급차단 송장 해제)이 담당하며, 이 화면은 그 조회·검토 관점을 웹 UI로 확장한 것입니다. 표준 3자 대사 로직과 차단사유 체계를 그대로 이어받아, 구매처·경과일수 기준의 우선순위 조회와 산출근거 드릴다운을 더했습니다.

표준 T-code / 테이블역할
MRBR지급차단 송장 해제 워크리스트 — 본 화면의 직접 대응 기능
MIR4 / MIR6송장 문서 표시 / 개요 — 상세 다이얼로그 항목 정보 원천
ME23N구매발주 표시 — 발주단가·수량 참조
RBKP / RSEG송장 헤더 / 항목

참고 CDS 뷰

@AbapCatalog.sqlViewName: 'ZLMMBLKINV'
define view ZL_MM_BLOCKED_INVOICE
  as select from rbkp
  association [0..1] to rseg as _Item on _Item.belnr = rbkp.belnr and _Item.gjahr = rbkp.gjahr
{
  key rbkp.belnr        as InvoiceNo,
  key rbkp.gjahr        as FiscalYear,
      rbkp.bukrs         as CompanyCode,
      rbkp.ekorg         as PurchOrg,
      rbkp.lifnr         as Vendor,
      rbkp.ebeln         as PurchaseOrder,
      rbkp.budat         as PostingDate,
      rbkp.rmwwr         as GrossAmount,
      rbkp.waers         as Currency,
      _Item
}

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 차단사유 코드 체계와 임의검사 추출 기준을 운영 설정값에 맞춰 조정합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.f.DynamicPage + 조회조건 헤더 + 결과 그리드
조회조건sap.m.Select · Input · DatePicker · CheckBox — change/submit 시 즉시 재조회
결과 그리드sap.ui.table.Table — RowAction 으로 상세보기 진입
상세보기sap.m.Dialog + 금액/차단상세/항목/산출근거 4개 테이블
포맷금액 · 일자 · 경과일수 · 차단상태 · 차이내역 포맷터

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon · lodash · moment
manifest.json앱 디스크립터 — 앱 ID(zui5.invblock) · ko 로케일
view/Main.view.xml + fragments조회조건 · 결과 그리드 · 상세 Dialog
controller/Main.controller.js조회 · Enter키 재조회 · 상세 산출 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise)
js/formatter.js금액 · 일자 · 경과일수 · 차단상태 포맷
localdata/rbkp.json · rseg.json송장 헤더 96건 · 항목 176건 검증용 데이터

검증 결과

화면 구성에 쓴 데이터는 송장 96건 · 항목 176건이며, 이 중 차단중 59건(가격 17 · 수량 8 · 일자 23 · 수동 11)입니다.

검증 항목결과
항목별 순액 합계 = 헤더 순액, 순액+부가세(10%) = 송장총액통과
차단여부와 차단사유 정합(차단=X면 사유 존재, 해제면 사유 없음)통과
가격차이(P) 건은 양(+)의 차이금액 보유, 수량차이(Q) 건은 양(+)의 초과수량 보유통과
XML/JSON 전체 파싱 · 로컬 서버 전 리소스 200 · i18n 키/핸들러/포맷터 누락 0건통과
조회 버튼 위치 — 조회조건 영역 오른쪽 끝(하단 Bar 미사용)통과
Enter 키 조회 — 구매처 입력 후 Enter 로 59건→7건 재필터 확인통과
적용 테마 sap_horizon 확인통과
화면 렌더링 — 실브라우저에서 조회 → 필터 → 상세보기 실동작 후 캡처4/4

구매처·금액·경과일수는 모두 검증용 데이터입니다.

자주 묻는 질문

차단사유는 어떻게 자동으로 판정되나요?

라인별로 발주단가·발주수량과 대사합니다. 송장단가가 발주단가보다 높으면 가격차이(P), 송장수량이 입고수량을 넘으면 수량차이(Q), 발주 유효기간이 지난 뒤 들어온 송장이면 일자차이(D)로 판정합니다. 여기에 해당하지 않아도 내부통제 목적의 임의검사(R) 대상으로 뽑히는 건이 따로 있습니다.

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

아니요. 조회와 근거 확인이 목적인 화면입니다. 실제 차단 해제는 표준 트랜잭션 MRBR에서 담당자가 근거를 검토한 뒤 수행합니다. 이 화면은 그 검토를 준비하는 단계를 앞당겨 줍니다.

경과일수는 왜 중요한가요?

차단된 채로 오래 방치된 송장일수록 구매처와의 관계, 조기지급 할인 같은 조건을 놓치게 됩니다. 30일 이상 차단된 건은 화면에서 위험으로 강조해 우선 검토 대상을 바로 알 수 있게 했습니다.

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

송장검증(MIRO)과 지급차단 해제(MRBR)는 모두 표준 트랜잭션이 담당합니다. 이 화면은 그 결과 데이터를 구매처·차단사유·경과일수 관점으로 모아 조회하고, 발주·입고 대비 산출근거를 드릴다운으로 보여주는 조회 전용 확장입니다.

구매송장 차단 검토, 지금 쓰는 SAP 위에서 확장해 보세요

차단 사유를 하나하나 열어보는 대신, 경과일수와 사유로 먼저 정렬해서 볼 수 있으면 지급 지연을 줄일 수 있습니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

구매송장지급차단MRBR가격차이수량차이RBKPRSEGOpenUI5