안녕하세요 현재 회사에서 사용하는 프로그램 중 'BAPI_GOODSMVT_CREATE' BAPI를 사용하여 재고이동 처리를 하는 프로그램이 있습니다.
잘 사용중이던 프로그램인데.. 11월 특정날짜중에 이동할 자재리스트가 누락됐는지.. 의문스러운 부분이 발생하여 문의드립니다.
로직은 간단한답니다.
1) 이동처리할 리스트 조회
2) 전체 리스트를 위 BAPI를 이용하여 이동처리
3) RETURN이 없으면 성공으로 간주하여 COMMIT, 반대의 경우 ROLLBACK
4) 성공하면 생성된 자재문서번호를 이동처리할 리스트를 담고잇는 CBO 테이블에 자재문서번호를 업데이트
문제는 4번인데요.. 처리한 자재리스트가 A B C D 라고 할 때, 4가지 모두가 대상이지만
실제로 자재문서번호를 확인해보면 3가지 A B D만 처리되었고, CBO에는 A B C D가 모두 생성된 자재번호로 업데이트가 됩니다.
CBO를 업데이트 해주는게 일괄적으로 해주는 것이 아니라 BAPI를 태울 리스트와 동일하고, 여러번 살펴본 결과
CBO 테이블 업데이트 해주는 부분에는 문제가 없는 것으로 보입니다.
때문에 의심해보는게 혹시나 자재 A B C D를 BAPI를 통해 처리 시, 오류없이 A B D 이런식으로 누락되고 처리가 되는 경우가 있나요..?
만약 있다면 방지하거나 전체 ROLLBACK할 벙법은 없는지 궁금합니다.
읽어주셔서 감사합니다!
GOODSMVT_ITEM
BAPI_TRANSACTION_COMMIT 펑션 호출 중에 update task에서 에러가 나면 처리되던 STD 펑션들이 모두 롤벡되어 데이터 생성이 안됩니다.
DIALOG 트랜잭션 같은 경우 고속갱신 에러 팝업을 보는게 이런 경우죠.
BAPI_TRANSACTION_COMMIT펑션 호출시 OPTION = 'X'로 주시고 RETURN 파라미터에 TYPE 필드에 'E' 값이 들어오면
에러로 인식하게 하는 EXCEPTION 로직을 추가하면 됩니다.