300x250
728x90

# SAP SELECT(SQL) 동적 시작하기 전 


# SQL에서 사용을 할 때 동적으로 조건설정해주어야 할 때가 있다. 

# 조건을 설정하기 위해서는 동적 조건을 받을 변수동적으로 변경되는 값을 설정해야 한다. 

 

 

시작해 보자.

 

 

시나리오.

X 체크박스 클릭 시, 항공사 ID항공사 CONNID 조건 넣기 

클릭 없을 시, 항공사 ID조건 넣기

 

 

# 01. 동적 조건 설정 AND 동적으로 변경되는 값


# 조건을 동적으로 하기 위해서는 Internal Table로 받아야 한다. 

" 동적 조건 설정 "
DATA: GS_WHERE(20),
      GT_WHERE LIKE TABLE OF GS_WHERE.

" 입력 값 받기 "
PARAMETERS:
  PA_CAID TYPE SFLIGHT-CARRID,
  PA_COID TYPE SFLIGHT-CONNID.

" 체크에 따른 조건 변경 "
PARAMETERS:
  PA_CK AS CHECKBOX.

 

# 물론 체크에 따라서 Parameter을 보이게 안 보이게 할 순 있지만, 여기서는 동적 조건을 보여주기 위해서 다음과 같이 설정했다.

 

#02. Where 동적 조건 만들기


#01. 조건을 만들기 위해서는 Concatenate을 설정해야 한다. 

# 우선 CARRID부터 동적 변수 값설정해 보자.

 

 

Old Syntax으로 설정하면 다음과 같이


CONCATENATE 'CARRID = '''PA_CAID'''' INTO GS_WHERE.  " Old Syntax

 

예를 들어

PA_CAID에 값을 AA로 넘었다고 하면 다음과 같이 나올 것이다. 

 

# CONCATENATE을 이런 식으로 설정한 이유는 

Concatenate안에 변수를 넣으려면

'변수' -> 이런 식으로 넣어야 한다

 ( # 따옴표 ' ' 두 개를 사용해서 안에 변수를 넣어주는 방식. )

# 빨간 상자를 지워보자.

 

남은 건 'CARRID ='  ' '  이다.

더욱 쉽게 보면 'CARRID ='AA' ' 인 것이다. 

CONCATENATE를 사용하면서 변수가 아닌 문자를 써주려면 따옴표가 감싸줘야 하기 때문에 처음 시작부터 사용을 하였다. 

 

마지막으로 보면 결과 값은 

CARRID ='AA'이다. 

이렇게 되면 완성인 것이다. 

 

 

New Syntax으로 설정하면 다음과 같이 


GS_WHERE = |CARRID = '{ PA_CAID }' |.

 

 

#03. Where 동적 조건 만들기


# AND 조건으로 만들어보겠다.

 

디버깅을 돌려보면 

다음과 같이 들어가 있는 걸 볼 수 있다.

 

 

# 실행


# 다음과 같이 동적 조건을 사용했을 때에는 ( ) 괄호 이런 식으로 사용해야 한다.

 

 

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

 

" 동적 조건 설정 "
DATA: GS_WHERE(20),
      GT_WHERE LIKE TABLE OF GS_WHERE.

" 입력 값 받기 "
PARAMETERS:
  PA_CAID TYPE SFLIGHT-CARRID,
  PA_COID TYPE SFLIGHT-CONNID.

" 체크에 따른 조건 변경 "
PARAMETERS:
  PA_CK AS CHECKBOX.



" CARRID 동적 조건 "
CONCATENATE 'CARRID = '''PA_CAID'''' INTO GS_WHERE.  " Old Syntax "

***GS_WHERE = |CARRID = '{ PA_CAID }' |.                " New Syntax "


APPEND GS_WHERE TO GT_WHERE.


IF PA_CK EQ 'X'.

  GS_WHERE = 'AND'.
  APPEND GS_WHERE TO GT_WHERE.

  GS_WHERE = |CONNID = '{ PA_COID }'|.
  APPEND GS_WHERE TO GT_WHERE.

ENDIF.



SELECT *
  FROM SFLIGHT
  INTO TABLE @DATA(LT_LIST)
  WHERE (GT_WHERE).


CL_DEMO_OUTPUT=>DISPLAY( LT_LIST ).

 

728x90
LIST

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

SAP Tabstrip 정리( Screen )  (5) 2022.04.15
SAP ALV cell edit 설정( Enabled, Disabled )  (3) 2022.04.15
SAP Query [2] 정리  (0) 2022.03.26
SAP Query [1] 정리  (0) 2022.03.20
SAP MACRO,DEFINE 정리  (0) 2022.02.16