📖 개요 — 정산을 안 하면 무슨 일이 생기는가
내부오더(Internal Order)는 마케팅 행사, 설비 소모성 수리, 사내 프로젝트처럼 임시로 원가를 모아두는 그릇입니다. 그런데 이 그릇은 어디까지나 중간 집계 객체라서, 기말에는 모아둔 원가를 최종 수신자(코스트센터, 자산, G/L 계정 등)로 넘겨야 합니다. 이 과정이 정산(Settlement)이고, 정산의 규칙을 통제하는 설정이 정산 프로파일(Settlement Profile)입니다. 정산을 빠뜨리면 오더에 잔액이 남고, 잔액이 남은 오더는 종결(Close)할 수 없으며, 결국 기간 마감 체크리스트에서 걸립니다. 이 글에서 확인할 내용은 다음과 같습니다.
- 정산 프로파일이 허용 수신자와 배분규칙을 통제하는 구조 이해
- 정산규칙(Settlement Rule) 등록부터 KO88/KO8G 실행까지 실전 흐름
- 정산 누락 오더를 기말 전에 찾아내는 점검 리포트 작성
- 잔액 오류로 오더 종결이 막힐 때의 원인별 대응
📚 미리 알아두면 좋은 배경
CO(관리회계)의 기본 객체인 코스트센터와 원가요소(Cost Element) 개념, 그리고 내부오더의 상태 관리(Released → TECO → Closed) 흐름을 알고 있으면 좋습니다. ABAP 예제가 한 곳 등장하지만 SELECT 문 수준이므로 개발 경험이 깊지 않아도 따라올 수 있습니다. FI 기간 마감과 CO 기간 잠금(OKP1)의 차이를 구분할 수 있다면 트러블슈팅 섹션이 더 잘 읽힙니다.
🔧 환경과 준비물
이 글은 SAP S/4HANA 2023 On-Premise 기준으로 작성했으며, 정산 프로파일의 골격은 SAP ECC 6.0에서도 거의 동일하게 적용됩니다. S/4HANA Cloud Public Edition에서는 IMG 트랜잭션 대신 SSCUI(구성 앱)로 동일 항목을 다루므로 명칭만 매핑하면 됩니다. 필요한 트랜잭션과 권한은 다음과 같습니다.
OKO7— 정산 프로파일 정의 (IMG: 관리회계 → 내부오더 → 정산)KO01/KO02— 오더 생성/변경 및 정산규칙 등록KO88(개별),KO8G(집단) — 실제 정산 실행KOT2_OPA— 오더 유형에 정산 프로파일 연결- 권한 객체
K_ORDER와 정산 실행용K_VRGNG(업무 트랜잭션 KOAO) 확인 권장
💡 핵심 개념 — 프로파일이 문지기, 규칙이 배송장
정산을 택배에 비유하면 이해가 빠릅니다. 오더에 쌓인 원가는 창고에 쌓인 화물이고, 정산규칙은 "어디로 몇 %를 보낼지" 적힌 배송장, 정산 프로파일은 "이 창고에서 보낼 수 있는 목적지 종류"를 정해둔 창고 운영 규정입니다. 배송장이 아무리 잘 써 있어도 운영 규정이 그 목적지를 금지하면 출고가 안 됩니다.
정산 프로파일이 통제하는 핵심 요소는 세 갈래입니다.
- 허용 수신자 카테고리 — 코스트센터(CTR), G/L 계정(G/L), 고정자산(FXA), 다른 오더(ORD), WBS 요소(WBS) 등 카테고리별로 정산 필수 / 선택 / 금지를 지정합니다. 예를 들어 판촉비 오더 유형에서 자산 정산을 금지해두면, 사용자가 실수로 자산화하는 사고를 설정 단계에서 차단할 수 있습니다.
- 배분규칙(Distribution Rule) 통제 — 배분 방식은 비율(%), 지분(Equivalence Number), 금액 중 무엇을 허용할지, 규칙 최대 개수는 몇 개까지인지 프로파일이 정합니다. 정산 유형은 PER(당기 발생분만)과 FUL(전체 잔액)로 나뉘며, 기말 반복 정산이면 PER, 오더를 끝내는 최종 정산이면 FUL이 일반적입니다.
- 부속 구조 연결 — 할당구조(Allocation Structure)는 원본 원가요소 그룹을 정산 원가요소(secondary, 유형 21 또는 원본 원가요소 유지)로 매핑하고, 원천구조(Source Structure)는 원가를 성격별로 쪼개 서로 다른 수신자로 보낼 때 사용합니다. CO-PA로 정산한다면 PA 이전구조(PA Transfer Structure)도 연결됩니다.
흐름을 도식으로 정리하면 이렇습니다.
오더 유형(KOT2_OPA) → 정산 프로파일(OKO7) → [허용 수신자 + 할당구조 + 배분 방식 통제] → 오더 마스터의 정산규칙(COBRA/COBRB) → KO88/KO8G 실행 → 수신자 전기 + 오더 잔액 0
실행 시점에 시스템은 정산 버전(일반적으로 실제 버전 0)과 처리 유형(자동/당기/최종)을 조합해 대상 금액을 계산합니다. 이 사슬 어딘가가 끊기면 — 규칙 미등록, 비율 합계 100% 미만, 할당구조에 원가요소 누락 — 오더에 잔액이 남고, 상태를 Closed로 바꾸려는 순간 "잔액이 존재합니다" 오류가 사용자를 맞이합니다.
💻 실전 3단계 — 프로파일 정의부터 마감 자동화까지
1단계: 기본 — 판촉 오더용 프로파일과 첫 정산. 시나리오는 이렇습니다. 영업부가 신제품 런칭 행사 비용을 내부오더 PRM24001에 집계하고, 기말에 영업 코스트센터 MKT_SEOUL로 100% 정산합니다. OKO7에서 프로파일 ZPRM을 아래처럼 정의합니다.
| 설정 항목 | 값 | 의미 |
|---|---|---|
| 정산 필수 여부 | Settlement Required(종결 전 정산 필수) | 잔액 있는 채로 종결 금지 |
| 할당구조 | Z1 | 판촉비 원가요소 그룹 → 정산 원가요소 매핑 |
| 기본 수신자 | 코스트센터 = Settlement Optional | CTR 허용 |
| 자산/G-L/유형자산 | Not Allowed | 실수 자산화 차단 |
| 배분 방식 | % 정산 허용, 최대 규칙 3개 | 비율 배분만 사용 |
| 전표 유형 | SA | 정산 전표 기록용 |
이후 KOT2_OPA에서 오더 유형 ZPRM에 이 프로파일을 지정하면, 해당 유형으로 생성되는 모든 오더가 같은 통제를 상속합니다. KO02 → 정산규칙 화면에서 카테고리 CTR, 수신자 MKT_SEOUL, 비율 100%, 정산유형 PER을 입력하고 KO88을 테스트 모드로 실행해 결과를 확인한 뒤 실전기하면 첫 정산이 끝납니다.
2단계: 실무 — 집단 정산과 누락 오더 사전 점검. 오더가 수백 건이면 KO8G로 선택 변형(오더 유형·회사코드 기준)을 만들어 배치로 돌립니다. 이때 가장 흔한 실패가 "정산규칙 없는 오더"인데, 기말 당일에 발견하면 늦습니다. 아래는 릴리즈되었지만 배분규칙이 하나도 없는 오더를 미리 찾는 점검 리포트입니다.
REPORT zco_chk_missing_settle_rule.
" 릴리즈된 내부오더 중 배분규칙(COBRB)이 없는 건 추출
SELECT a~aufnr, a~auart, a~ktext, a~ernam
FROM aufk AS a
LEFT OUTER JOIN cobrb AS b
ON b~objnr = a~objnr
WHERE a~autyp = '01' " 내부오더
AND a~phas1 = abap_true " 릴리즈 상태
AND a~loekz = abap_false " 삭제 플래그 제외
AND b~objnr IS NULL
INTO TABLE @DATA(lt_no_rule).
IF lt_no_rule IS INITIAL.
MESSAGE '정산규칙 누락 오더 없음 — 마감 진행 가능' TYPE 'S'.
ELSE.
LOOP AT lt_no_rule INTO DATA(ls_ord).
WRITE: / ls_ord-aufnr, ls_ord-auart, ls_ord-ktext.
ENDLOOP.
" 담당자 알림: 배치 실행 시 스풀 + 메일 발송 연계 권장
ENDIF.
KO8G 실행 시에는 반드시 상세 리스트 옵션을 켜서 오류 건(예: KD503 "정산규칙 없음", KD256 "수신자 기간 잠김")을 스풀에 남기고, 배치 잡 로그와 함께 보관하는 운영 습관이 중요합니다. 테스트 실행 → 오류 건 보정 → 실전기 순서를 지키면 재작업이 크게 줄어듭니다.
3단계: 프로덕션 — 잔액 검증·성능·역정산. 마감 자동화 단계에서는 정산 후 잔액이 정말 0인지 시스템으로 검증합니다. S/4HANA라면 ACDOCA 기반으로 오더별 잔액을 직접 집계할 수 있습니다.
-- 정산 후에도 잔액이 남은 내부오더 검출 (S/4HANA, ACDOCA)
SELECT aufnr,
SUM( ksl ) AS balance
FROM acdoca
WHERE rldnr = '0L'
AND gjahr = '2026'
AND poper <= '007'
AND aufnr <> ''
GROUP BY aufnr
HAVING SUM( ksl ) <> 0;
이 쿼리를 CDS 뷰로 감싸 마감 대시보드에 노출하면 "정산 누락 잔액"이 마감 당일 아침에 자동으로 드러납니다. 성능 측면에서는 KO8G의 병렬 처리 옵션(서버 그룹 지정)을 사용하고, 오더 유형별로 잡을 분리해 실패 격리 범위를 좁히는 방식이 일반적입니다. 잘못 정산한 경우 KO88의 역정산(Reversal) 기능으로 해당 기간 정산 전표를 통째로 취소한 뒤 규칙을 고쳐 재실행합니다. 보안 관점에서는 정산 실행 권한(K_VRGNG, 업무 트랜잭션 KOAO)을 마감 담당 롤에만 부여하고, 프로파일의 잔존 기간(Residence Time)을 아카이빙 정책과 맞춰두면 감사 대응이 수월합니다.
⚠️ 자주 걸리는 함정과 FAQ
- Q1. 정산을 돌렸는데 잔액이 남습니다. 배분규칙 비율 합계가 100% 미만이거나, 할당구조에 매핑되지 않은 원가요소로 원가가 들어온 경우가 대부분입니다. KO88 결과 화면의 상세 리스트에서 "정산 안 된 원가요소"를 확인하고 할당구조 Z1에 해당 그룹을 추가하세요.
- Q2. 오더를 종결하려는데 "잔액이 존재합니다" 오류가 납니다. 프로파일이 Settlement Required로 설정된 정상 동작입니다. PER 정산만 반복했고 최종 FUL 정산을 안 했다면 이월 잔액이 남습니다. 처리 유형을 최종(FUL)으로 바꿔 한 번 더 실행한 뒤 종결하세요.
- Q3. KD256 등 기간 잠김 오류가 나옵니다. 수신자 쪽 FI 전기 기간 또는 CO 실제 기간(OKP1)이 이미 잠긴 경우입니다. 마감 순서상 내부오더 정산은 CO 잠금 이전 단계여야 하므로, 마감 체크리스트에서 정산 단계의 순번을 재확인하세요.
- Q4. 자산으로 정산하고 싶은데 수신자 목록에 안 나옵니다. 프로파일에서 FXA 카테고리가 Not Allowed인 상태입니다. 통제를 완화하기 전에, 자산화가 필요한 오더라면 별도 오더 유형(투자오더 + 투자 프로파일)으로 분리하는 편이 일반적으로 권장됩니다.
운영 팁 하나를 덧붙이면, 프로파일 변경은 기존 오더의 정산규칙에 소급 적용되지 않습니다. 프로파일을 바꾼 뒤 "왜 옛 오더는 여전히 이상하게 동작하지?"라는 질문이 나오면 오더 마스터에 이미 저장된 규칙(COBRB)을 먼저 의심하세요.
🚀 이어서 살펴볼 주제
내부오더 정산을 이해했다면 다음 확장 지점은 세 가지입니다. 첫째, WBS 요소·프로젝트 정산 — 프로파일 구조는 같지만 계층 정산과 투자 프로파일이 추가됩니다. 둘째, 결과분석(RA)과 정산의 연결 — 수익성 오더에서 WIP를 계산한 뒤 정산하는 흐름입니다. 셋째, S/4HANA의 Universal Allocation과 이벤트 기반 정산(Event-Based Settlement) — 기말 배치 대신 실시간 정산으로 옮겨가는 방향이므로, 클라우드 전환을 검토 중이라면 미리 살펴볼 가치가 있습니다.
📚 더 읽어볼 자료
- SAP Help Portal — S/4HANA On-Premise 문서(관리회계 → 내부오더 → 정산)
- SAP Help Portal — Overhead Cost Orders(CO-OM-OPA) 정산 프로파일·할당구조
- SAP Help Portal — S/4HANA Cloud의 오더 정산과 이벤트 기반 정산
- SAP Community — S/4HANA Finance 토픽(정산 오류 사례·마감 자동화 논의)
- SAP Learning — 관리회계(CO) 학습 여정
- SAP Business Accelerator Hub — CO 관련 API·CDS 뷰 탐색
댓글 0
아직 댓글이 없습니다.