select해올때 wherer 조건을 주는데
원래는 EKKO-KDATB증빙일 필드로 8자리 DATUM 필든데요 ..
SELECTION SCREEN 에 조회조건에 년월까지만 구별을 해서 데이터를 갖고오고싶은데
그러니까
EKKO-KDATB 에는 값이 2008.09.09 2008.10.09 이런식으로 여러 데이터들이
전체날짜가 들어가있지만
WHERE 조건에는 EKKO-KDATB(6) = 조회조건(년월)
이렇게 주고싶어서요 ~~
한마디로 EKKO-KDATB이아이에 6자리까지만 판단해서 데이터를 끌고오고싶은겁니다.
이렇게 하는 방법이 있을까요 ??
아시는분 꼭 답변달아주세요 ^^*
감사합니다 ^0^
댓글 6
-
덩콘
2009.05.22 19:48
-
DBnoid
2009.05.22 20:02
SELECTION OPTION에서는 아래와 같이 P_MONTH로 증빙월(유효기간시작일의 월)을 받으신후
parameters : p_month TYPE spmon. "증빙월
셀렉트 하시기전에
Range 변수에 할당하거나 두개의 FR, TO 날짜로 만든뒤 BETWEEN으로 처리...하시는것이 맞을듯...
BETWEEN으로 하시려면
DATA: p_data_fr LIKE SY-datum,
p_data_to LIKE SY-datum.
CONCATENATE p_month '01' INTO p_data_fr.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
day_in = p_data_fr
IMPORTING
LAST_DAY_OF_MONTH = p_data_to.
이렇게 해서 해당월의 첫날과 마지막 날을 구한다음
WHERE EKKO-KDATB BETWEEN p_data_fr and p_data_to 로 쿼리 하시는게 아무래도
문자로 변환하여 끌고오는것 보다 빠를껍니다....
-
Today is another day
2009.05.23 01:41
아래처럼 LIKE 이용하시면돼요.
EKKO-KDATB LIKE '200905%'
-
MM초보^^
2009.05.28 10:09
위에 분이 잘 설명 해주신것 같네요.
SELECT * FROM EKKO WHERE KDATB LIKE '200905%'.
이렇게 하시면 2009.05 에 해당 되는 것을 조회 하실 수 있을 것 같네요.
-
현준탱
2009.05.28 23:09
사이값을 구하는거라고 한다면 range를 사용하셔서 in 조건 쓰셔도 좋을것 같습니다.
-
아밥입문자
2009.06.01 20:47
아니면 like '200905%' 또는 사이값이면 from to를 쓰셔도 되고... 여러 방법이 있겠네여....^^
var+0(6)
이거 하시려는건가요?
var라는 필드의 처음 여섯자리를 가져오는 방법입니다만
var의 0번째에서부터 6자리가져오기
12345678 이라면 123456 가져오고
var+3(2) 이렇게하면 45 가져옵니다