안녕하세요...
약간 초보적인 질문일 수도 있겠지만..배워가는 입장이다보니..도움 좀 부탁드립니다..
READ TABLE 후 해당 값이 있으면 인터널 테이블의 DATA를 삭제하려고 합니다.
IT_DISP 테이블 DATA GT_CONFIRM 테이블 DATA
BL000001 BL000001
BL000005 BL000012
BL000012 BL000034
BL000024
BL000034
BL000022
BL000045
작성한 소스는 다음과 같습니다..
그런데 이상하게 첫 라인만 삭제가 되고 두번째 data는 삭제가 안되더라구요..
SORT IT_DISP BY ZSRNO.
SORT GT_CONFIRM BY ZSRNO.
LOOP AT IT_DISP.
CLEAR GT_CONFIRM.
READ TABLE GT_CONFIRM WITH KEY ZSRNO = IT_DISP-ZSRNO.
IF SY-SUBRC = 0.
DELETE IT_DISP WHERE ZSRNO = GT_CONFIRM-ZSRNO.
ENDIF.
MODIFY IT_DISP. CLEAR IT_DISP.
ENDLOOP.
뭐가 빠진게 있나요? 도대체 원인을 찾을 수가 없네요..도움 좀 부탁드립니다
* e-abap님에 의해서 게시물 복사되었습니다 (2010-01-09 13:45)
* e-abap님에 의해서 게시물 이동되었습니다 (2010-01-09 13:54)
댓글 5
-
버미!
2009.12.23 16:59
-
나마야
2009.12.23 18:59
비슷한데.. 이렇게 해보셔도 될꺼예요~ ^^
LOOP AT it_disp.
READ TABLE gt_confirm WITH KEY zsrno = it_disp-zsrno.
IF sy-subrc = 0.
DELETE it_disp.
ENDIF.
ENDLOOP. -
블랙아이즈
2009.12.23 21:34
감사합니다. 해결되었습니다.
-
요요
2009.12.24 01:48
약간의 tunning 을 해 보았습니다.
gt_confirm 의 데이터 건수가 더 적은 관계로 다음과 같이 코딩을 하는 것이
performace가 좀더 좋을 것 같네요.
LOOP AT gt_confirm.
DELETE it_disp WHERE zsrno = gt_confirm-zsrno.
ENDLOOP. -
블랙아이즈
2009.12.24 11:08
감사합니다...
data : l_tabix type sy-tabix. "Loop Index 값 저장 변수
LOOP AT IT_DISP.
CLEAR : GT_CONFIRM, l_tabix.
l_tabix = sy-tabix. "Loop Index 값 저장
READ TABLE GT_CONFIRM WITH KEY ZSRNO = IT_DISP-ZSRNO.
IF SY-SUBRC = 0. "위의 Read문에 의해 데이타가 존재하면
DELETE IT_DISP index l_tabix. "Loop Index 값에 의한 테이블 데이타 삭제
continue. " 다시 Loop 문으로
ENDIF.
* MODIFY IT_DISP. CLEAR IT_DISP. "요 줄 필요없음
ENDLOOP.