DATA : gv_carrid LIKE sflight-carrid VALUE 'AC',
gv_connid LIKE sflight-connid.
EXEC SQL.
select A.connid
into :gv_connid
from sflight A
where A.mandt = :sy-mandt
and A.carrid = :gv_carrid
ENDEXEC.
WRITE gv_connid.
A 는 갑자기 어디서 나온거죠????
그리고 where A.MANDT = SY-MANDT 는 반드시 필요하다고 해서 이해했는데
AND A.CARRID = :GV_CARRID 는 먼가요????
DATA gv_connid LIKE sflight-connid value 'AC'.
EXEC SQL.
select A.connid
into :gv_connid
from sflight A
where A.mandt = :sy-mandt
and A.connid = :gv_connid
ENDEXEC.
WRITE gv_connid.
제 생각엔 이렇게 해도 될꺼 같아서 해봤는데 오류 뜨고 튕기네요^^;;;;;
(초심자의 어설픈 생각으로 실행해봐찌만 역시나..^^;)
1. sflight A 에서 A는 alias 라는것으로 sflight라는 테이블을 쿼리에서 A라는 알리아스로 대체하나는 것입니다.
2. MANDT 는 클라이언트id입니다. 지정하지 않아도 디폴트로 실행중인 서버클라이언트번호가 지정되지만 클라이언트가 여러게 있다면 엉뚱한 서버에서 데이타를 읽어올수도 있어요.
3. AND A.CARRID = :GV_CARRID 알리아스 A는 SFLIGHT테이블의 CARRID 필드(항공사ID) 값이 GV_CARRID인 값(AC)와 일치하는것을 찾아라는 쿼리문장인데 제일첫 문장보시면 DATA : gv_carrid LIKE sflight-carrid VALUE 'AC' GV_CARRID라는 변수에 값선언되어있죠. 그리고 선언한 변수를 NATIVE SQL에서 사용할때 반드시 : 붙입니다.
타 싸이트를 링크해도 되는지 모르겠는데
자세한내용은 아래 링크 참고해주세요
http://channy-textcube.blogspot.kr/2008/11/native-sql-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-1.html