SAP 미지급 대상 조회 — 보류를 풀고 지급정보를 한 번에 바꾸기
지급하지 않은 매입채무를 조회해 지급보류를 해제하거나 지급방법·기산일·할인일수를 여러 건 한꺼번에 바꾸는 화면입니다.
지급보류는 걸기는 쉬운데 푸는 일이 번거롭습니다. 전표를 하나씩 열어 필드를 고쳐야 하고, 수십 건이면 수십 번 같은 동작을 반복합니다.
게다가 보류를 풀면서 지급방법이나 기산일도 함께 바꿔야 하는 경우가 많습니다. 여러 라인을 선택해 바꿀 필드만 체크하고 한 번에 적용하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 미결 매입채무 — 공급업체 미결 항목(
BSIK) 구조 그대로 - 지급 필드 — 지급보류(
ZLSPR) · 지급방법(ZLSCH) · 기산일(ZFBDT) · 할인일수(ZBD1T) - 지급방법 마스터 — 코드와 텍스트(
T042Z) - 전표 — 헤더(
BKPF)와 라인(BSEG)의 일자·금액·적요 - 입력자 — 사번과 이름(
USR21·ADRP)
| 항목 | 내용 |
|---|---|
| 변경 함수 | FI_DOCUMENT_CHANGE — ZLSPR · ZLSCH · ZFBDT · ZBD1T |
| 업무 영역 | 재무회계(FI-AP) · 자금 |
| Namespace | zui5.apblock |
| 셸 구조 | 조회조건 영역(우측 조회) + 미지급 목록 + 일괄 변경 팝업 |
| 화면 수 | 조회·변경 화면 1개 + 변경 팝업 |
| 데이터 | 미결 매입채무 라인 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·거래처·지급보류로 조회하면 미지급 대상이 나옵니다 → 바꿀 라인을 선택하고 → 지급정보 변경 팝업에서 필요한 필드만 바꿉니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드는 사양서에 따라 변경 불가입니다.
- 거래처·회계연도·전표번호·통화로 기본 조건을 겁니다.
- 증빙일자·전기일자·Baseline Date 로 기간을 좁힙니다.
- 지급보류 코드로 특정 보류 건만 볼 수 있습니다.
- 조회 버튼은 조회조건 영역 오른쪽 끝에 있고, 입력필드에서 Enter 로도 조회됩니다.
- 바꿀 라인을 고르거나 전체선택을 씁니다.
- 지급정보 변경 팝업에서 바꿀 필드만 체크해 적용합니다.
- 결과는 CSV 다운로드로 내려받습니다. 변경 상태가 함께 담깁니다.
계산 규칙
지급 기일은 두 단계로 계산됩니다.
Baseline Date = ZFBDT + ZBD1T
Net Due Date = Baseline Date + 지급조건 일수
금액 = WRBTR (거래통화)
금액(원화) = DMBTR
만기 경과 Net Due Date < 기준일 → 강조 표시
보류 해제 지급보류 코드를 공란으로 → 지급 가능
지급정보를 바꾸면 Baseline Date 와 Net Due Date 를 다시 계산해 화면에 반영
바꿀 필드만 체크하게 한 이유
일괄 변경에서 모든 필드를 함께 덮어쓰면, 지급방법만 바꾸려다 기산일까지 같은 값으로 밀어 버립니다. 라인마다 원래 값이 다른데 하나로 통일되면 지급 기일이 어긋납니다. 체크한 필드만 적용하면 나머지는 각자의 값을 유지합니다.
지급보류가 걸리는 네 가지 경우
| 경우 | 상황 | 해제 시점 |
|---|---|---|
| 증빙 미비 | 세금계산서나 계약서가 없음 | 증빙 수령 후 해제 |
| 금액 확인 중 | 청구 금액에 이견 | 협의 후 해제 또는 조정 |
| 품질 문제 | 납품물에 하자 | 처리 완료 후 해제 |
| 자금 사정 | 지급 시점 조정 | 자금 확보 후 해제 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 사양서에 따라 변경 불가(읽기 전용) |
| 거래처 · 회계연도 · 전표번호 · 통화 | 선택 | 기본 조건 |
| 증빙일자 · 전기일자 · Baseline Date | 선택 | 기간 조건 |
| 지급보류 | 선택 | 보류 코드로 좁혀 보기 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 지급보류 상태 | 보류 코드와 여부. 상태 색 |
| 거래처 | 공급업체 코드와 명칭 |
| 전표번호 · 회계연도 · 항목 | 전표 식별 |
| 증빙일자 · 전기일자 | 날짜 정보 |
| Baseline Date | ZFBDT + ZBD1T |
| Net Due Date | Baseline + 지급조건 일수. 경과 시 강조 |
| 지급조건 · 할인일수 | 결제 조건 |
| 지급방법 | 이체 · 수표 등 |
| 통화 · 금액 · 원화환산 | 채무 금액 |
| 계정 · 적요 | 계정과 설명 |
| 입력자 | 사번과 이름 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
FBL1N | 공급업체 개별항목 | 지급 필드 일괄 변경을 추가 |
FB02 | 전표 변경 | 건별 변경을 다건으로 |
FI_DOCUMENT_CHANGE | 전표 필드 변경 함수 | 변경 실행 |
BSIK | 미결 매입채무 | 조회 원천 |
T042Z | 지급방법 마스터 | 지급방법 목록 |
USR21 · ADRP | 사용자 마스터 | 입력자 이름 |
도입 시 확인이 필요한 부분
지급보류 해제 권한을 누구에게 줄지가 중요합니다. 일괄로 풀 수 있으면 편하지만 실수나 남용 여지도 커집니다. 금액 기준으로 권한을 나누거나 변경 이력을 남겨 나중에 확인할 수 있게 해야 합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCAPBLOCK'
@EndUserText.label: '미지급 대상 조회 (Z)'
define view Z_C_AP_PAYMENT_BLOCK
as select from bsik as Item
inner join bkpf as Header on Item.bukrs = Header.bukrs
and Item.belnr = Header.belnr
and Item.gjahr = Header.gjahr
left outer join lfa1 as Vendor on Item.lifnr = Vendor.lifnr
left outer join t042z as PayMth on Item.zlsch = PayMth.zlsch
{
key Item.bukrs, key Item.belnr, key Item.gjahr, key Item.buzei,
Item.lifnr, Vendor.name1 as VendorName,
Header.bldat, Header.budat,
Item.zfbdt as BaselineBase,
Item.zbd1t as DiscountDays,
Item.zterm, Item.zlsch, Item.zlspr,
PayMth.text1 as PayMethodText,
Item.waers, Item.wrbtr, Item.dmbtr,
Item.hkont, Item.sgtxt, Item.usnam
// Baseline Date = ZFBDT + ZBD1T
// Net Due Date = Baseline + 지급조건 일수 (소비 뷰에서 계산)
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 목록 · 요약 |
| 조회조건 | sap.m.Input · sap.m.DatePicker — 우측 끝에 조회 |
| 목록 | sap.ui.table.Table — 다중 선택, 전체선택 |
| 변경 팝업 | sap.m.Dialog — 필드별 체크박스와 입력 |
| 변경 표시 | 바뀐 라인을 목록에서 구분 |
| 요약 | 보류 건수·금액을 상단에 표시, 변경 시 재계산 |
Baseline Date 기본값을 Net Due Date 로 둔 이유
기산일을 바꾸는 이유는 대개 지급 시점을 미루기 위해서입니다. 그럴 때 기준이 되는 날은 원래 지급 기일입니다. 팝업을 열었을 때 선택 라인의 Net Due Date 가 채워져 있으면 거기서부터 조정하게 되어 입력이 줄어듭니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.apblock) · ko 로케일 |
view/Main.view.xml | 조회조건 · 목록 · 요약 |
controller/Main.controller.js | 조회 · 일괄 변경 · 기일 재계산 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 일자 · 보류 상태 포맷터 |
localdata/apblock.json | 미결 매입채무 라인 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| Baseline Date = ZFBDT + ZBD1T (전 라인) | 통과 |
| Net Due Date = Baseline + 지급조건 일수 | 통과 |
| 변경 후 기일이 다시 계산되어 반영 | 통과 |
| 체크하지 않은 필드는 원래 값 유지 | 통과 |
| 보류 해제 시 요약 건수·금액 재계산 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 선택 → 변경 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
보류를 풀면 바로 지급되나요?
지급 실행 대상에 포함될 뿐 바로 나가지는 않습니다. 다음 지급 실행에서 처리되므로 실행 전에 다시 확인할 기회가 있습니다.
Baseline Date 를 바꾸면 무엇이 달라지나요?
Net Due Date 가 함께 밀려 지급 시점이 늦춰집니다. 현금할인 기한도 기산일 기준이라 할인 조건이 있으면 영향을 확인해야 합니다.
여러 건을 한꺼번에 바꿔도 안전한가요?
체크한 필드만 적용되므로 나머지 값은 유지됩니다. 다만 선택 범위를 잘못 잡으면 의도하지 않은 건까지 바뀌므로 변경 표시로 결과를 확인해야 합니다.
SAP 표준 기능과 어떻게 이어지나요?
변경은 표준 전표 변경 함수가 수행하므로 데이터는 표준 구조 그대로입니다. 이 화면은 건별 변경을 다건으로 묶고 기일 재계산을 즉시 보여 주는 확장입니다.