Crowny ERP MM(자재구매) SAP 표준 1:1 심화
개요
기존 5개 트랜잭션(구매요청/구매오더/입고/송장검증/재고이동)만 있던
erp_MM.한선에
SAP MM 모듈의 재고평가·소싱계약·재고실사·역분개 T-code를 추가 구현. 자재 마스터에
평가클래스·조달유형 필드도 신설.
무엇을 했는지
추가 트랜잭션 7개 (총 12개)
- 재고평가(MR21):
재고평가(자재코드, 신단가, 사유코드, 조직) — 단가 변경분×현재재고로 차액 계산, 사유 미기재=옴, 임계초과=음
- 소싱계약 체결(ME31K):
소싱계약체결(공급처코드, 자재코드, 계약수량, 계약단가, 유효기간, 조직) — data/master/MM_계약.psv 신설(계약id|공급처|자재|계약수량|계약단가|유효기간|기집행수량)
- 계약 참조 발주(ME21N 콜오프):
계약구매오더(계약id, 수량, 조직) — 계약잔량 검증 후 발주, 집행수량 반영. 선행셀=계약id로 PLM 체인 형성(계약→오더→입고)
- 재고실사 3단계(MI01/MI04/MI07):
MM재고실사등록 → MM재고실사계수입력 → MM재고실사차이정리(경미차=옴 즉시반영, 대량차=음 보류)
- 역분개(FB08 상당):
MM역분개(원문서셀id, 조직) — 입고/재고이동 원복, S버전 슬롯(21)을 역분개마커(99)로 사용해 중복 역분개 차단
마스터 세분
MM_자재.psv에 평가클래스·조달유형 필드 추가(6필드→8필드), 자재필드확장()으로 기존 시드 무손상 마이그레이션
- 버그 수정: 기존
자재재고증감()이 신규 필드를 드롭하는 문제 발견 → 필드 보존(기본값 Z1/F) 로직 추가
테스트 보강
_erp_MM_테스트.한선에 시나리오 7~22(19건) 추가. 실행 중 발견한 2개 버그 수정:
MM역분개 중복차단 로직이 S후행(정상 PLM 체이닝에도 쓰임)을 오검출 → S버전 마커로 교체
- 재고평가 대폭변동 테스트가 자재1001(송장검증 청구금액 24000 고정 전제) 가격을 영구 오염 → 자재1004로 분리, 반복실행 드리프트에도 안전하게 재현되도록 동적 계산으로 변경
검증 결과 (실행, 셀id 383~415)
- 컴파일 에러 0 (erp_MM.한선, _erp_MM_테스트.한선)
- 4상 티옴타음 전 발현 확인(출력에 실측)
- PLM체인 3+홉 확인: 383→384→385→386(4홉), 397→400→401(계약→오더→입고, 3홉), 403→404→405(실사등록→계수→정리, 3홉)
- assert 통과 28/28
관련 파일
/Users/ef/crowny-erp/core/libs/erp_MM.한선
/Users/ef/crowny-erp/core/libs/_erp_MM_테스트.한선
/Users/ef/crowny-erp/data/master/MM_자재.psv, MM_계약.psv(신규)
잔여 이슈
- 데이터 파일(
셀넷.psv, MM.psv, MM_자재.psv)이 :9981 통합서버 등 다른 라이브 프로세스와 공유되어, 동시 읽기/쓰기 시 간헐적 경합(구 회차 실행에서 1회 관측, 재실행 시 정상) 가능성 있음 — 별도 락 메커니즘은 이번 범위 밖.
- QM/PM 외 나머지 모듈(FI/CO/SD/PP/HR/PS/WM)의 SAP 심화는 미착수.