[MM 프로젝트 회고] ② PO (구매오더) 생성

민지·2026년 2월 2일

MM

목록 보기
2/3

해당 시리즈는 약 한달동안 진행한 MM 프로젝트의 회고글이다.

첫번째 단계인 구매처 생성, BP는 이전 글에 있다.

목차

1. 구매오더의 존재이유와 역할
  1.1 구매오더는 회계적 사건이 아니다
  1.2 구매오더는 이후 만들어질 문서들의 '참조 원본(reference)'이 된다
  
2. ME21N으로 보는 구매오더 흐름

3. 구매오더 종류를 자재가 결정하도록 설계한 이유
  3.1 SAP에서 나눈 구매오더 종류
  3.2 자재유형 도메인과 품목범주 도메인
  3.3 상품/제품에 따라 다르게 생성되는 구매오더


1. 구매오더의 존재이유와 역할

1.1 구매오더는 회계적 사건이 아니다

실무에서, 구매오더를 만들면 아무 일도 일어나지 않았다고 판단한다.

이유는 간단하다. 구매오더가 회계적 사건이 아니기 때문이다.

회계적 사건인지를 판단하려면 항상 2가지 질문만 하면 된다.

  • 기업의 자산/부채/자본/비용/수익에 변화를 주는 사건인가?
  • 그 변화를 금액으로 측정할 수 있나?

하지만 구매오더는 미래에 일어날 계약조건을 정리한 문서일뿐, 확정된 재무 사건은 아니다. 그렇기에 SAP에서는 구매오더 단계에서 회계 테이블을 건드리지 않는 것이다.

그렇다면 이렇게 회계적 사건도 아닌 구매오더를 왜 SAP에서는 열심히 관리할까?

왜냐하면, 구매오더는 이후 일어날 사건들의 '기준점'이 되기 때문이다.


1.2 구매오더는 이후 만들어질 문서들의 '참조 원본(reference)'이 된다

구매오더는 다음 문서들의 참조 원본이 된다.

  • 입고 (GR)
  • 송장 (IR)
  • 지급 (Payment)

그래서 SAP는 위 문서들이 생길 때마다 항상 묻는다.

"지금 발생한 이 사실이,
우리가 미리 합의해둔 조건과 맞는가?"


다시 말해, SAP는 구매오더 문서(PO)를 기준으로 GR, IR, Payment가 기준에서 벗어나지 않았는지를 검증한다.

  • 입고 수량은 계약과 맞는가?
  • 과입고/미입고는 없는가?
  • 아직 안 들어온 수량(미입고 수량)은 얼마나 있는가?
  • 단가는 약속대로인가?
  • 계약단가 대비 실제단가는 적정한가?
  • 송장 금액은 PO단가 대비 허용 오차를 초과하지 않고 적당한가?
  • 납기 지연 여부
  • 입고/송장 진행상태
  • PO의 조건들이 송장에서 누락/변형되었는가?
  • PO가 있기 때문에 가능한, 사전 검증
    • 입고는 했는데 송장이 안 왔는가?
    • 송장은 왔는데 입고가 안 되었는가?
      .
      .
      .

즉, 구매오더는 "아직 일어나지 않은 미래를 검증하기 위해 미리 만들어둔 문서" 이다.

그렇기 때문에, 회계는 반응하지 않고 , SAP는 조용하며, 진짜 변화는 다음 단계(입고..)에서 터진다.


2. ME21N으로 보는 구매오더 흐름

SAP GUI에서 구매오더는 ME21N으로 생성할 수 있다.


구매오더는 기존에 만들어둔 구매처마스터와 자재마스터를 전제로, "이 자재를, 이 조건으로, 이만큼 사겠다"고 약속하는 기준 문서다.

그래서

  • 헤더 : 누구와 어떤 조직 조건으로 거래할건지
  • 아이템 : 무엇을, 얼마에, 어디로 받을지를 나눠서 입력한다.

헤더에서는 공급업체(구매처)번호, 구매조직, 구매그룹, 회사코드를 입력한다.

아이템에서는 자재번호, 발주할 수량(PO수량), 단가, 플랜트, 저장위치, 통화코드를 입력한 후 엔터버튼을 누르면 납품일이 자재마스터에 있는 날짜 정보로 자동 입력된다.

참고 : 납품일 = 문서일자 + 자재마스터의 납품 소요 기간


이때 주목해야 할 부분은 아래와 같다.

  • 무상오더(구매오더 0원 샘플)이 아니라면, 송장수령 체크

    • 무상오더는 말그대로 단가 0, 지급할 금액 0, 즉 외상매입금 발생이 없으므로 송장을 수령할 필요가 없다!
  • 입고 기준으로 송장을 작성하려면, GR 기준 IV 체크

    • 이 체크를 하면, 송장은 입고수량까지만 처리할 수 있다는 제한이 생긴다.
  • 세금코드 (공급업체마스터 기준으로 값 자동 입력) 입력 후 점검버튼으로 에러 확인

  • 에러가 없다면, 저장버튼을 통해 PO를 생성해준다.


이때 위 사진들은 '표준PO' 생성화면이다.

그렇다. 사실 SAP에서는 구매오더 종류가 표준PO 말고도 여러 가지가 있다.

특히, 본 프로젝트에서는 선택된 자재유형에 따라 구매오더의 품목범주가 다르게 생성되는 내용 위주로 구현했기에, 해당 내용을 살펴보자.



3. 구매오더의 종류를 자재가 결정하도록 설계한 이유

이제부터는 실제로 구매오더를 구현할 때, 특히 신경 써서 만든 구매오더의 품목범주에 대해 이야기해보려고 한다.

그 전에 먼저 SAP에서 나눈 구매오더의 종류부터 살펴보자.

3.1 SAP에서 나눈 구매오더 종류

조달(procurement) 란, 기업이 필요한 재화나 서비스를 필요한 시점에, 적정한 가격으로, 적절한 공급처로부터 확보하기 위한 전 과정이다.

갑자기 뜬금없이 왜 조달에 관한 이야기를 했냐면, 구매오더의 품목범주에 대한 이야기를 하고 싶었기 때문이다.

SAP에서는 무엇을 조달하는지에 따라 구매오더 처리방식이 달라지며, 이때 PO의 품목범주(item Category) 필드로 구매오더 종류를 구분한다.


이때, PO의 품목범주 필드는 아래와 같다.


앞에서 구매오더의 종류는 PO의 품목범주 필드로 구분한다고 했다.

그렇다면 위 사진 속 품목범주 필드가 각각 어떤 구매오더 유형을 의미하는지 정리해보겠다.

1. Standard PO (표준, NB(공란) )

표준 PO는 이름에서 알 수 있듯, 특수 유형과 달리 일반 구매에 사용하는 구매오더이다.

자재 입고(GR) 시 재고가 증가하고,
송장 검증(IR) 단계에서는 자재대금과 운송비 등의 부대비용을 확정하며, 지급(Payment)까지 이어지는, 가장 기본적인 형태의 구매오더 유형이라 할 수 있다.

2. Subcontracting PO (외주임가공, L)

외주임가공에서는 공급업체(외주업체, 하도급업체)가 주문을 한 회사로부터 부품(원자재)를 제공받아, 그 부품으로 제품을 생산한다.

우리 회사가 하위 원자재를 공급업체에게 제공해주고, 공급업체가 만들어준 완제품을 납품받는 형태를 외주임가공 구매오더라고 한다.

또 외주임가공은 무상사급인지 유상사급인지로 분류된다.

  • 무상사급 : 원자재를 무상으로 제공
  • 유상사급 : 원자재를 별도로 유상으로 제공

그리고 대부분, 공급업체에서는 제품을 생산하는데 필요한 하위 원자재를 무상으로 제공해주는, '무상사급' 구조다.

완제품 입고 시에는 재고가 증가하며 (이동유형 101), 동시에 완제품을 만들기 위해 사용된 하위 원재료들이 우리 재고에서 출고 처리된다. (이동유형 543, 외주출고)

송장에서 정산할 때는, 임가공비만 지급해준다.

3. Consignment PO (위탁재고, K)

위탁재고란, 공급업체의 재고를 우리 회사 창고에 미리 보관해두고, 실제로 사용(출고)할 때만 우리 회사로 소유권이 이전되고 대금을 지급하는 방식이다.

즉, 위탁재고는 물류상으로는 입고되지만, 회계상으로는 재고자산이 아니며, 실제 사용 시점에만 소유권 이전과 대금 정산이 이루어진다.

이건 개인적으로 궁금해서 찾아봤는데, 왜 처음 입고 시 소유권 이전 안하고 굳이 사용(출고) 시점에 소유권 이전을 하는지 ... 답은 아래와 같다고 한다.

위탁재고는 자재를 즉시 사용할 수 있도록 확보하면서도, 재고자산 관리 리스크와 현금 유출을 공급업체에게 전가하기 위해 존재하는 구매오더 유형이다.

4. Service PO (서비스, D)

서비스 PO는 자재가 아니라, 설비 보수/전기작업/공사와 같은 서비스에 대한 구매오더이다.

공급업체에게 자재가 아닌 서비스를 요청하고,
제공된 용역에 대한 서비스를 정산한다.

5. Stock Transfer Order PO (재고이동 오더, U)

동일한 회사 재고 이동할 때 운송비/상하차비/물류비.. 와 같은 비용이 발생할 경우, 재고이동을 위한 오더를 발생시킨 후 비용을 정산한다.


3.2 자재유형 도메인과 품목범주 도메인

다시 본 프로젝트로 돌아와보자.

언급했듯이, 구매오더의 품목범주 필드로 구매오더의 종류를 구분한다고 했다.

그리고 구매오더 생성에서는, 자재번호를 입력하면 등록된 자재명/카테고리/단위/세금코드가 자동으로 입력되는데,
이때! 카테고리가 구매오더의 품목범주를 말한다.

이해를 돕기 위해, 미리 구매오더 생성화면을 첨부했다.
3번에서 품목추가 버튼을 눌러 PO의 아이템을 생성할 수 있는데, 이때 각 자재번호를 입력하면, 등록된 자재명/카테고리/단위/세금코드가 자동 입력되고, 이때의 카테고리가 구매오더의 품목범주를 뜻한다.


그럼 이제 프로젝트에서 설계한, 자재마스터의 자재유형 도메인과 구매오더 아이템의 품목범주 도메인 설계를 살펴보자.

자재유형 도메인

자재마스터(MARA)의 자재유형 필드는 MTART이고, 해당 자재유형 필드의 도메인을 아래 사진과 같이 설게했다.

Z001과 Z007로 완제품의 외주임가공/자체생산을 나눴으며,
Z002는 반제품, Z003은 상품, Z004는 원재료, Z005는 포장재, Z006은 서비스로 나눴다.

프로젝트는 (주) 와플대학을 기준으로 하기에 위와 같이 나눴다.

품목범주 도메인

구매문서 아이템(EKPO)의 품목범주 필드는 PSTYP이고, 해당 품목범주 필드의 도메인을 아래 사진과 같이 설계했다.

(주) 와플대학에서는 외주임가공하는 제품, 서비스, 그외는 표준으로 처리하도록 했다.


3.3 상품/제품에 따라 다르게 생성되는 구매오더

자재유형에 따라 구매오더 품목범주가 자동 결정된다

결론부터 말하겠다.

자재유형에 따라 구매오더 품목범주가 자동으로 결정되는데,

  • 자재유형이 Z001(외주임가공 제품)일 경우는, 품목범주 L
  • 그외 자재는 품목범주가 공란(표준)으로 유지된다.

이해를 돕기 위해, 다시 등장한 구매오더 생성화면이다.
품목추가 버튼을 눌러 PO 아이템을 생성할 때, 자재번호를 입력하면, 기본 정보들이 자동 입력된다.
자재마스터(MARA)에서는 자재명과 단위를, 구매처마스터-구매조직(LFM1)에서는 세금코드를 가져온다.

이때 내부로직에 따라 구매오더의 품목범주를 판별한다.
자재마스터의 자재유형(MTART)이
- Z001 → 구매오더 아이템(EKPO)의 품목범주(PSTYP)필드에 L 저장
- 그외 → EKPO의 PSTYP필드에 공란(표준) 을 저장해준다.


(02/04 수정) 추후에 알게 된 사실
실제 표준에서는 MTART-PSTYP에 직접 매핑이 아니라, 자재유형(MTART) → 품목범주 그룹(MTPOS) → 품목범주 결정 커스터마이징(T163) → EKPO-PSTYP 지정 으로, 중간 지점이 존재한다고 한다.

상품/제품에 따라 다르게 생성되는 구매오더

실제 테이블에 저장된 데이터를 보며, 구매오더가 상품/제품에 따라 어떻게 생성되었는지 다시 확인해보자!


구매문서 헤더 테이블을 보면, 생성된 구매오더는 총 2개이고 4500000029번은 상품 2개(우유, 생크림), 4500000030번은 외주임가공 제품 2개(완제품와플믹스, 완제품수제크림)으로 생성했다.

구매문서 아이템 테이블을 보면, 상품인 29번의 품목범주(PSTYP)는 표준이라 공백이고, 외주임가공 제품인 30번의 품목범주는 외주임가공이라 L로 지정된 것을 확인할 수 있다.



참고자료

https://jobreview.tistory.com/464

https://www.tutorialspoint.com/sap_mm/sap_mm_purchase_order_types.htm

profile
배운 내용을 바로바로 기록하자!

0개의 댓글