SAP 내부오더 예산 대비 실적 — 쓴 돈과 약속한 돈까지
내부오더별 예산과 실적을 비교하고, 아직 나가지 않은 약정까지 더해 남은 여유를 보는 화면입니다.
예산을 얼마나 썼는지 물으면 대개 실적 금액을 답합니다. 그런데 발주는 냈지만 아직 청구가 안 온 돈이 있습니다.
이 약정액을 빼먹으면 예산이 남은 줄 알고 더 쓰다가 초과합니다. 표준 내부오더 구조를 그대로 이어받아 실적과 약정을 함께 차감해 남은 여유를 보도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 2종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 내부오더 — 오더 ID(
orderId) · 명칭(orderText) · 유형(orderType) - 귀속 — 회사코드(
bukrs)와 코스트센터(costCenter) - 책임자 — 오더 책임자(
responsible) - 예산 — 승인된 예산 금액(
budget) - 실적·약정 — 실제 발생액(
actual)과 약정액(commitment)
| 항목 | 내용 |
|---|---|
| 대응 T-code | KO03 (오더 조회) · KOB1 (실제 라인) |
| 업무 영역 | 관리회계(CO-OM) · 예산 관리 |
| Namespace | zui5.ioburget |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + 예산 대비 실적 테이블 |
| 화면 수 | 조회 화면 1개 + 상세 |
| 데이터 | 내부오더 10건 |
| 성격 | 조회형(Read-Only) — 예산 배정은 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 2종 둘러보기
회사코드·오더유형·책임자로 조회하면 오더별 예산 현황이 나옵니다 → 실적과 약정을 더해 보고 → 잔여 예산과 집행률로 여유를 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 오더유형을 고릅니다. 투자성과 비용성 오더를 나눠 봅니다.
- 코스트센터나 책임자로 좁힐 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 실적만 보지 말고 약정을 함께 확인합니다.
- 잔여 예산이 실제로 쓸 수 있는 금액입니다.
- 집행률이 높은 오더는 추가 집행 전에 검토가 필요합니다.
- 결과는 CSV 다운로드로 내려받아 예산 검토 자료로 씁니다.
집행률과 잔여 예산
약정까지 더해야 실제 여유가 나옵니다.
집행액 = 실적(actual) + 약정(commitment)
잔여 예산 = 예산(budget) − 집행액
집행률 = 집행액 ÷ 예산 × 100
집행률 낮음 → 여유 있음
집행률 높음 → 주의 — 추가 집행 전 확인
집행률 100% 초과 → 예산 초과 — 증액 또는 중단
약정을 함께 차감하는 이유
발주를 내면 그 금액은 사실상 쓴 돈입니다. 아직 청구가 안 왔을 뿐 취소하지 않는 한 나갑니다. 실적만 보고 예산이 남았다고 판단하면 나중에 청구가 몰려 초과합니다. 약정을 함께 빼야 실제로 쓸 수 있는 금액이 나옵니다.
내부오더 예산 4단계
| 단계 | 내용 | 금액 변화 |
|---|---|---|
| ① 예산 배정 | 오더에 예산 승인 | 예산 확정 |
| ② 약정 | 발주·계약 체결 | 약정액 발생 |
| ③ 실적 | 입고·청구로 비용 확정 | 실적 증가 · 약정 감소 |
| ④ 정산 | 오더 종결과 수신처 배분 | 오더 잔액 0 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 bukrs | 필수 | 대상 법인 |
오더유형 orderType | 선택 | 투자성 · 비용성 등 |
코스트센터 costCenter | 선택 | 귀속 부서 |
책임자 responsible | 선택 | 오더 담당 |
| 상태 | 선택 | 전체 / 집행률 초과 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
오더 ID orderId · 명칭 orderText | 내부오더 |
오더유형 orderType | 투자성 · 비용성 |
회사코드 bukrs · bukrsText | 귀속 법인 |
코스트센터 costCenter · costCenterText | 귀속 부서 |
책임자 responsible | 오더 담당자 |
예산 budget | 승인된 금액 |
실적 actual | 실제 발생액 |
약정 commitment | 발주했으나 미청구 |
| 집행액 | 실적 + 약정 |
| 잔여 예산 | 예산 − 집행액. 음수면 경고 |
| 집행률 | 집행액 ÷ 예산. 구간별 상태 색 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
KO03 | 내부오더 조회 | 예산·실적·약정을 한 줄에 배치 |
KOB1 | 오더 실제 라인 | 실적 원천 |
KOB2 | 오더 약정 라인 | 약정 원천 |
KO22 | 오더 예산 배정 | 예산 원천 |
AUFK | 오더 마스터 | 오더 정보 |
BPGE · BPJA | 예산 테이블 | 배정 금액 |
도입 시 확인이 필요한 부분
예산 관리 활성화 여부에 따라 동작이 다릅니다. 가용성 통제가 켜져 있으면 예산 초과 시 전기가 막히지만, 꺼져 있으면 초과해도 그냥 넘어갑니다. 통제가 없는 환경에서는 이 화면이 사실상 유일한 감시 수단이 됩니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCIOBUDGET'
@EndUserText.label: '내부오더 예산 대비 실적 (Z)'
define view Z_C_IO_BUDGET_ACTUAL
as select from aufk as Order
left outer join bpge as Budget on Order.objnr = Budget.objnr
left outer join coss as Actual on Order.objnr = Actual.objnr
{
key Order.aufnr as OrderId,
Order.ktext as OrderText,
Order.auart as OrderType,
Order.bukrs,
Order.kostl as CostCenter,
Order.user2 as Responsible,
sum( Budget.wtjhr ) as BudgetAmount,
sum( Actual.wtg001 ) as ActualAmount
// 약정은 COOI 에서 집계
// 집행액 = 실적 + 약정, 잔여 = 예산 − 집행액
}
group by Order.aufnr, Order.ktext, Order.auart, Order.bukrs,
Order.kostl, Order.user2
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · 예산 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 예산 테이블 | sap.m.Table — 예산→집행→잔여 순서 |
| 집행률 | sap.m.ObjectStatus — 구간별 색 |
| 잔여 예산 | sap.m.ObjectNumber — 음수 경고 색 |
실적과 약정을 나눠 보여 주는 이유
합쳐서 집행액만 보여 주면 얼마가 이미 나갔고 얼마가 나갈 예정인지 모릅니다. 약정이 대부분이면 아직 취소 여지가 있고, 실적이 대부분이면 되돌릴 수 없습니다. 두 금액을 나눠 두면 예산 조정의 여지가 보입니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.ioburget) · ko 로케일 |
view/Main.view.xml | 조회조건과 예산 테이블 |
controller/Main.controller.js | 조회 · 집행률 계산 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 비율 · 상태 색 포맷터 |
localdata/ioburget.json | 내부오더 10건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 집행액 = 실적 + 약정 (전 오더) | 통과 |
| 잔여 예산 = 예산 − 집행액 | 통과 |
| 집행률 = 집행액 ÷ 예산 × 100 | 통과 |
| 잔여 예산 < 0 인 오더만 초과로 표시 | 통과 |
| 코스트센터 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 후 캡처 | 2/2 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
약정은 언제 사라지나요?
입고나 송장 처리로 실적이 확정되면 약정이 줄고 실적이 늘어납니다. 총 집행액은 그대로이므로 잔여 예산은 변하지 않습니다.
예산을 초과하면 전기가 막히나요?
가용성 통제 설정에 따라 다릅니다. 켜져 있으면 막히고 경고만 띄우도록 할 수도 있습니다. 통제가 없으면 이 화면으로 감시해야 합니다.
여러 해에 걸친 오더는 어떻게 보나요?
연도별 예산과 전체 예산이 따로 있습니다. 투자성 오더는 총 예산으로 관리하고 연도별 배정은 자금 계획 차원에서 봅니다.
SAP 표준 기능과 어떻게 이어지나요?
예산 배정과 실적·약정 집계는 표준 CO 가 담당합니다. 이 화면은 세 금액을 한 줄에 놓고 집행률과 잔여 예산을 계산해, 약정을 빠뜨리지 않게 하는 확장입니다.