솔루션 홈
연결결산

SAP 내부거래 상계 점검 — 회사 간 거래가 상계 전 서로 맞물려 있는가

제거분개를 넣기 전에, 그룹 내 두 회사가 서로 기록한 거래금액이 맞물리는지부터 대사합니다

연결 결산을 준비할 때 가장 먼저 막히는 지점은 내부거래 금액 불일치입니다. 한 회사가 관계사에 100을 팔았다고 기록해도, 상대 회사가 90을 샀다고 기록해 두면 그 차이부터 찾아야 제거분개를 넣을 수 있습니다. 관련 국제회계기준의 특정 문단을 꼽기보다는, 연결 결산이라는 대상 영역 안에서 "회사 간 거래가 상계 전에 서로 맞물려 있는가"를 먼저 확인하는 절차입니다.

표준 회계전표 구조를 그대로 이어받아 회사코드·거래처(Trading Partner)·거래유형·회계기간별로 양쪽 회사가 각각 기표한 금액을 나란히 모으고, 일치하는 금액만큼만 제거분개 대상을 산출하는 화면을 OpenUI5로 확장했습니다. 실제 구동 화면 4종을 함께 공개합니다.

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

  • 원장 라인 — 회계전표 라인아이템의 거래처(Trading Partner) 필드가 설정된 라인을 그대로 사용
  • 계정·회사 마스터 — 표준 계정 마스터·회사코드 마스터 구조를 그대로 사용
  • 표준 화면 — 총계정원장 라인아이템 조회(FBL3N) · 신 총계정원장 라인아이템 조회(FAGLL03) · 계정 잔액 조회(FS10N)
항목내용
업무 영역재무회계(FI) · 연결 결산
관련 대상 영역- (연결 결산 · 내부거래 상계)
Namespacezui5.icelim
셸 구조조회조건 영역(우측 조회) + 대사 요약 + 거래 명세·거래쌍 대사·제거분개 미리보기 3개 탭, 상세 Dialog
화면 수조회 화면 1개 + 상세 다이얼로그
SAP 표준 T-codeFBL3N · FAGLL03 · FS10N(§7 참고)
데이터 연동 방식OData V2 — 화면 블록마다 엔티티셋에 직접 바인딩
성격조회·대사·점검형 — 제거분개 기표는 화면 밖 프로세스
UI 테마sap_horizon 단일 적용

실제 화면 4종 둘러보기

조회조건을 넣고 조회하면 대사 요약과 거래 명세가 뜹니다 → 거래쌍 대사 탭에서 회사측·상대회사측 금액을 나란히 보고 → 제거분개 미리보기 탭에서 산출된 제거 대상을 확인하고 → 행을 클릭해 상세 내역을 봅니다.

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

Main.view.xml
내부거래 상계 점검 메인화면 — 조회조건과 대사 요약, 거래 명세
거래 명세 — 조회조건 오른쪽 끝에 조회·초기화 버튼이 있고, 위에는 거래 라인 건수·대사 대상 쌍·회사측/상대회사측 금액 합계·차이가 요약됩니다. 매칭상태는 표준 상태값으로만 표시합니다.
거래쌍 대사
거래쌍 대사 탭 — 회사측과 상대회사측 금액 비교
거래쌍 대사 — 회사-상대회사-거래유형별로 양쪽에 기표된 금액을 나란히 놓고 차이를 계산합니다. 차이가 있는 쌍만 "차이 발생 — 점검 필요"로 표시됩니다.
제거분개 미리보기
제거분개 미리보기 탭
제거분개 미리보기 — 대사가 일치한 금액만큼 제거분개 차변·대변 계정과 금액을 미리 계산해 둡니다.
상세 내역
행 클릭 상세 다이얼로그
상세 내역 — 행을 클릭하면 전표·계정·금액·매칭 상태가 항목별로 펼쳐집니다.

조작 방법

  1. 회사코드·상대회사·회계연도·기간·거래유형을 지정합니다. 비워 두면 해당 조건은 전체로 조회됩니다.
  2. 조회조건 입력 필드에서 Enter 키를 누르거나 조회조건 영역 오른쪽 끝의 조회 버튼을 누르면 재조회됩니다. 초기화 버튼은 조건을 기본값으로 되돌립니다.
  3. 상단 대사 요약에서 거래 라인 건수·대사 대상 쌍·회사측/상대회사측 금액 합계·매칭/차이 건수를 먼저 확인합니다.
  4. 거래 명세 → 거래쌍 대사 → 제거분개 미리보기 순으로 탭을 옮기며 원장 라인부터 대사, 제거분개 산출까지 단계별로 봅니다.
  5. 행을 클릭하면 상세 다이얼로그가 열립니다.
  6. 거래 명세 탭에서 CSV 내려받기(UTF-8 BOM)로 결과를 저장할 수 있습니다.

대사·판정 로직

거래쌍(회사-상대회사-거래유형-기간) 단위로 회사측 금액과 상대회사측 금액을 비교해 상태를 가릅니다.

판정 조건결과 상태사용자 조치
회사측 금액 = 상대회사측 금액(차이 0)대사 일치제거분개 반영 대상으로 두고 다음 결산 주기로 진행
회사측 금액 ≠ 상대회사측 금액(차이 발생)차이 발생 — 점검 필요상대회사 전표·기표시점을 확인한 뒤 제거분개를 조정
거래 라인이 매칭 쌍에 속함매칭완료추가 조치 없음
거래 라인이 차이 발생 쌍에 속함부분매칭 — 점검 필요상대편 기표 누락·시점 차이 여부를 확인

이 화면이 대신 정하지 않는 것

판정 결과는 확인이 필요한 거래쌍을 알리는 표시이며, 차이의 원인을 단정하지 않습니다. 시점 차이인지 실제 금액 차이인지는 상대편 전표를 직접 확인해야 하며, 최종 회계처리 판단은 회사와 감사인이 합니다.

대사·제거 처리 단계

단계내용
1단계내부거래 원장 라인을 회사·상대회사·회계연도·기간·거래유형별로 집계해 거래쌍 대사 금액을 산출
2단계회사측 금액 − 상대회사측 금액 = 차이를 계산 — 차이 0 → 대사 일치, 차이 ≠ 0 → 점검 필요
3단계대사가 일치한 금액(양측 중 작은 값)만큼 제거분개 차변·대변 계정과 금액을 산출 — 차이가 있는 쌍은 매칭되는 부분까지만 반영
4단계회계연도·기간별로 거래 건수·대사 쌍 수·매칭/미매칭 건수·제거 대상 합계·총 차이를 모아 요약

조회조건

필드필수설명
회사코드선택비우면 전체 회사코드
상대회사선택비우면 전체 상대회사
회계연도선택비우면 전체 회계연도
기간선택비우면 전체 기간
거래유형선택전체 / 상품 매출입 / 용역·수수료 / 자금대여·이자

결과 컬럼

영역컬럼 · 표시
거래 명세전표ID · 회사 · 상대회사 · 회계연도/기간 · 전표번호 · 계정 · 거래유형 · 금액 · 상대전표번호 · 매칭상태
거래쌍 대사회사 · 상대회사 · 거래유형 · 회사측 금액 · 상대회사측 금액 · 차이 · 대사상태(소계 행 포함)
제거분개 미리보기회사 · 상대회사 · 거래유형 · 제거분개 차변 · 제거분개 대변 · 제거 금액 · 처리상태

SAP 표준 기능 매핑

표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 원장 데이터에 회사 간 대사 관점을 더해 확장합니다.

표준 T-code표준 기능이 화면이 더한 것
FBL3N총계정원장 라인아이템 조회거래처(Trading Partner) 필드가 설정된 라인을 상대회사쌍 단위로 모읍니다
FAGLL03신 총계정원장 라인아이템 조회회사코드·계정별 라인아이템을 거래쌍 대사로 재구성합니다
FS10N계정 잔액 조회계정별 잔액을 거래쌍 소계와 대사합니다

분석 지표 정의표

관련 대상 영역요구사항대응 기능원천 데이터비고
-회사 간 거래 잔액이 상계 전 서로 일치하는지 확인거래쌍 대사(#sec-cycle 2단계)회사코드·상대회사별 원장 라인대상 영역: 연결 결산
-대사가 일치한 금액만큼 제거분개 대상을 산출제거 대상 산출(#sec-cycle 3단계)거래쌍 대사 결과차이가 있는 쌍은 매칭 금액까지만 반영

참고 CDS 뷰

원천 테이블주요 필드쓰임
BKPFBUKRS · BELNR · GJAHR · BUDAT전표 헤더
BSEGBUKRS · VBUND · HKONT · DMBTR · BUZEI전표 라인아이템·거래처(Trading Partner)
SKA1 / SKB1SAKNR · TXT50계정 마스터
T001BUKRS · BUTXT회사코드 마스터

운영 서비스로 연결할 때를 가정해 새로 스케치한 집계 뷰 예시입니다.

define view entity ZI_ICELIM_TXN
  as select from bseg
  association [1..1] to bkpf as _Header on _Header.bukrs = bseg.bukrs
                                        and _Header.belnr = bseg.belnr
                                        and _Header.gjahr = bseg.gjahr
{
  key bseg.bukrs        as CompanyCode,
  key bseg.vbund        as TradingPartner,
  key bseg.gjahr        as FiscalYear,
  key bseg.buzei        as DocItem,
      _Header.belnr     as DocNo,
      _Header.budat     as PostDate,
      bseg.hkont        as GlAccount,
      bseg.dmbtr        as Amount
}
where bseg.vbund <> ''  -- 거래처(Trading Partner) 지정 라인만

거래쌍 대사·제거분개 미리보기는 이 라인 집계를 회사·상대회사·기간·거래유형별로 다시 묶어 산출합니다.

OpenUI5 구성

기능사용 컨트롤 · 구성
화면 골격sap.m.Page + 조회조건 패널 · 대사 요약 패널 · sap.m.IconTabBar 3개 탭
데이터 연동manifest.json dataSources.mainService(OData V2, 상대 경로) — 화면 블록마다 엔티티셋에 직접 바인딩. 모델 설정은 useBatch:false · defaultBindingMode:"OneWay" · defaultCountMode:"Inline"
조회조건sap.m.Input · sap.m.ComboBox — 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조회조건을 조립. "전체"를 고른 조건은 필터를 만들지 않습니다
명세 표sap.ui.table.Table(컬럼 10개 이상) — 행 클릭 시 상세 다이얼로그
대사·제거분개 표sap.m.Tablesap.m.ObjectStatus로 대사상태를 표준 ValueState 로만 표시
공통 처리CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 — 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내

파일 구성

경로역할
index.htmlOpenUI5 부트스트랩 — sap_horizon · lodash · moment, OData 서비스에 연결
Component.js화면 상태·조회조건 모델 초기화, 전역 오류 처리기 연결
manifest.json앱 디스크립터 — zui5.icelim · ko 로케일, OData 서비스와 모델 선언
view/Main.view.xml조회조건 · 대사 요약 · 3개 탭
view/DetailDialog.fragment.xml상세 내역 다이얼로그
controller/Main.controller.js조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드
controller/BaseController.jsCSV 다운로드 공통 처리
model/ErrorHandler.js전역 오류 처리
model/formatter.js금액·상태 표시 서식
i18n/i18n_ko.propertiesko 로케일 리소스

운영 데이터는 OData 서비스가 제공하며, 검증에 쓴 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.

검증 결과

화면 구성에 쓴 검증용 샘플 데이터는 120건의 내부거래 라인, 24개 거래쌍(소계 4행 별도)을 기준으로 구성했습니다.

검증 항목결과
완전성 대사 — 거래 라인 집계 = 거래쌍 대사 금액통과(차이 0)
거래쌍 대사식 — 차이 = 회사측 금액 − 상대회사측 금액통과(차이 0)
제거 대상 합계 — 제거분개 금액 합계 = 대사 일치 거래쌍의 금액 합계통과(차이 0)
소계 행 — 회사·기간별 소계 = 해당 거래쌍 합계통과(차이 0)
전체 요약(IcCheckSet) — 건수·금액 합계 재계산 대사통과(차이 0)
의도적 예외(타이밍 차이 재현 표본)2건 — 최대 차이 150,000(의도적 예외 제외 시 차이 0건)
표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출0건
화면 렌더링 — 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세까지 실동작 후 캡처4/4
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내확인
OData 계약 — 동사 경로 미사용, $filter·$orderby·$top 으로 조회조건·정렬·건수 전달확인

회사·거래·금액은 모두 검증용으로 구성한 가상 데이터입니다.

자주 묻는 질문

이 화면은 어느 범위에 적용하나요?

그룹 내 회사 간 상품 매출입·용역·수수료·자금대여·이자 거래를 회계연도·기간별로 다룹니다. 특정 공시 기준서의 시행일이 정해진 화면이 아니라, 연결 결산을 준비하는 매 결산기마다 내부거래 잔액을 미리 대사해 두는 점검 도구입니다.

대사상태가 "차이 발생 — 점검 필요"로 뜨면 무엇을 의미하나요?

같은 거래쌍(회사-상대회사-거래유형-기간)에서 회사측이 기표한 금액과 상대회사측이 기표한 금액이 다르다는 뜻입니다. 이 화면은 확인이 필요한 거래쌍을 가려내는 점검 도구이며, 실제 원인 파악과 제거분개 반영 여부의 최종 판단은 회사와 감사인이 합니다.

금액이 다르면 항상 오류인가요?

아닙니다. 한쪽 회사는 이번 기간에 기표했는데 상대 회사는 다음 기간에 기표하는 시점 차이로도 차이가 날 수 있습니다. 그래서 화면은 차이를 곧바로 오류로 단정하지 않고 "점검 필요"로만 표시하며, 상대편 기표 시점을 확인하도록 안내합니다.

왜 매출·매입 집계가 아니라 상대회사 장부를 직접 비교하나요?

제거분개는 두 회사가 각각 기록한 금액이 서로 맞아야 정확한 금액으로 반영할 수 있습니다. 그래서 이 화면은 회사측 원장 금액과 상대회사측 원장 금액을 각각 집계해 나란히 비교하고, 일치하는 금액만큼만 제거 대상으로 산출합니다.

내부거래 상계, 결산 전에 대사부터 맞춰보세요

회사쌍마다 손으로 다시 맞춰보는 대신, 화면에서 회사측·상대회사측 금액을 미리 대사해 두면 연결 결산과 제거분개 준비가 한결 가벼워집니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

연결결산내부거래 상계제거분개Trading Partner그룹회계OpenUI5