본문 바로가기

SAP ABAP

SAP HANA Core ABAP Skill - SQL CASE 구문 정리

반응형

ABAP SQL에서 FIELDS 절 단계에서 CASE 구문을 활용 할 수 있다.

 

SQL에서 CASE 를 수행하는것만으로 런타임을 줄일 수 있다.


⛏️목차

  • ABAP SQL CASE 구조
  • 예제 코드

ABAP SQL CASE 구조

기본적으로 SQL 구조는

SELECT <options>
   FROM <data source>
 FIELDS <field list>
  WHERE <condition>
   INTO <target>

로 정의 되어있을것이다. ( SAP HANA Cloud ABAP - Cloud ABAP SQL 문법 정리 포스팅 참고)

 

여기서 FIELDS 절 단계에서 CASE 구문을 활용 할 수 있다.

일반적인 ABAP에서의 CASE문과는 구조가 조금 다르다.

 

CASE ... WHEN ... THEN의 구조이며 마지막에 ENDCASE가 아닌 END로 끝나며 AS를 사용해 기존의 필드이름이나 새로운 필드 이름으로 지정해주면 된다.(기존 필드이름을 사용할 경우 해당 필드의 DataElemen에 따라 값이 변형(truncation)될 수 있다.)

 

ELSE 구문을 추가하여 지정한 CASE 조건에 부합하지 않을때도 컨트롤 가능하다.

SELECT ...

FIEDS CASE field 
        WHEN ... THEN ( ... ) 
        WHEN ... THEN ( ... ) 
        ...
        ELSE resultn
        END AS new_field

INTO ...

 

THEN뒤에는 괄호를 열어 계산 필드를 추가할 수 있으며,  해당 괄호 안에는 SQL 함수가 오거나 &&(Concatnation)을 사용 하여 텍스트를 연결 할 수 있다.


예제 코드

SELECT FROM sbook
 FIELDS 
*&------------------------------------Exam 1---------------------------------*
        CASE carrid
          WHEN 'AA' THEN ( concat_with_space( carrid, connid, 1 ) )
        END AS flight_code,
*&---------------------------------------------------------------------------*
        fldate,
        bookid,
        customid,
*&------------------------------------Exam 2---------------------------------*
        CASE custtype
          WHEN 'P' THEN ( custtype && ' ' && 'is' && ' ' && 'Private Customer' )
          WHEN 'B' THEN ( custtype && ' ' && 'is' && ' ' && 'Business Customer' )
          ELSE ( 'It is Null Colum' )
        END AS cust_name
*&---------------------------------------------------------------------------*
  WHERE carrid = 'AA'
   INTO TABLE @DATA(result).

cl_demo_output=>display( result ).

 

 

 

- 끝 -

반응형