SELECT kostl matnr bwart sobkz kzbew kzvbr
dmbtr menge
INTO CORRESPONDING FIELDS OF TABLE it_mseg
FROM zcot0024
WHERE bdatj IN s_bdatj
AND poper IN s_poper
AND kategorie = 'VN'
AND ptyp IN ('VK', 'VEAU')
and matnr in s_matnr
and kostl in ra_kostl.
여기서요 .. ra_kostl. 이값이 아예 텅 비어있는데도 select 를 해오는데요..
제가 wherer 조건을 많이 줘봤는데요 .. 어떨때는 where 조건값이 텅비어있을때는
그냥 모든 데이터를 다 갖고 오고
어떨때는 비어있으므로 비어있는 값만 갖고 오더라그여 ~
이게 왜 이렇게 그 때 그 때 틀린건가여??
전지금 비어있을때는 빈값만갖고 오게끔 하고 싶은데요 ..
비어있는 값을 무시하고 모든 데이터를 다 갖고 와여~
알려주세요 ~~
상황마다 뭐가틀려서 where 조건의 빈값을 상황마다 다르게 select해오는지요 ^^*
부탁이요~
댓글 3
-
지의
2008.07.23 03:03
-
현준탱
2008.07.23 17:59
IF NOT ra_kostl[] IS INITIAL.
SELECT kostl matnr bwart sobkz kzbew kzvbr
dmbtr menge
INTO CORRESPONDING FIELDS OF TABLE it_mseg
FROM zcot0024
WHERE bdatj IN s_bdatj
AND poper IN s_poper
AND kategorie = 'VN'
AND ptyp IN ('VK', 'VEAU')
and matnr in s_matnr
and kostl in ra_kostl.
ELSE.
SELECT kostl matnr bwart sobkz kzbew kzvbr
dmbtr menge
INTO CORRESPONDING FIELDS OF TABLE it_mseg
FROM zcot0024
WHERE bdatj IN s_bdatj
AND poper IN s_poper
AND kategorie = 'VN'
AND ptyp IN ('VK', 'VEAU')
and matnr in s_matnr
and kostl = ' '.
ENDIF.
설명은 위에 분이 잘 설명해 주셨군요.
굳이 하신다면 이렇게 하셔도 될 것 같은데요.
-
Waiting
2008.07.23 18:07
ra_kostl을 Range변수로 쓰신듯한데 ' ' Null 값은 경우에 따라 나눠서 조건을 주셔야겠네요.
윗분들 답변 참고하시구요.
EQ 냐 IN 이냐의 차이입니다.
EQ 에 변수 값이 SPACE 면 빈값을 가져올 테고
IN 에 변수 값이 SPACE 이면 전체 값을 다 가져옵니다.
EQ 는 단일 값의 변수이고 IN 은 멀티 랭쥐 값의 Internal Table 형태로 되어 있습니다.
수고하세요.