SAP

OB52 vs MMPV — 마감 기간이 두 개인 이유 #shorts #SAP #FI

📖 개요 — 마감 기간이 왜 두 개인가

월초마다 반복되는 미스터리가 있습니다. 회계팀은 분명히 전기기간을 열어놨다고 하는데, 자재 입고(MIGO)를 치면 "기간이 마감되었습니다" 메시지가 뜨는 상황입니다. 원인은 SAP ERP(ECC 6.0)와 S/4HANA가 FI 전기기간(OB52)MM 자재기간(MMPV)을 완전히 별도의 테이블과 로직으로 관리하기 때문입니다. 이 글에서는 두 기간이 분리된 설계 배경과, 어긋났을 때의 증상·복구 절차를 실전 예제로 다룹니다.

  • OB52가 제어하는 T001B 구조와 계정유형별 기간 통제 이해
  • MMPV가 갱신하는 MARV 테이블과 "현재+직전 2개 기간" 규칙 이해
  • MIGO에서 M7053 오류가 뜨는 조건을 두 기간의 교집합으로 설명
  • 월초 마감 배치 자동화와 사고 예방 체크 포인트 확보

📚 미리 알아두면 좋은 배경

회사코드(Company Code)와 회계연도 변형(Fiscal Year Variant)의 개념, MIGO/MIRO 등 물류 전표가 FI 회계전표를 자동 생성한다는 통합 흐름을 알고 있으면 좋습니다. SE16으로 테이블을 조회해 본 경험이 있으면 실습 부분을 그대로 따라갈 수 있습니다. 난이도는 중급(intermediate)입니다.

🔧 환경과 준비물

이 글의 화면·트랜잭션은 SAP S/4HANA 2023 (On-Premise) 기준이며, ECC 6.0 EHP8에서도 동일하게 동작합니다(자재원장 관련 언급만 S/4HANA에서 차이가 있습니다).

  • OB52 — FI 전기기간 변형별 개폐 (IMG: 재무회계 > 총계정원장 > 전기기간)
  • MMPV — 자재기간 이월(Close Period), MMRV — 현재 기간 및 이전기간 허용 여부 조회/변경
  • OMSY — 회사코드별 자재관리 기간 초기 상태 확인
  • 조회 권한: 테이블 T001B, MARV (SE16N)
  • 테스트용 회사코드 예시: KR10(서울 제조법인), 플랜트 KP01

💡 핵심 개념 — 두 개의 달력이 도는 이유

비유하자면 FI 전기기간은 건물의 층별 출입 카드이고, MM 자재기간은 공장 정문의 회전문입니다. 출입 카드(OB52)는 "누가(계정유형) 몇 층(기간 구간)에 들어갈 수 있는가"를 세밀하게 나눠 통제합니다. 반면 회전문(MMPV)은 한 방향으로만 돌며, 지나가면 되돌릴 수 없습니다.

FI 전기기간(OB52)은 테이블 T001B에 저장됩니다. 키는 전기기간 변형(BUKRS 필드지만 실제로는 변형 코드)과 계정유형(MKOAR: + 전체, A 자산, D 고객, K 구매처, M 자재, S G/L)입니다. 구간 1(권한그룹 지정 가능), 구간 2, S/4HANA에서 추가된 구간 3(CO 전기용)까지 두어 "결산팀만 전월을 열어두고 현업은 당월만" 같은 역할 기반 통제가 가능합니다. 즉 OB52는 회계 통제 관점의 장치이며, 과거 기간을 다시 여는 것도 설정만 바꾸면 언제든 가능합니다.

MM 자재기간(MMPV)은 테이블 MARV에 회사코드 단위로 저장됩니다. 주요 필드는 LFGJA/LFMON(현재 기간), VMGJA/VMMON(이전 기간), XRUEM(이전기간 전기 허용 플래그)입니다. MM은 항상 현재 기간과 직전 기간, 딱 2개만 열 수 있습니다. 이유는 재고 수량·금액이 MBEW(S/4HANA에서는 자재원장 MLDOC/CKMLPP 계열)에 "당기/전기" 두 버킷으로만 이월 관리되기 때문입니다. 3개월 전 기간을 열어 입고를 넣으면 그 사이의 재고 평가 이력이 전부 깨지므로, 설계 자체가 이를 원천 봉쇄합니다. 즉 MMPV는 재고·원가 정합성 관점의 장치입니다.

정리하면, 하나의 입고 전표가 통과하려면 자재문서는 MARV의 2개 기간 안에, 자동 생성되는 회계전표는 T001B의 허용 구간 안에 동시에 들어와야 합니다. 이 교집합이 비는 순간 전표가 막힙니다.

💻 실전 예제 3단계

1단계 — 현재 기간 상태 확인 (기본)

회사코드 KR10의 자재기간을 ABAP으로 직접 읽어봅니다. SE38 임시 프로그램 또는 SE16N으로 동일하게 확인할 수 있습니다.

REPORT zck_period_check.

DATA(lv_bukrs) = 'KR10'.

SELECT SINGLE lfgja, lfmon, vmgja, vmmon, xruem
  FROM marv
  INTO @DATA(ls_marv)
  WHERE bukrs = @lv_bukrs.

WRITE: / |현재 자재기간: { ls_marv-lfgja }/{ ls_marv-lfmon }|,
       / |이전 자재기간: { ls_marv-vmgja }/{ ls_marv-vmmon }|,
       / |이전기간 전기 허용(XRUEM): { ls_marv-xruem }|.

FI 쪽은 T001B를 조회합니다. 계정유형 M(자재) 행의 구간이 실제로 MIGO 회계전표에 적용됩니다.

SELECT mkoar, frpe1, frye1, tope1, toye1, frpe2, frye2, tope2, toye2
  FROM t001b
 WHERE rrcty = '0'
   AND bukrs = '1000'   -- 전기기간 변형 코드 (회사코드 아님에 주의)

2단계 — 월초 입고가 막힌 실무 시나리오 (오류 재현과 해결)

2026년 8월 1일 아침, 구매담당자가 구매오더 4500017732(자재 RAW-STEEL-01, 플랜트 KP01) 입고를 MIGO로 시도하자 다음 메시지가 뜹니다.

M7053: 전기는 2026/07 및 2026/06 기간에만 가능합니다 (회사코드 KR10)

회계팀이 OB52에서 8월을 이미 열어놨더라도 이 오류는 사라지지 않습니다. MARV가 아직 LFMON = 07이기 때문입니다. 해결은 MMPV 실행뿐입니다.

  1. MMRV로 현재 상태 확인 — "현재 기간 07 2026" 표시 확인
  2. MMPV 실행: 회사코드 KR10, 기간 08, 회계연도 2026 입력 후 "기간 마감만(Check and close period)" 선택
  3. 수행 로그에서 KR10 성공 여부 확인 — 실패 시 로그에 잠긴 자재나 불완전 전표가 표시됨
  4. 재시도 전, 반대 상황도 점검: MMPV는 성공했는데 OB52의 M 계정유형 구간이 아직 7월까지라면 이번엔 회계 쪽 오류(F5 계열, "기간 008/2026이(가) 마감되었습니다")가 발생

이때 주의할 점은 MMPV가 한 달씩만, 순방향으로만 이동한다는 것입니다. 실수로 9월을 입력해 두 달을 넘기면 8월 입고가 "이전 기간" 전기로만 가능해지고, 되돌리는 표준 방법이 없습니다(MMPI 재초기화는 재고 불일치를 유발할 수 있어 SAP 노트의 사전 조치 없이는 권장되지 않습니다).

3단계 — 프로덕션 운영: 자동화·권한·모니터링

실무에서는 MMPV를 사람 손에 맡기지 않고 표준 프로그램 RMMMPERI를 배치로 겁니다. 매월 1일 00:10에 변형(Variant)으로 실행하는 구성이 일반적입니다.

" SM36 배치 잡 정의 예시 (잡명: Z_MM_PERIOD_SHIFT_KR10)
" 스텝: RMMMPERI, 변형 ZKR10_MONTHLY
"  - 변형 내용: 회사코드 KR10, 기간/연도는 '현재 날짜 기준' 동적 일자 변수 사용
"  - 옵션: 마감만 수행, 오류 시 스풀 + 이벤트 트리거
" 시작 조건: 매월 1일 00:10 (공장 야간 입고가 끝난 직후)

운영 체크 포인트 세 가지입니다.

  • 권한 분리: OB52 변경 권한(권한 오브젝트 S_TABU_DIS + 구간 1의 권한그룹 FCLO 등)은 결산팀에만 부여하고, 현업은 구간 2의 당월만 사용하게 합니다. MMPV는 배치 사용자만 실행하도록 M_MSEG_BWA류 권한과 분리 관리하는 방식이 권장됩니다.
  • 사전 검증 잡: 마감 배치 전에 1단계의 MARV·T001B 대조 리포트를 돌려 두 기간의 교집합이 다음 달을 포함하는지 검사하고, 어긋나면 알림을 보냅니다. 미결 물류 전표(예: 미완료 물리재고 문서)가 있으면 MMPV 로그에 남으므로 스풀을 반드시 후속 확인합니다.
  • 이전기간 전기 정책: MMRV의 "이전 기간 전기 허용"(XRUEM)을 켜 두면 월초 며칠간 전월 입고 정정이 가능하지만, 재고 평가 금액이 전월 버킷으로 소급되므로 결산 확정 후에는 꺼서 잠그는 운영이 일반적입니다.

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

Q1. OB52는 열려 있는데 MIGO에서 M7053이 납니다.

자재기간이 아직 이월되지 않은 상태입니다. MMRV로 MARV의 현재 기간을 확인하고 MMPV를 실행하세요. OB52는 이 오류와 무관합니다. 반대로 MMPV 후 회계 쪽 기간 오류가 나면 그때 OB52의 M·S 계정유형 구간을 점검합니다.

Q2. MMPV로 실수로 두 달을 건너뛰었습니다. 되돌릴 수 있나요?

표준 트랜잭션으로는 불가능합니다. MMPI(기간 초기화)가 존재하지만 재고 수량/금액 버킷이 깨질 수 있어, 관련 SAP 노트의 사전 점검(전표 없는 상태 확인 등) 없이는 사용하지 않는 것이 일반적입니다. 대부분은 XRUEM을 켜고 이전 기간으로 전기해 수습합니다.

Q3. 회계연도 변형이 4월 시작(V3)인데 MMPV 기간 입력이 헷갈립니다.

MMPV에 입력하는 것은 달력 월이 아니라 회계 기간입니다. 4월 시작 변형이면 2026년 4월이 기간 001입니다. OMSY에서 회사코드별 현재 기간 표기를 먼저 확인하는 습관이 안전합니다.

Q4. 월초에만 잠깐 오류가 났다가 사라지는 이유는?

야간 MMPV 배치와 새벽 입고 인터페이스(IDoc, EWM GR 등)의 순서 경합입니다. 배치 시각을 인터페이스 큐가 비는 시점 뒤로 옮기거나, 실패 IDoc 재처리(BD87) 절차를 마감 런북에 넣어 해결합니다.

🚀 이어서 보면 좋은 확장 주제

이 글의 다음 연결 고리는 세 가지입니다. 첫째, S/4HANA에서 필수가 된 자재원장(Material Ledger)의 기간 상태(CKMLPP)와 실제원가 마감(CKMLCP)이 MM 기간과 맞물리는 방식. 둘째, OB52 구간 1의 권한그룹을 활용한 결산 통제 설계와 S/4HANA의 구간 3(CO 전기) 활용. 셋째, 연말 결산 시 회계연도가 바뀌는 시점의 MMPV 처리와 이월 프로그램의 순서 설계입니다.

📚 더 읽어볼 문서와 링크

댓글 0

아직 댓글이 없습니다.