SAP 순환 BOM, 실패한 육수를 다시 냄비에 붓는 주방

SAP 순환 BOM이 무엇이고 재작업 상황에서 왜 필요한지, 어떻게 설정하는지를 육수 비유로 쉽게 설명합니다.

안녕하세요, Rabbit입니다! 🐰

칼국수 육수를 한 솥 뽑았습니다. 마지막으로 맛을 보는데 간이 밍밍합니다. 이대로는 손님상에 못 냅니다.

그렇다고 한 솥을 통째로 버릴 수는 없죠. 주방장은 이 육수를 다시 불에 올리고, 재료를 더 넣어 제대로 된 육수로 되살립니다.

그런데 이 과정을 레시피로 적어보면 이상해집니다.

칼국수 육수 만드는 법 재료: 멸치, 다시마, 무, 그리고 간이 안 맞는 칼국수 육수

칼국수 육수를 만드는 재료에 칼국수 육수가 들어가 있습니다. SAP에서는 이런 레시피를 순환 BOM(Recursive BOM)이라고 부릅니다. 완성품이 자기 자신의 재료 목록에 다시 들어가는 구조입니다.

말이 안 되는 것 같지만, 실제 공장에서는 매일 벌어지는 일입니다.

3줄 요약
  • 순환 BOM은 완성품이 자기 자신의 재료 목록에 다시 들어가는 구조입니다.
  • 불량품을 고쳐서 다시 정상품으로 만드는 재작업 상황에서 씁니다.
  • BOM 등록 화면에서 ‘순환 허용’에 체크해야 시스템 오류 없이 저장됩니다.

왜 이런 레시피가 생기는가

BOM(자재명세서)은 한마디로 레시피입니다. 이 음식을 만들려면 어떤 재료가 얼마나 필요한지 적어둔 목록이죠.

보통 레시피는 한 방향으로 흐릅니다. 멸치와 다시마와 무를 냄비에 넣고 끓이면 육수가 나옵니다. 재료가 음식이 되고, 그걸로 끝입니다.

그런데 앞의 실패한 육수는 흐름이 다릅니다. 레시피로 옮기면 이렇게 됩니다.

  • 제대로 된 육수를 만들려면 → ‘다시 끓이기’ 공정이 필요하다
  • ‘다시 끓이기’ 공정에는 → 간이 안 맞는 육수가 들어간다

육수가 공정을 거쳐 다시 육수가 됩니다. 출발점과 도착점이 같은 자재예요.

여기서 중요한 건 버리지 않고 되살린다는 점입니다. 맛을 위해 어제 육수를 이어 쓰는 것과는 다릅니다. 잘못 만들어진 것을 고쳐서 원래 만들려던 물건으로 되돌리는 흐름이에요.

공장에서는 이걸 재작업(Rework)이라고 합니다. 완성품을 만들어 창고에 넣었는데 품질 검사에서 불량이 나왔고, 버리기 아까우니 고쳐서 정상품으로 되살리는 겁니다. 제조 현장에서 매일 일어나는 일이죠.

시스템이 무한루프에 빠지는 이유

문제는 SAP가 이 레시피를 곧이곧대로 읽는다는 데 있습니다.

SAP는 “이 제품 100개를 만들려면 재료가 얼마나 필요한가”를 계산할 때, 레시피를 한 단계씩 펼쳐 내려갑니다. 육수 100인분 → 재료 목록 확인 → 그 재료의 재료 확인 → 계속 아래로.

그런데 재작업 레시피는 내려가다 보면 다시 처음으로 돌아옵니다. 육수 → 다시 끓이기 → 육수 → 다시 끓이기 → 육수…

끝이 없습니다. 시스템은 멈출 지점을 못 찾고 계산을 반복합니다. 이게 무한루프입니다.

그래서 SAP는 기본적으로 이런 구조를 오류로 판단합니다. 그냥 저장하려고 하면 막힙니다.

체크박스 하나로 해결한다

해결책은 의외로 간단합니다. SAP에게 “이건 실수가 아니라 일부러 만든 구조예요”라고 알려주면 됩니다.

재작업 공정의 BOM에 불량품을 재료로 등록할 때, 품목 상세 화면에서 ‘순환 허용’ 체크박스에 체크합니다. 이 체크 하나가 “여기서 순환이 생기는 건 정상이니 계산을 멈춰라”라는 신호가 됩니다.

⚠️ 주의: 이 체크를 빠뜨리면 BOM 저장이 아예 안 되거나, 나중에 MRP를 돌릴 때 오류가 납니다. 재작업 BOM을 만들 때 가장 자주 놓치는 부분이니 꼭 확인하세요.

SAP 순환 BOM 재작업 흐름 — 완성품이 재작업 공정을 거쳐 다시 완성품이 되는 순환 구조와 '순환 허용' 체크 위치를 보여주는 도식 그림 1. 재작업 시나리오의 순환 BOM 구조와 순환 허용 설정

제대로 됐는지 확인하는 법

설정을 마쳤으면 CS12(다중 레벨 BOM 조회)로 구조를 확인합니다. 레시피를 위에서 아래로 펼쳐서 보여주는 화면이에요.

정상적으로 설정됐다면 이렇게 보입니다.

완성품
└─ 재작업 공정
      └─ 완성품(불량품)   ← 여기서 멈춤

세 번째 줄에서 다시 완성품이 등장하지만, 시스템이 더 내려가지 않고 멈춘 것을 확인할 수 있습니다. 순환을 인식했다는 뜻이죠.

설정 직후 이 화면을 한 번 보는 습관을 들이면, 나중에 MRP 돌릴 때 터지는 오류를 미리 막을 수 있습니다.

언제 쓰고, 언제 안 쓰는가

실무에서 순환 BOM이 쓰이는 상황은 크게 세 가지입니다.

재작업: 불량 완성품을 고쳐서 정상품으로 만드는 경우. 가장 흔합니다.

부산물 재활용: 만들다 나온 부산물을 같은 공정에 다시 넣는 경우. 화학·식품 업종에서 많이 봅니다.

촉매 재사용: 공정에 넣은 촉매를 반응 후 회수해 또 쓰는 경우.

공통점은 이미 만든 것, 또는 거기서 나온 것을 다시 투입한다는 점입니다.

반대로 순환 BOM이 필요 없는 경우도 있습니다. 재작업품을 아예 다른 자재 코드로 관리하기로 했다면, 출발점과 도착점이 다른 자재가 되니 순환이 생기지 않습니다. 어느 쪽으로 갈지는 원가 처리 방침과 이력 관리 요건에 따라 프로젝트 설계 단계에서 정합니다.

원가는 어떻게 될까

여기서 자연스럽게 드는 걱정이 있습니다.

“순환 구조면 원가도 무한히 더해지는 것 아닌가요?”

그렇지 않습니다. SAP는 순환 구조의 원가를 계산할 때 레시피를 끝까지 펼치지 않습니다. 대신 자재에 이미 매겨져 있는 현재 표준원가를 가져와 씁니다. “이 재료 값은 이미 정해져 있으니 더 따질 필요 없다”는 식으로 고리를 끊는 거예요.

다만 한 가지 챙길 게 있습니다. 하나의 자재에 레시피가 여러 개일 때(정상 생산용, 재작업용) 어느 쪽을 원가 계산의 기준으로 삼을지 정해줘야 합니다. 이때 쓰는 것이 생산 버전입니다. 자재 마스터의 원가계산 뷰에서 우선순위가 가장 높은 생산 버전의 레시피가 표준원가에 쓰입니다.

💡 핵심: 재작업용 레시피가 표준원가를 흔들지 않으려면, 정상 생산용에 더 높은 우선순위를 줘야 합니다. 생산 버전이 낯설다면 SAP PP 기준정보를 먼저 보고 오세요.

설정 전 확인할 세 가지

순환 BOM을 만들기 전에 이것부터 챙기세요.

첫째, 자재 코드가 준비됐는지. 완성품 코드와 재작업 공정 코드가 자재 마스터에 등록돼 있어야 BOM을 만들 수 있습니다.

둘째, 재작업 후 제품을 어떤 코드로 관리할지. 정상품과 같은 코드로 갈지, 별도 코드로 뺄지에 따라 순환 BOM이 필요한지 아닌지가 갈립니다.

셋째, 원가팀과의 사전 협의. 생산 버전 우선순위를 어떻게 둘지 함께 정해야 표준원가가 틀어지지 않습니다.

Rabbit의 한 끗

순환 BOM은 처음 보면 말이 안 되는 구조처럼 보입니다. 자기가 자기 재료라니, 논리적으로 불가능해 보이니까요.

그런데 주방에서는 실패한 육수를 다시 냄비에 붓는 일이 당연합니다. 공장에서도 불량품을 고쳐 쓰는 일이 매일 벌어지고요. SAP가 이 구조를 굳이 지원하는 이유는, 현실이 그렇게 돌아가기 때문입니다.

시스템은 현실을 단정하게 정리하는 도구가 아니라, 현실을 있는 그대로 담아내는 도구입니다. ‘순환 허용’ 체크박스 하나가 그 사실을 조용히 보여주고 있어요. 이 설정이 빠져 있으면 재고도 원가도 실제와 어긋나기 시작합니다. 😎


더 읽어보기

🗺️ 이 글과 연결된 글 전체 지도 보기 →
SAP 순환 BOM SAP PP 기준정보 SAP 이동유형
선행 관련 심화