0v0__DEV

[07] ABAP 동적 WEHRE조건, Select 필드 본문

ABAP project

[07] ABAP 동적 WEHRE조건, Select 필드

0v0_삐약 2024. 8. 14. 18:55
728x90

ABAP에서 동적으로 데이터를 Select 할 때 아래와 같은 구문을 사용할 수 있습니다!

 

1. 동적으로 필드를 select 

1) 상황 

Selection Screen이 아래와 같을 때, 
Airline이 AA일 때에는 Carrid, connid, fldate의 필드만 가져오려는 상황

 

2) 코딩 

DATA lt_sflight type table of sflight.
DATA : lv_field type c LENGTH 50.

CASE p_carrid.
  WHEN 'AA'.
    lv_field = |carrid, connid, fldate |.
  WHEN OTHERS.
    lv_field = |*|.
ENDCASE.

BREAK-POINT.

SELECT (lv_field)
  FROM sflight
  INTO CORRESPONDING FIELDS OF TABLE @lt_sflight.

cl_demo_output=>display( lt_sflight ).

 

 

3) 결과 

carrid = 'AA' 

 

Carrid = ' ' 

 

4) 주의 

 

이처럼 select 하는 필드를 동적으로 주고, 인터널 테이블을 인라인으로 선언하면 아래와 같은 에러가 발생함 

static한 조건을 가지고 있을 때에만 inline 선언이 가능함

 

 

 

2. 동적으로 WHRE 조건 주기 

 

Selection Screen에 Condition List box를 생성함

A 일 떄에는 seatsmax_B가 10 이하인 데이터를 출력하고, 

B 일 때에는 seatsmax_B가 30 이상이고, Seatsmax가 330인 데이터를 출력해보려 함 

 

 

DATA lv_cond type string.

LV_COND = COND STRING( WHEN P_LIST EQ '1' THEN 'SEATSMAX_B <= 10'
                       WHEN P_LIST EQ '2' THEN 'SEATSMAX_B >= 30 AND SEATSMAX = 330' ).


SELECT *
  FROM SFLIGHT
  WHERE (LV_COND)
  INTO TABLE @DATA(LT_SFLGIHT).

 

사용자가 LISTBOX에서 1을 선택하면, LV_COND에 seatsmax_b에 대한 조건이 들어오고 그에 따른 데이터가 출력됨.

반대도 마찬가지임. 

728x90

'ABAP project' 카테고리의 다른 글

[09] 인도 화폐단위(INR.루피) 로 conversion하기  (0) 2024.10.14
[08]CTS 병합  (0) 2024.09.03
[06] FREE 구문  (0) 2024.08.07
[05] CL_GUI_ALV_GRID 의 Attributes  (0) 2024.07.29
[04] Currency Conversion SQL Func  (2) 2024.07.24