생산 · 통합 관리

SAP BOM·라우팅 설계변경 통합 관리 — 설계변경 뒤 남은 구성품 재고를 평가·정리·대사까지 한 화면에서

변경 건별 잔존재고 · 진부화 평가와 정리 문서의 승인 · 일괄 실행 · 대사 예외 조치 · 피벗 분석과 드릴스루 · 기준 대비 차이 요인분해 · 규칙 기반 해설과 AI 에이전트 — 소개 영상과 실제 화면 26종, 그리고 CDS 코드까지

소개 영상블로그 목차 순서대로 · 자막 포함

도입 포인트 — 이 앱을 사용해야 하는 이유

BOM이나 라우팅이 바뀌면 이전 구성품은 하루아침에 쓸 곳이 줄어듭니다. 현업이 부딪히는 질문은 늘 같습니다. 이 변경 때문에 얼마가 남았나, 다른 곳에 쓰거나 소진할 수 있나, 정리한다면 누가 승인하나. 지금은 변경 번호는 표준 화면에서, 재고는 다른 T-code에서, 평가와 정리는 엑셀과 메일 승인으로 나뉘어 있어 월말에 이 셋을 맞추는 일이 따로 생깁니다. 이 앱은 세 질문을 변경 건이라는 하나의 묶음에 붙여, 확인 · 평가 · 승인 · 정리 · 대사를 한 화면 체계에서 처리하게 합니다.

재고 평가와 관련한 회계 기준의 구체 요구사항 매핑은 이 글에서 확인하지 못해 확인 필요로 두었고, 앱은 점검이 필요한 항목을 보여 줄 뿐 위반 여부를 판정하지 않습니다.

한 줄 요약 — 조회 화면은 누구나 만듭니다. 이 앱의 값은 조회 다음에 있습니다: 문서를 승인까지 처리하고, 예외만 남겨 대사하고, 차이의 원인까지 내려가며, 그 숫자가 원천 라인과 어긋나지 않는지 매번 검산합니다.

핵심 포인트 여덟 가지

핵심 포인트고객이 얻는 것지금 방식이라면
① 변경 건마다 남은 재고가 한 줄로설계변경 건 62건 각각의 영향 수량 · 소진 수량 · 장부 잔존 재고가 목록 한 줄에 나옵니다. 어느 변경이 얼마를 남겼는지 바로 보입니다.변경 번호로 BOM · 라우팅 변경을 확인한 뒤 재고 화면과 엑셀을 오가며 잔존 수량을 손으로 맞춥니다.
② 평가와 정리를 같은 화면에서 승인까지진부화 평가 · 잔존재고 정리 · 조정 문서를 임시저장에서 확정까지 한 화면에서 처리하고 상태 이력이 남습니다.평가는 엑셀, 승인은 메일, 전기는 다른 화면으로 나뉘어 어디까지 갔는지 문서마다 물어봐야 합니다.
③ 작성자와 승인자를 서버가 가른다300만 원 이상은 2단계 승인이고 같은 사용자의 승인은 거절됩니다. 버튼을 숨기는 데서 끝나지 않고 직접 요청도 막습니다.직무 분리는 결재 규정에만 있고 시스템은 막지 못해 사후 점검에 기대게 됩니다.
④ 일괄 실행은 먼저 미리 보고시뮬레이션에서 만들어질 문서와 합계를 본 뒤 실행하고, 같은 조건의 재실행은 중복 생성 없이 거절됩니다.대상 선정을 엑셀로 하고 실행 뒤에야 합계를 맞춰 보며, 같은 건을 두 번 처리하는 일이 생깁니다.
⑤ 대사 규칙 네 가지로 차이만 남긴다문서 차대, 확정 문서와 원가 라인, 변경 건 장부와 라인 합계, 유효 적용 변경 건과 정리액을 176건 점검해 예외 10건만 보여 줍니다.월말에 담당자가 표준 화면 값과 엑셀을 눈으로 대조하고, 어디서 틀어졌는지 찾는 데 시간을 씁니다.
⑥ 축을 바꿔도 합계가 같은 피벗제품군 · 변경 건 · 경과 구간 · 변경 유형을 끌어다 놓아도 총합이 변하지 않고, 칸을 누르면 원천 문서 라인으로 내려갑니다.보고 축마다 리포트를 따로 만들어 합계가 다르면 리포트를 맞추는 회의를 엽니다.
⑦ 기준 대비 차이를 요인으로영향 원가 계획 대비 +3,311만 원을 물량 · 소진율 · 재작업 시간 · 시간당 영향 원가로 가르고 합이 총차이와 같은지 검산합니다.차이가 난 사실까지는 알아도 왜 났는지는 엑셀로 따로 분해해야 합니다.
⑧ 사람이 열지 않아도 도는 감시181일 초과 장기 재고 비중 같은 규칙 다섯 개가 받을 사람과 함께 대기함에 보고를 올리고, 하루 한 번 제한과 활동 기록이 남습니다.숫자가 나빠진 날 아무도 화면을 열지 않으면 그대로 지나갑니다.

사례로 보는 효과

샘플 데이터 2026년 1월~9월 영향 원가는 898,880,557원이고 이 가운데 790,786,000원(88%)이 다른 용도로 소진되었으며 33,045,034원이 정리되고 75,049,523원이 잔존 재고로 남았습니다. 세 숫자를 더하면 영향 원가와 같습니다. 계획 대비로는 +33,108,695원(3.8%)이며, 요인으로 가르면 시간당 영향 원가가 +16,230,553원으로 가장 크고 소진율 +7,338,081원, 물량 +6,119,597원, 재작업 시간 +3,420,464원이 뒤따릅니다. 네 요인의 합과 총차이의 차이는 0원입니다. 대사 규칙 네 가지는 176건을 점검해 의도적으로 넣어 둔 예외 10건만 남겼고, 큐브 합계와 원천 라인 합계의 차이는 측정값 8종 모두 0입니다.

도입하면 달라지는 것

  • 변경 건마다 남은 재고와 영향 금액을 목록에서 바로 확인합니다.
  • 평가·정리 문서가 승인 단계까지 같은 화면에서 처리됩니다.
  • 월말 대사는 예외 10건만 보면 되고 조치 기록이 남습니다.
  • 차이가 나면 요인과 원천 문서 라인까지 내려가 이유를 찾습니다.

이런 회사에 맞습니다

BOM · 라우팅 설계변경이 잦은 제조 회사로, 변경 뒤 구 구성품 재고의 평가와 정리를 엑셀과 메일로 처리하고 있는 곳에 맞습니다. 사업장이 둘 이상이거나 문서에 승인 단계가 있어 작성자와 승인자를 나눠야 하는 생산 · 원가 · 경영지원 조직이라면 효과가 큽니다. 표준 화면은 그대로 두고 변경 건 단위의 점검 관점을 더하려는 SAP 운영 조직에도 맞습니다.

실행 화면

사용 방법

  1. 조회조건 입력 — 위쪽 조회조건 영역에서 사업장(선택)과 기간(필수)을 정합니다. 사용자 선택에서 역할을 바꿔 볼 수 있습니다.
  2. 조회 버튼 · Enter — 조회조건 영역 오른쪽 끝의 조회 버튼을 누르거나 입력칸에서 Enter 키를 누릅니다. 초기화 버튼은 같은 줄에 있습니다.
  3. 요약 확인 — 개요 · 할 일의 타일에서 잔존 재고, 처리 대기, 승인 대기, 대사 예외 건수를 봅니다.
  4. 탭 · 축 이동 — 왼쪽 메뉴로 기준정보 → 문서 → 일괄 실행 → 대사 → 분석 → 연계 → 감사 순서로 이동합니다. 분석에서는 차원 칩을 행 · 열 칸에 놓습니다.
  5. 행 · 셀 클릭 상세 — 목록의 행을 누르면 오른쪽에 상세가 열리고, 분석의 값 칸을 누르면 원천 문서 라인이 열립니다.
  6. 내보내기 — 목록 위의 CSV 버튼과 분석의 PowerPoint 버튼으로 현재 결과를 내려받습니다.

무엇으로 만들었나

자리무엇왜 그렇게 두었나
화면 컨트롤OpenUI5 표준 컨트롤(ToolPage · FlexibleColumnLayout · TreeTable)과 직접 그린 SVG 차트외부 차트 라이브러리를 들이지 않아 보안 반입 심사가 필요 없습니다
집계 · 판정 로직서비스 로직 파일 하나가 상태 전이 · 승인 · 대사 · 요인분해를 판정하고, 큐브 재집계는 브라우저 모델 파일이 맡습니다판정과 기록은 서비스에 있어 화면 밖에서 호출해도 같은 결과가 나옵니다
OData 서비스 구성서비스 하나에 엔티티셋 33개와 처리 펑션 12개. 화면은 기본 모델 하나로 읽고, 조회조건은 필터 객체로 만들어 보냅니다한 서비스로 모아 운영 전환 때 서비스 주소만 바꾸면 됩니다
테마sap_horizonSAP 표준 화면과 같은 시각 언어로 오가는 데 낯설지 않게
SAP 표준 기능을 그대로 이어받은 부분 — 변경 번호와 유효일(CC02), 구성(CS03), 공정(CA03), 재고(MB52)는 표준 화면의 데이터 구조를 그대로 이어받고, 이 앱은 변경 건 단위의 평가 · 승인 · 대사 관점을 더해 확장합니다.

처음 열었을 때 — 숫자와 할 일이 먼저 보인다

처음 열었을 때 — 타일로 보는 잔존재고와 처리 대기
처음 열었을 때 — 타일로 보는 잔존재고와 처리 대기 — 구성품 재고 잔액 · 처리 대기 · 승인 대기 · 반려 · 대사 예외 건수가 타일로 뜹니다.

사업장과 기간을 정해 조회하면 타일이 갱신됩니다. 타일을 누르면 해당 목록으로 이동하고, 숫자는 모두 서버가 집계한 값입니다. 기본 기간은 올해 1월부터 오늘이 속한 달까지입니다.

내 할 일과 알림 보고
내 할 일과 알림 보고 — 역할에 맞는 할 일 목록과 에이전트가 올린 보고 자리입니다.

"내 역할 것만" 을 켜면 현재 사용자의 역할이 처리할 일만 남습니다. 할 일을 누르면 그 문서 화면으로 바로 갑니다. 알림 보고는 에이전트를 실행한 뒤에 채워집니다.

기준정보 관리 — 변경 건과 평가 규칙을 한곳에서

기준정보 관리 — 설계변경 건 목록
기준정보 관리 — 설계변경 건 목록 — 설계변경 건 62건을 상태와 사업장으로 좁혀 봅니다.

변경 건 · 내용 · 사업장 · 유형 · 상태 · 영향 수량 · 소진 수량 · 장부 잔존 재고가 한 줄에 보입니다. 상태가 진행 · 유효 적용 · 마감 가운데 어디인지가 정리 문서를 만들 수 있는지를 정합니다.

기준정보 수정
기준정보 수정 — 변경 유형 · 영향 수량 · 구 구성 단가를 고칩니다.

저장하면 서버가 값을 검사합니다. 수정 전후 값은 이력으로 남고 감사 로그에도 같은 내용이 기록됩니다. 관리자 역할에게만 버튼이 켜집니다.

기준정보 변경 이력
기준정보 변경 이력 — 누가 언제 무엇을 바꿨는지 봅니다.

변경 이력이 없으면 없다고 알려 줍니다. 수정이나 사용 중지 처리를 하면 이 목록에 행이 생깁니다.

기준정보 생성
기준정보 생성 — 새 설계변경 건을 등록합니다.

품목 · 변경 유형 · 영향 수량 · 구 구성 단가 · 개시일 · 이름이 필수입니다. 빠진 값은 저장 전에 알려 줍니다.

문서 처리와 승인 — 승인 버튼은 승인자에게만 보인다

문서 처리 — 목록
문서 처리 — 목록 — 평가·정리·조정 문서 75건을 문서번호 · 변경 건 · 구분 · 상태로 찾습니다.

한 줄에 변경 건과 품목, 전표일, 금액, 상태가 보입니다. 오른쪽에 상세가 열려도 목록은 그대로 남아 이어서 다음 문서를 고를 수 있습니다.

문서 생성
문서 생성 — 구분과 사업장, 유효 적용 변경 건을 골라 정리 문서를 만듭니다.

정리 문서는 유효 적용 상태이면서 진행 중인 정리 문서가 없는 변경 건만 고를 수 있습니다. 금액은 변경 건의 잔존재고에서 서버가 계산합니다.

문서 상세 — 항목 · 상태 이력 · 연계 문서
문서 상세 — 항목 · 상태 이력 · 연계 문서 — 분개 항목과 상태 이력, 연계 문서를 한 화면에서 봅니다.

차변 설계변경 손실, 대변 구성품 재고가 같은 금액으로 나옵니다. 검토 요청 · 승인 · 반려 · 확정 · 역처리 버튼은 서버가 알려 준 상태와 내 역할에 맞는 것만 보입니다.

일괄 실행 — 시뮬레이션 합계와 실행 결과가 같다

일괄 실행 — 조건 입력
일괄 실행 — 조건 입력 — 사업장과 대상 기간을 정합니다.

시뮬레이션과 실행은 같은 조건을 씁니다. 실행 이력과 로그, 만들어진 문서가 같은 화면 아래에 이어집니다.

일괄 실행 — 시뮬레이션 결과
일괄 실행 — 시뮬레이션 결과 — 저장하기 전에 만들어질 문서 8건과 합계를 미리 봅니다.

합계 2,176,801원을 확인한 뒤 실행하면 같은 금액의 문서가 생깁니다. 시뮬레이션을 거치지 않은 실행과 같은 조건의 재실행은 서버가 거절합니다.

대사와 예외 조치 — 차이는 남기되 조치 기록을 붙인다

대사 · 점검 — 규칙과 결과
대사 · 점검 — 규칙과 결과 — 규칙 네 가지의 점검 건수와 차이 건수를 보여줍니다.

R01 75건, R02 32건, R03 62건, R04 7건을 점검해 차이 10건이 나옵니다. 모두 의도적으로 넣어 둔 예외라 조치 흐름을 시험할 수 있습니다.

대사 예외 조치
대사 예외 조치 — 예외 1건을 골라 조치 방법과 사유를 기록합니다.

장부 잔존 재고 차이나 유효 적용 변경 건의 미정리 잔액은 조정 문서로 풀 수 없을 수 있어, 사유 기록이나 보류로 처리합니다. 조치 뒤 재대사하면 해소로 바뀝니다.

분석 — 축을 바꿔도 합계가 변하지 않는다

분석 — 피벗 조회
분석 — 피벗 조회 — 제품군을 행, 기간을 열에 놓은 피벗과 오른쪽 차트입니다.

영향 원가를 기본 측정값으로 보여 줍니다. 값 칸을 누르면 그 금액을 만든 원천 문서 라인이 열려 합계가 같은지 바로 확인됩니다.

분석 — 행과 열 바꾸기
분석 — 행과 열 바꾸기 — 서버에 다시 묻지 않고 축만 바꿔 다시 집계합니다.

행↔열 바꾸기나 칩 이동 뒤에도 총합은 변하지 않습니다. 이미 읽어 둔 큐브를 브라우저에서 다시 묶기 때문입니다.

분석 — 차원 필터
분석 — 차원 필터 — 일곱 가지 차원에서 값을 여러 개 골라 범위를 좁힙니다.

같은 차원 안의 값은 또는, 서로 다른 차원 사이는 그리고로 묶입니다. 적용 후 조회를 누르면 그 범위로 다시 읽습니다.

분석 — 기준 대비 차이와 워터폴
분석 — 기준 대비 차이와 워터폴 — 계획 영향 원가에서 실적까지를 요인별로 가른 표와 워터폴입니다.

계획 8.66억 원, 실적 8.99억 원, 총차이 +3,311만 원이며 요인 네 개를 더하면 총차이와 같다는 검산 줄이 매번 표시됩니다.

AI 분석과 에이전트 — 숫자는 서버가, 해설은 그 위에서

분석 — 해설과 근거 표
분석 — 해설과 근거 표 — 모델이 연결되지 않아도 규칙 기반 해설이 나옵니다.

요약, 핵심 발견, 근거 표 순서입니다. 금액과 비율은 서버가 큐브에서 계산한 값이고, 해설은 점검 필요 항목을 알려 주는 참고 자료입니다. 표 아래 버튼으로 PowerPoint 보고서를 받습니다.

AI 에이전트 — 감시 규칙과 활동 기록
AI 에이전트 — 감시 규칙과 활동 기록 — 감시 규칙 다섯 개, 대기함 보고, 활동 기록을 한 창에서 봅니다.

하루 한 번 제한이 있어 같은 날 두 번째 실행은 활동 기록만 남기고 판정을 건너뜁니다.

레이아웃 — 만든 배치를 다시 쓴다

레이아웃 저장
레이아웃 저장 — 현재 축 배치와 조회 조건에 이름을 붙여 저장합니다.

기본 레이아웃으로 지정하거나 자동 조회로 열도록 고를 수 있습니다.

레이아웃 관리
레이아웃 관리 — 저장한 레이아웃을 불러오거나 지우고 기본값을 바꿉니다.

새로 고친 뒤에도 저장한 레이아웃이 남아 있어 다시 열면 같은 배치로 시작합니다.

영역 간 연계 — 문서에서 문서로 이동한다

영역 간 연계 — 문서 흐름
영역 간 연계 — 문서 흐름 — 선행 문서에서 후속 문서까지 이어서 봅니다.

설계변경 건에서 시작한 문서가 어떤 후속 문서로 이어졌는지 보이고, 문서를 누르면 그 상세로 이동합니다.

이력 · 감사 · 역할 — 누가 무엇을 했는지 남는다

이력 · 감사 · 권한
이력 · 감사 · 권한 — 역할별 권한, 상태 전이 규칙, 감사 로그를 한 화면에서 봅니다.

누가 언제 무엇을 바꿨는지가 변경 전후 값과 함께 남습니다. 조회조건으로 사용자와 결과를 좁힐 수 있습니다.

조회자 역할 — 쓰기 버튼 숨김
조회자 역할 — 쓰기 버튼 숨김 — 사용자를 조회자로 바꾸면 처리 버튼이 보이지 않습니다.

버튼을 숨기는 데서 끝나지 않고, 직접 요청해도 서버가 같은 이유로 거절합니다.

좁은 화면에서 달라지는 것

좁은 화면 390px — 개요
좁은 화면 390px — 개요 — 메뉴가 접히고 타일이 한 줄씩 쌓입니다.

가로폭이 좁아져도 같은 기능을 씁니다.

좁은 화면 390px — 문서
좁은 화면 390px — 문서 — 목록이 화면 폭에 맞게 한 칸으로 쌓입니다.

표 대신 카드형 목록으로 바뀌어 한 손으로도 문서를 찾을 수 있습니다.

화면 뒤에서 일어나는 일

문서는 서비스 안에서 상태 규칙 표를 따라서만 움직입니다. 판정 조건에서 결과 상태, 사용자 조치까지를 아래 표로 정리했습니다.

판정 조건결과 상태사용자 조치
임시저장 문서에서 검토 요청20 검토요청승인자에게 할 일이 생깁니다
검토요청에서 승인(300만 원 미만)30 승인처리자가 확정합니다
검토요청에서 승인(300만 원 이상 1단계)20 검토요청 유지, 2단계 대기다른 승인자가 2단계 승인합니다
작성자와 승인자가 같음거절다른 승인자에게 요청합니다
검토요청에서 반려90 반려사유를 보고 보완한 뒤 다시 검토 요청합니다
승인에서 확정40 확정원가 라인에 반영되고 변경 건이 마감으로 바뀝니다
확정에서 역처리99 취소반대 문서가 연결되어 생성됩니다
임시저장에서 곧바로 확정거절(400)순서대로 검토 요청부터 진행합니다

처리 단계의 산출 · 대사식은 다음과 같습니다.

  1. 잔존 재고 = 영향 발생 − 소진 대체 − 정리액 (변경 건별)
  2. 진부화 충당 = 경과 구간별 잔존 재고 × 충당률
  3. 정리 문서 = 차변 설계변경 손실, 대변 구성품 재고(차대 일치)
  4. 큐브 합계 = 원천 문서 라인 합계(측정값 8종)
  5. 대사 규칙 R01~R04

조회조건

필드필수기본값$filter 처리
사업장선택전체선택한 때만 Plant eq 조건을 보냅니다
기간 시작필수올해 1월전표일 ge 조건
기간 종료필수오늘이 속한 달전표일 le 조건
변경 상태선택전체ChgStat eq 조건
문서 구분 · 상태선택전체DocType · Status eq 조건
검색어선택없음변경 번호 · 품목 포함 조건

결과 컬럼

컬럼의미산출식
영향 수량변경으로 쓰이지 않게 된 구성품 수량변경 건 등록 값
소진 수량다른 용도로 쓰이거나 소진된 수량소진 이동 합계
장부 잔존 재고남은 구성품 재고 금액영향 − 소진 − 정리
충당경과 구간별 진부화 충당 금액잔존 × 충당률
소진율소진 대체 ÷ 영향 원가 × 100계산 항목
폐기율폐기 수량 ÷ (소진 + 폐기) × 100계산 항목

좁은 화면에서 달라지는 것

390px 폭에서는 왼쪽 메뉴가 접히고 타일과 목록이 한 칸씩 쌓입니다. 분석의 차트는 숨기지 않고 표 아래로 내려가며, 축 조합이 상한을 넘으면 안내가 뜹니다.

파일 구성

index.html · Component.js · manifest.json
controller/  화면별 컨트롤러 9개 + 공통
view/        화면별 뷰 9개 + 대화상자 15종
model/       formatter · 오류 처리 · 권한 · 큐브 · 차트 · 보고서 · 레이아웃 · 엑셀
odata/       서비스 정의 · 서비스 로직 · 샘플 데이터
media/       소개 영상

SAP 표준 기능 확장 포인트 — 표준 T-code 와 어떻게 연계되는지

표준 실행은 SAP 표준 T-code가 담당하고, 이 화면은 조회 · 검증 관점을 더해 확장합니다.

표준으로 되는 것과 안 되는 것

하고 싶은 일SAP 표준표준에서 걸리는 자리이 앱이 하는 일
변경 번호와 유효일 관리CC02 · CS03 · CA03변경 번호 단위로 BOM·라우팅은 확인되지만 변경이 남긴 재고 금액은 별도 조회가 필요합니다변경 건별 영향 · 소진 · 정리 · 잔존 재고를 한 줄로 보여 줍니다
구 구성품의 사용처CS15사용처 목록은 품목 단위여서 변경 건과 묶어 보기 어렵습니다변경 건에서 영향 품목과 상위 사용처 확인으로 이어갑니다
재고 수량·금액 조회MB52 · MMBE저장 위치별 수량과 평가 금액은 보이지만 경과 구간 충당은 직접 계산합니다경과 구간 1·2·3과 충당률을 적용한 잔존 재고를 보여 줍니다
소진·폐기 이동 이력MB51이동 이력은 건별로 나오고 변경 건 단위 소진율은 따로 만듭니다소진 대체 · 폐기 수량을 변경 건에 묶어 소진율을 보여 줍니다
폐기 이동 처리MIGO이동 처리는 표준이 담당하며 승인 근거와 연결하는 일은 사람이 합니다정리 문서 확정 뒤 폐기 이동 처리로 이어갈 근거를 남깁니다
정리 문서의 승인 흐름표준 승인 기능금액 구간별 2단계와 작성자·승인자 분리를 업무 규칙으로 따로 정해야 합니다300만 원 이상 2단계 승인과 직무 분리를 서버가 지킵니다
차이의 원인 분해없음표준 화면에는 계획 대비 차이를 요인으로 가르는 기능이 없습니다물량 · 소진율 · 재작업 시간 · 시간당 영향 원가로 가르고 합계를 검산합니다

T-code 별 연계 지점

T-code이름연계
CC02변경 마스터 변경변경 번호 · 유효 시작일을 이 앱의 설계변경 건으로 이어받습니다. 결과 → CC02로 원천 확인, CC02 값 → 이 앱 기준정보에서 다시 확인합니다.
CS03자재 명세서 표시변경 대상 품목의 구성품을 확인합니다. 구성 변경 내용은 이 앱의 변경 유형(구성품 교체·소요량 변경)과 맞춰 봅니다.
CA03라우팅 표시공정 변경 건의 라우팅 확인에 씁니다.
CS15자재 사용처 목록구 구성품이 어느 상위 품목에 쓰이는지 확인해 소진 가능성을 점검합니다.
MB52창고 재고 조회변경 건의 장부 잔존 재고와 표준 화면의 저장 위치 재고를 맞춰 보는 지점입니다.
MB51자재 문서 목록소진·폐기 이동을 확인해 이 앱의 소진 수량과 폐기 수량을 대조합니다.
MIGO자재 문서 처리정리 문서 확정 뒤 실제 폐기 이동 처리는 표준에서 합니다. 법정·감사·세무 신고 대응도 표준에 남겨 둡니다.

운영 전환 때 기존 리포트를 없앨 필요는 없습니다. 표준 화면은 그대로 두고 두 화면의 숫자를 대사 지점(MB52의 재고와 이 앱의 장부 잔존 재고)에서 맞춰 보며, 법정 · 감사 · 세무 신고 대응은 표준에 남겨 둡니다.

S/4HANA 분석 스택과의 자리

표준 CDS 분석 쿼리나 Fiori 분석 앱과는 대체가 아니라 나란히 쓰는 관계입니다. 표준 분석 앱이 재고와 이동 데이터를 보여 주는 자리라면, 이 앱은 변경 건이라는 묶음 단위의 평가·정리·대사를 더합니다. 특정 Fiori 앱의 이름은 확인하지 못해 적지 않았고 확인 필요로 둡니다. Analysis for Office 같은 도구에서 같은 큐브를 열도록 분석 쿼리를 공개하는 방법은 CDS 구성 절의 쿼리 뷰에 있습니다.

확장 포인트 — 운영에서 실제로 손대는 자리

자리무엇을 정하나누가
확장 필드변경 유형 · 영향 수량 같은 항목을 변경 마스터의 확장 필드로 둘지 별도 테이블로 둘지운영 시점에 정합니다
경과 구간 기준재고의 마지막 사용일을 무엇으로 볼지(마지막 소비 이동일 · 입고일)확인 필요
충당률 테이블구간별 충당률을 코드가 아니라 테이블로 둡니다현업이 직접 유지
권한 객체사업장 단위 권한을 어떤 객체로 걸지보안·권한 담당
BAdI 연결정리 문서 확정 시 폐기 이동을 자동 호출할지 여부IT와 생산·원가 합의

분석 지표 정의표

지표산식 · 판정 기준대응 기능원천 데이터비고
영향 원가변경으로 쓰이지 않게 된 구 구성품 재고 금액분석 · 개요 타일문서 라인 영향 금액발생 시점 기준
소진 대체다른 용도로 쓰이거나 소진된 금액분석소진 이동(MB51)점검 필요 시 MB51로 확인
정리액정리 문서로 처리된 금액문서 처리정리 문서확정 문서만
잔존 재고영향 − 소진 − 정리기준정보 · 대사 R03변경 건 장부 잔존MB52와 대조
진부화 충당구간별 잔존 × 충당률분석 · 평가 문서문서 라인 충당 금액충당률은 회사 기준
소진율소진 ÷ 영향 × 100계산 항목큐브

CDS 구성

운영 데이터로 갈 때의 구조입니다. 객체 이름과 필드는 스케치이며 실제 시스템에서 확인 필요입니다.

뷰 레이어 구성

레이어뷰하는 일왜 나누나
기준ZDSG_AGING_RT경과 구간 충당률 매핑 테이블충당률을 코드에 박지 않고 현업이 유지
기준ZI_DsgChange변경 마스터와 변경 대상 객체를 변경 건으로 묶음변경 번호 하나가 여러 객체를 가질 수 있어
원천 라인ZI_DsgCostLine영향 · 소진 · 정리 문서 라인을 한 모양으로 통일큐브와 드릴스루가 같은 라인에서 나오게
차원ZI_DsgAgingDim경과 일수를 구간 1·2·3으로 변환구간 정의가 한곳에 있게
큐브ZC_DsgCube차원 조합별 측정값 집계축을 바꿔도 합계가 같게
쿼리ZC_DsgCubeQuery분석 쿼리 정의(행·열·필터)화면과 분석 도구가 같은 쿼리를 쓰게
권한ZC_DsgCube (DCL)사업장 단위 접근 제어집계 단계에서 걸러 드릴스루로 새지 않게
서비스ZUI_DsgChangeOData 서비스 정의와 바인딩화면이 부르는 서비스 하나로 모음

원천테이블과 필드 매핑

원천테이블내용쓰는 곳
AENR변경 마스터 헤더변경 건 기준 뷰
AEOI변경 대상 객체 관리변경 건 기준 뷰
STKO · STPOBOM 헤더 · 품목구성 변경 확인
PLKO · PLPO라우팅 헤더 · 공정공정 변경 확인
MARD · MBEW저장 위치 재고 · 평가장부 잔존 재고(수량 × 평가 단가, 확인 필요)
MSEG · MKPF자재 문서소진 · 폐기 이동

① 경과 구간 충당률 매핑 테이블 — ZDSG_AGING_RT

충당률이 코드가 아니라 테이블에 있어야 현업이 기준을 바꿀 수 있습니다. 구간 번호, 경과 일수 범위, 충당률을 둡니다.

@EndUserText.label : '경과 구간 충당률'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zdsg_aging_rt {
  key client   : abap.clnt not null;
  key bucket   : abap.char(1) not null;
  from_days    : abap.int4;
  to_days      : abap.int4;
  rate_pct     : abap.dec(5,2);
  active       : abap_boolean;
}

② 기준 뷰 — ZI_DsgChange

변경 마스터와 변경 대상 객체를 변경 건 단위로 묶습니다. 변경 번호가 키이고 유효 시작일이 정리 시점을 정합니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '설계변경 건 기준'
@ObjectModel.usageType: { serviceQuality: #A, sizeCategory: #M, dataClass: #MASTER }
define view entity ZI_DsgChange
  as select from aenr as c
    inner join aeoi as o on o.aennr = c.aennr
{
  key c.aennr  as ChangeNo,
      c.datuv  as EffDate,
      o.werks  as Plant,
      o.matnr  as Material,
      c.aetxt  as ChangeText
}

③ 원천 라인 뷰 — ZI_DsgCostLine

영향 발생, 소진 대체, 정리 라인을 같은 모양으로 맞춰 큐브와 드릴스루가 같은 줄에서 나오게 합니다. 금액 필드는 통화 코드와 함께 둡니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@EndUserText.label: '변경 영향 원가 라인'
define view entity ZI_DsgCostLine
  as select from zdsg_line as l
  association [1..1] to ZI_DsgChange as _Chg on _Chg.ChangeNo = $projection.ChangeNo
{
  key l.docno    as DocNo,
  key l.itemno   as ItemNo,
      l.period   as Period,
      l.plant    as Plant,
      l.changeno as ChangeNo,
      l.material as Material,
      l.aging    as AgingDays,
      @Semantics.amount.currencyCode: 'Currency'
      l.imp_amt  as ImpAmt,
      @Semantics.amount.currencyCode: 'Currency'
      l.use_amt  as UseAmt,
      @Semantics.amount.currencyCode: 'Currency'
      l.dsp_amt  as DspAmt,
      l.currency as Currency,
      _Chg
}

④ 차원 뷰 — ZI_DsgAgingDim

경과 일수를 구간 1·2·3으로 바꾸는 규칙을 한곳에 둡니다. 충당률 테이블과 조인해 구간별 충당률도 함께 줍니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@EndUserText.label: '경과 구간 차원'
define view entity ZI_DsgAgingDim
  as select from ZI_DsgCostLine as l
    left outer join zdsg_aging_rt as r
      on  l.AgingDays >= r.from_days
      and l.AgingDays <= r.to_days
{
  key l.DocNo,
  key l.ItemNo,
      case when r.bucket is null then '1' else r.bucket end as Aging,
      coalesce( r.rate_pct, 0 )                             as RatePct
}

⑤ 큐브 뷰 — ZC_DsgCube

차원 조합별로 측정값을 합칩니다. 화면의 피벗과 드릴스루 합계가 같아야 하므로 집계는 여기서만 합니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@Analytics.dataCategory: #CUBE
@EndUserText.label: '설계변경 영향 원가 큐브'
@ObjectModel.usageType: { serviceQuality: #D, sizeCategory: #XL, dataClass: #TRANSACTIONAL }
define view entity ZC_DsgCube
  as select from ZI_DsgCostLine as l
    inner join ZI_DsgAgingDim as a on a.DocNo = l.DocNo and a.ItemNo = l.ItemNo
{
  @AnalyticsDetails.query.axis: #ROWS
  l.Period,
  l.Plant,
  l.ChangeNo,
  l.Material,
  a.Aging,
  @Semantics.amount.currencyCode: 'Currency'
  @DefaultAggregation: #SUM
  l.ImpAmt,
  @Semantics.amount.currencyCode: 'Currency'
  @DefaultAggregation: #SUM
  l.UseAmt,
  @Semantics.amount.currencyCode: 'Currency'
  @DefaultAggregation: #SUM
  l.DspAmt,
  l.Currency,
  cast( cast( l.ImpAmt as abap.dec(17,2) ) * a.RatePct / 100 as abap.dec(17,2) ) as RsvAmt
}

⑥ 분석 쿼리 뷰 — ZC_DsgCubeQuery

화면과 분석 도구가 같은 쿼리를 쓰도록 행·열·필터 기본값을 정합니다. 기간과 사업장은 조회조건으로 둡니다.

@AbapCatalog.viewEnhancementCategory: [#NONE]
@Analytics.query: true
@EndUserText.label: '설계변경 영향 원가 분석'
define view entity ZC_DsgCubeQuery
  as select from ZC_DsgCube
{
  @AnalyticsDetails.query.axis: #ROWS
  @Consumption.filter: { selectionType: #SINGLE, mandatory: true }
  Period,
  @AnalyticsDetails.query.axis: #ROWS
  @Consumption.filter: { selectionType: #MULTIPLE }
  Plant,
  @AnalyticsDetails.query.axis: #COLUMNS
  Aging,
  @AnalyticsDetails.query.axis: #COLUMNS
  ImpAmt,
  @AnalyticsDetails.query.axis: #COLUMNS
  UseAmt,
  @AnalyticsDetails.query.axis: #COLUMNS
  DspAmt
}

⑦ 권한 정의 — ZC_DsgCube

사업장 단위로 접근을 제한합니다. 권한 객체와 필드 이름은 확인 필요이며 운영 시점에 보안 담당과 정합니다.

@EndUserText.label: '설계변경 큐브 사업장 권한'
@MappingRole: true
define role ZC_DsgCube {
  grant select on ZC_DsgCube
    where ( Plant ) = aspect pfcg_auth( ZDSG_PLNT, WERKS, ACTVT = '03' );
}

⑧ 서비스 정의와 처리 액션 — ZUI_DsgChange

화면이 부르는 서비스를 하나로 모읍니다. 승인과 확정 같은 처리 펑션은 RAP 액션으로 옮기는 자리입니다.

@EndUserText.label: '설계변경 통합 관리 서비스'
define service ZUI_DsgChange {
  expose ZC_DsgCube          as CubeSet;
  expose ZC_DsgCubeQuery     as QuerySet;
  expose ZI_DsgChange        as ChangeSet;
  expose ZI_DsgCostLine      as LineSet;
}

// 처리 액션은 RAP 동작 정의에 둡니다 — 이름과 파라미터는 확인 필요
managed implementation in class zbp_dsg_doc unique;
define behavior for ZR_DsgDoc alias Doc
{
  action Submit;
  action Approve;
  action Reject parameter ZA_DsgReason;
  action Post;
  action Reverse parameter ZA_DsgReason;
}

운영 시점에 해야 할 일

개발보다 정하는 일이 많습니다.

해야 할 일무엇을 정하나정하지 않으면누가
상태 흐름과 승인 단계임시저장 → 검토요청 → 승인 → 확정 → 취소 전이와 승인 단계 수문서마다 다른 방식으로 처리되어 감사 때 설명이 어렵습니다생산·원가 책임자
금액 구간2단계 승인 기준 금액(샘플 300만 원)모든 문서가 같은 경로를 타 병목이 생기거나 큰 금액이 단일 승인으로 지나갑니다경영지원
직무 분리와 역할데모 사용자 전환을 SAP 권한 객체와 PFCG 역할로 옮기는 매핑작성자가 스스로 승인하는 길이 열립니다보안·권한
처리 펑션 연결검토 요청·승인·확정을 표준 BAPI · RAP 액션과 연결하는 방식화면은 처리됐는데 표준 원장에는 반영되지 않습니다IT
문서 번호 범위평가·정리·조정 문서의 번호 범위와 연도 구분번호가 겹치거나 추적이 어렵습니다IT·경영지원
영역 간 문서 흐름 키변경 번호와 후속 문서를 잇는 키연계 화면에서 문서가 끊깁니다IT
대사 규칙과 허용 오차규칙 네 가지의 허용 오차와 예외 처리 방법차이를 매번 사람이 판단하게 됩니다원가 책임자
경과 구간과 충당률구간 경계와 충당률, 마지막 사용일의 기준구간이 달라 충당 금액이 들쭉날쭉합니다경영지원·감사 협의
환율 유형과 환산 시점외화 구성품이 있을 때 적용할 환율과 시점같은 재고가 화면마다 다른 금액으로 보입니다경영지원
권한 설계사업장 단위 권한을 집계 단계에 거는 방식드릴스루로 다른 사업장 숫자가 보입니다보안·권한
성능 기준조회 범위 필수화와 응답 시간 목표행이 많아지면 브라우저 집계가 느려집니다IT
전송(TR) 순서테이블 → 기준 뷰 → 라인 뷰 → 차원 뷰 → 큐브 → 쿼리 → 권한 → 서비스의존 순서가 어긋나 활성화가 실패합니다IT
서비스 활성화와 화면 연결서비스를 게시하고 앱의 서비스 주소를 교체하는 절차화면이 샘플 서비스를 계속 바라봅니다IT
배치 등록에이전트 점검을 일정으로 돌리는 방법(SM36 잡 또는 외부 스케줄러)사람이 열지 않으면 감시가 돌지 않습니다Basis

숫자를 믿을 수 있는가 — 검증 결과

대사식검사 건수차이 건수
큐브 합계 = 원천 라인 합계(측정값 8종)80
대사 R01 전표 머리 금액 = 항목 차변 합계752 (의도적 예외)
대사 R02 확정 정리 문서 = 원가 라인 정리액322 (의도적 예외)
대사 R03 변경 건 장부 잔존 = 라인 합계622 (의도적 예외)
대사 R04 유효 적용 잔존 = 정리 처리액74 (의도적 예외)
요인 합계 = 총차이10

대사 예외 10건은 조치 흐름을 시험하려고 넣은 의도적 예외이며, 큐브 합계와 원천 라인의 차이는 0입니다. 독립 계산으로 다시 돌린 R01과 R03은 서비스 결과와 건수 · 차이가 같았습니다. 샘플 데이터 값입니다.

운영 데이터로 갈 때

지금은 큐브를 브라우저에서 다시 묶는 구조라 행 수에 상한이 있습니다. 문서 라인이 수천만 건이면 집계를 서버 쪽 CDS로 옮기고 기간과 사업장을 조회 필수 파라미터로 두며, 큐브 키 차원에 인덱스를 둡니다. 응답 시간 목표는 운영 시점에 정할 일입니다.

자주 묻는 질문

도입 전에 가장 많이 물을 만한 질문을 네 묶음, 25문항으로 정리했습니다.

숫자와 산식

잔존 재고는 어떻게 계산되나요.

변경 건별로 영향 발생 금액에서 소진 대체 금액과 정리액을 뺀 값입니다. 샘플 데이터에서 영향 원가 898,880,557원, 소진 대체 790,786,000원, 정리액 33,045,034원이므로 잔존 재고 증감은 75,049,523원입니다. 이 식은 대사 규칙 R03에서 변경 건 장부 값과 원가 라인 합계를 맞춰 보는 데도 쓰입니다.

진부화 충당은 무엇을 기준으로 정하나요.

경과 구간별 충당률을 잔존 재고에 곱합니다. 샘플은 90일 이내 0%, 91~180일 10%, 181일 초과 30%이며 예시 값입니다. 실제 비율과 구간은 회사의 평가 기준에 따라 기준정보의 평가 규칙 탭에서 정하고, 회계 처리의 최종 판단은 회사와 감사인이 합니다.

큐브와 원천 문서 라인 합계는 정말 같은가요.

측정값 8종 모두 큐브 합계와 원천 라인 합계의 차이가 0입니다. 원천 라인은 886개이고 차원 조합으로 묶은 큐브는 1,087행입니다. 화면의 값 칸을 눌러 열리는 드릴스루 합계도 칸 금액과 같은지 매번 보여 줍니다.

대사 예외 10건은 오류인가요.

아닙니다. 조치 흐름을 시험하려고 의도적으로 넣은 값입니다. R01 2건, R02 2건, R03 2건, R04 4건이고, 이 도구는 점검이 필요한 항목을 알려 줄 뿐 위반 여부를 판정하지 않습니다.

기준 대비 차이 요인은 어떻게 나뉘나요.

물량, 소진율, 재작업 시간 원단위, 시간당 영향 원가 네 요인입니다. 네 요인을 더한 값이 총차이와 같은지를 검산 줄이 매번 보여 주고, 샘플에서는 차이가 0원입니다. 요인의 원인까지는 데이터만으로 알 수 없어 확인 필요로 남깁니다.

화면과 조작

누가 어떤 버튼을 쓸 수 있나요.

조회자는 읽기만, 처리자는 생성·수정·검토 요청·확정·일괄 실행·대사, 승인자는 승인·반려·역처리, 관리자는 기준정보까지 쓸 수 있습니다. 버튼은 서버가 돌려준 상태와 내 역할에 맞는 것만 보이고, 직접 요청해도 서버가 같은 이유로 거절합니다.

같은 사람이 작성하고 승인할 수 있나요.

없습니다. 작성자와 승인자는 달라야 하고, 금액이 300만 원 이상이면 2단계 승인을 거칩니다. 이 기준은 샘플 규칙이며 회사 규정에 맞게 조정합니다.

문서 상태는 어떻게 바뀌나요.

임시저장에서 검토요청, 승인, 확정으로 이어지고 반려되면 보완 뒤 다시 요청합니다. 확정된 문서는 역처리로 취소되며 반대 문서가 원문서와 연결되어 생깁니다. 허용되지 않는 전이는 서버가 400으로 거절합니다.

일괄 실행에서 같은 조건으로 두 번 실행하면 어떻게 되나요.

두 번째는 거절됩니다. 시뮬레이션 합계와 실행 결과 합계가 같고, 같은 조건의 재실행은 중복 문서를 만들지 않으며 실행 로그가 남습니다.

좁은 화면에서도 쓸 수 있나요.

390px 폭에서 메뉴가 접히고 타일과 목록이 한 칸씩 쌓입니다. 분석 화면도 차트가 표 아래로 내려가 같은 기능을 씁니다.

분석 기능

축을 바꿀 때마다 서버에 다시 묻나요.

아닙니다. 조회할 때 큐브를 한 번 읽고, 이후 행·열 바꾸기와 칩 이동은 브라우저에서 다시 묶습니다. 그래서 네트워크 요청이 없고 총합이 바뀌지 않습니다.

셀을 눌러 내려가는 드릴스루는 무엇을 보여 주나요.

그 칸 금액을 만든 원천 문서 라인입니다. 합계가 칸 금액과 같은지 확인되고, 라인의 문서번호를 누르면 문서 상세로 이동합니다.

AI 해설은 숫자를 모델이 만드나요.

아닙니다. 금액과 비율은 서버가 큐브에서 계산하고 해설은 그 근거 위에서만 나옵니다. 모델이 연결되지 않아도 같은 근거로 규칙 기반 해설이 나오며 결과는 점검 필요 항목을 알려 주는 참고 자료입니다.

에이전트는 언제 도나요.

화면을 열어 실행하거나 서버가 정한 주기로 호출됩니다. 감시 규칙 다섯 개를 점검해 걸린 항목을 받을 사람의 대기함에 올리고, 하루 한 번 제한은 서버 기록으로 판정합니다.

분석 결과를 보고서로 받을 수 있나요.

해설 창의 PowerPoint 버튼으로 표와 차트가 든 보고서를 브라우저에서 바로 만듭니다. 외부 라이브러리 없이 만들며 받은 파일은 일반 프레젠테이션 도구에서 열립니다.

도입과 운영

도입하면 누가 가장 큰 도움을 받나요.

설계변경 뒤 구 구성품 재고를 평가하고 정리하는 생산·원가 담당자와, 문서를 승인하는 관리자입니다. 월말 대사와 보고에 쓰던 시간이 예외 확인과 사유 기록으로 바뀝니다.

이 화면의 수치는 어느 범위에서 확인된 건가요.

설명한 모든 수치는 가상 샘플 데이터로 시험한 결과입니다. 실제 적용 시기와 대상 범위는 회사의 평가 기준과 운영 데이터에 따라 정하며 이 글에서 확인된 사실은 샘플 동작뿐입니다.

표준 T-code는 더 이상 쓰지 않나요.

계속 씁니다. 표준 실행은 SAP 표준 T-code가 담당하고 이 화면은 조회·검증 관점을 더해 확장합니다. 변경 마스터는 CC02, BOM은 CS03, 라우팅은 CA03, 재고는 MB52, 폐기 이동은 MIGO에서 이어서 확인합니다.

데이터 원천은 어디인가요.

운영에서는 변경 마스터, BOM·라우팅, 저장 위치 재고와 평가 데이터, 자재 문서를 CDS 뷰로 읽습니다. 지금 화면은 같은 구조의 샘플 데이터이며, 어떤 필드를 쓰는지는 CDS 구성 절의 표에 있습니다.

외화나 환율이 들어가나요.

샘플은 원화 단일 통화입니다. 외화 구성품이 있다면 환산 시점과 환율 유형을 정해야 하며 이는 운영 시점에 해야 할 일 표에 적었습니다.

운영 연결에는 무엇이 필요한가요.

서비스 주소 교체, CDS 뷰 이송, 권한 역할 매핑, 처리 펑션을 표준 BAPI나 RAP 액션과 연결하는 일입니다. 개발보다 승인 단계와 충당률 같은 규칙을 정하는 일이 많습니다.

권한과 보안은 어떻게 하나요.

데모 사용자 전환을 없애고 SAP 권한 객체와 PFCG 역할로 옮깁니다. 사업장 단위 권한은 집계 단계에 걸어야 드릴스루에서 새지 않습니다.

데이터가 아주 많아지면 어떻게 되나요.

지금은 큐브를 브라우저에서 다시 묶는 구조라 행 수에 상한을 둡니다. 문서 라인이 수천만 건이면 큐브 집계를 서버 쪽 CDS와 인덱스로 두고 조회조건 필수화로 범위를 제한합니다.

품목이나 변경 유형이 바뀌면 어떻게 하나요.

기준정보에서 품목과 변경 유형을 관리하고 큐브의 차원 값은 원천 라인에서 다시 만들어집니다. 새 차원이 필요하면 뷰를 고쳐 이송해야 합니다.

이 도구가 위반 여부를 판정하나요.

판정하지 않습니다. 점검이 필요한 항목을 보여 주는 도구이며 최종 판단은 회사와 감사인이 합니다. 세무 신고에 관한 판단은 회사와 세무 대리인이 합니다.