SAP

검사유형 활성화해도 로트 안 생기는 이유 3가지 #shorts #SAP #품질관리

▶ YouTube에서 보기

📖 개요와 이 글의 목표

SAP QM(품질관리)에서 검사로트(Inspection Lot)는 "이 재고를 품질검사 대상으로 잡았다"는 문서입니다. 실무에서 가장 많이 받는 질문이 "입고했는데 왜 검사로트가 안 생기죠?"인데, 원인은 거의 항상 세 가지 조건 중 하나가 빠져 있기 때문입니다. 이 글은 가상의 정밀화학 회사 시나리오(자재 HB-RAW-3011, 플랜트 2100)를 통해 검사로트 자동 생성의 조건을 단계별로 분해합니다.

  • 자재마스터 품질관리 뷰의 검사유형(01, 04, 05, 08) 활성화 구조를 이해한다
  • 이동유형(101, 301 등)과 검사로트 원천(Lot Origin)의 연계 원리를 파악한다
  • 검사설정 세부 옵션(자동 사양 할당, 검사재고 전기)과 발생 시점을 구분한다
  • 로트가 생성되지 않을 때 점검할 테이블(QMAT, TQ32, QALS)을 ABAP으로 직접 확인한다

📚 미리 갖추면 좋은 배경 지식

MM 모듈의 구매오더-입고(MIGO, 이동유형 101) 흐름과 자재마스터 뷰 개념(MM02), 그리고 SPRO 커스터마이징 탐색 경험이 있으면 수월합니다. ABAP 예제는 SELECT 문과 내부 테이블 수준이므로 초급 ABAP 지식이면 충분하며, QM 트랜잭션(QA32, QA33)을 한 번이라도 열어봤다면 더 좋습니다.

🔧 환경 / 버전 / 준비물

이 글의 화면 경로와 테이블 구조는 SAP S/4HANA 2023 (On-Premise) 기준이며, ECC 6.0 EHP8에서도 핵심 로직(QMAT, TQ32, QALS 기반)은 일반적으로 동일하게 동작합니다. 준비물은 다음과 같습니다.

  • 테스트 가능한 개발/품질 시스템 클라이언트 (커스터마이징 변경 권한 포함)
  • 트랜잭션: MM01/MM02(자재마스터), MIGO(입고), QA32/QA33(검사로트), QP01(검사계획), SPRO 또는 QCC0(QM 커스터마이징), OMJJ(이동유형)
  • 예제 마스터데이터: 원료 수지 자재 HB-RAW-3011, 완제품 HB-FG-7020, 플랜트 2100(평택공장), 구매오더 1건
  • SE38 실행 권한 (점검용 ABAP 리포트 3종)

💡 핵심 개념: 검사로트가 자동 생성되는 3가지 조건

검사로트 자동 생성은 공항 입국 심사에 비유하면 이해가 빠릅니다. 심사를 받으려면 (1) 여권에 유효한 비자가 있어야 하고(자재마스터의 검사유형 활성화), (2) 심사대가 열려 있는 게이트로 들어와야 하며(이동유형과 검사로트 원천의 연계), (3) 심사대 운영 규정이 켜져 있어야 합니다(커스터마이징의 QM 활성 플래그와 검사설정 세부 옵션). 셋 중 하나라도 빠지면 승객(재고)은 심사 없이 통과하거나, 게이트 앞에서 멈춥니다.

조건 1 — 자재마스터 QM 뷰의 검사유형 활성화. MM02에서 품질관리 뷰의 "검사설정(Inspection Setup)" 버튼을 누르면 자재·플랜트별로 검사유형을 등록합니다. 이 데이터는 테이블 QMAT에 저장되며, 검사유형을 "등록"만 하고 활성(Active) 체크박스를 켜지 않으면 로트는 생성되지 않습니다. 표준 검사유형의 대표 값은 01(구매 입고검사), 04(생산 입고검사), 05(기타 입고/수동), 08(재고이동 검사)입니다.

조건 2 — 이동유형과 검사로트 원천의 연계. 자재 이동이 일어나면 시스템은 테이블 TQ32에서 해당 이동유형에 검사로트 원천(Inspection Lot Origin)이 매핑되어 있는지 확인합니다. 예를 들어 101 입고는 원천 01, 301/311 같은 재고이동은 원천 08로 연결됩니다. 그리고 자재마스터에서 그 원천에 해당하는 검사유형이 활성화되어 있을 때만 로트가 만들어집니다. 즉 "이동유형 → 로트 원천 → 활성 검사유형"의 3단 매칭입니다.

조건 3 — 발생 시점과 검사설정 세부 옵션. 로트 원천마다 발생 이벤트가 다릅니다. 아래 표처럼 원천 01은 입고 전기 시점, 원천 04는 일반적으로 생산오더 릴리즈(또는 오더 유형 설정에 따라 첫 입고) 시점에 생성됩니다. 또한 검사설정의 자동 사양 할당(Automatic Assignment), 검사재고 전기(Post to Inspection Stock), 검사계획 필요 여부가 로트의 최종 상태(REL 도달 여부)를 좌우합니다.

로트 원천대표 검사유형발생 이벤트연계 이동유형 예
0101, 0101구매오더 입고 전기101, 105
0404생산오더 릴리즈 또는 오더 입고101(오더 입고)
0505기타 입고(무오더 입고 등)501, 521
0808재고이동/전송 전기301, 311, 321

💻 실전 코드와 설정 3단계

1단계 — 기본: 검사유형 활성화 상태를 코드로 확인하기. 시나리오: 평택공장(2100)에서 원료 수지 HB-RAW-3011의 입고검사를 시작하려 합니다. 먼저 MM02 → 품질관리 뷰 → 검사설정에서 검사유형 01을 추가하고 활성 체크, "검사재고 전기" 체크를 켭니다. 이후 아래 리포트로 QMAT 상태를 검증합니다.

REPORT zqm_insp_setup_check.

PARAMETERS: p_matnr TYPE matnr  DEFAULT 'HB-RAW-3011',
            p_werks TYPE werks_d DEFAULT '2100'.

SELECT art,        " 검사유형 (01, 04, 08...)
       aktiv,      " 활성 여부 - 이 값이 공백이면 로트 미생성
       apa         " 자동 사양(검사계획) 할당 여부
  FROM qmat
  WHERE matnr = @p_matnr
    AND werks = @p_werks
  INTO TABLE @DATA(lt_setup).

IF lt_setup IS INITIAL.
  WRITE: / '검사설정 자체가 없음 → MM02 QM뷰에서 검사유형 등록 필요'.
ELSE.
  LOOP AT lt_setup INTO DATA(ls_setup).
    WRITE: / |검사유형 { ls_setup-art } / 활성 { ls_setup-aktiv } / 자동할당 { ls_setup-apa }|.
  ENDLOOP.
ENDIF.

이 상태에서 MIGO로 구매오더 입고(이동유형 101)를 전기하면 QA32에서 원천 01 로트가 조회되고, 재고는 품질검사 재고로 들어갑니다.

2단계 — 실무: 입고는 됐는데 로트가 없는 건을 자동 탐지(에러/로깅 포함). 실무에서는 "어제 입고 30건 중 2건만 로트가 안 생겼다" 같은 상황이 반복됩니다. 최근 101 입고 이력(MSEG)과 검사로트(QALS)를 대사하고, 이동유형-원천 매핑(TQ32)까지 함께 점검하는 리포트입니다.

REPORT zqm_missing_lot_finder.

PARAMETERS: p_werks TYPE werks_d DEFAULT '2100',
            p_days  TYPE i       DEFAULT 3.

DATA(lv_from) = cl_abap_context_info=>get_system_date( ) - p_days.

" 1) 이동유형 101이 로트 원천에 매핑되어 있는지 사전 점검
SELECT COUNT(*) FROM tq32 WHERE bwart = '101' INTO @DATA(lv_tq32).
IF lv_tq32 = 0.
  MESSAGE '이동유형 101에 검사로트 원천 매핑 없음(TQ32) - 커스터마이징 확인'
    TYPE 'E'.
ENDIF.

" 2) 최근 101 입고 중 검사로트가 없는 자재문서 추출
SELECT m~mblnr, m~matnr, m~werks, m~menge
  FROM mseg AS m
  WHERE m~bwart = '101'
    AND m~werks = @p_werks
    AND m~budat_mkpf >= @lv_from
    AND NOT EXISTS ( SELECT 'X' FROM qals AS q
                       WHERE q~mblnr = m~mblnr
                         AND q~matnr = m~matnr )
  INTO TABLE @DATA(lt_missing).

LOOP AT lt_missing INTO DATA(ls_miss).
  " 원인 후보: QMAT 활성 여부 재확인 후 경고 로그
  SELECT SINGLE aktiv FROM qmat
    WHERE matnr = @ls_miss-matnr
      AND werks = @ls_miss-werks
      AND art   = '01'
    INTO @DATA(lv_aktiv).
  IF sy-subrc <> 0 OR lv_aktiv IS INITIAL.
    WRITE: / |{ ls_miss-mblnr } { ls_miss-matnr }: 검사유형 01 미활성|.
  ELSE.
    WRITE: / |{ ls_miss-mblnr } { ls_miss-matnr }: 설정 정상, 예외 케이스 분석 필요|.
  ENDIF.
ENDLOOP.

"설정 정상인데 로트 없음"으로 분류된 건은 뒤의 트러블슈팅 섹션 체크리스트(103/105 흐름, 소스검사 등)로 넘어갑니다.

3단계 — 프로덕션: 배치 모니터링 + 권한/성능 고려. 운영에서는 위 로직을 배치 잡으로 돌리고 애플리케이션 로그(BAL)에 남겨 품질팀이 SLG1로 추적하게 만드는 방식이 일반적으로 권장됩니다. 플랜트 권한 체크와 대상 기간 제한으로 보안·성능을 함께 챙깁니다.

" 배치 잡용 핵심 골격 (플랜트 권한 + BAL 로그)
AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
  ID 'ACTVT' FIELD '03'
  ID 'WERKS' FIELD p_werks.
IF sy-subrc <> 0.
  MESSAGE '플랜트 조회 권한 없음' TYPE 'E'.
ENDIF.

DATA(ls_log) = VALUE bal_s_log( object    = 'ZQM'
                                subobject = 'LOT_MONITOR'
                                extnumber = |{ p_werks }/{ sy-datum }| ).
CALL FUNCTION 'BAL_LOG_CREATE'
  EXPORTING i_s_log      = ls_log
  IMPORTING e_log_handle = DATA(lv_handle).

" ... 2단계의 대사 로직 수행 후 누락 건마다 BAL_LOG_MSG_ADD 호출 ...

CALL FUNCTION 'BAL_DB_SAVE'
  EXPORTING i_save_all = abap_true.

성능 팁: MSEG 조회는 반드시 기간·플랜트·이동유형으로 좁히고, S/4HANA라면 MSEG 대신 CDS 뷰 기반 조회로 전환하는 편이 유리합니다. 테스트는 개발기에서 (1) 검사유형 미등록, (2) 등록·미활성, (3) 활성 정상 세 가지 자재 케이스를 만들어 리포트 분류가 정확한지 확인한 뒤 이관합니다.

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

Q1. 검사유형 01을 활성화했는데도 101 입고 시 로트가 안 생깁니다. 가장 흔한 원인은 커스터마이징에서 해당 이동유형의 QM 검사가 꺼져 있는 경우입니다. SPRO → 품질관리 → 품질검사 → 검사로트 생성 → 자재이동에 대한 검사(Inspection for Goods Movements)에서 101의 QM 활성 플래그를 확인하세요(OMJJ에서도 이동유형별 속성 확인 가능). 또 103→105(입고 보류재고) 흐름을 쓰면 로트는 103이 아니라 105 시점에 생성됩니다.

Q2. 로트는 생겼는데 상태가 CRTD에 멈춰 결과기록(QE51N)이 안 됩니다. 검사설정의 자동 사양 할당(APA)이 켜져 있는데 유효한 검사계획(QP01, 용도 5)이 없거나, 계획의 유효시작일이 로트 생성일보다 미래인 경우입니다. 계획을 생성·수정한 뒤 QA02에서 사양을 수동 할당하면 REL로 전환됩니다.

Q3. 같은 자재인데 어떤 입고는 로트가 생기고 어떤 입고는 안 생깁니다. 공급업체 소스검사(QI07)가 설정된 업체는 입고 시점 로트가 의도적으로 생략될 수 있습니다. 또 검사유형 01과 변형 0101이 동시에 등록된 경우 "선호 검사유형(Preferred Inspection Type)" 지정이 없으면 예상과 다른 유형으로 생성되니 QMAT 등록 상태를 정리하세요.

Q4. 재고이동(301)인데 검사로트가 안 생깁니다. 원천 08용 검사유형 08이 수입 플랜트 쪽 자재마스터에 활성화되어 있는지, 그리고 TQ32에 301→08 매핑이 살아 있는지 두 곳을 모두 확인해야 합니다. 발송 플랜트에만 활성화한 실수가 잦습니다.

🚀 이후 학습 방향과 관련 주제

세 가지 조건을 이해했다면 다음 주제로 확장해 보세요. (1) 동적수정규칙(Dynamic Modification Rule)과 샘플링 절차로 검사 강도를 자동 조절하기, (2) 사용결정(UD, QA11/QA32)과 재고 전기 연계, (3) 생산오더 공정중검사(검사유형 03)와 SFC 연동, (4) S/4HANA의 Fiori 앱 "Manage Inspection Lots" 및 Quality Management API를 활용한 로트 데이터 연계 자동화. 특히 UD 이후 재고 흐름은 이 글의 조건 3(검사재고 전기)과 직결되므로 이어서 보길 권장합니다.

댓글 0

아직 댓글이 없습니다.