internal table 에서 특정 문자를 포함하지 않는 데이터를 삭제하고 싶을 경우 어떻게 해야하나요?
delete itab where bezei not like '%MON%'.
이런 구문을 사용하고 싶은데 like 문을 인식 못하네요.
댓글 4
-
Joon
2010.07.22 19:55
-
ToBe_anexpert
2010.07.22 19:56
아래와 같이하면 될것같네요
비교 연산자중에 CS는 해당문자가 포함되는것 NS는 해당문자가 포함되지 않는것을 뜻합니다.
LOOP AT ITAB
CHECK ITAB-bezei NS 'MON'.
DELETE ITAB.
ENDLOOP.
OR
LOOP AT ITAB
IF ITAB-bezei NS 'MON'.
DELETE ITAB.
ENDIF.
ENDLOOP.
-
모포
2010.07.22 20:42
감사합니다. 두분 덕분에 해결되었습니다.
-
준서기
2010.07.22 20:50
위 내용 참고해서
delete itab where bezei ns 'MON'.
라고 실행해되 삭제가 됩니다.
LOOP 안에서 처리를 해야할 것 같네요.
header line이 있는 internal table이라고 가정했을때
LOOP AT itab.
FIND 'MON' IN itab-bezei.
IF sy-subrc NE 0.
DELETE itab
ENDIF.
ENDLOOP.
FIND문에서 'MON'이 들어간 문자열을 찾는데 있으면 sy-subrc가 0을 반환하므로,
0이 아니면 삭제하게끔 하면 되지 않을까요?
혹시 다른 방법 알고계시면 답변부탁드립니다~