SAP 프로젝트(WBS) 예산 대비 실적 — 남은 돈으로 끝낼 수 있는가
WBS 요소별 배정 예산과 실적 원가, 미결 약정을 비교해 가용 예산과 집행률을 확인하는 화면입니다.
프로젝트 예산은 한 번 정하면 늘리기 어렵습니다. 그래서 진행 중에 남은 예산으로 끝낼 수 있는지를 계속 확인해야 합니다.
실적만 보면 여유가 있어 보이지만, 발주해 둔 금액을 빼면 사정이 달라집니다. 구매요청과 발주까지 약정으로 잡아 가용 예산을 계산하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 3종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- WBS 요소 — 요소 ID(
Posid)와 명칭(PosidText) - 프로젝트 — 상위 프로젝트(
Pspid)와 명칭(PspidText) - 책임 — 코스트센터(
Kostl)와 책임자(Verantwortlicher) - 예산 — 배정 예산액(
BudgetAmt) - 기간 — 회사코드(
Bukrs)와 회계연도(Gjahr)
| 항목 | 내용 |
|---|---|
| 대응 T-code | CJ30 (예산 배정) · CJI3 · S_ALR_87013558 |
| 업무 영역 | 프로젝트 관리(PS) · 관리회계 |
| Namespace | zui5.psbudget |
| 셸 구조 | 조회조건 영역(우측 조회·초기화) + WBS 예산 테이블 |
| 화면 수 | 조회 화면 1개 + 상세 |
| 데이터 | WBS 요소 16건 |
| 성격 | 조회형(Read-Only) — 예산 배정은 표준이 담당 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 3종 둘러보기
회사코드·회계연도·프로젝트로 조회하면 WBS별 예산이 나옵니다 → 실적과 약정을 빼고 → 가용 예산과 집행률로 초과 위험을 확인합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도를 고릅니다.
- 프로젝트로 대상을 좁힙니다. WBS 는 프로젝트 하위 구조입니다.
- 코스트센터나 책임자로 담당 WBS 만 볼 수 있습니다.
- 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
- 집행률이 높은 WBS 부터 확인합니다.
- 미결약정을 확인합니다. 구매요청과 발주가 포함됩니다.
- 가용예산이 음수면 이미 초과 상태입니다.
- 결과는 CSV 다운로드로 내려받아 프로젝트 회의 자료로 씁니다.
가용액 산식
배정액에서 확정분과 예정분을 모두 뺍니다.
가용예산 = 배정예산(BudgetAmt) − 실적원가 − 미결약정
집행률 = (실적원가 + 미결약정) ÷ 배정예산 × 100
미결약정 = 구매요청 미발주분 + 발주 미입고분
가용 > 0 → 여유 있음
가용 < 0 → 초과 — 예산 이관 또는 증액 필요
WBS 합계 = 프로젝트 예산과 대조
구매요청까지 약정에 넣는 이유
발주만 세면 구매요청 단계의 금액이 빠집니다. 프로젝트에서는 요청이 올라간 시점에 이미 쓰기로 정해진 경우가 많아, 요청을 빼고 계산하면 남은 예산이 과대하게 보입니다. 요청 단계부터 잡아야 실제 여력이 나옵니다.
WBS 예산 소진 경로
| 단계 | 내용 | 금액 이동 |
|---|---|---|
| 구매요청 | 자재·용역 요청 등록 | 약정 발생 |
| 구매발주 | 공급업체에 발주 | 약정 유지 |
| 입고·검수 | 납품 확인 | 약정 → 실적 |
| 송장 처리 | 비용 확정 | 실적 확정 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
회사코드 Bukrs | 필수 | 대상 법인 |
회계연도 Gjahr | 필수 | 예산 연도 |
프로젝트 Pspid | 선택 | 상위 프로젝트 |
WBS 요소 Posid | 선택 | 특정 요소 |
코스트센터 Kostl | 선택 | 책임 부서 |
| 집행률 | 선택 | 초과 위험 건 추출 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
프로젝트 Pspid · PspidText | 상위 프로젝트 |
WBS 요소 Posid · PosidText | 작업 단위 |
회사코드 Bukrs · 회계연도 Gjahr | 대상 범위 |
코스트센터 Kostl · KostlText | 책임 부서 |
책임자 Verantwortlicher | 담당자 |
배정예산 BudgetAmt | 할당 금액 |
| 실적원가 | 확정 지출 |
| 미결약정 | 구매요청 + 발주 미입고 |
| 가용예산 | 배정 − 실적 − 약정. 음수면 경고 색 |
| 집행률 | (실적 + 약정) ÷ 배정. 구간별 상태 색 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
CJ30 | 프로젝트 예산 배정 | 가용예산과 집행률 계산 |
CJI3 | 프로젝트 실제 라인 | 실적원가 원천 |
CJI5 | 프로젝트 약정 라인 | 미결약정 원천 |
S_ALR_87013558 | 예산 대비 실적 리포트 | WBS 단위 정리 |
PRPS | WBS 요소 마스터 | 요소 정보 |
BPGE · BPJA | 예산 데이터 | 배정 금액 |
도입 시 확인이 필요한 부분
예산을 WBS 어느 레벨에 배정하는지가 중요합니다. 상위에만 배정하면 하위 요소는 개별 통제가 되지 않고, 말단마다 배정하면 관리 부담이 커집니다. 또 예산 가용성 검사 설정에 따라 초과 시 전기가 막히는지가 갈립니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCPSBUDGET'
@EndUserText.label: 'WBS 예산 대비 실적 (Z)'
define view Z_C_PS_BUDGET_ACTUAL
as select from prps as Wbs
left outer join proj as Project on Wbs.psphi = Project.pspnr
left outer join cskt as CCtrText on Wbs.fkstl = CCtrText.kostl
and CCtrText.spras = 'K'
{
key Wbs.pspnr,
Wbs.posid as Posid,
Wbs.post1 as PosidText,
Project.pspid as Pspid,
Project.post1 as PspidText,
Wbs.pbukr as Bukrs,
Wbs.fkstl as Kostl,
CCtrText.ktext as KostlText,
Wbs.vernr as ResponsibleNo
// 예산은 BPJA, 실적은 COSP, 약정은 COOI 에서 각각 집계해 조인
// 가용예산 = 배정 − 실적 − 약정, 집행률 = (실적+약정) ÷ 배정
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 영역 · WBS 예산 테이블 |
| 조회조건 | sap.m.Select · sap.m.DatePicker · sap.m.Input — 우측 끝에 조회·초기화 |
| 이벤트 | 모든 버튼이 onPAI 단일 진입점, fcCode 로 분기 |
| 예산 테이블 | sap.ui.table.Table — 프로젝트 그룹, WBS 계층 |
| 가용 표시 | sap.m.ObjectNumber — 음수 경고 색 |
| 집행률 | sap.m.ObjectStatus — 구간별 색 |
책임자를 열에 두는 이유
예산이 초과되면 누구에게 물어야 하는지가 급합니다. WBS 번호만 있으면 조직도를 다시 찾아야 합니다. 책임자가 같은 줄에 있으면 확인 절차가 바로 시작됩니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — 앱 ID(zui5.psbudget) · ko 로케일 |
view/Main.view.xml | 조회조건과 WBS 예산 테이블 |
controller/Main.controller.js | 조회 · 가용액 계산 · 집행률 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 비율 · 상태 색 포맷터 |
localdata/wbs.json | WBS 요소 16건 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 가용예산 = 배정예산 − 실적원가 − 미결약정 (전 WBS) | 통과 |
| 집행률 = (실적 + 약정) ÷ 배정 × 100 | 통과 |
| WBS 합계 = 프로젝트 예산과 정합 | 통과 |
| 실적·약정이 음수가 아님 | 통과 |
| WBS·코스트센터 코드가 있으면 명칭도 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 후 캡처 | 3/3 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
예산을 초과하면 전기가 막히나요?
예산 가용성 검사 설정에 따라 다릅니다. 오류로 설정하면 막히고 경고로 설정하면 진행됩니다. 막지 않는다면 이 화면이 사실상 유일한 통제 수단입니다.
WBS 간 예산 이관이 가능한가요?
가능합니다. 같은 프로젝트 안에서 여유 있는 요소에서 부족한 요소로 옮깁니다. 프로젝트 총액은 유지되므로 승인 절차가 비교적 간단합니다.
구매요청만 있고 발주가 없으면 약정인가요?
설정에 따라 다릅니다. 요청 단계부터 잡는 것이 보수적이고 안전하지만, 취소되는 요청이 많으면 가용 예산이 실제보다 적게 보입니다.
SAP 표준 기능과 어떻게 이어지나요?
예산 배정과 실적·약정 집계는 표준 PS 와 CO 가 담당합니다. 이 화면은 세 금액을 한 줄에 모아 가용액과 집행률을 계산하고 책임자까지 붙인 확장입니다.