SAP 사업계획 버전 개정 대사 점검 — 계획이 바뀔 때마다, 바뀐 이유도 같이 남긴다
버전이 바뀔 때마다 금액이 얼마나 왜 바뀌었는지, 승인은 제대로 따라갔는지를 계획 데이터로 먼저 확인해 둡니다
사업계획은 한 번에 확정되지 않습니다. 최초계획을 세운 뒤에도 시장 상황이나 조직 개편, 환율 변동 같은 이유로 1차, 2차, 3차 수정계획이 이어서 만들어집니다. 문제는 그 과정에서 버전마다 금액이 얼마나 바뀌었는지, 왜 바뀌었는지, 결재는 제대로 따라갔는지가 여러 화면과 다운로드 파일에 흩어지기 쉽다는 점입니다.
이 화면은 조직단위·계정별로 버전 라인을 모아 버전 롤포워드(직전버전 합계 + 증감 합계 = 이번버전 합계) 가 맞는지 대사하고, 증감폭이 큰데 변경사유가 불명확하거나 후속 버전이 이미 등록됐는데 승인이 밀려 있는 건만 가려내는 조회/점검 화면을 OpenUI5로 구현했습니다. 실제 구동 화면 5종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 코스트센터 계획 --
KP06/KP26으로 입력한 계획 금액 구조를 그대로 사용 - 버전 관리 --
KP98계획 버전 복사로 만들어지는 버전 체계를 그대로 사용 - 표준 화면 -- 코스트센터 계획(KP06) · 활동단가 계획(KP26) · 계획-실적 비교 리포트(S_ALR_87013611)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 관리회계(CO) · 사업계획 |
| 관련 대상 영역 | 사업계획 버전 관리 -- 버전 간 금액 롤포워드 대사와 변경사유/승인상태 점검 |
| Namespace | zui5.planversion |
| 셸 구조 | 조회조건 영역(우측 조회) + 버전 롤포워드 대사 요약 + 라인 명세·조직별·버전별·변경사유별·점검 예외 5개 탭, 상세 Dialog |
| 화면 수 | 조회 화면 1개 + 상세 다이얼로그 |
| SAP 표준 T-code | KP06 · KP26 · KP98 · S_ALR_87013611 |
| 데이터 연동 방식 | OData V2 -- 화면 블록마다 엔티티셋에 직접 바인딩 |
| 성격 | 조회·대사·점검형 -- 계획 확정·결재 처리는 화면 밖 프로세스 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 5종 둘러보기
회사코드·회계연도를 넣고 조회하면 버전 롤포워드 대사 요약과 라인 명세가 한 화면에 뜹니다 → 탭을 옮겨 조직별·버전별·변경사유별 집계를 보고 → 점검 예외에서 확인이 필요한 건만 추려 봅니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 회계연도를 넣습니다. 조직단위·버전·승인상태는 비워 두면(전체) 전체가 조회됩니다.
- 조회 버튼은 조회조건 입력 필드 줄의 가장 오른쪽에 있습니다. 입력 필드에서 Enter 키를 눌러도 같은 조회가 실행됩니다.
- 버전 롤포워드 대사 요약에서 롤포워드 차이와 승인대기/예외 건수를 먼저 확인합니다.
- 탭을 옮겨 가며 라인 명세 → 조직별 → 버전별 → 변경사유별 → 점검 예외 순으로 좁혀 봅니다.
- 라인 명세, 점검 예외 탭에서 행을 누르면 상세 내역이 다이얼로그로 열립니다.
- 라인 명세와 점검 예외 탭에서는 CSV 내려받기(UTF-8 BOM)로 결과를 저장할 수 있습니다.
언제 확인이 필요한가 -- 개정 확인 기준
이 화면은 버전 간 증감 자체를 옳고 그름으로 판정하지 않습니다. 아래 조건에 해당하는 라인만 확인이 필요한 건으로 가려냅니다.
| 판정 조건 | 결과 상태 | 사용자 조치 |
|---|---|---|
| 버전 증감이 있고 변경사유가 구체적으로 기록된 경우 | 정상 | 추가 조치가 필요하지 않습니다. |
| 버전 증감률 절대값 30% 이상 + 변경사유 '기타'로만 기록 | 확인 필요 | 실제 증감 배경을 구체적인 사유코드로 재분류합니다. |
| 후속 버전이 이미 등록됐는데 이전 버전이 '승인대기'로 지속 | 확인 필요 | 밀려 있는 승인 건을 처리하거나 반려 처리합니다. |
| 버전 롤포워드(직전버전+증감=이번버전) 불일치 | 점검 필요 | 해당 구간의 라인 누락/중복 여부를 대사합니다. |
이 화면이 대신 정하지 않는 것
판정 결과는 확인 대상을 알리는 표시일 뿐입니다. 증감폭 30% 기준과 승인 지연 판단은 확인 대상을 고르는 참고값이며, 계획금액 확정 여부에 대한 최종 판단은 회사의 계획수립 절차와 결재권자가 합니다.
라인 대사에서 버전 롤포워드까지 5단계 산출
| 단계 | 내용 |
|---|---|
| 1단계 | 조직단위 x 계획계정 조합별로 버전(최초/1차/2차/3차 수정) 라인을 모은다 |
| 2단계 | 버전 증감을 계산한다 -- 버전증감액 = 계획금액 - 직전버전금액 |
| 3단계 | 버전별 전사 합계를 롤포워드로 대사한다 -- 직전버전 합계 + 증감 합계 = 이번버전 합계 |
| 4단계 | 조직단위별 누적 증감과 변경사유코드별 건수/금액을 별도로 집계한다 |
| 5단계 | 확인 기준에 해당하는 라인을 점검 예외로 분리한다 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 회계연도 | 필수 | 대사 요약 단건 조회의 키로도 씁니다. |
| 조직단위 | 선택 | 전체 / 영업본부 / 생산본부 / 경영지원본부 / R&D본부 / 해외사업본부 |
| 버전 | 선택 | 전체 / 최초계획 / 1차 수정계획 / 2차 수정계획 / 3차 수정계획(확정) |
| 승인상태 | 선택 | 전체 / 승인완료 / 승인대기 / 반려 |
결과 컬럼
| 영역 | 컬럼 · 표시 |
|---|---|
| 버전 롤포워드 대사 요약 | 라인 수 · 조직 수 · 버전 수 · 최초계획 합계 · 최신버전 합계 · 누적 증감액 · 롤포워드 차이 · 승인대기 건수 · 예외 건수 |
| 버전별 라인 명세 | 라인ID · 조직단위 · 계획계정 · 버전 · 계획금액 · 직전버전금액 · 버전증감액 · 버전증감률 · 변경사유 · 승인상태 |
| 조직별 집계 | 조직단위 · 최초계획(V0) · 최신버전 · 누적증감액 · 누적증감률 · 개정라인 승인완료율 |
| 버전별 · 변경사유별 집계 | 버전/사유 · 건수 · 직전버전 합계 · 증감 합계 · 버전 합계 · 롤포워드 차이 |
| 점검 예외 | 예외번호 · 조직단위 · 예외 유형 · 내용 · 관련금액 · 중요도 |
SAP 표준 기능 매핑
표준 실행은 SAP 표준 T-code 가 담당하고, 이 화면은 그 데이터에 버전 간 대사 관점의 조회·점검을 더해 확장합니다.
| 표준 T-code | 표준 기능 | 이 화면이 더한 것 |
|---|---|---|
KP06 | 코스트센터 계획 금액 입력 | 버전별 입력 결과를 조직/계정 축으로 모아 봅니다 |
KP26 | 활동단가/수량 계획 입력 | 계획계정 단위 금액에 함께 반영합니다 |
KP98 | 계획 버전 복사 | 복사로 만들어진 버전 간 증감을 자동으로 대사합니다 |
S_ALR_87013611 | 계획-실적 비교 리포트 | 버전 확정 전 개정 배경/승인 상태를 먼저 점검합니다 |
분석 지표 정의표
| 지표 | 정의 | 산출식 | 원천 데이터 | 비고 |
|---|---|---|---|---|
| 버전증감액 | 버전 개정에 따른 금액 변동 | 계획금액 - 직전버전금액 | 버전별 계획 라인 | 최초계획(V0)은 계산 대상 아님 |
| 롤포워드 차이 | 버전 합계 대사 결과 | 직전버전 합계 + 증감 합계 - 버전 합계 | 버전별 전사 합계 | 0이 아니면 확인 필요 |
| 누적증감률 | 최초계획 대비 최신버전 누적 변동 | (최신버전 합계 - 최초계획 합계) / 최초계획 합계 | 조직단위별 합계 | - |
| 개정라인 승인완료율 | 개정 라인의 결재 진행도 | 승인완료 라인 수 / 개정 라인 수(V0 제외) | 버전별 계획 라인 | - |
참고 CDS 뷰
| 원천 테이블 | 주요 필드 | 쓰임 |
|---|---|---|
CSKS | KOSTL · KOKRS | 조직단위(코스트센터) 마스터 |
SKA1 / SKAT | SAKNR · TXT50 | 계획계정 명칭 |
ACDOCA | RBUKRS · GJAHR · KOSTL · RACCT · RVERS · HSL | 계획 레저에 기록된 버전별 계획 라인 |
define view I_PlanVersionRollforward
as select from acdoca
association [1..1] to csks as _CostCenter on _CostCenter.kostl = acdoca.kostl
association [1..1] to ska1 as _Account on _Account.saknr = acdoca.racct
{
key acdoca.rbukrs as CompanyCode,
key acdoca.gjahr as FiscalYear,
key acdoca.kostl as CostCenter,
key acdoca.racct as GLAccount,
key acdoca.rvers as PlanVersion,
sum(acdoca.hsl) as PlanAmount,
_CostCenter,
_Account
}
group by acdoca.rbukrs, acdoca.gjahr, acdoca.kostl, acdoca.racct, acdoca.rvers
표준 CDS 뷰 이름과 필드는 시스템 릴리스에 따라 다를 수 있으므로, 도입 시 실제 시스템에서 확인해 확정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 · 구성 |
|---|---|
| 화면 골격 | sap.m.Page + 조회조건 패널 · 대사 요약 패널 · sap.m.IconTabBar 5개 탭 |
| 데이터 연동 | manifest.json dataSources.mainService(OData V2, 상대 경로) -- 화면 블록마다 엔티티셋에 직접 바인딩합니다. 모델 설정은 useBatch:false · defaultBindingMode:"OneWay" · defaultCountMode:"Inline" |
| 조회조건 | sap.m.Input · sap.m.ComboBox -- 우측 끝에 조회·초기화 버튼, Enter 키로 즉시 재조회, sap/ui/model/Filter로 조회조건을 조립합니다. "전체"를 고른 조건은 필터를 만들지 않습니다 |
| 정렬 · 페이징 | sap/ui/model/Sorter와 모델의 페이징 기능으로 처리 |
| 명세·예외 표 | sap.ui.table.Table -- 행 클릭 시 상세 다이얼로그 |
| 집계 표 | sap.m.Table -- sap.m.ObjectStatus로 판정 상태를 표준 ValueState 로만 표시 |
| 공통 처리 | CSV 다운로드 공통 컨트롤러(UTF-8 BOM), 전역 오류 처리기 -- 메타데이터 로드 실패·요청 실패·빈 응답을 구분해 안내 |
파일 구성
| 경로 | 역할 |
|---|---|
index.html | OpenUI5 부트스트랩 -- sap_horizon · lodash · moment, OData 서비스에 연결 |
Component.js | 화면 상태·조회조건 모델 초기화, 전역 오류 처리기 연결 |
manifest.json | 앱 디스크립터 -- zui5.planversion · ko 로케일, OData 서비스와 모델 선언 |
view/Main.view.xml | 조회조건 · 대사 요약 · 5개 탭 |
view/DetailDialog.fragment.xml | 상세 내역 다이얼로그 |
controller/Main.controller.js | 조회조건 조립 · 바인딩 · 다이얼로그 · CSV 다운로드 |
controller/BaseController.js | CSV 다운로드 공통 처리 |
model/ErrorHandler.js | 전역 오류 처리 |
model/formatter.js | 금액 · 비율 · 상태 표시 서식 |
i18n/i18n_ko.properties | ko 로케일 리소스 |
운영 데이터는 OData 서비스가 제공하며, 검증용 샘플 데이터는 화면과 완전히 분리해 별도로 둡니다. 화면과 판정 로직은 그대로 씁니다.
검증 결과
화면 구성에 쓴 검증용 샘플 데이터는 5개 조직 x 6개 계정 x 4개 버전, 총 120개 라인을 기준으로 버전 롤포워드가 원(KRW) 단위로 정확히 맞물리도록 구성했습니다.
| 검증 항목 | 결과 |
|---|---|
| 라인 롤포워드 = 직전버전금액 + 버전증감액 = 계획금액 (120건) | 통과(차이 0) |
| 버전 롤포워드 = 직전버전 합계 + 증감 합계 = 이번버전 합계 (4개 버전) | 통과(차이 0) |
| 조직별 누적증감 = 라인 집계와 일치 | 통과(차이 0) |
| 변경사유별 집계 = 라인 집계와 일치 | 통과(차이 0) |
| 대사 요약행 = 실제 집계 결과 | 통과(차이 0) |
| 확인 필요 건 안내 -- 증감폭 30%% 이상+사유 기타 3건, 후속 버전 존재 중 승인대기 지속 3건(의도적으로 구성한 케이스) | 총 6건 |
| 조회 조건 전달 -- 조직단위/버전/승인상태 필터, 정렬, top 적용 결과 확인 | 확인 |
| 표시 금지 검사 -- 커스텀 프로그램ID·앱 식별자·출처 표현 검출 | 0건 |
| 화면 렌더링 -- 실브라우저에서 조회 → 탭 이동 → 행 클릭 상세까지 실동작 후 캡처 | 5/5 |
조회 버튼 위치 · sap_horizon 테마 · Enter 키 조회 · 서비스 미연결 시 오류 안내 | 확인 |
모든 데이터는 검증용으로 구성한 가상 데이터입니다.
자주 묻는 질문
이 화면의 판정이 곧 계획 확정 승인인가요?
아닙니다. 이 화면은 버전 간 금액 증감과 승인상태/변경사유를 대사해 확인이 필요한 개정 건을 가려내는 조회/점검 도구입니다. 계획 확정에 대한 최종 판단은 회사의 계획수립 절차와 결재권자가 합니다.
적용 시기와 범위는 어떻게 되나요?
이 화면은 특정 회계기준의 시행일과 무관한 사내 계획수립 프로세스 조회 도구입니다. 회사가 사업계획을 여러 버전으로 나눠 관리하는 회계연도부터 바로 조회할 수 있으며, 계획 수정이 있을 때마다 새 버전 라인이 쌓이는 구조를 그대로 봅니다.
버전 롤포워드 차이가 생기면 어떻게 하나요?
버전별 집계 탭에서 어느 버전 구간에서 차이가 발생했는지 먼저 확인한 뒤, 그 구간의 라인 명세를 열어 조직단위/계정 조합이 누락되거나 중복되지 않았는지 대사합니다.
승인대기 상태인 라인은 모두 문제가 있는 건가요?
아닙니다. 승인대기 자체는 정상적인 진행 단계입니다. 이 화면이 확인 필요로 표시하는 것은 후속 버전이 이미 등록됐는데도 이전 버전이 계속 승인대기로 남아 있는 경우처럼, 진행이 밀린 것으로 보이는 건에 한정합니다.