일단 CBO 테이블에 데이터 저장후 COMMIT을 하지 않은상태에서
BDC를 타고 BDC 성공시에만 CBO 커밋을 하고 싶은데 실제로
BDC가 에러가 나도 CBO는 일괄 커밋이 되어 버립니다.
해결하는 방법이 있는지 궁금합니다.
아래 참조
------------------------------------
* CBO 테이블에 인서트
MODIFY ZPPT0004 FROM TABLE LT_ZPPT0004.
중략 ----------
CALL TRANSACTION P_TCODE USING PT_BDCDATA
OPTIONS FROM LT_PARAMS
MESSAGES INTO PT_BDCMSG.
* 성공 결과처리 - 성공시 커밋...실패시...롤백
IF SY-MSGTY = 'E'. "실패
ROLLBACK WORK.
ELSE. "성공
COMMIT WORK.
ENDIF.
댓글 4
-
tommy
2010.10.26 00:25
modify를 아래 if 문에서 하면 안되나요???... -
dusrude
2010.10.26 01:19
네.. 인서트를 한테이블에만 하는게 아니고 여러번 인서트와 셀렉트를 진행후
bdc를 타야합니다^^
-
야생이
2010.10.26 18:18
제 생각에는 만약 인서트 후 셀렉트를 진행할 경우
인서트 가 되었다는거는 이미 commit work 가 일어난게 아닌지요?
그리고나서 insert 된 내용까지 포함해서 select 를 하는거라면
rollback 이 아니라
실패 시 입력했던 인터널 테이블의 내용을 근거로
해당 cbo table 의 내용을 지워주는게 더 좋지 않을까 생각됩니다.
-
Tester
2010.10.26 23:27
제생각으로는 그냥 콜트랜젝션 메시지 탭에 완료나 저장이 되면 CBO 테이블에 저장 하는게 좋을 것 같은데요
CALL TRANSACTION P_TCODE USING PT_BDCDATA
OPTIONS FROM LT_PARAMS
MESSAGES INTO PT_BDCMSG.
PT_BDCMSG 값을 읽어서 잘되면
MODIFY ZPPT0004 FROM TABLE LT_ZPPT0004.
commit work.
else.
rolback work.