BAPI_TRANSACTION_COMMIT5 [SAP ABAP] BAPI_GOODSMVT_CANCEL — 입고·자재문서 취소 BAPI 호출 방법 (MBST 자동화 · MKPF-SMBLN 사전체크) SAP MM 모듈에서 자재문서를 취소하려면 화면에서는 MBST·MIGO_GR_REV 를 사용하지만, 인터페이스나 자동 정정 배치에서는 BAPI_GOODSMVT_CANCEL 을 호출합니다. 입고·출고·자재이동 어떤 종류든 한 BAPI 로 일괄 취소 가능합니다. 이 BAPI 는 송장 취소(BAPI_INCOMINGINVOICE_CANCEL) 처럼 자재문서 자체를 삭제하는 것이 아니라 반대 부호의 자재문서를 새로 생성 합니다. 원본 자재문서(예: BWART 101)와 취소 자재문서(BWART 102)가 짝으로 남아 재고 / 분개를 자동 청산하므로 추적 가능성이 끝까지 유지됩니다. 이 글에서는 BAPI 시그니처·전체 vs 부분 취소·전기일자 옵션·취소 가능 여부 사전 체크·COMMIT 처리·자주 발생하는 함정까지.. 2026. 5. 21. [SAP ABAP] BAPI_INCOMINGINVOICE_CANCEL — 송장 취소 BAPI 호출 방법 (MR8M 자동화 · REASONREVERSAL) SAP MM 모듈에서 송장(Invoice) 처리는 구매 프로세스의 마지막 정산 단계입니다. 잘못된 송장을 발견했을 때 화면에서는 MR8M 으로 취소를 수행하지만, 인터페이스나 자동화 배치에서는 표준 BAPI 인 BAPI_INCOMINGINVOICE_CANCEL 을 호출해서 처리해야 합니다. 이 BAPI 는 단순히 송장 전표를 "삭제" 하는 것이 아니라, 원본 송장과 반대 부호의 취소 전표(Reversal Document)를 새로 생성 해서 두 전표를 자동 청산(clearing) 시키는 구조입니다. 그래서 호출 후 원본 전표번호와 취소 전표번호가 각각 살아남고, 회계 추적이 끝까지 가능해집니다. 이 글에서는 송장 취소 BAPI 의 시그니처·취소 사유 코드·실제 호출 패턴·COMMIT 처리·자주 발생하는 오.. 2026. 5. 21. [SAP ABAP] 배치(Batch) 생성·변경 BAPI 풀 패턴 — BAPI_BATCH_CREATE + BAPI_OBJCL_CHANGE 로 특성값까지 (Class Type 023) SAP MM 환경에서 배치(Batch) 관리 자재를 다루다 보면 배치 마스터를 코드로 자동 생성/변경해야 하는 시나리오가 자주 생깁니다. MES 가 자체 채번한 배치 번호를 SAP 에 등록할 때, 외부 시스템에서 받은 배치 정보(생산일·유효기한·등급 등) 를 자동 반영할 때, 입고 처리 직전에 배치 분류 특성값을 미리 채워둘 때 — 모두 BAPI 호출로 처리합니다. 배치 관련 BAPI 작업은 보통 두 단계로 묶입니다. 첫째, 배치 마스터 자체를 생성/변경(BAPI_BATCH_CREATE · BAPI_BATCH_CHANGE) 하고, 둘째, 그 배치의 분류 특성값(Classification System) 을 BAPI_OBJCL_CHANGE 로 등록합니다. 두 단계가 한 세트로 동작해야 입고 시점에 배치의 등.. 2026. 5. 20. [SAP ABAP] BDC vs BAPI 차이 정리 — 화면 자동화 vs DB 직접 호출 / 언제 어느 것을 쓸까 SAP 에서 데이터를 다건 또는 단건으로 자동 입력해야 할 때 가장 먼저 마주치는 선택지가 BDC(Batch Data Communication) 와 BAPI(Business Application Programming Interface) 입니다. 둘 다 "표준 트랜잭션을 ABAP 코드로 자동화한다" 라는 목적은 같지만, 동작 방식·성능·호환성·CBO(자체 개발 화면) 대응 면에서 성격이 완전히 다릅니다. 신입 ABAP 개발자가 가장 자주 묻는 질문이 "그래서 어느 걸 써야 하나요" 입니다. 정답은 단순합니다 — 가능하면 BAPI, BAPI 가 없거나 회사 특화 화면이 끼어 있으면 BDC. 그런데 그 한 줄로 끝낼 수 있는 결정이 실제 업무에서는 모듈러 신입에게 자주 혼란을 줍니다. 비슷한 자동화 작업인데 .. 2026. 5. 20. [SAP ABAP/MM] 삭제된 PO 라인이 ME22N 으로 안 살아날 때 — BAPI_PO_CHANGE 로 납품완료(ELIKZ) 풀기 MM 모듈에서 PO 라인을 다루다 보면 가끔 까다로운 사고 시나리오가 발생합니다. 사용자가 PO 라인을 삭제 마커(EKPO-LOEKZ = 'L') 로 지운 상태 인데, 그 라인에 대해 CBO 프로그램에서 납품완료(EKPO-ELIKZ = 'X') 까지 별도로 찍어 둔 경우입니다. 이 상태에서 사용자가 마음을 바꿔 "역시 그 라인을 살리고 싶다" 며 ME22N 으로 삭제 마커를 풀려고 하면 "업데이트 취소" 덤프 가 발생하면서 라인이 살아나지 않습니다. 원인은 단순합니다. 표준 ME22N 은 라인 복구 시 "삭제 마커만" 풀려고 하는데, 같은 라인에 ELIKZ 까지 X 로 찍혀 있으면 SAP 가 "이 라인은 더 이상 입고가 들어오지 않을 라인" 으로 간주해 복구 자체를 거부합니다. 즉 두 플래그(LOEKZ·.. 2026. 5. 20. 이전 1 다음