SAP 롤링포캐스트 버전 대사 점검 — 개정을 거듭할수록, 최초계획과 최신포캐스트는 여전히 맞물려 있는가
분기마다 쌓이는 개정액을 최초계획에 더해 최신포캐스트와, 다시 실적과 대사합니다
롤링포캐스트는 최초에 세운 계획(BUD)을 분기마다 새로 들여다보고 FC1, FC2, FC3, FC4로 개정해 나가는 방식입니다. 문제는 개정을 거듭할수록 "지금 보고 있는 최신포캐스트가 최초계획에서 어떤 개정들을 거쳐 여기까지 왔는지"를 스프레드시트만으로 추적하기 어려워진다는 점입니다. 개정 건이 누락되거나 중복 반영되면 최신포캐스트 숫자와 실제 근거가 슬며시 어긋납니다.
코스트센터·계정과목별로 최초계획부터 최신포캐스트까지의 버전 이력을 표준 계획/실적 집계 구조 위에서 관리하고, 버전 전환 구간별 개정액을 누적해 최신포캐스트와 자동으로 대사하는 화면을 OpenUI5로 확장했습니다. 실제 구동 화면 4종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 계획 데이터 — 코스트센터 계획/실적 집계 표준 구조(원가요소별 월별 금액)를 그대로 사용
- 표준 화면 — 코스트센터 계획 입력(KP06/KP26) · 계획 버전 복사(KSBP) · 계획/실적 비교 리포트(S_ALR_87013611)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 관리회계(CO) · 사업계획·실적 |
| 관련 기준서 | - (대상 영역: 사업계획·실적 - 롤링포캐스트 관리) |
| Namespace | zui5.rollfcst |
| 셸 구조 | 조회조건 영역(우측 조회) + 탭(라인 상세/개정 이력/대사 결과), 상세 Dialog |
| 화면 수 | 조회 화면 1개(탭 3개) + 상세 다이얼로그 |
| SAP 표준 T-code | KP06 · KSBP · S_ALR_87013611 · KSB1 (§7 참고) |
| 성격 | 조회·집계·대사형 — 최종 관리회계 판단은 회사·담당 부서 몫 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 4종 둘러보기
회계연도·코스트센터·버전·계정과목을 넣고 조회하면 라인 상세가 뜹니다 → 개정 이력 탭에서 버전 전환 구간별 개정액을 확인 → 대사 결과 탭의 행을 클릭하면 최초계획부터 최신포캐스트까지의 대사 상세가 다이얼로그로 열립니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회계연도 · 코스트센터 · 버전 · 계정과목을 지정합니다.
- 입력 필드에서 Enter 키를 누르거나 조회조건 영역 오른쪽 끝의 조회 버튼을 누르면 재조회됩니다. 초기화 버튼은 조건을 비웁니다.
- 버전을 "전체"로 두면 버전 조건 없이 조회합니다.
- 대사 결과 탭의 행을 클릭하면 대사 상세 다이얼로그가 열립니다.
- 대사 결과 탭 우측 하단의 CSV 내려받기 버튼으로 현재 조회된 목록을 내려받을 수 있습니다.
포캐스트 대사 판정 로직
코스트센터·계정과목별로 등록된 버전별 금액을 바탕으로 누적개정액을 계산하고, 최초계획에 더한 값이 최신포캐스트와 일치하는지 대사합니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 최초계획(BUD) + 누적개정액 = 최신포캐스트 (오차 0.01 미만) | 정상 | 추가 조치 불필요 |
| 최초계획(BUD) + 누적개정액 ≠ 최신포캐스트 | 확인 필요 | 개정 이력 탭에서 해당 코스트센터·계정과목의 개정 건을 재확인 |
이 화면이 대신 정하지 않는 것
포캐스트 개정 금액은 관리회계 판단의 결과물이지 이 화면이 만들어내지 않습니다. 이 화면은 등록된 버전 이력을 바탕으로 정합성을 점검하는 도구이며, 개정 사유의 타당성에 대한 최종 판단은 회사와 담당 부서가 합니다.
버전 롤링 처리 단계
| 단계 | 내용 |
|---|---|
| 1단계 | 최초계획(BUD) 등록 |
| 2단계 | 분기별 포캐스트 개정(FC1→FC2→FC3→FC4) 등록 및 개정사유 기록 |
| 3단계 | 버전 전환 구간별 개정액을 개정 이력으로 누적 |
| 4단계 | 누적개정액을 최초계획에 더해 최신포캐스트 산출 및 대사 |
| 5단계 | 최신포캐스트와 실적을 비교해 차이금액·차이율 산출 |
최초계획(BUD) + 누적개정액 = 최신포캐스트(FC4)
실적 - 최신포캐스트 = 차이금액
차이율 = 차이금액 ÷ 최신포캐스트
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회계연도 | 선택 | 4자리 연도(미입력 시 전체) |
| 코스트센터 | 선택 | 미입력 시 전체 |
| 버전 | 선택 | 전체/BUD/FC1/FC2/FC3/FC4/ACT(전체 선택 시 조건 미전달) |
| 계정과목 | 선택 | 미입력 시 전체, Enter 키로 바로 조회 |
결과 컬럼
| 컬럼 | 설명 |
|---|---|
| 회계연도 · 코스트센터 · 계정과목 | 기준 조직·계정 정보 |
| 버전 · 기간(월) | BUD·FC1~FC4·ACT 구분과 연간/월별 구분 |
| 개정액 · 개정사유 · 개정일 | 버전 전환 시 변경된 금액과 사유·일자 |
| 최초계획 · 누적개정액 · 최신포캐스트 | 대사식 좌변·우변 구성 요소 |
| 실적 · 차이금액 · 차이율 · 점검결과 | 최신포캐스트 대비 실적 차이와 정상/확인 필요 판정 |
SAP 표준 기능 매핑
| SAP 표준 T-code | 연관 기능 |
|---|---|
KP06 / KP26 | 코스트센터 계획 입력 — 최초계획(BUD) 참고 |
KSBP | 계획 버전 복사 — 버전 간 개정 이력 참고 |
S_ALR_87013611 | 코스트센터 계획/실적 비교 리포트 — 대사 결과 구성 참고 |
KSB1 | 코스트센터 실제 라인아이템 — 실적 집계 참고 |
요구사항 매핑표
| 대상 영역 | 요구사항 | 대응 기능 | 원천 데이터 |
|---|---|---|---|
| 사업계획·실적(롤링포캐스트) | 버전 간 정합성 확인 - 최초계획에서 최신포캐스트까지 개정액이 빠짐없이 반영되었는지 | 대사 결과 탭(최초계획+누적개정=최신포캐스트) | 코스트센터 계획/실적 집계 |
| 사업계획·실적(롤링포캐스트) | 최신포캐스트 대비 실적 차이 모니터링 | 차이금액·차이율 컬럼 | 코스트센터 실제 라인아이템 |
도입 시 확인이 필요한 부분
버전 개수(BUD~FC4)와 개정 주기는 회사의 롤링포캐스트 운영 프로세스에 맞춰 조정해야 합니다.
참고 CDS 뷰
운영 서비스로 연결할 때를 가정해 새로 스케치한 집계 뷰 예시입니다(운영 반영 시 권한 체크를 추가해야 합니다).
@AbapCatalog.sqlViewName: 'ZRFCSTLINE'
define view Z_I_RollingForecastLine
as select from cosp
association [1..1] to csks as _Ccenter on cosp.kostl = _Ccenter.kostl
association [1..1] to skat as _Account on cosp.kstar = _Account.saknr
{
key cosp.gjahr as FiscalYear,
key cosp.kostl as CostCenter,
key cosp.versn as Version,
key cosp.kstar as GLAccount,
_Ccenter.ktext as CostCenterName,
_Account.txt50 as GLAccountName,
cosp.wkg001 + cosp.wkg002 + cosp.wkg003 + cosp.wkg004 +
cosp.wkg005 + cosp.wkg006 + cosp.wkg007 + cosp.wkg008 +
cosp.wkg009 + cosp.wkg010 + cosp.wkg011 + cosp.wkg012 as AnnualAmount
}
group by cosp.gjahr, cosp.kostl, cosp.versn, cosp.kstar
// 개정 이력(버전 전환 구간별 개정액)은 별도 엔티티셋으로 관리
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 Toolbar + IconTabBar(3탭) |
| 조회조건 | sap.m.Input · sap.m.Select — 우측 끝에 조회 버튼, Enter 키로 즉시 재조회 |
| 라인 상세 · 개정 이력 · 대사 결과 | sap.ui.table.Table(각 엔티티셋에 개별 바인딩) — 대사 결과 행 클릭 시 상세 다이얼로그 |
| 상세 | sap.m.Dialog — 선택 행의 바인딩 컨텍스트를 그대로 사용 |
| 공통 처리 | 전역 오류 처리기(ErrorHandler) — 메타데이터·요청 실패를 메시지로 표시 |
서비스 경로는 manifest.json 의 dataSources 에 상대 경로로 선언한 OData V2 모델을
그대로 바인딩하며, 조회조건은 sap.ui.model.Filter 로 조립해 $filter 로만 전달합니다.
버전을 "전체"로 둘 때는 필터를 아예 생성하지 않습니다. 총건수는 $inlinecount=allpages 로 확인합니다.
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 — sap_horizon |
Component.js | 컴포넌트 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 — zui5.rollfcst · OData dataSources · ko 로케일 |
view/Main.view.xml | 조회조건 + 탭(라인 상세/개정 이력/대사 결과) |
view/DetailDialog.fragment.xml | 대사 상세 다이얼로그 |
controller/Main.controller.js | 조회·필터 조립·다이얼로그 로직 |
controller/BaseController.js | 공통 처리(CSV 내려받기 등) |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 금액·차이율·점검상태 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
검증 환경 구성 상세는 이 글에서 다루지 않습니다. 운영 전환 시에는 화면과 판정 로직은 그대로 두고 데이터 계층만 실제 서비스 호출에 맞추면 됩니다.
검증 결과
화면 구성에 쓴 데이터는 최초계획·누적개정액·최신포캐스트의 관계가 항상 검증되도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 대사식 전수 검증(최초계획+누적개정액=최신포캐스트, 개정이력 합계=누적개정액) | 통과(차이 0건, 의도적 예외 2건 별도 표시) |
| 표시 금지 검사 — 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 — 실브라우저에서 조회 → 탭 전환 → 행 클릭 상세까지 실동작 후 캡처 | 4/4 |
| 조회 버튼 위치 · sap_horizon 테마 적용 · Enter 키 조회 | 확인 |
| OData 계약 — 동사 경로 미사용, $filter·$orderby·$top·$inlinecount 로만 조회조건·페이징 전달 | 확인 |
화면 수치는 모두 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면은 언제부터, 어떤 범위에 사용할 수 있나요?
별도의 법정 시행일은 없습니다. 사내 롤링포캐스트(분기별 포캐스트 개정) 프로세스를 운영하는 코스트센터 단위 관리회계 계획 데이터를 대상 범위로 합니다.
"확인 필요" 표시는 오류가 확정되었다는 뜻인가요?
아니요. 이 화면은 분류·집계·대사를 돕는 조회·점검 도구이며, 표시된 차이의 원인 확정과 최종 관리회계 판단은 회사와 담당 부서가 합니다.
화면에서 보이는 데이터는 실제 운영 데이터인가요?
아니요. 이 글과 화면 캡처에 쓰인 수치는 화면 동작과 대사 로직을 확인하기 위해 구성한 검증용 샘플 데이터이며, 실제 코스트센터·계정 데이터가 아닙니다.
최신포캐스트는 어떻게 계산되나요?
최초계획(BUD)에 버전 전환 구간(BUD→FC1→FC2→FC3→FC4)별 개정액을 모두 더한 누적개정액을 합산해 산출합니다. 이 합계가 실제 최신포캐스트 값과 다르면 "확인 필요"로 표시됩니다.