자금 회계

은행 거래 명세 자동 분개 점검 — 적요 규칙으로 상대 계정을 정하고 미기표·충돌·중복을 가려내는 월마감 자금 회계

적요 규칙표 · 우선순위와 충돌 판정 · 장부 기표와의 대조 · 미기표 제안 분개 · 계좌 잔액 대사 · 스스로 하는 정합성 대사 — 소개 영상과 실제 화면 9종, 그리고 CDS 코드까지

소개 영상블로그 목차 순서대로 · 자막 포함8개 장면처음 화면 → 규칙 적중 → 계좌별 대사 → 제안 분개 → 거래 상세 → 대사 결과 → 요약

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

월말 자금팀의 일은 은행 거래 명세를 받아 한 줄씩 적요를 읽고 어느 계정으로 분개할지 정하는 것에서 시작합니다. 거래가 수십 건일 때는 눈으로 되지만, 입금자명이 제각각이고 같은 거래처가 여러 계좌로 나뉘고 외화 입금까지 섞이면 “이 건은 기표했나, 계정은 맞나, 같은 거래가 두 번 들어온 것은 아닌가”를 사람이 대조하게 됩니다. 이 앱은 그 대조를 규칙표 한 장으로 옮겨, 규칙이 정한 상대 계정과 제안 분개, 장부 기표와의 차이를 한 화면에 보여 줍니다.

한 줄 요약 — 이 앱은 분개를 대신 기표하지 않습니다. 은행 명세의 적요를 회사가 정한 규칙표에 대어 상대 계정 후보와 차변·대변 제안을 만들고, 규칙끼리 부딪치는 거래 · 어느 규칙에도 걸리지 않는 거래 · 장부와 다르게 기표된 거래 · 중복으로 보이는 거래를 점검 코드로 가려 줍니다. 실제 기표와 최종 판단은 표준 T-code 와 회사가 합니다.

핵심 포인트 여섯 가지

포인트고객이 얻는 것지금 방식이라면
① 규칙이 한 곳에 있다키워드 · 입출금 구분 · 상대 계정 · 우선순위를 규칙표 한 장으로 관리합니다. 규칙이 몇 번 적중했고 몇 번 충돌했는지가 규칙별로 집계됩니다.담당자 머릿속과 엑셀 메모에 흩어져 사람마다 계정이 달라집니다.
② 부딪치는 규칙을 먼저 보여 준다같은 우선순위의 규칙이 서로 다른 계정을 가리키면 계정을 임의로 고르지 않고 충돌(점검 필요)로 올립니다.먼저 걸린 규칙이 이기는 줄도 모르고 지나갑니다.
③ 장부와 견준다규칙이 정한 계정과 이미 기표된 계정을 나란히 놓아, 다르게 기표된 거래에는 정정 제안 분개가 함께 나옵니다.기표가 끝난 뒤 시산표가 이상할 때에야 되짚습니다.
④ 미기표 거래에 제안 분개장부 기표 번호가 비어 있는 거래마다 차변 · 대변 줄이 만들어지고, 외화는 원화 환산 금액으로만 합산합니다.미기표 건수와 금액을 엑셀로 따로 셉니다.
⑤ 계좌 잔액과 장부 잔액 대사기초 + 입금 − 출금 = 기말, 장부 잔액 ± 미기표 순액을 계좌마다 맞춰 보여 줍니다.은행 잔액 확인서와 장부를 손으로 맞춥니다.
⑥ 숫자가 맞는지 스스로 대사한다정합성 대사식 8건을 매번 계산해 좌변 · 우변 · 차이 건수를 보여 줍니다. 차이가 있으면 화면이 먼저 알립니다.“이 합계 맞아?”를 회의에서 확인합니다.

사례로 보는 효과 — 80건 가운데 사람이 봐야 할 건

샘플 은행 거래 80건(2026년 9월, 가상 회사 2곳 · 가상 계좌 6개)을 규칙표 15개(회사 1000)와 14개(회사 2000)에 대어 보면, 60건은 정상입니다(40건은 규칙과 장부 기표가 같고, 20건은 규칙이 계정을 정해 기표만 하면 되는 분개 제안입니다). 나머지 점검 필요 12건 · 확인 필요 8건이 사람이 볼 거래이고, 장부 기표 번호가 비어 있는 미기표는 모두 29건입니다. 80건을 처음부터 읽는 일이 20건을 확인하는 일로 줄어드는 셈입니다. 남은 20건은 아래 네 가지 모양입니다.

적요에 규칙이 없는 입금 — “홍길동 송금”처럼 어느 규칙에도 걸리지 않는 입금은 계정을 정하지 않고 확인 필요(J04)로 둡니다. 임의로 가계정에 넣지 않습니다.

두 규칙이 부딪치는 거래 — 같은 우선순위의 규칙이 서로 다른 계정을 가리키면 점검 필요(J02). 규칙의 키워드나 우선순위를 손보거나 계정을 직접 지정합니다.

장부 계정이 규칙과 다른 거래 — 이미 기표된 계정이 규칙 제안과 다르면 점검 필요(J03). 규칙이 옳은지 기표가 옳은지는 회사가 판단하며, 정정 제안 분개가 함께 나옵니다.

중복으로 보이는 거래 — 같은 계좌 · 일자 · 금액 · 적요가 둘 이상이면 점검 필요(J05). 은행 명세가 중복 수신되었는지 확인합니다.

점검 필요와 확인 필요는 단정이 아니라 사람이 볼 자리입니다. 회계 처리나 세무상 결론은 이 화면이 내리지 않고, 회사와 감사인 · 세무 대리인이 확인합니다.

점검 코드 — 한 거래가 어떻게 가려지나

판정은 위에서부터 차례로 적용하며, 한 거래에는 하나의 코드만 붙습니다(J04 > J02 > J03 > J05 > J01 > J00).

코드판정 조건결과사용자 조치
J00규칙이 정한 상대 계정과 장부 기표 계정이 같다정상조치 없음
J01규칙은 정해지지만 장부 기표 번호가 없다정상(분개 제안)제안 분개 탭에서 차변 · 대변을 확인하고 표준 화면에서 기표
J02가장 높은 우선순위 규칙이 둘 이상이고 서로 다른 계정을 가리킨다점검 필요키워드 · 우선순위를 손보거나 계정을 직접 지정
J03장부 기표 계정이 규칙 제안 계정과 다르다점검 필요규칙과 기표 중 무엇이 옳은지 확인, 정정 제안 참고
J04적요가 어느 규칙의 키워드에도 걸리지 않았다확인 필요규칙을 추가하거나 수동 분개로 둘지 정함
J05같은 계좌 · 일자 · 금액 · 적요 거래가 둘 이상점검 필요명세 중복 수신 여부 확인

도입하면 달라지는 것

  • 분개 기준의 일원화 — 담당자마다 다르던 “이 적요는 이 계정”이 규칙표 하나로 모입니다. 담당자가 바뀌어도 기준이 남습니다.
  • 월마감 확인 시간 — 전 건을 읽는 대신 점검 코드가 붙은 거래만 봅니다.
  • 기표 누락과 오기표의 조기 발견 — 미기표와 계정 상이 거래가 마감 전에 목록으로 드러납니다.
  • 규칙의 품질 관리 — 한 번도 적중하지 않은 규칙(K02)과 충돌에 자주 관여하는 규칙(K01)이 보여 규칙표를 정리할 근거가 생깁니다.

이런 회사에 맞습니다

매월 은행 거래 명세를 SAP 로 올려 은행 계정을 정리하면서도, 명세 후처리 단계에서 상대 계정을 사람이 고르고 있는 자금팀 · 재경팀에 맞습니다. 하우스 뱅크 계좌가 여럿이고 외화 계좌가 섞여 있어 대조 작업이 늘어난 회사, 그리고 분개 기준을 문서가 아닌 시스템에 남기고 싶은 회사에 특히 그렇습니다.

숫자를 믿을 수 있는가 — 정합성 대사 8건

이 화면에서 가장 비싼 질문은 “합계가 맞나”입니다. 그래서 만드는 쪽에서 대사식을 먼저 세우고 전수로 돌려 결과를 화면의 대사 결과 탭에 그대로 보여 줍니다. 아래는 샘플 자료의 결과이며, 검사 건수 합계 225건에 차이는 0건입니다. 샘플은 가상 은행 · 가상 거래처 · 가정 환율로 만든 것입니다.

번호대사 항목검사 건수차이 건수
01원화 계좌 잔액 대사: 기초 + 입금 − 출금 = 기말40
02외화(USD) 계좌 잔액 대사: 기초 + 입금 − 출금 = 기말20
03원화 계좌: 장부 잔액 ± 미기표 = 은행 잔액40
04외화(USD) 계좌: 장부 잔액 ± 미기표 = 은행 잔액20
05거래 건수 = 점검 코드별 건수 합계800
06규칙표 적용 건수 = 규칙 확정 거래 건수290
07제안 분개 차변 합계 = 대변 합계240
08입금 건수 + 출금 건수 = 전체 거래 건수800

점검 코드가 붙은 거래(J02 · J03 · J04 · J05)는 점검 화면이 보여 주려고 일부러 넣은 거래이며 대사 차이와는 별개입니다. 두 숫자를 섞어 읽지 않도록 화면에서도 따로 적었습니다.

실행 화면

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

처음 열었을 때

처음 연 화면 — 조회조건 · 요약 · 거래 명세
처음 연 화면 — 조회조건 · 요약 · 거래 명세 — 맨 위 안내문 아래에 조회조건, 그 아래에 요약 지표, 다시 아래에 다섯 개 탭이 세로로 쌓입니다. 처음 열면 2026년 9월이 채워진 채 한 번 조회됩니다.

조회 버튼은 조회조건 영역 안, 입력란들의 가장 오른쪽에 있고 초기화 버튼이 바로 옆에 있습니다. 입력란에서 Enter 키를 눌러도 조회됩니다. 요약 지표는 점검한 거래 80건, 입금 · 출금 합계, 미기표 29건, 제안 분개 차변 합계, 점검 필요 12건, 확인 필요 8건, 대사 차이 0건 순서입니다. 금액은 원 단위이고 외화 거래는 거래일 가정 환율로 환산한 원화이며, 요약의 합계만 백만원 단위입니다.

다섯 탭 — 같은 거래를 다섯 방향에서

탭마다 서로 다른 질문에 답합니다. 거래 명세는 “한 건씩 어떻게 판정됐나”, 규칙 적중은 “규칙표가 건강한가”, 계좌별 대사는 “잔액이 맞나”, 제안 분개는 “무엇을 기표하면 되나”, 대사 결과는 “이 화면의 숫자를 믿어도 되나”입니다.

규칙 적중 탭 — 규칙별 적중 · 적용 · 충돌
규칙 적중 탭 — 규칙별 적중 · 적용 · 충돌 — 규칙표의 키워드 · 입출금 구분 · 상대 계정 · 우선순위와 함께, 이번 기간에 몇 건에 걸렸고(적중) 몇 건에서 실제로 쓰였고(적용) 몇 건에서 다른 규칙과 부딪쳤는지(충돌)가 규칙마다 한 줄로 나옵니다.

한 번도 걸리지 않은 규칙은 “확인 필요”, 충돌에 관여한 규칙은 “점검 필요”로 표시됩니다. 규칙표를 정리할 때 어디부터 볼지를 정해 주는 탭입니다. 회사 2000 은 임차료 규칙이 없어 규칙이 14개이며, 회사별로 규칙표가 다를 수 있다는 점을 일부러 샘플에 넣었습니다.

계좌별 대사 탭 — 은행 잔액과 장부 잔액
계좌별 대사 탭 — 은행 잔액과 장부 잔액 — 계좌마다 기초 잔액에 입금을 더하고 출금을 빼 기말을 구하고, 장부 잔액에 미기표 순액을 더하거나 뺀 값과 견줍니다. 통화가 다른 계좌는 통화별로 따로 보입니다.

장부 잔액과 기말의 차이는 아직 기표되지 않은 거래의 순액과 같아야 합니다. 화면은 그 등식을 계좌마다 확인해 점검 코드(A00 · A01 · A02)로 보여 줍니다. 계좌번호는 앞뒤 일부만 보이는 가상 형식입니다.

제안 분개 탭 — 미기표와 정정 제안
제안 분개 탭 — 미기표와 정정 제안 — 미기표 거래마다 차변 · 대변 두 줄, 장부 계정이 규칙과 다른 거래마다 정정 제안이 나옵니다. 입금은 은행 계정 차변 · 상대 계정 대변, 출금은 그 반대입니다.

이 탭의 줄은 기표 후보일 뿐이며 실제 기표는 표준 화면에서 회사가 합니다. 외화 거래는 외화 금액과 원화 환산 금액이 함께 보이고, 차변 합계는 원화 환산 금액으로만 더합니다.

대사 결과 탭 — 정합성 대사식 8건
대사 결과 탭 — 정합성 대사식 8건 — 이 화면의 숫자가 서로 맞는지를 화면 스스로 계산한 결과입니다. 좌변 · 우변 · 검사 건수 · 차이 건수 · 최대 차이가 한 줄씩 나옵니다.

거래 합계와 계좌 합계, 제안 분개의 차변 · 대변 합계, 규칙 적중 건수와 거래 건수 같은 식이 들어 있습니다. 차이가 하나라도 생기면 요약 지표의 대사 차이 건수가 먼저 바뀌므로, 숫자를 의심하기 전에 이 탭부터 보면 됩니다.

한 건을 자세히 — 거래 상세

거래 상세 창 — 어느 규칙이 왜 이 계정을 골랐나
거래 상세 창 — 어느 규칙이 왜 이 계정을 골랐나 — 거래 명세의 행을 누르면 열립니다. 적중한 규칙 목록, 우선순위, 제안 상대 계정, 장부 기표 번호와 기표 계정, 판정 코드와 사용자 조치가 한 창에 모입니다.

“왜 이 계정이냐”는 질문에 화면 안에서 답하려고 만든 창입니다. 규칙이 둘 이상 걸렸다면 우선순위 순으로 모두 나열되어, 어느 규칙이 이겼고 어느 규칙과 부딪쳤는지 보입니다.

조회조건과 좁은 화면, 오류 안내

점검 코드로 거르기 — 충돌 거래만 모아 보기
점검 코드로 거르기 — 충돌 거래만 모아 보기 — 점검 코드를 J02(규칙 충돌)로 고르면 그 코드가 붙은 거래 4건만 남습니다. J · K · A 로 시작하는 코드는 해당 종류의 탭에만 적용되어, J 코드는 거래 명세와 제안 분개 탭에만 걸리고 규칙 · 계좌 탭은 그대로 둡니다.

코드의 첫 글자가 거래(J) · 규칙(K) · 계좌(A) 중 어느 탭에 해당하는지를 정합니다. 그래서 J 코드를 골랐다고 규칙 탭이나 계좌 탭이 텅 비는 일이 없습니다. “전체”를 고르면 조건을 보내지 않습니다.

좁은 화면 — 폭이 줄어도 조회조건이 줄바꿈된다
좁은 화면 — 폭이 줄어도 조회조건이 줄바꿈된다 — 화면 폭이 줄면 조회조건이 여러 줄로 줄바꿈되고 요약 지표와 표가 그 아래로 이어집니다. 표는 가로로 스크롤됩니다.

자금팀은 회의실 화면이나 노트북에서 번갈아 보는 일이 많아 폭에 따라 깨지지 않게 했습니다. 입력란 폭은 내용에 맞게 줄이고, 조회 버튼은 줄바꿈 뒤에도 입력란 바로 옆에 붙습니다.

요청이 실패했을 때 — 이유와 다음 행동을 알려 주는 안내
요청이 실패했을 때 — 이유와 다음 행동을 알려 주는 안내 — 서비스 연결이 실패하거나 응답이 비어 있을 때, 빈 표 대신 무엇이 일어났는지와 다시 시도할 방법을 알려 주는 안내가 뜹니다.

메타데이터를 읽지 못한 경우 · 요청이 실패한 경우 · 조건에 맞는 자료가 없는 경우를 구분해 적습니다. 조건에 맞는 거래가 없는 것과 서비스가 죽은 것은 사용자에게 전혀 다른 상황이기 때문입니다.

SAP 표준 기능 확장 포인트

이 앱은 SAP 표준을 대체하지 않습니다. 은행 명세를 올리는 일, 후처리로 기표하는 일, 계정 잔액을 보는 일은 표준이 이미 잘하는 일이라 표준에 맡기고, 표준 화면에서 눈에 잘 띄지 않는 “규칙끼리의 충돌 · 규칙에 걸리지 않는 거래 · 장부와 다른 기표 · 중복”을 한 화면에서 보게 해 주는 쪽으로 만들었습니다.

표준으로 되는 것과 이 앱이 더하는 것

하고 싶은 일SAP 표준표준에서 걸리는 자리이 앱이 하는 일
은행 명세 올리기FF_5 · FF67명세 파일을 올리거나 직접 입력하는 단계까지가 표준의 몫입니다올라간 명세를 읽기만 하고 고치지 않습니다
명세 후처리와 기표FEBAN자동 분개되지 않은 항목은 사람이 항목마다 계정을 고릅니다규칙이 정한 상대 계정과 제안 분개를 후보로 보여 줍니다
규칙 충돌 확인—규칙끼리 어떻게 부딪치는지 한눈에 보는 화면이 표준에 없는 것으로 알고 있습니다(확인 필요)같은 우선순위에서 계정이 갈리면 충돌로 올립니다
계정 라인 조회FBL3N은행 계정의 항목은 보이지만 규칙과의 대조는 사람이 합니다장부 기표 계정과 규칙 제안 계정을 나란히 놓습니다
계정 잔액FS10N잔액은 보이지만 명세 기준 잔액과의 차이가 무엇 때문인지는 따로 찾아야 합니다차이를 미기표 순액으로 설명하는 대사를 계좌마다 보여 줍니다
중복 의심 거래—중복 수신된 명세는 기표 후에야 드러나는 경우가 많습니다같은 계좌 · 일자 · 금액 · 적요를 미리 모아 보여 줍니다

T-code 별 연계 지점

이 앱이 표준 거래의 어느 자리를 이어받는지를 적었습니다. 운영에 올릴 때 “기존 후처리 화면을 없애야 하느냐”는 질문이 나오는데, 없애지 않고 둡니다. 기표와 감사 대응은 표준 거래가 맡는 편이 안전합니다.

T-code이름연계
FF_5 / FF67전자 은행 명세 import / 수작업 은행 명세이 앱이 읽는 은행 거래 한 줄이 만들어지는 자리입니다. 적요(사용 목적)와 금액, 일자가 여기서 정해지므로, 적요를 규칙에 맞추려면 이 단계의 명세 품질이 먼저입니다.
FEBAN은행 명세 후처리자동 분개되지 않은 항목이 모이는 자리입니다. 이 앱의 제안 분개는 이 화면에서 계정을 고를 때 참고하는 후보이며, 기표는 여기서 합니다.
FBL3NG/L 계정 라인 아이템 조회장부 기표 번호와 상대 계정을 원천에서 확인하는 자리입니다. 이 앱이 보여 주는 장부 계정이 맞는지 여기서 대조합니다.
FS10NG/L 계정 잔액 조회은행 계정의 장부 잔액을 맞춰 보는 자리입니다. 계좌별 대사 탭의 장부 잔액은 이 숫자와 맞는지 확인합니다.
FB03전표 조회기표 번호에서 전표를 열어 보는 자리입니다. 사내 포털에서 열 수 있으면 링크로 이어 두고, 아니면 번호를 복사해 씁니다.

이 앱이 하지 않는 일

  • 기표 — 제안 분개는 후보이며 전표를 만들지 않습니다.
  • 규칙의 정답 판정 — 규칙이 옳은지 기표가 옳은지는 회사가 판단합니다. 화면은 “다르다”는 사실까지만 알립니다.
  • 회계 · 세무 결론 — 어느 계정이 맞는지, 세무상 어떻게 처리되는지는 회사와 감사인 · 세무 대리인이 확인합니다(확인 필요).

확장 포인트

도입할 때 손이 가는 곳은 셋입니다. 첫째 규칙표 — 키워드와 우선순위, 상대 계정을 회사가 정합니다. 둘째 환율 — 샘플은 거래일 기준 가정 환율을 쓰며, 운영에서는 회사가 정한 환율 유형을 따라 원화를 환산해야 합니다(표준 환산 방식과의 대응은 확인 필요). 셋째 점검 코드의 조치 문구 — 회사의 업무 용어에 맞춰 고칩니다.

CDS 구성

이 사례의 화면은 샘플 80건을 브라우저가 들고 판정합니다. 데모라서 되는 일이고, 운영 데이터에서는 판정을 서비스(CDS)로 내립니다. 아래는 그때 만드는 뷰들을 레이어 순서대로 적은 것입니다.

코드는 스케치입니다. 필드 이름과 표준 테이블 · 뷰 이름은 릴리스와 환경에 따라 다르므로 그대로 붙여 넣기 전에 View Browser(F2170) 로 실제 이름을 확인해야 합니다. 확인이 필요한 자리는 주석에 적어 두었습니다. 규칙표는 고객이 정하는 테이블이며, 표준 검색 문자열 규칙과의 대응은 확인 필요입니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준ZPJV_RULEMAP적요 키워드 → 상대 계정 · 우선순위 규칙표규칙은 회사가 고쳐 쓰므로 코드에 박지 않고 테이블로 둡니다.
기본ZI_BankLine명세 항목 + 헤더 한 줄(일자 · 적요 · 금액 · 통화)명세 원천을 한 번만 읽도록 모읍니다.
판정ZI_BankRuleHit적요에 규칙 키워드가 들어 있는 (거래, 규칙) 쌍한 거래가 여러 규칙에 걸리는 것을 그대로 남겨 충돌을 셉니다.
판정ZI_BankJudge우선순위 최소 규칙 선택, 충돌 · 미적중 판정판정을 화면이 아니라 뷰에서 한 번만 정의합니다.
대조ZI_BankBookMatch명세 거래와 장부 기표(상대 계정) 연결규칙 제안과 실제 기표를 견주는 근거입니다.
대사ZI_BankAcctRecon계좌별 기초 · 입금 · 출금 · 기말 · 장부 잔액잔액 대사를 화면 밖에서 검증할 수 있게 합니다.
쿼리ZC_BankJvProposal미기표 · 정정 거래의 차변 · 대변 제안화면과 표준 분석 도구가 같은 제안을 읽습니다.
권한ZI_BANKLINE (DCL)회사코드 권한명세를 읽는 자리에 걸어야 합계로 새지 않습니다.

① 규칙표

모든 판정이 이 표에서 갈립니다. 키워드가 어떤 적요를 잡고 어느 계정으로 보내는지, 둘이 겹치면 누가 이기는지를 정하는 자리라 도입에서 가장 먼저 합의해야 하는 항목입니다. 유효기간을 둔 이유는 규칙을 바꿔도 과거 판정이 흔들리지 않게 하기 위해서입니다.

" ────────────────────────────────────────────────────────────────
"  ZPJV_RULEMAP — 적요 키워드 → 상대 계정 규칙표 (투명 테이블)
"  회사가 정하는 표이므로 코드에 박지 않고 전송(TR)으로 옮긴다.
"  Priority 숫자가 작을수록 먼저 이긴다. 같은 숫자에서 계정이 갈리면 충돌.
" ────────────────────────────────────────────────────────────────
@EndUserText.label : '은행 명세 분개 규칙표'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zpjv_rulemap {
  key mandt    : mandt not null;
  key bukrs    : bukrs not null;          " 회사코드
  key rule_no  : abap.char(4) not null;   " R01 ...
  keyword      : abap.char(40);           " 적요에 들어 있는지 볼 문구
  dir          : abap.char(1);            " I 입금 · O 출금 · B 둘 다
  gl_acct      : saknr;                   " 상대 계정
  priority     : abap.int4;
  valid_from   : abap.dats;
  valid_to     : abap.dats;
}

② 은행 거래 한 줄

명세 헤더와 항목을 한 번 읽어 일자 · 적요 · 금액 · 통화를 한 줄로 모읍니다. 이후 모든 뷰는 이 뷰만 봅니다. 적요가 어느 필드에 실리는지는 명세 형식에 따라 다르므로 확인이 필요합니다.

@AbapCatalog.viewEnhancementCategory : [#NONE]
@AccessControl.authorizationCheck    : #NOT_REQUIRED
@EndUserText.label                   : '은행 거래 한 줄(스케치)'
define view entity ZI_BankLine
  as select from febep as i
    inner join   febko as h
      on h.kukey = i.kukey
{
  key h.bukrs                       as CompanyCode,
  key i.kukey                       as StatementKey,
  key i.esnum                       as ItemNo,
      h.hbkid                       as HouseBank,
      h.hktid                       as AccountId,
      i.budat                       as PostingDate,
      i.vwezw                       as Memo,       " 적요(사용 목적) — 필드는 확인 필요
      i.kwaer                       as Currency,
      @Semantics.amount.currencyCode : 'Currency'
      i.kwbtr                       as Amount
}

③ 규칙 적중

적요에 규칙 키워드가 들어 있는 (거래, 규칙) 쌍을 모두 남깁니다. 여기서 우선순위로 하나만 고르면 충돌이 사라지므로 일부러 거르지 않습니다.

@EndUserText.label : '규칙 적중 쌍(스케치)'
define view entity ZI_BankRuleHit
  as select from ZI_BankLine as l
    inner join   zpjv_rulemap  as r
      on  r.bukrs = l.CompanyCode
      and instr( l.Memo, r.keyword ) > 0          " 문구 포함 여부
      and l.PostingDate between r.valid_from and r.valid_to
{
  key l.CompanyCode,
  key l.StatementKey,
  key l.ItemNo,
  key r.rule_no       as RuleNo,
      r.priority      as Priority,
      r.gl_acct       as ProposedAccount,
      r.dir           as RuleDirection
}

④ 판정 — 우선순위 · 충돌 · 미적중

가장 작은 우선순위만 남기고, 그 우선순위에서 상대 계정이 둘 이상이면 충돌로 표시합니다. 적중이 하나도 없으면 미적중입니다. 계정을 임의로 고르지 않는다는 원칙이 이 뷰에 들어 있습니다.

@EndUserText.label : '거래별 판정(스케치)'
define view entity ZI_BankJudge
  as select from ZI_BankLine as l
    left outer join ZI_BankBestPriority as p        " 거래별 최소 Priority
      on  p.CompanyCode  = l.CompanyCode
      and p.StatementKey = l.StatementKey
      and p.ItemNo       = l.ItemNo
{
  key l.CompanyCode,
  key l.StatementKey,
  key l.ItemNo,
      p.BestPriority,
      p.AccountCount,                                " 그 우선순위의 서로 다른 계정 수
      case
        when p.BestPriority is null then 'J04'       " 어느 규칙에도 안 걸림 — 확인 필요
        when p.AccountCount > 1     then 'J02'       " 규칙 충돌 — 점검 필요
        else                             'MATCH'     " 장부 대조는 다음 뷰에서
      end                           as JudgeStep
}

⑤ 장부 기표와 대조

명세 거래에 짝이 되는 장부 기표를 붙이고, 규칙 제안 계정과 견주어 J00 · J01 · J03 을 정합니다. 장부에서 어느 라인을 “짝”으로 볼지는 환경에 따라 다르므로 아래 조건은 틀로만 읽어야 합니다(확인 필요).

@EndUserText.label : '명세와 장부 기표 대조(스케치)'
define view entity ZI_BankBookMatch
  as select from ZI_BankJudge as j
    left outer join I_JournalEntryItem as b          " 은행 계정 라인의 상대 라인
      on  b.CompanyCode = j.CompanyCode
      and b.DocumentReferenceID = j.StatementKey     " 연결 키 — 환경별 확인 필요
{
  key j.CompanyCode, key j.StatementKey, key j.ItemNo,
      b.AccountingDocument         as BookDocument,
      b.GLAccount                  as BookAccount,
      case
        when j.JudgeStep <> 'MATCH'          then j.JudgeStep
        when b.AccountingDocument is initial then 'J01'   " 미기표 → 분개 제안
        when b.GLAccount = j.ProposedAccount then 'J00'   " 장부와 일치
        else                                      'J03'   " 장부 계정 상이 → 점검 필요
      end                          as CheckCode
}

⑥ 계좌별 잔액 대사

기초 + 입금 − 출금 = 기말, 장부 잔액 ± 미기표 순액이 같아야 합니다. 이 등식을 뷰에서 한 번 정의하면 화면과 감사 자료가 같은 숫자를 봅니다. 통화가 다른 금액은 더하지 않으므로 통화를 키에 둡니다.

@EndUserText.label : '계좌별 잔액 대사(스케치)'
define view entity ZI_BankAcctRecon
  as select from ZI_BankBookMatch as m
{
  key m.CompanyCode,
  key m.AccountId,
  key m.Currency,                                      " 통화가 다르면 더하지 않는다
      sum( case when m.Direction = 'I' then m.Amount else 0 end ) as InAmount,
      sum( case when m.Direction = 'O' then m.Amount else 0 end ) as OutAmount,
      sum( case when m.CheckCode = 'J01'
                then case when m.Direction = 'I' then m.Amount else -m.Amount end
                else 0 end )                           as UnpostedNet
}
group by m.CompanyCode, m.AccountId, m.Currency

⑦ 제안 분개 쿼리와 권한

미기표(J01)와 장부 상이(J03) 거래마다 차변 · 대변 두 줄을 내보냅니다. 외화는 원화 환산 금액을 따로 두고, 차변 합계는 원화 환산 금액으로만 더합니다. 권한은 명세를 읽는 뷰 자리에 걸어야 집계 합계로 남의 회사 숫자가 새지 않습니다.

@EndUserText.label : '제안 분개(스케치)'
@Analytics.query : true
define view entity ZC_BankJvProposal
  as select from ZI_BankBookMatch as m
{
  key m.CompanyCode, key m.StatementKey, key m.ItemNo,
      m.CheckCode,
      case m.Direction when 'I' then m.HouseBankAccount else m.ProposedAccount end as DebitAccount,
      case m.Direction when 'I' then m.ProposedAccount else m.HouseBankAccount end as CreditAccount,
      @Semantics.amount.currencyCode : 'Currency'
      m.Amount,
      m.Currency,
      m.AmountInCompanyCurrency        " 환산 방식은 회사 정책 — 확인 필요
}
where m.CheckCode in ( 'J01', 'J03' )

" ── DCL ─────────────────────────────────────────
@EndUserText.label : '명세 조회 권한'
@MappingRole : true
define role ZI_BANKLINE {
  grant select on ZI_BankLine
    where ( CompanyCode ) = aspect pfcg_auth( F_BKPF_BUK, BUKRS, ACTVT = '03' );
}

운영 전환에서 정해야 할 것

정할 것정하지 않으면결정 주체
규칙표의 키워드 · 우선순위첫 달에 충돌과 미적중이 대부분이 되어 점검 화면이 쓰이지 않습니다자금팀
장부 기표와 명세를 잇는 키대조가 되지 않아 모든 거래가 미기표로 보입니다회계팀 · 개발
외화 환산 기준제안 분개 차변 합계가 회사 환산 방식과 달라집니다회계팀
적요 입력 규약규칙을 아무리 늘려도 미적중이 줄지 않습니다자금팀 · 은행 담당
권한 범위남의 회사 거래가 합계로 보입니다보안 · 권한
조회 기간의 상한명세가 쌓일수록 첫 조회가 느려집니다개발 · 자금팀

자주 묻는 질문

도입 상담과 데모에서 받은 질문을 정리했습니다. 규칙과 판정, 숫자와 대사, 운영과 도입 세 묶음입니다.

규칙과 판정

이 화면이 분개를 자동으로 기표합니까?

아니요. 규칙으로 읽은 결과를 후보로 보여 주는 조회 · 점검 도구입니다. 제안 분개는 전표를 만들지 않고, 실제 기표는 FEBAN 같은 표준 화면에서 회사가 합니다.

자동 기표까지 가려면 규칙이 충분히 다듬어졌는지, 잘못 기표된 건을 되돌릴 절차가 있는지부터 정해야 합니다. 이 앱은 그 앞 단계인 “규칙을 믿어도 되는지 확인하는 일”을 맡습니다.

한 거래에 규칙이 여러 개 걸리면 어떻게 됩니까?

우선순위 숫자가 가장 작은 규칙만 남깁니다. 남은 규칙이 하나이거나, 둘 이상이어도 가리키는 계정이 같다면 그 계정을 씁니다. 남은 규칙이 서로 다른 계정을 가리키면 계정을 정하지 않고 충돌(J02, 점검 필요)로 올립니다.

임의로 하나를 고르면 맞을 때도 있지만 틀릴 때는 아무도 모르게 틀립니다. 그래서 결정을 사람에게 돌려주는 쪽을 택했습니다.

적요에 규칙이 없으면 가계정에 넣나요?

넣지 않습니다. 어느 규칙에도 걸리지 않은 거래는 계정을 정하지 않고 확인 필요(J04)로 둡니다. 가계정에 넣으면 숫자는 맞아 보이지만 나중에 정리할 거래가 어디 있는지 알 수 없게 됩니다.

J04 가 많이 나오면 규칙을 늘리기 전에 적요 입력 규약부터 보는 편이 빠른 경우가 많습니다.

장부 계정과 제안 계정이 다르면 장부가 틀린 건가요?

단정하지 않습니다. 화면은 “다르다(J03, 점검 필요)”는 사실과 정정 제안 분개까지만 보여 줍니다. 규칙이 낡았을 수도 있고, 실제로 잘못 기표했을 수도 있으며, 의도해서 다른 계정을 썼을 수도 있습니다.

어느 쪽이 옳은지는 거래의 실질을 아는 회사가 판단하고, 회계 · 세무상 처리는 감사인과 세무 대리인이 확인합니다(확인 필요).

중복 거래는 어떻게 가려냅니까?

같은 계좌 · 같은 일자 · 같은 금액 · 같은 적요의 거래가 둘 이상이면 중복 의심(J05, 점검 필요)으로 올립니다. 은행 명세가 두 번 올라왔을 때를 잡으려는 것입니다.

다만 같은 날 같은 금액을 두 번 보내는 정상 거래도 있으므로 “중복이다”가 아니라 “확인해 보라”로만 표시합니다.

외화 거래의 금액은 어떻게 더합니까?

통화가 다른 금액은 그대로 더하지 않습니다. 요약의 합계와 제안 분개 차변 합계는 원화 환산 금액으로만 계산합니다. 샘플의 환산에는 거래일 기준 가정 환율을 썼습니다.

운영에서는 회사가 정한 환율 유형과 기준일을 써야 하며, 표준 환산 결과와의 대응은 확인이 필요합니다. 계좌별 대사는 통화별로 따로 계산합니다.

계좌번호는 왜 일부만 보입니까?

샘플의 계좌번호는 앞뒤 일부만 보이는 가상 형식입니다. 운영에서도 화면에 전체 계좌번호를 올리지 않는 편이 안전합니다. 화면 권한과 별개로, 캡처나 공유 과정에서 새는 일을 줄이기 위해서입니다.

규칙표는 누가 관리합니까?

자금팀이 정하고 회계팀이 계정을 확인하는 구조가 보통입니다. 규칙표는 코드가 아니라 테이블이라 개발 없이 고칠 수 있게 두는 것이 좋습니다. 유효기간 칸을 두어 규칙을 바꿔도 과거 판정이 흔들리지 않게 합니다.

규칙 적중 탭이 “한 번도 걸리지 않은 규칙(K02)”과 “충돌에 자주 관여하는 규칙(K01)”을 보여 주므로, 정리할 후보를 찾는 일은 이 탭이 도와줍니다.

숫자와 대사

회사마다 규칙이 다를 수 있습니까?

됩니다. 규칙표의 키가 회사코드를 포함하고, 화면의 규칙 적중 탭도 회사별로 집계합니다. 샘플에서도 회사 1000 은 규칙 15개, 회사 2000 은 임차료 규칙이 없는 14개로 두었습니다.

정합성 대사 8건은 무엇을 확인합니까?

이 화면의 숫자들이 서로 맞는지를 화면 스스로 계산해 보여 줍니다. 거래 건수와 판정 건수, 입금 · 출금 합계와 계좌 합계, 제안 분개의 차변 · 대변 합계, 규칙 적중 건수와 거래 건수 같은 식입니다.

샘플에서는 검사 건수 합계 225건에 차이가 0건입니다. 점검 코드가 붙은 거래는 일부러 넣은 예외이므로 대사 차이와 섞이지 않게 따로 적었습니다.

대사 차이가 생기면 어떻게 보입니까?

요약 지표의 “정합성 대사 차이 건” 숫자가 0 이 아니게 되고, 대사 결과 탭에서 어느 식의 좌변과 우변이 얼마나 어긋났는지 나옵니다. 원인은 대개 조회 범위가 탭마다 다르거나, 외화 환산 기준이 섞인 경우입니다.

조회조건은 어떻게 동작합니까?

회계연도와 기간(월)은 필수이고, 회사 · 계좌 · 입출금 · 거래일 · 점검 코드 · 점검 결과는 선택입니다. 선택 조건을 “전체”로 두면 그 조건은 서비스에 보내지 않습니다. 조건은 서비스 호출의 필터로 나가고, 탭마다 의미가 있는 조건만 적용됩니다.

점검 코드의 J · K · A 는 무엇입니까?

J 는 거래 한 건의 판정, K 는 규칙표 한 행의 상태(충돌 없이 적용 · 충돌에 관여 · 이번 기간 적중 없음), A 는 계좌의 상태(미기표 없음 · 미기표 전부 제안 가능 · 분류 불가 거래 포함)입니다. 코드를 고르면 해당 종류의 탭에만 적용됩니다.

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

있습니다. 지금 보고 있는 탭의 표를 그대로 내려받으며, 조회조건으로 줄인 거래만 담깁니다. 외화 거래의 원화 환산 금액도 함께 담겨 엑셀에서 합계를 다시 확인할 수 있습니다.

샘플 자료는 실제 은행 자료입니까?

아닙니다. 은행 · 거래처 · 계좌번호 · 금액 · 환율은 모두 가상입니다. 환율은 “거래일 기준 가정 환율”이며 실제 시세와 무관합니다. 실제 자료로 바꾸는 일은 서비스를 바꾸는 것이고 화면은 그대로 씁니다.

운영과 도입

운영 데이터가 많으면 느리지 않습니까?

데모에서는 80건이라 브라우저가 판정합니다. 운영에서는 명세가 한 달에 수만 건이 될 수 있으므로 판정을 CDS 로 내리고, 화면은 조회 기간으로 범위를 좁혀 첫 페이지만 읽습니다. 목록은 페이지 단위로 읽고, 건수는 별도 호출로 가져옵니다.

S/4HANA 가 아니라 ECC 에서도 됩니까?

구조가 달라집니다. 명세 원천(FEBKO · FEBEP)과 기표 원천(BKPF · BSEG)은 ECC 에도 있어서 같은 판정을 ABAP 쪽 뷰나 함수로 만들 수 있습니다. 다만 장부 대조에서 ACDOCA 를 쓰는 부분은 달라지므로 환경을 보고 판단합니다(확인 필요).

외부 라이브러리나 외부 전송이 있습니까?

화면은 OpenUI5 표준 컨트롤만 씁니다. 외부 차트 라이브러리를 들이지 않았고, 은행 거래 내용이 화면 밖의 외부 서비스로 나가는 경로도 없습니다. 사내망 반입 심사를 가볍게 하려는 선택입니다.

기존 후처리 화면은 없애야 합니까?

없애지 않습니다. 기표와 감사 대응은 표준 거래에 두는 편이 안전합니다. 이 앱이 대신하는 것은 “계정을 정하기 전에 규칙과 장부를 대조하는” 단계이며, 기표는 표준 화면에서 그대로 합니다.

권한은 어떻게 걸립니까?

회사코드 권한(F_BKPF_BUK)을 CDS 의 접근 제어에 걸어 표준 권한을 그대로 따릅니다. 한 가지 주의가 있습니다. 권한을 상세 화면에만 걸면 합계가 보이는 사람이 전체 합계에서 자기 몫을 빼서 남의 숫자를 알아낼 수 있습니다. 그래서 명세를 읽는 뷰에 겁니다.

유지보수는 무엇을 하게 됩니까?

정기적으로 손이 가는 곳은 규칙표 하나입니다. 새 거래처나 새 적요 형식이 생기면 키워드를 더하고, 충돌이 보이면 우선순위를 손봅니다. 그 밖에는 환율 기준을 바꿀 때와 점검 코드의 조치 문구를 고칠 때 정도입니다.

숫자가 기존 화면과 다르면 어떻게 확인합니까?

순서가 있습니다.

① 조회 범위가 같은지 봅니다 — 회사, 기간, 계좌. 가장 흔한 원인입니다.
② 외화 거래를 원화로 환산한 기준이 같은지 봅니다.
③ 거래 상세 창에서 장부 기표 번호를 확인해 FBL3N 의 은행 계정 라인과 맞춰 봅니다.
④ 계좌 잔액은 FS10N 과 계좌별 대사 탭의 장부 잔액을 견줍니다.

분개 규칙을 늘리는 것보다 적요 규약을 바로잡는 편이 낫습니다

규칙은 늘릴수록 서로 부딪칠 자리도 함께 늘어납니다. 적요가 일정한 형식으로 들어오면 규칙은 몇 개로 충분하고, 점검 화면에는 정말 사람이 볼 거래만 남습니다. 현재 SAP 환경과 은행 명세 형식에서 규칙표를 어떻게 시작할지 함께 확인해 드립니다.