SAP

BSX vs PRD — 가격차이 재고 흡수 조건 #shorts #SAP #SAP

▶ YouTube에서 보기

📖 개요 및 이 글에서 얻어갈 것

송장검증(MIRO)에서 구매오더 가격과 송장 가격이 다를 때, 그 차액이 어떤 조건에서 손익계정(가격차이 계정)으로 가고 어떤 조건에서 재고 계정 자체로 흡수되는지는 MM-FI 통합의 가장 자주 질문받는 지점 중 하나입니다. 이 글은 평가방식(가격결정방식 S/V)과 송장 시점의 재고 잔량이라는 두 축으로 이 분기 로직을 해부합니다.

  • 표준원가(S)와 이동평균가(V)에서 가격차이 전기 로직이 갈리는 이유 이해
  • 이동평균가에서도 차액 일부가 손익으로 튀는 "재고 커버리지 부족" 경계 조건 계산
  • OBYC 계정결정 키(BSX / PRD / WRX)와 실제 전표 라인의 매핑
  • 전기 전에 차액 귀속처를 미리 예측하는 점검 리포트 작성

📚 먼저 알고 있으면 좋은 것들

구매오더 생성(ME21N) → 입고(MIGO, 이동유형 101) → 송장검증(MIRO)으로 이어지는 조달 3단계 흐름과, 입고/송장 전기 시 GR/IR 중계계정이 어떻게 잡히고 반제되는지 기본 개념을 알고 있으면 좋습니다. 자재원장(Material Ledger)이나 실제원가는 몰라도 본문을 따라올 수 있으며, 관련되는 지점에서 별도로 짚습니다.

🔧 시스템 환경과 준비물

본문의 동작은 SAP ECC 6.0과 SAP S/4HANA(예: 2023 FPS 기준) 모두에서 일반적으로 동일하게 적용됩니다. 다만 S/4HANA에서는 자재원장이 필수로 활성화되어 있어 평가 데이터가 MBEW 대신 CDS 뷰와 ML 테이블 기반으로 조회되는 차이가 있습니다(호환성 뷰로 MBEW 조회는 여전히 가능).

  • 트랜잭션: MIRO(송장검증), MM03(자재 회계1 뷰), MB52(재고 조회), OBYC(계정결정), OMWB(계정결정 시뮬레이션)
  • 테이블: MBEW(자재 평가: VPRSV, VERPR, STPRS, LBKUM, SALK3), EKBE(구매오더 이력), RBKP/RSEG(송장 헤더/라인)
  • 권한: 테스트 클라이언트에서 MIRO 전기와 FB03 전표 조회가 가능해야 합니다.

💡 핵심 개념 — 평가방식과 재고 커버리지의 2단 분기

가격차이의 행선지는 두 번의 질문으로 결정됩니다. 물탱크 비유로 생각하면 쉽습니다. 재고 계정은 물탱크이고, 가격차이는 나중에 도착한 "추가 수도요금"입니다.

1차 분기 — 가격결정방식(MBEW-VPRSV). 표준원가(S)인 자재는 탱크의 단위 수위(단가)를 절대 바꾸지 않겠다고 선언한 자재입니다. 재고 계정은 항상 수량 × 표준가로 고정되어야 하므로, 송장에서 발생한 차액은 재고로 들어갈 자리가 없고 전액 가격차이 계정(OBYC 트랜잭션 키 PRD)으로 전기됩니다. 재고가 아무리 많이 남아 있어도 마찬가지입니다.

2차 분기 — 재고 커버리지(MBEW-LBKUM vs 송장 수량). 이동평균가(V) 자재는 탱크 수위를 실제 지불액에 맞춰 계속 재계산하는 자재입니다. 원칙적으로 차액은 재고 계정(BSX)에 흡수되고 이동평균가가 갱신됩니다. 그런데 송장이 도착하기 전에 재고가 이미 출고(소비·판매)되어 버렸다면 어떨까요? 이미 나가버린 수량에 얹을 원가를 탱크에 부을 수는 없습니다. 그래서 시스템은 전기 시점의 총 평가재고 수량(LBKUM)송장 수량을 비교해 커버되는 비율만 재고로 넣고, 커버되지 않는 잔여분은 다시 PRD로 보냅니다.

요약 공식(V 자재): 재고 흡수액 = 차액 × min(현재 평가재고 수량, 송장 수량) ÷ 송장 수량. 나머지는 가격차이 계정.

한 가지 흔한 오해를 짚으면, 비교 대상은 "그 구매오더로 입고한 수량이 얼마나 남았나"가 아니라 자재·플랜트 단위의 전체 평가재고 수량입니다. 이동평균가는 로트 단위가 아닌 평가 단위(일반적으로 플랜트)로 관리되기 때문입니다. 다른 구매오더로 들어온 재고가 있어도 커버리지에 포함됩니다. 또한 S/4HANA에서 자재원장 실제원가(Actual Costing)를 운영하면 S 자재의 PRD 금액도 월말 실제원가 계산 시 재고·소비로 재배부되므로, "PRD로 갔다 = 영원히 손익"이라는 등식은 실제원가 환경에서는 성립하지 않습니다.

💻 실전 예제 3단계

등장 데이터는 전부 가상입니다: 자재 ZRAW-8841(알루미늄 프로파일), 플랜트 P710, 공급업체 VN-DASOL(다솔금속).

1단계 — 기본 예제: 재고가 충분한 이동평균가 자재

구매오더 100 EA × 5,000원, 입고 100 EA 완료(재고 100 EA 보유), 송장은 100 EA × 5,300원으로 도착. 차액 30,000원 전액이 재고로 흡수되고 이동평균가가 갱신됩니다.

전표 라인계정(키)차/대금액
GR/IR 반제GR/IR 중계 (WRX)차변500,000
가격차이 흡수원자재 재고 (BSX)차변30,000
공급업체 채무VN-DASOL 외상매입금대변530,000

새 이동평균가 = (기존 재고금액 500,000 + 30,000) ÷ 100 EA = 5,300원. MM03 회계1 뷰에서 VERPR이 바뀐 것을 확인할 수 있습니다.

2단계 — 실무 시나리오: 재고가 일부 소진된 경우와 검증 로깅

같은 조건에서 송장 도착 전에 60 EA가 생산 출고되어 재고가 40 EA만 남았다고 합시다. 커버리지 비율은 40/100이므로 재고 흡수는 30,000 × 40% = 12,000원, 나머지 18,000원은 PRD로 전기됩니다.

전표 라인계정(키)차/대금액
GR/IR 반제GR/IR 중계 (WRX)차변500,000
커버 분 흡수원자재 재고 (BSX)차변12,000
미커버 분가격차이 (PRD)차변18,000
공급업체 채무외상매입금대변530,000

월말 결산 전에 이런 분할 전기를 미리 탐지하고 싶다면, 미결 GR/IR이 있는 자재의 커버리지를 점검하는 리포트를 돌리는 방법이 실무에서 자주 쓰입니다.

REPORT zmm_prd_coverage_check.
" 미결 송장 대기 자재의 가격차이 귀속처 사전 점검
PARAMETERS: p_werks TYPE werks_d OBLIGATORY,
            p_matnr TYPE matnr,
            p_reqty TYPE menge_d,   " 송장 예정 수량
            p_diff  TYPE dmbtr.     " 예상 차액

START-OF-SELECTION.
  SELECT SINGLE vprsv, lbkum, verpr, stprs
    FROM mbew
    INTO @DATA(ls_val)
    WHERE matnr = @p_matnr AND bwkey = @p_werks.
  IF sy-subrc <> 0.
    MESSAGE '평가 데이터 없음' TYPE 'E'.
  ENDIF.

  IF ls_val-vprsv = 'S'.
    WRITE: / '표준원가 자재: 차액 전액 PRD 예상 →', p_diff.
  ELSE.
    DATA(lv_cover) = COND menge_d( WHEN ls_val-lbkum >= p_reqty
                                   THEN p_reqty
                                   ELSE ls_val-lbkum ).
    DATA(lv_stock_amt) = p_diff * lv_cover / p_reqty.
    WRITE: / 'BSX(재고 흡수) 예상:', lv_stock_amt,
           / 'PRD(손익) 예상:', p_diff - lv_stock_amt,
           / '현재 평가재고:', ls_val-lbkum.
  ENDIF.

3단계 — 프로덕션 관점: 계정결정 점검·경계값 방어·검증 절차

운영 이관 전 체크리스트입니다.

  1. OBYC 설정 검증: 경로는 IMG → 자재관리 → 평가 및 계정지정 → 계정결정 → 자동전기 구성(OBYC). BSX, PRD, WRX 키별로 평가클래스에 G/L 계정이 빠짐없이 매핑되어 있는지 확인하고, OMWB 시뮬레이션으로 자재+이동유형 조합별 전기를 미리 그려봅니다. PRD 미설정 상태에서 커버리지 부족 송장이 들어오면 전기 오류로 결산이 막힙니다.
  2. 재고 0 / 음수 경계: V 자재라도 평가재고가 0이면 커버리지가 0이므로 차액 전액이 PRD로 갑니다. 음수 재고 허용 플랜트에서는 평가 왜곡이 커지므로 송장 전 재고 실사 정합성을 함께 관리하는 것이 권장됩니다.
  3. 이동평균가 급변 모니터링: 소량 재고에 큰 차액이 흡수되면 단가가 비정상적으로 튑니다(예: 재고 2 EA에 차액 100,000원 흡수 시 단가 +50,000원). 단가 변동률 임계치를 두고 알림을 걸어두면 전가 오류·송장 오타를 조기에 잡을 수 있습니다.
  4. 테스트 시나리오: (a) S 자재 정상 차액, (b) V 자재 전량 커버, (c) V 자재 부분 커버, (d) 재고 0, (e) 대변 차액(송장가가 더 낮은 경우 — 로직은 동일하되 부호만 반대) 5종을 회귀 세트로 두는 것이 일반적입니다.

⚠️ 흔한 실수와 트러블슈팅

Q1. 이동평균가 자재인데 왜 차액이 PRD로 갔나요?
전기 시점의 평가재고(LBKUM)가 송장 수량보다 적었을 가능성이 가장 큽니다. 전표 전기 일시와 MB51/EKBE의 출고 이력을 대조해 보세요. 송장 전기 몇 분 전의 생산 출고가 원인인 경우가 많습니다.

Q2. 표준원가 자재의 PRD 누적이 너무 큽니다. 재고로 보낼 수 없나요?
가격결정방식을 바꾸지 않는 한 표준 로직으로는 불가합니다. 대신 S/4HANA 자재원장 실제원가를 활성화하면 기간 마감 시 차이가 기말재고·소비로 재배부되어 사실상 흡수 효과를 얻습니다. 또는 표준가 재산정(CK11N/CK24) 주기를 짧게 가져가 차이 자체를 줄이는 접근이 일반적입니다.

Q3. 같은 자재인데 플랜트마다 결과가 다릅니다.
평가는 평가영역(보통 플랜트) 단위입니다. 플랜트별로 VPRSV(S/V)가 다르게 설정돼 있거나 재고 잔량이 달라 커버리지가 다른 것이므로, MBEW를 BWKEY별로 비교하세요.

Q4. 입고 취소(102) 후 송장을 전기했더니 금액이 이상합니다.
GR/IR 잔량과 평가재고가 어긋난 상태일 수 있습니다. MR11(GR/IR 계정 유지보수)로 잔량을 정리한 뒤 재전기하는 것이 안전합니다.

🚀 정리 및 다음으로 살펴볼 것

핵심은 두 문장입니다. S 자재는 무조건 PRD, V 자재는 재고 커버리지 비율만큼 BSX로 흡수하고 나머지는 PRD. 이 원리를 알면 결산 때 PRD 계정 잔액을 보고 "어떤 자재가, 왜, 얼마나" 튀었는지 역추적할 수 있습니다. 다음 주제로는 자재원장 실제원가(CKM3, CKMLCP)에서의 차이 재배부, 구매오더 조건 유형별 부대비용(운임 FRA1 등)의 계정결정, 그리고 ERS(자동 송장결제) 환경에서의 가격차이 관리로 확장해 보길 권장합니다.

📚 더 깊이 보고 싶을 때 볼 자료

댓글 0

아직 댓글이 없습니다.