SAP 거래처 은행계좌 변경 이력 — 바뀐 직후 돈이 나갔는가
거래처 마스터의 계좌 정보 변경 이력을 모으고, 변경 직후 지급이 있었는지로 위험도를 표시하는 부정방지 화면입니다.
거래처 계좌가 바뀌는 일은 흔합니다. 은행을 옮기거나 법인 계좌를 정리하면 바뀝니다. 문제는 바뀐 직후에 큰 금액이 나갈 때입니다.
계좌 변경을 가장한 사기는 이 시점을 노립니다. 변경 자체는 정상 처리로 보이고, 지급도 정상 절차를 거칩니다. 둘을 따로 보면 아무 이상이 없습니다. 표준 변경문서 구조를 그대로 이어받아 변경과 지급을 연결해 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 변경문서 — 변경 문서번호(
ChangeDocNo)와 변경 전/후 값 구조 - 거래처 유형 — 매입처(AP) · 매출처(AR) 구분(
PartnerType) - 변경 필드 — 은행키 · 계좌번호 · 예금주명 등(
FieldName) - 변경 주체 — 변경자(
ChangedBy)와 변경 일시 - 지급 데이터 — 변경 이후 지급 전표와 금액
| 항목 | 내용 |
|---|---|
| 대응 T-code | XK04 · FK04 (거래처 변경 이력) |
| 업무 영역 | 재무회계(FI) · 내부통제 · 부정방지 |
| Namespace | zui5.bankchg |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 변경 이력, 행 선택 시 근접 지급 내역 |
| 화면 수 | 조회 화면 1개 + 지급 상세 |
| 데이터 | 계좌 변경 66건 · 지급 14건 |
| 성격 | 조회형(Read-Only) — 마스터 변경은 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·거래처유형·기간으로 조회하면 계좌 변경 이력이 나옵니다 → 위험도가 높은 건을 먼저 보고 → 행을 눌러 변경 직후 지급 내역을 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 변경일자 범위를 지정합니다.
- 거래처유형으로 매입처와 매출처를 나눕니다. 지급 위험은 매입처가 큽니다.
- 변경필드로 계좌번호·은행키 등을 추릴 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 위험도가 높은 건부터 확인합니다. 변경 직후 지급이 있었던 건입니다.
- 행을 선택하면 지급 내역이 열립니다. 금액과 시차를 확인합니다.
- 결과는 CSV 다운로드로 내려받아 내부통제 점검 자료로 씁니다.
위험도 판정 규칙
변경 자체가 아니라 변경과 지급의 조합을 봅니다.
계좌 변경 후 지급까지 시차 = 지급일 − 변경일
변경만 있고 지급 없음 → 낮음 — 기록만
변경 후 지급 있음 · 시차 김 → 보통 — 통상 절차로 확인
변경 후 지급 있음 · 시차 짧음 → 높음 — 별도 경로로 확인 필요
시차 짧고 금액 큼 → 최고 — 즉시 확인
대상 필드 은행키 · 계좌번호 · 예금주명 등 자금 경로 필드
시차와 금액을 함께 보는 이유
계좌 변경은 매달 수십 건 생깁니다. 전부 확인하면 통제가 형식이 되고, 아무것도 안 보면 사고가 납니다. 변경 후 짧은 시간 안에 큰 금액이 나간 건만 걸러 내면 확인 대상이 월 몇 건으로 줄어 실제로 검증이 이뤄집니다.
계좌 변경 점검 4단계
| 단계 | 내용 | 결과 |
|---|---|---|
| ① 변경 감지 | 마스터 변경문서 수집 | 변경 이력 |
| ② 지급 연결 | 변경 이후 지급 조회 | 근접 지급 내역 |
| ③ 위험도 산정 | 시차와 금액으로 등급 부여 | 우선순위 |
| ④ 확인 | 전화 등 별도 경로로 검증 | 확인 기록 |
④는 시스템 밖의 절차입니다. 메일이나 문서로만 확인하면 같은 경로가 위조됐을 수 있습니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 회사코드 |
변경일자 ChangeDate | 필수 | 기간 From~To |
거래처유형 PartnerType | 선택 | AP 매입처 / AR 매출처 |
거래처 PartnerCode | 선택 | 코드·명칭 |
변경필드 FieldName | 선택 | 계좌번호 · 은행키 등 |
| 위험도 | 선택 | 높음 / 보통 / 낮음 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
변경문서번호 ChangeDocNo | 변경 식별자 |
거래처유형 PartnerType · PartnerTypeText | 매입처 / 매출처 |
거래처 PartnerCode · PartnerName | 코드와 명칭 |
회사코드 Bukrs · BukrsText | 귀속 법인 |
변경일자 ChangeDate · 시각 ChangeTime | 변경 시점 |
변경자 ChangedBy · ChangedByName | 누가 바꿨는지 |
변경필드 FieldName · FieldNameText | 무엇을 바꿨는지 |
| 변경 전 값 · 변경 후 값 | 계좌번호 등 실제 값 |
| 위험도 | 시차·금액 기반 등급. 상태 색 |
| 근접 지급 | 변경 후 지급 건수와 금액 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
XK04 · FK04 | 거래처 변경 이력 조회 | 지급과 연결해 위험도 산정 |
CDHDR · CDPOS | 변경문서 헤더와 항목 | 변경 이력 원천 |
LFBK · KNBK | 거래처 은행 정보 | 계좌 필드 |
REGUH | 지급 실행 헤더 | 근접 지급 확인 |
LFA1 · KNA1 | 거래처 마스터 | 거래처 명칭 |
도입 시 확인이 필요한 부분
은행 정보 필드의 변경문서 기록이 켜져 있어야 이력이 남습니다. 데이터 요소별로 설정되므로 계좌번호는 기록되는데 예금주명은 안 되는 경우가 생깁니다. 또 위험도 기준(시차 며칠, 금액 얼마)은 회사 통제 정책에 맞춰 정해야 합니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCBANKCHG'
@EndUserText.label: '거래처 은행계좌 변경 이력 (Z)'
define view Z_C_BANK_ACCOUNT_CHANGE
as select from cdhdr as Header
inner join cdpos as Item on Header.objectclas = Item.objectclas
and Header.objectid = Item.objectid
and Header.changenr = Item.changenr
left outer join lfa1 as Vendor on Header.objectid = Vendor.lifnr
{
key Header.changenr as ChangeDocNo,
key Item.tabname,
key Item.fname as FieldName,
Header.objectid as PartnerCode,
Vendor.name1 as PartnerName,
Header.username as ChangedBy,
Header.udate as ChangeDate,
Header.utime as ChangeTime,
Item.value_old as OldValue,
Item.value_new as NewValue
// 위험도는 변경 이후 지급(REGUH)을 조인해 시차·금액으로 산정
}
where Item.tabname in ( 'LFBK', 'KNBK' )
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 변경 이력 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 이력 테이블 | sap.m.Table — 변경 전/후 값을 인접 배치 |
| 위험도 표시 | sap.m.ObjectStatus — 높음 / 보통 / 낮음 |
| 상세 화면 | sap.m.Dialog — 근접 지급 내역 |
변경 전후 값을 그대로 보여 주는 이유
계좌번호가 바뀌었다는 사실만으로는 판단이 안 됩니다. 같은 은행 안에서 번호만 살짝 바뀌었는지, 아예 다른 은행으로 옮겨졌는지에 따라 위험이 다릅니다. 실제 값을 나란히 두면 확인 전화를 걸기 전에 이미 상당 부분 판단이 섭니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.bankchg) · ko 로케일 |
view/Main.view.xml | 조회조건과 변경 이력 테이블 |
controller/Main.controller.js | 조회 · 위험도 산정 · 지급 연결 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 일시 · 위험도 색 포맷터 |
localdata/bankchanges.json | 계좌 변경 66건 |
localdata/paymentdata.json | 지급 14건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 위험도 판정 = 시차·금액 기준 재계산값과 일치 | 통과 |
| 근접 지급은 변경일 이후 전기일만 포함 | 통과 |
| 변경 전/후 값이 모두 존재 | 통과 |
| 거래처유형과 거래처 코드 체계 정합 | 통과 |
| 거래처 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 상세 실동작 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
모든 계좌 변경을 확인해야 하나요?
현실적으로 어렵습니다. 그래서 변경 후 짧은 시간 안에 큰 금액이 나간 건으로 좁힙니다. 월 몇 건 수준으로 줄어야 실제로 확인 절차가 지켜집니다.
확인은 어떻게 하나요?
메일이나 팩스가 아니라 기존에 알고 있던 전화번호로 연락합니다. 변경 요청이 온 경로로 확인하면 그 경로 자체가 위조됐을 때 아무 의미가 없습니다.
매출처 계좌 변경도 위험한가요?
지급 위험은 낮습니다. 다만 환불이나 과오납 반환이 나가는 경우가 있어 함께 봅니다. 위험도 산정은 매입처 쪽이 훨씬 중요합니다.
SAP 표준 기능과 어떻게 이어지나요?
마스터 변경은 표준이 변경문서로 기록합니다. 이 화면은 그 기록 중 자금 경로 필드만 골라 지급 데이터와 연결하고, 시차와 금액으로 위험도를 매겨 확인 대상을 좁히는 확장입니다.