BDC F-44 에서 저장버튼을 누르고 TRANSACTION 을 끝냈습니다.
그런데 후속 프로그램을 진행중에 수행한 F-44 BDC 를 취소하고자 할 경우는
어떻게 해야하나요?
예를 들어,
PERFORM DYNPRO TABLES BDCDATA
USING : 'X' 'SAPDF05X' '3100',
' ' 'BDC_OKCODE' '=BU',
' ' 'BDC_SUBSCR' 'SAPDF05X 6102PAGE',
' ' 'RF05A-ABPOS' '1'.
CALL TRANSACTION 'F-44' USING BDCDATA
MODE P_BDC_MODE "TEST 'E' OR 'A'
UPDATE 'S'
MESSAGES INTO GT_MESS.
READ TABLE GT_MESS WITH KEY MSGTYP = 'E'.
IF SY-SUBRC = 0.
이 부분에서 실행한 BDC 를 취소하고 싶은대요..
ENDIF.
댓글 9
-
버미!
2010.07.22 00:57
Rollback Work 하면 되려나 @.@ -
무한루프
2010.07.22 01:17
commit work. rollback work. 을 써도 저장버튼(=bu) 이 눌려 테이블에 저장된 데이터가 원복되지는 않더라구요.
-.-
-
두잉
2010.07.22 01:43
제가 경험했던 사이트의 경우
전체 실행 완료 후 성공/실패에 대한 결과 화면을 보여주고 ( ERROR MSG 포함 )
ERROR 조치 후 재 실행 할 수 있도록 프로그램 했었는데요...^^;
-
디카프리오안
2010.07.22 07:36
안녕하세요.
소스를 보니 MSGTYP = 'E' 라면 어차피 BDC 가 실행에 대해서 완료가 되지 않습니다.
BDC 에러에 대한 취소 작업이 필요가 없다고 생각하며 이보다는 에러 메시지에 대한 출력 및 이력관리가 필요할 것 같은데요.~
-
아리사냥
2010.07.22 17:28
성공한 BDC는 원복할수 없습니다.
아마 여러개의 BDC를 한꺼번에 실행하시다가 그중에 하나라도 Error가 나면 기존에 성공한 BDC를 삭제한다.. 이런식의 진행을 하시려는 것 같은데 맞나요??
성공한 BDC 자체는 실행 취소할수 없고요..(이미 트랜젝션이 끝난상태이므로..)
생성된 데이터를 다른 방법으로 삭제하셔야 합니다..
성공하지 않은 BDC에 대한 삭제라면 위에 분 말씀처럼 완료되지 않았기에 저장도 되지 않았을 것이므로, 메세지처리가 되어야 합니다.
-
JG
2010.07.22 17:50
로직이 에러이면 BDC로 생성된 Document를 지우겠다는 의미신데.. BDC 수행 중 에러가 발생된 건이라 Document가 생성이 되지 않습니다.
-
무한루프
2010.07.22 23:53
아리사냥님 말씀대로.. 여러 BDC 를 차례로 수행하다가 하나의 BDC 라도 ERROR 일 경우,
이전에 수행했던 모든 BDC 를 취소하려고 합니다.
저도 여러가지 방법으로 테스트해봤지만 별다른 방법이 없더라구요..
TABLE 의 데이터를 임의로 삭제하는 방법도 써봤지만 그건 데이터 명확성을 위해서 별로 쓰고 싶지 않고요..
그래서 생각한 방법이 BDCDATA 로 수행할 BDC 를 한번 쫙~~~ 돌려보는 겁니다.(저장없이)
그래서 ERROR 가 한건도 없으면 BDC 를 다시 수행하면서 저장까지 수행하도록 하고,
ERROR 건이 하나라도 있으면 BDC 를 다시 수행하지 않고 그냥 ERROR 메시지 보내고 EXIT 하기로 했답니다.
조금 무식해보이는 방법이지만 .. 어쩔수가 없네요. -,.-
타 시스템과 I/F 하는 부분이라 사용자가 ERROR 처리를 할 수는 없거든요. ^^;;
-
빠꼼이남푠
2010.07.23 00:51
Mssage Type 이.. 'E' 라면.. 어차피 정상적으로 저장 안된거 아닌가요?? 취소할 필요도 없을텐데요... 아닌가요??
-
갈매기
2010.07.28 00:12
에러 발생시 기 성공되서 생성된 문서를 취소하는 비디씨를 짜셔야 할거 같은데요