메뉴 건너뛰기

SAP 한국 커뮤니티



SELECT구문 : INTO 3.data objects

SAP폐인 2007.11.20 16:03 조회 수 : 5012


------- SELECT구문 ------



SELECT (1.FIELD NAME)  FROM (2.TABLE NAME)
                                      INTO (3.DATA OBJECT)
                                      WHERE (4.FIELD NAME) 비교연산자 (DATA OBJECT/VALUE)


 


그럼 이제는 INTO DATA OBJECT에 대해서 생각해보도록 합시다. INTO구문은 2. FROM TABLE/VIEW에서 끌고온 테이블중에서 어떤 것들 1.FIELD NAME을 어떻게 어디에 담을 것인지를 정하는 것이라고 말할 수 있다. DATA OBJECT라고 적어 놓은 이유도 넘어오는 값이 FIELD면 FIELD로 STRUCTURE구조면 STRUCTURE로, TABLE형태이면 TABLE형태로 받아야 하므로 여러 DATA OBJECT형태를 띄기 때문이다. 중요한 것은 FIELD NAME의 형태에 따라 INTO구문이 틀려질 수 있기 때문에 때로는 FROM 전에 INTO구문을 넣어야 할 때도 있다.(FROM다음에 오면 에러가 난다) 그럼 INTO ~ 에 대해 자세히 알아보도록 하자.


 


 1. into wa,  into table itab, into (f1, ... fn) : 1. field name에서 넘어오는 값과 동일한 형태 및 속성을 가진 data object를 정의해야 한다. 만약 SELECT * FROM SFLIGHT라면 DB TABLE의 모든 필드를 SELECT하겠다는 뜻이므로 data object형태도 table 형태를 띄어야 한다. 만약 여러 필드를 적을 경우 ()표시를 넣게 되는데 () 표시는 field 이름과 공백을 가지지 않고, 그대로 붙여쓰게 된다는 것을 명심하자.


 


예문)


    DATA:  carrid   TYPE scarr-carrid,
               carrname TYPE scarr-carrname.
    SELECT carrid carrname INTO (carrid, carrname)
                                        FROM scarr.
    WRITE: / carrid, carrname.
    ENDSELECT.  <- 예문에는 있지만 거의 쓰지 않는다. 


 


2. into corresponding fields of wa, into corresponding fields of table itab : 여기서 corresponding fields of라는 구문은 1. field name에서 넘어오는 값중에 동일한 속성을 가진 필드의 경우 그대로 가져온다는 뜻이다. table를 쓰게 된다는 것은 table로 데이터를 받겠다는 것이며, 쓰지 않는 다는 것은 structure형태나 field형태로 값을 받겠다는 것이다.


 


예문)


  DATA : wa_fli TYPE sflight.
  DATA : it_fli    LIKE wa_fli occurs 0 with header line.


  SELECT * FROM sflight


                 INTO CORRESPONDING FIELDS OF table IT_FLI.


  WRITE : / it_fli-carrid, it_fli-connid.



 


3. append fields, append corresponding fields of wa, append corresponding fields of table itab : into구문의 경우 뒤에 오는 data objects로 값을 받겠다는 의미이지만 append는 값을 받아서 전에 있는 data object에 append시킨다라는 의미이다. 따라서 into 대신 append를 쓰는 경우에는 항상 앞 부분에 또다른 SELECT구문이 있고 그 구문에는 into 라는 것이 있다. 그리하여 앞 부분에 데이터가 담겨진 data object에 더해서 append구문으로 data를 추가시킨다고 생각하면 쉽다.


 


예문)


  DATA : wa_flight type sflight occurs 0 with header line.


 SELECT * FROM sflight


                INTO corresponding fields of table wa_flight.            1)  into로 담는다.


 SELECT * FROM scarr 


                APPENDING corresponding fields of table wa_flight.  2)  1)로 담은 곳에 append시킨다.


 WRITE : / wa_flight-carrid, wa_flight-connid.


 


SELECT구문중에서도 INTO구문으로 데이터를 잘 받아낼 수 있어야 SELECT 구문 다음에 데이터를 활용할 수 있으니 이 부분은 확실하게 알고 있어야 하겠다.