SAP 활동유형 단가 관리 — 계획 단가와 실제 단가의 거리
코스트센터와 활동유형별로 계획 단가와 실제 단가를 비교하고, 가격차이와 조업률을 확인하는 화면입니다.
제품 원가는 재료비만으로 정해지지 않습니다. 기계를 몇 시간 돌렸는지, 사람이 몇 시간 붙었는지에 활동 단가를 곱해 가공비가 붙습니다.
이 단가는 연초에 계획으로 정하고 기말에 실제로 다시 계산합니다. 둘이 크게 다르면 그동안 계산한 원가가 전부 틀린 것입니다. 표준 활동유형 구조를 그대로 이어받아 두 단가를 나란히 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 코스트센터 —
Kostl와 명칭으로 원가 발생 단위 - 활동유형 —
Lstar로 기계시간·노무시간 등 구분 - 계획 — 계획 수량(
PlanQty)과 계획 원가(PlanCost) - 실제 — 실제 수량(
ActQty)과 실제 원가(ActCost) - 기간 — 회계연도와 월(
Monat) 단위
| 항목 | 내용 |
|---|---|
| 대응 T-code | KP26 (계획 단가) · KSPI · KSII · KB21N |
| 업무 영역 | 관리회계(CO) · 원가배부 |
| Namespace | zui5.actprice |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 단가 비교 테이블 |
| 화면 수 | 조회 화면 1개 + 상세 |
| 데이터 | 단가 96건 · 코스트센터 5건 · 활동유형 4건 |
| 성격 | 조회형(Read-Only) — 단가 산정은 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·회계연도·코스트센터로 조회하면 활동유형별 단가가 나옵니다 → 계획 단가와 실제 단가를 비교하고 → 가격차이와 조업률로 원인을 짚습니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도를 고릅니다.
- 코스트센터로 대상 부서를 좁힙니다.
- 활동유형으로 기계시간·노무시간 등을 나눠 봅니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 계획 단가와 실제 단가를 비교합니다.
- 조업률이 낮으면 고정비 흡수가 덜 된 것입니다. 단가가 올라갑니다.
- 결과는 CSV 다운로드로 내려받아 원가 검토 자료로 씁니다.
단가와 차이 산식
단가는 원가를 수량으로 나눈 값이고, 차이는 두 단가의 거리입니다.
계획 단가 = 계획 원가(PlanCost) ÷ 계획 수량(PlanQty)
실제 단가 = 실제 원가(ActCost) ÷ 실제 수량(ActQty)
가격차이 = (실제 단가 − 계획 단가) × 실제 수량
조업률 = 실제 수량 ÷ 계획 수량 × 100
조업률 낮음 → 고정비가 적은 수량에 나뉘어 단가 상승
조업률 높음 → 고정비가 많은 수량에 나뉘어 단가 하락
조업률을 함께 봐야 하는 이유
실제 단가가 올랐다고 해서 비효율이라고 단정할 수 없습니다. 생산량이 줄어 같은 고정비를 적은 시간에 나눴다면 단가는 오르지만 낭비는 없습니다. 조업률이 함께 보이면 단가 상승이 원가 문제인지 물량 문제인지가 갈립니다.
단가 차이의 네 가지 원인
| 원인 | 상황 | 해석 |
|---|---|---|
| 조업도 부족 | 생산량이 계획에 못 미침 | 고정비 흡수 부족 |
| 원가 초과 | 인건비·경비가 예산 초과 | 실제 원가 증가 |
| 계획 오류 | 연초 계획이 비현실적 | 계획 재수립 |
| 활동량 과다 | 같은 산출에 시간이 더 듦 | 공정 효율 점검 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 한국법인 · 해외법인 |
회계연도 Gjahr | 필수 | 대상 연도 |
코스트센터 Kostl | 선택 | 원가 발생 부서 |
활동유형 Lstar | 선택 | 기계시간 · 노무시간 등 |
기간 Monat | 선택 | 월 단위 조회 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
코스트센터 Kostl · KostlText | 원가 발생 단위 |
활동유형 Lstar · 명칭 | 기계시간 · 노무시간 등 |
기간 Monat | 회계 월 |
계획 수량 PlanQty | 계획 활동량 |
계획 원가 PlanCost | 계획 총원가 |
| 계획 단가 | 계획 원가 ÷ 계획 수량 |
실제 수량 ActQty | 실제 활동량 |
실제 원가 ActCost | 실제 총원가 |
| 실제 단가 | 실제 원가 ÷ 실제 수량 |
| 가격차이 | (실제 단가 − 계획 단가) × 실제 수량 |
| 조업률 | 실제 수량 ÷ 계획 수량. 구간별 상태 색 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
KP26 | 활동유형 계획 단가 | 계획·실제 단가를 나란히 비교 |
KSPI | 계획 단가 계산 | 계획 원가 산출 |
KSII | 실제 단가 계산 | 실제 원가 산출 |
KB21N | 활동 실적 입력 | 실제 수량 원천 |
COSL · COSS | 활동량과 원가 | 조회 원천 |
CSLA · CSKS | 활동유형 · 코스트센터 마스터 | 명칭 |
도입 시 확인이 필요한 부분
단가를 어느 시점 기준으로 쓸지가 원가 계산에 영향을 줍니다. 계획 단가로 기중에 배부하고 기말에 실제 단가로 재평가하는지, 계획 단가를 그대로 두고 차이만 별도 처리하는지에 따라 제품 원가가 달라집니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCACTPRICE'
@EndUserText.label: '활동유형 단가 비교 (Z)'
define view Z_C_ACTIVITY_PRICE
as select from cosl as ActQty
left outer join csks as CCtr on ActQty.objnr = CCtr.objnr
{
key ActQty.lednr,
key ActQty.objnr,
key ActQty.gjahr,
CCtr.kostl as Kostl,
ActQty.versn as Version,
// 계획(버전 0 계획) · 실제 수량과 원가를 각각 집계
sum( ActQty.lst001 ) as Quantity
// 원가는 COSS/COSP 에서 활동유형별로 집계해 조인
// 단가 = 원가 ÷ 수량, 가격차이 = (실제단가 − 계획단가) × 실제수량
// 조업률 = 실제수량 ÷ 계획수량 × 100 (소비 뷰에서 계산)
}
group by ActQty.lednr, ActQty.objnr, ActQty.gjahr, CCtr.kostl, ActQty.versn
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 단가 비교 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 비교 테이블 | sap.m.Table — 계획·실제를 좌우 대칭 배치 |
| 차이 표시 | sap.m.ObjectNumber — 가격차이 부호 색 |
| 조업률 | sap.m.ObjectStatus — 구간별 색 |
수량과 원가를 함께 보여 주는 이유
단가만 있으면 차이의 원인을 알 수 없습니다. 원가가 올랐는지 수량이 줄었는지에 따라 대응이 정반대입니다. 원가는 비용 통제의 문제이고 수량은 생산 계획의 문제입니다. 분자와 분모를 함께 두면 그 구분이 바로 됩니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.actprice) · ko 로케일 |
view/Main.view.xml | 조회조건과 단가 비교 테이블 |
controller/Main.controller.js | 조회 · 단가 계산 · 차이 산출 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 수량 · 금액 · 비율 포맷터 |
localdata/actprice.json | 단가 96건 |
localdata/kostl.json | 코스트센터 5건 |
localdata/lstar.json | 활동유형 4건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 계획 단가 = 계획 원가 ÷ 계획 수량 (전 건) | 통과 |
| 실제 단가 = 실제 원가 ÷ 실제 수량 | 통과 |
| 가격차이 = (실제 단가 − 계획 단가) × 실제 수량 | 통과 |
| 조업률 = 실제 수량 ÷ 계획 수량 × 100 | 통과 |
| 코스트센터·활동유형 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
계획 단가는 언제 정하나요?
보통 연초에 한 해 계획을 세우며 정합니다. 계획 원가와 계획 활동량을 추정해 나누는데, 두 추정이 모두 들어가 있어 실제와 차이가 나기 쉽습니다.
조업률이 100%를 넘으면 좋은 건가요?
고정비 흡수 측면에서는 유리합니다. 다만 계획보다 많이 돌렸다는 뜻이라 설비 부담이나 잔업이 늘었을 수 있어 함께 확인해야 합니다.
가격차이는 어디로 가나요?
설정에 따라 제품 원가에 반영되거나 기간 손익으로 처리됩니다. 자재원장을 쓰면 기말에 배부되어 제품 원가에 녹아듭니다.
SAP 표준 기능과 어떻게 이어지나요?
계획 단가와 실제 단가 산정은 표준 CO 기능이 담당합니다. 이 화면은 두 결과를 나란히 놓고 가격차이와 조업률을 계산해, 차이의 원인을 구분하게 하는 확장입니다.