본문 바로가기
SAP Story/CDS View

DDL정의-(2) View 정의 - 매개변수(Parameter)

by 돈보따리 2022. 11. 15.
반응형

DEFINE VIEW 에 사용하는 Parameter 에 대해서 알아보겠습니다.

 

문법

... WITH PARAMETERS parameter1, parameter2, ...

효과

CDS View 에 입력 매개변수 parameter1, parameter2, ... 을 정의합니다. 각각의 매개변수는 콤라(,)로 구분합니다.
pname이라는 입력 매개 변수를 구문  pname or $parameters.pname 을 사용하여 View의 SELECT 문의 다음 위치에서 피연산자로 사용할 수 있습니다.

 

  ■ Select List의 요소
  ■ 산술식의 피연산사
  ■ 대소문자 구별에서 대소문자 바로 뒤에 피연산자
  ■ Where 절 또는 Having절에서 조건 표현의 오른쪽 부분
  ■ ABAP Join 또는 Association(연관)에서 On 조건 표현의 오른쪽 부분
  ■ 경표 표현식의 필터조건에서 조건 표현의 오른쪽 부분

 


예시

다음 CDS View는 3개의 매개변수를 입력받아 Select 구문의 Where 절에 사용되었습니다. 

ABAP의 Select 구문에서 실제 동작시 입력된 결과는 실행 가능한 예제를 참조합니다.

@AbapCatalog.sqlViewName: 'DEMO_CDS_PARA' 
@AccessControl.authorizationCheck: #NOT_REQUIRED 
@Metadata.allowExtensions 
@EndUserText.label: 'Demo für Parameter-View' 
define view demo_cds_parameters 
  with parameters 
    p_distance_l :s_distance, 
    p_distance_u :s_distance, 
    p_unit       :s_distid 
  as select from 
    spfli 
    { 
      key carrid, 
      key connid, 
          cityfrom, 
          cityto, 
          distance, 
          distid 
    } 
    where 
          distid   =       :p_unit 
      and distance between :p_distance_l and :p_distance_u;      
with parameters
   p_distance_l :s_distance,
   p_distance_u :s_distance,
   p_unit :s_distid
3개의 Parameter를 정의하여 CDS View에 적용합니다.

 

[실행가능한 예제프로그램 소스]

REPORT demo_cds_parameters. 

CLASS demo DEFINITION. 
  PUBLIC SECTION. 
    CLASS-METHODS main. 
ENDCLASS. 

CLASS demo IMPLEMENTATION. 
  METHOD main. 
    DATA: 
      from_distance TYPE s_distance VALUE 2000, 
      to_distance   TYPE s_distance VALUE 6000, 
      unit          TYPE s_distid   VALUE 'MI'. 
    cl_demo_input=>new( 
      )->add_field( CHANGING field = from_distance 
      )->add_field( CHANGING field = to_distance 
      )->add_field( CHANGING field = unit 
      )->request( ). 

    SELECT * 
           FROM demo_cds_parameters( p_distance_l = @from_distance, 
                                     p_distance_u = @to_distance, 
                                     p_unit       = @unit ) 
           ORDER BY carrid, connid 
           INTO TABLE @DATA(result). 
    cl_demo_output=>display( result ). 
  ENDMETHOD. 
ENDCLASS. 

START-OF-SELECTION. 
  demo=>main( ).

참고

CDS View 에서 정의하는 Parameter에는 Select-Option 과 같은 형태는 적용할 수 없습니다.
단순 입력값 만을 사용할 수 있고, CDS View Select 시에 필수로 입력해줘야 합니다.
Parameter 에 기본값을 지정할 수 있습니다.

 

 

반응형

댓글