SAP 원가 배부결과 검증 — 배부가 빠짐없이 끝났는지 확인하기
제조부서에 쌓인 원가가 배부사이클을 거쳐 남김없이 흘러갔는지를 사이클 단계별로 확인하고, 잔액이 0이 되는지로 배부 완전성을 판정하는 원가결산 점검 화면입니다.
원가 결산에서 배부는 원가를 없애는 절차가 아니라 옮기는 절차입니다. 판관부서에 잡힌 제조성 비용이 생산본부로, 공장 간접부서의 원가가 제조직접부서로, 다시 공정으로 흘러가 마지막에는 생산오더가 받아 갑니다.
그래서 결산 담당자가 확인해야 할 것은 하나입니다. 보내야 할 곳에서 남김없이 빠져나갔는가.
보낸 쪽에 금액이 남아 있다면 배부 규칙에서 빠진 원가요소가 있거나 사이클이 덜 돌았다는 뜻입니다.
SAP 표준 배부 실행 결과와 ACDOCA 데이터를 그대로 이어받아 이 확인을 사이클 단위로 하도록
OpenUI5 화면으로 확장한 것이 ZLCO06030입니다. 실제 구동 화면 6종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 원천 데이터 —
ACDOCA기반 CDS 뷰를 그대로 사용해 표준 전표에서 집계 - 배부 실행 — 평가배부 · 분배 · 간접배부 표준 실행 결과를 그대로 읽고, 실행 자체는 표준 트랜잭션이 담당
- 사이클 식별 — 전기텍스트(
BKPF-BKTXT)에 남는 배부사이클 명칭을 그대로 조회 키로 사용 - 마스터 체계 — 코스트센터(
CSKS·CSKT) · 내부오더(AUFK) · 원가요소그룹(TCKH3) 표준 구조 유지
| 항목 | 내용 |
|---|---|
| 업무 영역 | 관리회계(CO-OM) · 원가 배부 완전성 점검 |
| Namespace | zui5.alloc |
| 셸 구조 | 조회조건 영역(우측 조회) + 배부 완전성 판정 툴바 + 결과 테이블, 행 선택 시 배부명세 |
| 화면 수 | 조회 화면 1개 + 배부 내역 상세 |
| SAP 표준 기능 근거 | KSU5 · KSV5 · KSW5 · ACDOCA |
| 성격 | 조회형(Read-Only) — 배부 실행과 전기는 표준 트랜잭션이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 6종 둘러보기
결산월만 넣고 전체조회로 제조부서 전체의 발생·배부·잔액을 훑습니다 → 배부사이클을 AR101부터 AD102까지 순서대로 넣어 가며 단계별로 발신 코스트센터 잔액이 0이 되는지 확인합니다 → 파트너 컬럼과 행 상세에서 어느 부서로 얼마가 갔는지 추적하고, 결과는 CSV로 내려받습니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 결산월을
YYYYPPP형식(예:2026005)으로 넣습니다. 필수값이며 비어 있으면 조회를 중단하고 안내합니다. - 배부사이클을 비운 채 조회하면 여섯 단계가 모두 끝난 최종 스냅샷(전체조회)이 나옵니다. 여기서 전체 그림을 먼저 잡습니다.
- 배부사이클에
AR101부터 차례로 넣어 가며 조회합니다. 각 사이클 실행 직후 스냅샷이 조회되고, 툴바에 배부 완전성 판정이 표시됩니다. - 조회조건 입력필드에서 Enter를 눌러도 바로 조회됩니다. 사이클을 바꿔 가며 훑을 때 손이 마우스로 옮겨가지 않습니다.
- 잔액 0 라인 숨김 옵션으로 이미 정리된 행을 걷어내고 남은 금액만 봅니다.
- 행을 선택하면 배부 내역 상세가 열려 파트너 코스트센터별 배부금액을 확인할 수 있습니다.
- 결과는 CSV 다운로드로 내려받습니다. 동적으로 만들어진 파트너 컬럼까지 그대로 포함되고 UTF-8 BOM이 붙어 엑셀에서 한글이 깨지지 않습니다.
배부 완전성 판정
판정의 뼈대는 식 하나입니다. 발생한 원가에 배부로 오간 금액을 더하면 그 코스트센터에 남은 금액이 나옵니다.
| 항목 | 산식 · 규칙 |
|---|---|
발생원가 DMBTR | 해당 코스트센터·원가요소에 자체적으로 발생한 원가 |
배부원가 DMBTR00 | 배부 순액. 배부해 나가면 (−), 배부받으면 (+) |
잔액 BALANCE | 발생원가 + 배부원가 — 배부 완전성 판정의 기준 |
| 사이클 실행 | 발신 코스트센터의 현재 잔액 전액을 수신 코스트센터로 이동 |
| 사이클 정상 종료 | 실행 직후 발신 코스트센터 잔액 = 0 |
| 전체 정합성 | 배부원가 순액 = 0, 잔액 합계 = 총 발생원가 |
잔액이 0이 아니면 무엇을 의심하나
배부 규칙(세그먼트)에서 빠진 원가요소가 있거나, 수신처 기준값이 없어 배부가 중단됐거나, 사이클 순서가 어긋난 경우입니다. 어느 쪽이든 단계별 조회에서 잔액이 남은 사이클과 코스트센터·원가요소가 바로 드러나므로, 배부 규칙의 어느 줄을 봐야 하는지가 좁혀집니다.
배부사이클 6단계
원가는 조직 상단에서 현장으로 내려오는 순서대로 흐릅니다. 앞 단계가 끝나야 다음 단계의 배부 기준이 확정되므로 순서 자체가 규칙입니다.
| 사이클 | 흐름 | 확인 포인트 |
|---|---|---|
| AR101 | 판관부서 제조비용 → 생산본부 | 판관(GPD·KPD)에 잡힌 제조성 비용이 전액 이관됐는지 |
| AA101 | 공통·연구부서 → 공장 | 공통 성격 원가가 공장별로 나뉘어 내려갔는지 |
| AA102 | 공장간접 → 제조직접부서 | 공장 간접부서 잔액이 0으로 정리됐는지 |
| AA103 | 제조직접부서 → 공정 | 부서 단위 원가가 공정 단위로 내려갔는지 |
| AD101 · AD102 | 공정 정리 단계 | 최종적으로 공정 코스트센터에 잔액이 집결하는지 |
여섯 단계가 모두 끝나면 판관·공통연구·공장간접 부서의 잔액은 0이 되고, 남은 금액은 생산오더로 넘어갈 공정 코스트센터에 모입니다.
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 조회 모드 | 기본값 R00 | R00 제조부서 전체 / R01 공통연구→공장 / R02 공장→공정 / R03 공정→생산오더 |
결산월 P_PERIO | 필수 | YYYYPPP 형식(예: 2026005) |
배부사이클 P_BKTXT | 보조 필터 | 전기텍스트 LIKE 조건. 공란이면 전체조회, AR101~AD102면 사이클별 검증 |
| 잔액 0 라인 숨김 | 옵션 | 이미 정리된 행을 감춰 남은 금액만 표시 |
R01·R02는 해당 사이클 프리셋으로 바로 넘어가고, R03은 최종 스냅샷에서 공정 코스트센터 잔액만 추려 보여 줍니다.
결과 컬럼
| 컬럼 | 참조 | 의미 · 표시 |
|---|---|---|
| 코스트센터명 | KOSTL_TX | 키 컬럼. 좌측 고정 |
| 원가요소그룹 | HKONTGROUP2 | 키 컬럼. 원가 성격별 묶음 |
| 원가요소명 | HKONT_TX | 키 컬럼 |
| 잔액 | 계산 BALANCE | 0이면 정상. 0이 아닌 행이 점검 대상 |
| 발생원가 | 계산 DMBTR | 자체 발생분, 우측정렬 |
| 배부원가 | 계산 DMBTR00 | 배부 순액. (−) 나감 / (+) 받음 |
| 파트너 코스트센터별 배부금액 | 계산 DMBTR01 ~ | 금액이 있는 파트너만 동적으로 컬럼 생성 |
배부 내역 상세
| 영역 | 내용 |
|---|---|
| 선택 라인 요약 | 코스트센터 · 원가요소그룹 · 원가요소 · 발생원가 · 배부원가 · 잔액 |
| 파트너별 배부명세 | 수신 코스트센터와 배부금액을 목록으로 표시 |
| 완전성 판정 | 발신 잔액이 0인지 여부를 함께 표시 |
SAP 표준 기능 매핑
이 화면은 표준 배부 처리를 대체하지 않습니다. 사이클 정의와 실행, 전기는 표준 트랜잭션이 그대로 담당하고, 그 결과를 결산월·사이클 단위로 모아 완전성 판정과 파트너별 배부명세 관점을 더해 확장하는 구성입니다.
| T-code | 표준 기능 | 이 화면에서의 확장 |
|---|---|---|
KSU5 | 평가배부(Assessment) 실행 | 실행 직후 스냅샷을 사이클 단위로 조회해 발신 잔액 0 여부를 판정 |
KSV5 | 분배(Distribution) 실행 | 분배 결과를 같은 관점으로 묶어 단계별 흐름을 이어서 확인 |
KSW5 | 간접배부(Indirect Activity Allocation) 실행 | 배부원가 순액과 잔액 집결 위치를 함께 대조 |
KSB1 관점 | 코스트센터 실제라인아이템 조회 | 라인 나열 대신 코스트센터 × 원가요소그룹으로 집계해 완전성 중심으로 재구성 |
운영 데이터 소스 매핑
| 테이블 · 뷰 | 역할 |
|---|---|
ACDOCA | 유니버설 저널 — 발생원가와 배부 전기 라인의 원천 |
BKPF (BKTXT) | 전표 헤더 전기텍스트 — 배부사이클 식별 키 |
CSKS · CSKT | 코스트센터 마스터와 명칭 |
AUFK | 내부오더·생산오더 마스터 — 최종 수신처 확인 |
TCKH3 | 원가요소그룹 구성 |
SKAT | 계정(원가요소) 텍스트 |
| 항목 | SAP 원천 | 비고 · 산식 |
|---|---|---|
| 결산월 | ACDOCA-GJAHR · POPER | YYYYPPP로 결합해 파라미터로 사용 |
| 코스트센터 · 명칭 | ACDOCA-RCNTR → CSKT-KTEXT | 키 컬럼 |
| 파트너 코스트센터 | ACDOCA-PCNTR 상당 | 동적 컬럼의 근거 |
| 원가요소 · 명칭 | ACDOCA-RACCT → SKAT-TXT50 | 키 컬럼 |
| 원가요소그룹 | TCKH3 계층 | 원가 성격별 묶음 |
| 배부사이클 | BKPF-BKTXT | LIKE 조건으로 사이클 단계 지정 |
| 발생원가 | ACDOCA-HSL 집계 | 배부 전기를 제외한 자체 발생분 |
| 배부원가 | ACDOCA-HSL 집계 | 배부 전기분 순액 |
| 잔액 | 계산값 | 발생원가 + 배부원가 |
도입 시 확인이 필요한 부분
배부사이클 명칭 체계와 전기텍스트 사용 규칙은 회사마다 다릅니다. 사이클 식별을 BKTXT가 아니라
배부 실행 로그(T811 계열)나 별도 필드로 잡는 경우도 있어, 실제 도입 때는 배부 사이클 정의와 전기 관행을 함께 확인해
조회 키를 정합니다. 코스트센터 체계(판관·공통연구·공장·공정)와 원가요소그룹 구성도 프로젝트 표준에 맞춰 조정합니다.
참고 CDS 뷰
운영 서비스로 연결할 때는 유니버설 저널에서 코스트센터 × 원가요소그룹 단위로 발생분과 배부분을 나누어 집계하는 뷰로 서빙하는 구성을 제안합니다.
@AbapCatalog.sqlViewName: 'ZCALLOCRES'
@EndUserText.label: '원가 배부결과 검증 (Z)'
define view Z_C_ALLOCATION_RESULT
as select from acdoca as Line
inner join bkpf as Header on Line.rbukrs = Header.bukrs
and Line.belnr = Header.belnr
and Line.gjahr = Header.gjahr
left outer join cskt as CCtrText on Line.rcntr = CCtrText.kostl
and CCtrText.spras = 'K'
left outer join skat as AcctText on Line.racct = AcctText.saknr
and AcctText.spras = 'K'
{
key Line.rbukrs as Bukrs,
key Line.gjahr as Gjahr,
key Line.poper as Poper,
key Line.rcntr as Kostl,
key Line.racct as Hkont,
CCtrText.ktext as KostlTx,
AcctText.txt50 as HkontTx,
Header.bktxt as AllocCycle,
Line.pcntr as PartnerKostl,
// 발생분과 배부분은 전기텍스트(배부사이클) 유무로 갈라 집계
sum( case when Header.bktxt = '' then Line.hsl else 0 end ) as Dmbtr,
sum( case when Header.bktxt <> '' then Line.hsl else 0 end ) as Dmbtr00
}
group by Line.rbukrs, Line.gjahr, Line.poper, Line.rcntr, Line.racct,
CCtrText.ktext, AcctText.txt50, Header.bktxt, Line.pcntr
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경의 배부 전기 관행과 원가요소그룹 체계에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 결과 테이블 |
| 조회조건 | sap.m.Select · sap.m.Input · sap.m.CheckBox — 우측 끝에 조회 버튼 |
| 결과 테이블 | sap.ui.table.Table — 행이 많아 그리드형 테이블 사용, 키 컬럼 고정 |
| 동적 컬럼 | 조회 결과의 파트너 코스트센터를 훑어 Column을 런타임 생성 |
| 완전성 판정 | sap.m.ObjectStatus · sap.m.MessageStrip — 툴바에 사이클 판정 표시 |
| 배부 내역 상세 | sap.m.Dialog + 목록 — 파트너별 배부금액 |
파트너 컬럼을 미리 만들지 않은 이유
수신 코스트센터는 사이클마다 다르고 결산월마다 달라집니다. 가능한 모든 파트너를 컬럼으로 깔아 두면 대부분이 빈 칸으로 남아 정작 봐야 할 숫자가 묻힙니다. 그래서 조회 결과에 금액이 실제로 존재하는 파트너만 골라 그때그때 컬럼을 만들어 붙이고, CSV 다운로드에도 같은 구성 그대로 담습니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.alloc) · 라우팅 · ko 로케일 · sap_horizon 테마 |
Component.js | 선택조건 모델 · 결과 모델 초기화 |
view/Main.view.xml | 선택화면과 결과 테이블(고정 컬럼) |
controller/Main.controller.js | 조회 · 파트너 컬럼 동적 생성 · 배부 완전성 검증 · CSV |
model/ModelMock.js | localdata JSON 읽기 — 사이클·모드 필터 포함 |
model/formatter.js | 금액 · 잔액 · 상태 · 결산월 포맷터 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
localdata/alloc.json | 배부 시뮬레이션 데이터 |
배부 규칙이나 사이클 구성이 바뀌어도 컨트롤러와 포맷터 두 파일만 손보면 됩니다.
검증 결과
화면 구성에 쓴 데이터는 배부사이클 6단계를 순차 시뮬레이션해 각 사이클 직후 스냅샷과 최종 스냅샷을 만든 것입니다.
| 데이터 | 규모 | 구성 |
|---|---|---|
| 배부 스냅샷 | 540행 | 사이클 × 코스트센터 × 원가요소. 발생원가 · 배부원가 · 잔액 · 파트너 배부금액 포함 |
| 전체조회 스냅샷 | 186행 | 여섯 단계 종료 후 최종 상태 |
| 총 발생원가 | 5,244,100,000원 | 전체조회 잔액 합계와 일치 |
| 검증 항목 | 결과 |
|---|---|
| 잔액 = 발생원가 + 배부원가 (전 행) | 통과 |
| 사이클별 발신 코스트센터 잔액 = 0 (배부 완전성) | 통과 |
| 사이클별 파트너 이동 총액 = 0 (발신 = 수신) | 통과 |
| 전체조회 배부원가 순액 = 0 · 잔액 합계 = 총 발생원가 | 통과 |
| 전체조회 판관 · 공통연구 · 공장간접 부서 잔액 = 0 | 통과 |
| 전체조회 공정 코스트센터에 잔액 집결 | 통과 |
| 행 키(사이클 + 코스트센터 + 원가요소) 중복 없음 | 통과 |
| 화면 렌더링 — 실브라우저 조회 → 사이클 전환 → 상세 실동작 후 캡처 | 6/6 |
코스트센터·원가요소·금액은 모두 검증용 데이터이며, 코스트센터 체계(판관 GPD·KPD, 공통·연구, 생산본부·생산1~3부, 공장 팀, 공정)는 프로젝트 표준을 따랐습니다.
자주 묻는 질문
배부 완전성을 왜 잔액으로 판정하나요?
배부는 원가를 없애는 절차가 아니라 옮기는 절차이기 때문입니다. 발신 코스트센터에 있던 금액이 수신 쪽으로 전부 넘어갔다면 발신 쪽에는 아무것도 남지 않아야 합니다. 그래서 잔액 = 발생원가 + 배부원가 라는 식이 0으로 떨어지는지가 그 사이클이 제대로 끝났는지를 말해 주는 가장 단순하고 확실한 신호가 됩니다.
사이클을 하나씩 넣어 보는 이유가 있나요?
여섯 단계를 한꺼번에 돌린 최종 결과만 보면 어느 단계에서 금액이 남았는지 알 수 없습니다. AR101부터 AD102까지 순서대로 넣어 가며 조회하면 각 사이클 실행 직후의 스냅샷이 나오고, 잔액이 0으로 떨어지지 않는 단계를 바로 짚어낼 수 있습니다.
파트너 컬럼이 조회할 때마다 달라지는데 정상인가요?
정상입니다. 사이클마다 금액이 오가는 수신 코스트센터가 다르기 때문에, 조회 결과에 금액이 실제로 존재하는 파트너만 골라 컬럼으로 만들어 붙입니다. 빈 컬럼이 늘어서지 않아 넓은 배부 결과도 한 화면에서 읽힙니다.
SAP 표준 기능과 어떻게 이어지나요?
배부 실행 자체는 KSU5·KSV5·KSW5 같은 표준 트랜잭션이 그대로 담당하고, 실행 결과는 ACDOCA에 그대로 남습니다. 이 화면은 그 결과를 결산월과 전기텍스트(배부사이클) 단위로 모아 발생·배부·잔액을 한 줄로 세우고, 배부 완전성 판정과 파트너별 배부명세를 얹어 확장한 조회 전용 화면입니다.


