솔루션 홈
ME21N · 구매

SAP 구매발주서 — 무엇을 얼마에 언제까지 받기로 했는가

구매발주 헤더와 품목을 조회하고, 금액과 납기 조건을 확인하는 화면입니다.

구매발주서는 공급업체와의 약속입니다. 무엇을 얼마에 언제까지 받기로 했는지가 여기에 적혀 있고, 이후 입고와 송장이 모두 이 문서를 기준으로 처리됩니다.

그래서 발주 내용이 정확해야 뒤따르는 단계가 막히지 않습니다. 표준 구매발주 구조를 그대로 이어받아 헤더와 품목을 한 화면에서 확인하도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면을 함께 공개합니다.

SAP 표준 기능을 그대로 이어받은 부분

  • 구매조직 — 발주 주체(PurchasingOrganization)
  • 발주 품목 — 자재(ManufacturerMaterial)와 수량 · 단가
  • 금액 — 순금액(NetAmount)과 단가(NetPriceAmount)
  • 통화 — 발주 통화(DocumentCurrency)
  • 납기 — 품목별 납품 예정일
항목내용
대응 T-codeME21N · ME23N
업무 영역구매(MM) · 발주 관리
Namespacemm002_purchaseorder
셸 구조조회조건 영역 + 발주 목록 + 품목 상세
화면 수조회 화면 1개 + 품목 상세
데이터발주 품목과 구매조직 등 다중 엔티티
성격조회형(Read-Only) — 발주 생성은 표준이 담당
UI 테마sap_horizon 단일 적용

실제 화면 1종 둘러보기

구매조직·기간·공급업체로 조회하면 발주가 나옵니다 → 금액과 납기를 확인하고 → 품목 단위로 내려갑니다.

아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.

ME21N — Main.view.xml
발주 목록과 품목
발주 목록과 품목 — 구매조직·기간을 고르면 발주가 나옵니다. 발주번호·공급업체·통화·순금액과 함께 품목별 자재·수량·단가·납기가 표시됩니다. 조회·초기화 버튼은 조회조건 영역 오른쪽 끝에 있습니다.

조작 방법

  1. 구매조직을 고릅니다. 발주 주체 단위입니다.
  2. 기간을 발주일 기준으로 지정합니다.
  3. 공급업체나 자재로 범위를 좁힐 수 있습니다.
  4. 조회조건 입력필드에서 값을 바꾸거나 Enter 를 누르면 즉시 조회됩니다.
  5. 순금액으로 발주 규모를 확인합니다.
  6. 납기가 지난 품목이 있는지 봅니다. 입고 지연입니다.
  7. 발주를 선택하면 품목 상세가 열립니다.
  8. 결과는 CSV 다운로드로 내려받습니다.

금액 구성

품목 금액을 모아 발주 총액이 됩니다.

품목 순금액 = 수량 × 단가
발주 순금액 = Σ(품목 순금액)

통화  발주 통화 기준, 외화는 환율로 원화 환산

납기 상태
  납기일 ≥ 오늘  →  예정
  납기일 < 오늘, 미입고  →  지연

품목 단위로 납기를 두는 이유

발주 하나에 여러 품목이 들어가고 각각 납기가 다른 경우가 많습니다. 헤더에만 납기를 두면 일부 품목이 늦어도 발주 전체가 정상으로 보입니다. 품목마다 납기를 관리해야 어느 자재가 늦는지 특정됩니다.

구매 흐름 4단계

단계내용문서
① 구매요청필요 자재 요청요청 문서
② 발주공급업체에 주문발주서
③ 입고납품 확인입고 전표
④ 송장대금 청구 처리매입채무

②의 내용이 ③·④의 기준이 되므로 발주 정확도가 뒤 단계를 좌우합니다.

조회조건

필드필수설명
구매조직 PurchasingOrganization필수발주 주체
기간필수발주일 From~To
공급업체선택거래처별 조회
자재선택품목별 조회
발주번호선택특정 발주

결과 컬럼

컬럼의미 · 표시
발주번호구매오더 식별
구매조직 PurchasingOrganization발주 주체
공급업체거래처 코드와 명칭
발주일주문 날짜
통화 DocumentCurrency발주 통화
순금액 NetAmount발주 총액
자재 ManufacturerMaterial품목
수량 · 단가 NetPriceAmount품목 조건
납기납품 예정일. 경과 시 상태 색

SAP 표준 기능 매핑

표준역할이 화면에서의 확장
ME21N · ME23N구매발주 생성·조회헤더와 품목을 한 화면에
ME2M · ME2N발주 목록 조회목록 형태로 제공
EKKO · EKPO발주 헤더와 품목조회 원천
EKET납품 일정납기 정보
LFA1공급업체 마스터거래처 명칭

도입 시 확인이 필요한 부분

납품 일정이 품목당 여러 건인 경우가 있습니다. 분할 납품이면 한 품목에 여러 납기가 붙어 어느 일정이 지연인지 구분해야 합니다. 또 발주 변경 이력이 필요하면 변경문서와 연결하는 설계가 추가됩니다.

참고 CDS 뷰

@AbapCatalog.sqlViewName: 'ZCPURCHORDER'
@EndUserText.label: '구매발주서 (Z)'
define view Z_C_PURCHASE_ORDER
  as select from ekko as Header
    inner join      ekpo as Item   on Header.ebeln = Item.ebeln
    left outer join lfa1 as Vendor on Header.lifnr = Vendor.lifnr
    left outer join makt as MatText on Item.matnr = MatText.matnr
                                   and MatText.spras = 'K'
{
  key Header.ebeln as PurchaseOrder,
  key Item.ebelp   as ItemNo,
      Header.ekorg as PurchasingOrg,
      Header.bedat as OrderDate,
      Header.lifnr, Vendor.name1 as VendorName,
      Header.waers as DocumentCurrency,
      Item.matnr,  MatText.maktx as MaterialName,
      Item.menge   as Quantity,
      Item.netpr   as NetPrice,
      Item.netwr   as NetAmount
      // 납기는 EKET 의 납품 일정과 조인
}

매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.

OpenUI5 구성

기능사용 컨트롤
화면 골격sap.m.Page + 조회조건 영역 · 발주 목록 · 품목
조회조건sap.m.Select · sap.m.DatePicker — 우측 끝에 조회
발주 목록sap.m.Table — 발주 단위
품목 상세선택 시 하단에 품목 펼침
금액sap.m.ObjectNumber — 통화 함께 표시
이벤트onPAI 단일 진입점, fcCode 로 분기

통화를 금액과 함께 표시하는 이유

수입 거래가 섞이면 원화와 외화 발주가 한 목록에 나옵니다. 통화 표시가 없으면 숫자 크기만 보고 규모를 오해합니다. 금액 옆에 통화를 붙이면 한 줄에서 바로 구분됩니다.

파일 구성

경로역할
manifest.json앱 디스크립터 — ko 로케일 · sap_horizon
view/Main.view.xml조회조건 · 발주 목록 · 품목
controller/Main.controller.js조회 · 금액 집계 · 납기 판정 · CSV
model/ModelMock.jslocaldata JSON 읽기(Promise)
js/formatter.js금액 · 통화 · 일자 포맷터
localdata/Items.json발주 품목
localdata/PurchasingOrganization.json구매조직

검증 결과

검증 항목결과
품목 순금액 = 수량 × 단가 (전 품목)통과
발주 순금액 = 품목 순금액 합계통과
납기 경과 판정 = 납기일 < 기준일통과
통화가 모든 금액에 표시통과
공급업체·자재 코드가 있으면 명칭도 존재통과
XML · JSON 전체 파싱오류 0건
화면 렌더링 — 실브라우저 조회 후 캡처통과
테마 런타임 확인sap_horizon

자주 묻는 질문

분할 납품은 어떻게 표시되나요?

한 품목에 여러 납기가 붙습니다. 납품 일정 단위로 보면 어느 회차가 지연인지 알 수 있어 품목 단위보다 정확합니다.

발주 금액이 송장과 다르면요?

가격 변동이나 수량 차이가 있었던 것입니다. 송장검증에서 걸러지며, 차이가 허용 범위를 넘으면 처리가 막힙니다.

외화 발주는 언제 환산하나요?

입고나 송장 시점 환율로 원화 금액이 정해집니다. 발주 시점 환율은 참고값이라 실제 원가와 다를 수 있습니다.

SAP 표준 기능과 어떻게 이어지나요?

발주 생성과 관리는 표준 MM 이 담당합니다. 이 화면은 헤더와 품목을 한 화면에 모으고 납기 상태를 붙여 확인을 단순하게 만든 확장입니다.

구매발주 조회, 지금 쓰는 SAP 위에서 확장해 보세요

헤더와 품목이 한 화면에 있으면 확인이 한 번에 끝납니다. 현재 SAP 환경 기준으로 어떻게 적용되는지 함께 확인해 드립니다.

구매발주서구매오더ME21N구매조직납기순금액OpenUI5