ME21N -구매오더 생성 혹은 구매오더 변경-> 저장 후 시점에서 모든 COMMIT이 이루어진후 탈수 있는 바디 혹은 EXIT가 있을까요?
현재 테스트 중인 badi 인경우 ME_PROCESS_PO_CUST 의 COLSE 메서드에서
COMMIT후 들어오는걸 확인했는데 문제는 변경일때는 들어오지 않는다는것, 그리고 조회일때도 들어온다는거 때문에 사용할수 없습니다..
그리고 EXIT 경우 ZXM06U44 --> PO 생성 변경일대 다 타지만 현재 이 EXIT는 내부적으로 COMMIT이 안된 상태 이고요.
(참고로 찾고자 하는 값은 구성부품이에요 PO생성시 자동으로 RESB에 저장되는데 저장되는 시점이 문제가되는거죠)
결론적으로 PO쪽 생성 변경 COMMIT 후 탈수 있는 EXIT 나 바디를 찾는거죠 ~
고수님의 답변 기달릴겠습니다.
댓글 3
-
TONY
2010.12.30 11:03
-
양키
2010.12.30 19:38
구매문서 고객필드 "MM06E005" user exit 걸어서 사용하시면 될텐데요 ^^
-
lucky7.
2010.12.30 20:38
답변주셔서 감사합니다.
변경시 저장시 한번씩만 실행되어야합니다. 왜냐면 실시간으로 구성부품을 인터페이스 해야하기때문입니다.
해당 EXIT은 찾아봐시잠 구성부품을 담고 있는 스트럭처는 정의가 없습니다. 더욱이 PO생성변경시 실행되어야하는데 없네요..
저도 백방으로 찾아본결과 해결되었습니다.
문제의 요지는 PO생성변경시 PO에 엮겨있는 BOM 데이터 즉 구성부품을 저장시점에 실시간으로 타시스템으로 인터페이스 하는거였습니다.
문제는 위의 EXIT 이나 BADI를 사용해서 모든 COMMIT 이 이루어진후 RESB를 읽을려고했는데 찾아본 결과 저장전 인터널 담겨있는 데이터를 읽을수 있더라구요.
http://forums.sdn.sap.com/thread.jspa?threadID=1644194 요기를 참고 했습니다.
- 관련 소스-
* Fetching Component data
ASSIGN ('(SAPLEINK)XMDPM[]') TO. --> 저장 USER EXIT에 추가
CHECK SY-SUBRC = 0.
* Assigning data into an internal table
I_MDPM_X[] =.
CHECK I_MDPM_X[] IS NOT INITIAL.
이 구분을 통해 저장시점에서 다른 로직에 인터널테이블에 담긴 데이터를 가져오는거죠.. 정말 활용가치가 많을것같아요 차후 다른 로직에도 이런 방식으로 선언되지 않은 데이터를 하지만 어디엔가에는 인터널 데이터로 가지고 있을 데이터를 찾을때 유용할것같습니다.
PO 생성하거나 PO 변경 시 필드 하나 변경할 때마다 체크하는 BADI가 있는데 지금 생각이 나지 않네요.
금요일에 출근하니 그 때 확인해 드릴게요. 그전에 답글 주실분 아래에 달아주세요~