form select_data.
clear itab .refresh itab
a= 1995
check sy-datum0(4) >= a
exec sql performing data_append
select *
into : itab
from 1995@XXXXXX
where 조건...
endexec.
perform data_insert using a.
clear itab .refresh itab
a= 1996
check sy-datum0(4) >= a
exec sql performing data_append
select *
into : itab
from 1996@XXXXXX
where 조건...
endexec.
perform data_insert using a.
.
.
.
clear itab .refresh itab.
a= 2009
check sy-datum0(4) >= a
exec sql performing data_append
select *
into : itab
from 2009@XXXXXX
where 조건...
endexec.
perform data_insert using a.
endform.
이구문을 실행하면 1995년부터 현재년도까지 1년씩 모든년도의 데이터를 테이블에 인서트합니다.
그런데 저렇게 같은 로직이 계속 반복적으로 쓰는걸 한번만써서 1995년부터 루프를 돌리면서 from절을 1995년부터 현재 년도까지 바꾸어서 처리를 하고싶은데 감이 잘 오지를 않네요 .
조언좀 부탁드립니다.
댓글 8
-
민버미꺼!
2009.03.31 00:36
-
ㅇrㄱlㅈrㄱl
2009.03.31 01:16
민버미님 감사합니다 .
그런데 from 절에 (l_tblname) 값은 재대로 들어오는데 실행을 하면 dbif_dsql2_obj_unknown 덤프가 뜨네요 ㅠㅠ
뭐때문에 그런지 열씨미 찾아봐야겠네요
답변 감사합니다 ^- ^
-
보나
2009.03.31 01:26
concatenate 위에
clear: l_tblname.
추가해보세요.
-
ㅇrㄱlㅈrㄱl
2009.03.31 18:04
흠...저 코드가 안됀 이유가 l_tblname<--변수의 받은값을 읽는게 아니고 그냥 l_tblname <-변수를 읽어서 테이블이 없다고 덤프가 뜨는거네요 ....
네이티브SQL에서는 저 변수의 값을 못읽오 오는가 봐요 ㅠㅠ
-
SAP폐인
2009.03.31 21:20
Native SQL은 Dynamic변수를 지원하지 않습니다. -
보나
2009.04.01 22:49
네이티브 SQL 문제군요 ;;;
-
ㅇrㄱlㅈrㄱl
2009.04.02 18:45
민버미님의 답변을 참고해서 인터널테이블에 SQL을 담아서 제네레이터 시켜 해결했네요..
답변주신분들 모두모두 감사합니다 (- -)(_ _) 꾸벅!!!!
-
abap고수되기!
2009.09.15 04:10
좋은 정보 잘 보고 갑니다~
뭐 대략
Data : l_cnt type i,
l_year type p,
l_idx type i,
l_tblname type string.
l_cnt = sy-datum(4) - 1995.
l_year = 1995.
Do l_cnt times.
CONCATENATE l_year '@XXXXXX' into l_tblname.
exec sql performing data_append
select *
into : itab
from (l_tblname)
where 조건...
l_year = l_year + 1.
enddo.