300x250

# SAP SELECT CASE란?


# SELECT 구문에서 CASE문을 사용해 조건에 따라서 더하거나 곱하거나 등등.. 데이터를 가공할 수가 있다.

 

# CASE문 SELECT에 쓴다고 생각하면 쉬울 것이다.( 뭐 똑같은 거니깐... )

SAP HELP 참고용

 

# SAP SELECT CASE 예시


예를 들어서 

SCARR Table에서 CURRCODE USD인 경우에는

CARRNAME 옆에 (달러)라고 붙여주세요. 

# 원래는 SELECT문을 통해서 SCARR Data를 가져와서 LOOP문을 돌아 Modify를 하거나 등등 그런 식으로 해줘야 하는데 CASE문을 쓰면 그럴 필요가 없다 

SELECT
  CARRID,

  CASE CURRCODE " 기준 조건 "
    WHEN 'USD' THEN ( CARRNAME && '(달러)' )

  ELSE CARRNAME

  END AS CARRNAME, " 변경 할 값 "


  CURRCODE,
  URL
  FROM SCARR
  INTO TABLE @DATA(LT_LIST).


CL_DEMO_OUTPUT=>DISPLAY( LT_LIST ).

 

#01. SCARR 가져오는 SELECT문을 만들어보자.

 

#02. 기준이 되는 CURRCODE 기준 조건으로 잡고, CARRNAME 변경해야 하기 때문에 다음과 같이 만들어주자.

 

#03. 이제 'USD' 조건을 걸어서 (달러) 붙여보자.

 

일단 실행해 보자. 

 

#04. 'USD'가 아닌 나머지 CARRNAME문 넣어줘야 하기 때문에 다음과 같이 설정해 보자.

 

이런 식으로 조건을 걸어서 데이터 가공할 수가 있다 

 

CASE문 비교 조건


# 간단하게 해 보자.

# SFLIGHT Table에서 SEATSMAX( 일반석 최대 정원 ) 에서 350이 넘으면 큰 비행기, 200이 안 넘으면 작은 비행기 나눠서 SEATSMAX 에다가 넣어보자 에 넣어보자. 

 

# 이런 식으로 하면 된다!

 

 

 

SELECT CASE문 에러 


# CASE문을 하다보면 다음과 같은 에러가 나올 수 있다. 이럴 때에는 CAST를 사용해서 다음과 같이 변경해주면 된다.

The maximum possible number of places in the expression starting with DMBTR is 34 places with 2 decimal places. There can be, however, no more than 31 places and 14 decimal places.

 

#01. 에러가 나오는 로직

 

#02. DMBTR에 대한 에러가 나오기 때문에 No.Characters, Decimal Places를 확인 후?

 

#03. CAST를 이용해서 다음과 같이 변경해주면 된다.

 

 

끝.

 

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

728x90

'.SAP > ..ABAP' 카테고리의 다른 글

SAP CTS Task 재지정( 옮기기 )  (0) 2024.01.02
SAP CTS 삭제 방법  (1) 2024.01.02
SAP Maintenance View( 유지보수 뷰 ) 정리  (2) 2023.12.15
SAP Function Group 정리  (1) 2023.12.15
SAP WatchPoint 정리  (0) 2023.12.12