메뉴 건너뛰기

SAP 한국 커뮤니티

abap 7.4 open sql 변경 사항

프링글스 2014.04.29 21:30 조회 수 : 7396

SAP NetWeaver 7.4 SP05 에서는 기존 Open Sql과 비교하여 변경되고 추가된 기능이 몇가지 있습니다
이러한 기능은 기존에 비하여 가독성을 좋게 하고 데이터베이스 레벨에서 작업을 가능하게 하여 성능
향상에도 도움이 됩니다.

.

컬럼 분리 및 변수에 @ 사용


이전에는 OPEN SQL 에서 컬럼을 분리할 때 스페이스를 사용하였는데 이제는 comma(,)를 사용하고 변수에는 @를 붙여서 

      가독성이 좋아졌습니다

 

예시)

      SELECT carrid, connid, fldate

       FROM sflight

       INTO CORRESPONDING FIELDS OF TABLE@sflight_tab

       WHERE carrid = @carrier AND

              connid = @connection

       ORDER BY carrid, connid.

 

SQL Expressions


SELECT 
문의 컬럼 리스트에 다양한 SQL Expressions 사용이 가능하게 되었고 이에 따라

기존에 어플리케이션 레벨에서 이루어지던 작업을 데이터베이스 레벨에서 이루어지도록 하여 성능을 향상 시킬 수 있습니다.

 

1)계산식 및 계산 함수 사용


SELECT구문에서 사칙 연산 및 number 함수 사용이 가능합니다.

 

예시)

      SELECTid, num1, num2,

             cast( num1 AS fltp ) / cast( num2 AS fltp) AS ratio,

             div(num1, num2 ) AS div,

             mod(num1, num2 ) AS mod,

             @offset + abs( num1 - num2 ) AS sum

      FROM demo_expressions

      INTO CORRESPONDING FIELDS OF TABLE @results

      ORDER BY SUM DESCENDING.

 

2) 형 변환


   SELECT 구문에서 CAST 를 사용하여 형 변환이 가능합니다.(위의 예시 참조)

 

3) 문자열 연결


  SELECT 구문에서 &&를 사용하여 문자열 연결이 가능합니다.

 

예시)

         SELECTchar1 && char2

           FROM demo_expressions

           INTO CORRESPONDING FIELDS OF TABLE@results.

 

4) NULL 대체


  SELECT 구문에서 coalesce 함수를 사용하여 null 일 경우 다른 값으로 대체합니다.

 

예시)

SELECT t1~a AS a1, t1~b as b1,t1~c AS c1, t1~d as d1,

       coalesce( t2~d, '--' ) AS d2,

       coalesce( t2~e, '--' ) as e2,

       coalesce( t2~f, '--' ) AS f2,

       coalesce( t2~g, '--' ) as g2,

       coalesce( t2~h, '--' ) AS h2

 FROM demo_join1 AS t1

        LEFT OUTER JOIN demo_join2 AS t2 ONt2~d = t1~d

 INTO CORRESPONDING FIELDS OF TABLE @itab

 ORDER BY t1~d.

 

5) CASE문 사용


  SELECT 구문에서 CASE문을 사용하여 조건에 따라 다른 데이터를 가져올 수 있습니다.

 

예시)

         SELECTid, char1, char2,

                CASE char1

                   WHEN 'aaaaa' THEN ( char1 &&char2 )

                   WHEN 'xxxxx' THEN ( char2 &&char1 )

                   ELSE @else

                END AS text

           FROM demo_expressions

           INTO CORRESPONDING FIELDS OF TABLE@results.