SAP 오더 마감 현황 — 닫아야 할 오더가 아직 열려 있는가
수주·구매·생산 오더의 마감 대상을 한 화면에 모아, 잔량이 남았거나 정산이 끝나지 않은 건을 가려내는 화면입니다.
결산에서 재고와 원가가 맞지 않는 이유는 대개 닫히지 않은 오더입니다. 납품이 끝났는데 오더가 열려 있으면 잔량이 남고, 생산이 끝났는데 정산하지 않으면 원가가 재공품에 묶입니다.
문제는 수주·구매·생산이 각각 다른 모듈이라 확인하려면 화면을 세 번 옮겨야 한다는 점입니다. 표준 오더 구조를 그대로 이어받아 마감 대상을 한 화면에 모으도록 OpenUI5 화면으로 확장한 것이 이 앱입니다. 실제 구동 화면 2종을 함께 공개합니다.
SAP 표준 기능을 그대로 이어받은 부분
- 수주 오더 — 오더번호와 금액(
SalesOrderCloses) - 구매 오더 — 오더번호(
EBELN)와 발주일(BEDAT) · 금액(BDOCAMT) - 생산 오더 — 오더번호(
AUFNR)와 금액(DOCAMT) - GL 계정 — 마감 대상 계정(
GLCloses) - 마스터 — 거래처(
BPMasters) · 자재(MatMasters) · 계정(GLMasters)
| 항목 | 내용 |
|---|---|
| 업무 영역 | 재무회계(FI) · 물류 연계 · 결산 |
| Namespace | fi086_orderclosing |
| 셸 구조 | 필터바 + 오더 유형별 탭 + 마감 대상 목록 |
| 화면 수 | 조회 화면 1개 + 상세 |
| 데이터 | 수주·구매·생산 오더와 GL 계정, 마스터 등 다중 엔티티 |
| 성격 | 조회형(Read-Only) — 마감 처리는 각 모듈 표준이 담당 |
| 대상 | 수주 · 구매 · 생산 오더 · GL 계정 |
| UI 테마 | sap_horizon 단일 적용 |
실제 화면 2종 둘러보기
회사코드·기간으로 조회하면 오더 유형별 마감 대상이 나옵니다 → 잔량과 미정산 금액을 확인하고 → 각 모듈에서 마감 처리합니다.
아래는 실제로 앱을 실행해 기능을 눌러 가며 캡처한 화면입니다. 이미지를 클릭하면 원본 크기로 확대됩니다.
조작 방법
- 회사코드와 기간을 고릅니다. 결산 대상 기간입니다.
- 오더 유형을 전환하며 수주·구매·생산·GL 을 각각 확인합니다.
- 잔량이 남은 오더를 찾습니다. 납품이나 입고가 끝났는지 확인합니다.
- 미정산 생산오더는 원가가 재공품에 묶여 있는 상태입니다.
- 오류 표시가 있는 건은 원인을 확인합니다.
- 첨부 문서로 관련 증빙을 확인할 수 있습니다.
- 결과는 CSV 다운로드로 내려받아 각 모듈 담당에게 전달합니다.
마감 판정 규칙
오더 유형마다 마감 조건이 다릅니다.
수주 오더 납품·청구 완료 & 잔량 0 → 마감 가능
구매 오더 입고·송장 완료 & 잔량 0 → 마감 가능
생산 오더 실적 확정 & 정산 완료 → 마감 가능
GL 계정 미결 항목 없음 → 마감 가능
잔량 있음 · 미정산 → 마감 불가 — 원인 확인 필요
오더 금액 ≠ 전표 금액 → 차이 확인 필요
네 가지를 한 화면에 모은 이유
결산 담당자는 재고와 원가가 왜 안 맞는지 찾습니다. 그런데 원인은 SD·MM·PP 어디에나 있을 수 있어 모듈 화면을 차례로 돌아야 합니다. 마감 대상만 한 화면에 모으면 어느 모듈에 몇 건이 남았는지가 한 번에 보이고, 담당자에게 바로 넘길 수 있습니다.
오더 유형별 마감 확인 사항
| 유형 | 확인 사항 | 결산 영향 |
|---|---|---|
| 수주 오더 | 납품·청구 완료 여부 | 매출 인식 시점 |
| 구매 오더 | 입고·송장 완료 여부 | GR/IR 잔액 |
| 생산 오더 | 실적 확정과 정산 | 재공품 잔액 |
| GL 계정 | 미결 항목 존재 여부 | 계정 잔액 |
조회조건
| 필드 | 필수 | 설명 |
|---|---|---|
| 회사코드 | 필수 | 대상 법인 |
| 기간 | 필수 | 오더 일자 From~To |
| 오더 유형 | 선택 | 수주 / 구매 / 생산 / GL |
| 거래처 | 선택 | 고객 또는 공급업체 |
| 자재 | 선택 | 자재별 조회 |
| 상태 | 선택 | 마감 가능 / 잔량 있음 / 오류 |
결과 컬럼
| 컬럼 | 의미 · 표시 |
|---|---|
| 오더번호 | 수주 · 구매(EBELN) · 생산(AUFNR) |
| 오더 유형 | 수주 / 구매 / 생산 / GL |
| 거래처 | 고객 또는 공급업체 |
| 자재 | 대상 품목 |
오더일자 AUDAT · 발주일 BEDAT | 날짜 정보 |
오더 금액 BDOCAMT | 오더 기준 금액 |
전표 금액 DOCAMT | 실제 전기 금액 |
| 차이 | 오더 − 전표. 잔량 또는 미정산 |
상태 · 오류 ERROR | 마감 가능 여부와 원인 |
| 첨부 | 관련 증빙 문서 |
SAP 표준 기능 매핑
| 표준 | 역할 | 이 화면에서의 확장 |
|---|---|---|
VA05 | 수주 목록 | 마감 대상만 추려 표시 |
ME2M · ME2N | 구매오더 목록 | 잔량 있는 건 식별 |
KO88 · CO02 | 오더 정산 · 변경 | 미정산 건 식별 |
VBAK · EKKO · AUFK | 수주 · 구매 · 생산 오더 헤더 | 조회 원천 |
SKA1 | 계정 마스터 | GL 마감 대상 |
도입 시 확인이 필요한 부분
오더 마감 기준이 회사마다 다릅니다. 잔량이 조금 남아도 실무적으로 종결하는 경우가 있고, 완전히 소진돼야만 닫는 곳도 있습니다. 허용 잔량 기준을 정해야 불필요한 건이 목록에 쌓이지 않습니다.
참고 CDS 뷰
@AbapCatalog.sqlViewName: 'ZCORDERCLOSE'
@EndUserText.label: '오더 마감 대상 (Z)'
define view Z_C_ORDER_CLOSING
as select from ekko as PoHeader
inner join ekpo as PoItem on PoHeader.ebeln = PoItem.ebeln
left outer join lfa1 as Vendor on PoHeader.lifnr = Vendor.lifnr
{
key PoHeader.ebeln as OrderNo,
key PoItem.ebelp as ItemNo,
'PO' as OrderType,
PoHeader.bukrs,
PoHeader.bedat as OrderDate,
PoHeader.lifnr as Partner,
Vendor.name1 as PartnerName,
PoItem.matnr,
PoItem.netwr as OrderAmount,
PoItem.elikz as DeliveryComplete,
PoItem.erekz as InvoiceComplete
// 수주(VBAK/VBAP)·생산오더(AUFK)도 같은 형태로 만들어 union
// 잔량·미정산 판정은 완료 표시와 실적 금액 비교로 산출
}
매핑 이해를 돕기 위한 참고용 설계입니다. 실제 도입 시에는 운영 환경 설정과 릴리즈에 맞춰 조정합니다.
OpenUI5 구성
| 기능 | 사용 컨트롤 |
|---|---|
| 화면 골격 | sap.f.DynamicPage + 필터바 · 유형별 탭 |
| 필터바 | sap.ui.comp.filterbar.FilterBar — 조건 조합 |
| 유형 전환 | sap.m.IconTabBar — 수주 · 구매 · 생산 · GL |
| 목록 | sap.ui.table.Table — 유형별 컬럼 구성 |
| 상태 표시 | 아이콘 색으로 마감 가능 · 잔량 · 오류 구분 |
| 첨부 | sap.m.Link — 관련 증빙 연결 |
탭으로 나눈 이유
오더 유형마다 필요한 열이 다릅니다. 수주는 청구 여부, 구매는 입고·송장, 생산은 정산 상태를 봐야 합니다. 한 표에 다 넣으면 대부분 빈 칸이 됩니다. 탭으로 나누면 각 유형에 맞는 열만 보이고 건수도 탭에서 바로 확인됩니다.
파일 구성
| 경로 | 역할 |
|---|---|
manifest.json | 앱 디스크립터 — ko 로케일 · sap_horizon |
view/Main.view.xml | 필터바와 유형별 탭 |
controller/Main.controller.js | 조회 · 유형별 판정 · CSV |
model/ModelMock.js | localdata JSON 읽기(Promise) |
js/formatter.js | 금액 · 일자 · 상태 아이콘 포맷터 |
localdata/SalesOrderCloses.json | 수주 마감 대상 |
localdata/PurchaseOrderCloses.json | 구매 마감 대상 |
localdata/ProductionOrderCloses.json | 생산 마감 대상 |
localdata/GLCloses.json | GL 마감 대상 |
검증 결과
| 검증 항목 | 결과 |
|---|---|
| 오더 금액 − 전표 금액 = 차이 (전 건) | 통과 |
| 완료 표시가 있는 오더는 마감 가능으로 판정 | 통과 |
| 오더 유형별 컬럼 구성이 데이터와 정합 | 통과 |
| 거래처·자재 코드가 있으면 명칭도 존재 | 통과 |
| 오류 건은 오류 메시지 존재 | 통과 |
| XML · JSON 전체 파싱 | 오류 0건 |
| 화면 렌더링 — 실브라우저 조회 → 탭 전환 후 캡처 | 2/2 |
| 테마 런타임 확인 | sap_horizon |
자주 묻는 질문
잔량이 조금 남은 오더도 닫아야 하나요?
회사 기준에 따릅니다. 실무적으로 소액 잔량은 종결 처리하는 경우가 많습니다. 허용 기준을 정하지 않으면 목록에 계속 쌓여 확인이 형식이 됩니다.
생산오더 미정산은 왜 문제인가요?
원가가 재공품에 묶여 매출원가로 넘어가지 않습니다. 제품은 팔렸는데 원가는 남아 있어 손익이 실제보다 좋게 나옵니다.
이 화면에서 마감 처리도 되나요?
조회 전용입니다. 마감은 각 모듈 표준 트랜잭션에서 처리해야 후속 로직이 함께 돌아갑니다. 이 화면은 대상을 찾아 담당자에게 넘기는 역할입니다.
SAP 표준 기능과 어떻게 이어지나요?
오더 데이터는 각 모듈 표준 구조에 있습니다. 이 화면은 흩어진 마감 대상을 한 곳에 모아 결산 담당자가 전체 현황을 파악하게 하는 확장입니다.