본문 바로가기
카테고리 없음

RAP 05 - SIMPLE REPORT : Value Help

by SAPortal 2026. 6. 15.
반응형

목차

    Value Help

    @Consumption.valueHelpDefinition

    이번시간에는 상단 Filter 필드에 Value Help기능을 구현해 보겠습니다. 먼저 Airline ID필드를 먼저 구현할껀데 그러러면 Value Help용 CDS View가 필요합니다. Standard CDS View가 있으면 그대로 사용하셔도 되고 새로 만들어서 사용해도 됩니다.

    물론 Value Help에 추가 로직을 넣어야 한다면 Standard VH가 있더라도 신규로 하나 만들어서 사용해야 합니다.

    여기서는 Airline ID의 Description을 위해 만들었던 ZEVER_CARRIER_I CDS View를 사용하겠습니다. Value Help관련 어노테이션은 @Consumption.valueHelpDefinition입니다. Value Help를 구현할 필드에 어노테이션을 추가해 보겠습니다.

     

     

    @Consumption.valueHelpDefinition을 사용해서 entity name에는 Value Help로 사용할 CDS View를 입력하고 element에는 필드이름을 지정해 줍니다. 이렇게만 하고 APP을 다시 실행시켜 보겠습니다.

     

     

    상단에 있는 Airline ID Selection Field를 누르면 Value Help가 펼쳐지면서 아래와 같이 Airline ID를 선택할 수 있는 화면이 나타납니다. 여기에서는 AA와 AZ를 선택하고 다시 조회해 보겠습니다.

     

     

    선택한 Airline ID만 조회되었습니다. 이처럼 어노테이션 추가만으로 Value Help기능을 간단히 구현할 수 있습니다.

     

     

    @Consumption.filter.selectionType

    Value Help는 기본이 Multi선택입니다. Single선택으로 바꿔보겠습니다.

    carrier_id필드에 @Consumption.filter.selectionType: #SINGLE 어노테이션을 추가합니다.

     

     

    APP을 다시 실행해서 확인해 보면 멀티선택 버튼이 사라리고 라인을 클릭하면 한건만 반영이 됩니다.

    이번에는 범위값을 입력할 수 있도록 수정해 보겠습니다.

     

     

    carrier_id필드에 @Consumption.filter.selectionType을 #SINGLE에서 #INTERVAL로 수정합니다.

     

     

    APP을 다시 실행해보면 상단에 Define Conditions라는 탭이 생긴걸 볼수 있습니다. 해당 탭에서는 RANGE변수에서 사용할 수 있는 조건들이 보여지고 이를 이용하여 조회가 가능합니다.

     

     

    다음으로 Flight Number에 대한 Value Help를 빠르게 구현해 보겠습니다. /DMO/CONNECTION 테이블을 참조하여 Value Help용 CDS View를 생성합니다. View이름은 ZEVER_CONNECTION_I 로 하겠습니다.

     

     

    connection_id필드에 @Consumption.valueHelpDefinition 어노테이션을 사용여 Value Help CDS View를 연결해 줍니다.

     

     

    APP을 다시 실행해보면 정상적으로 Value Help기능기 구현되었습니다. 

     

     

    그다음으로 Flight Date Value Help버튼을 눌러보면 아래와 같이 나옵니다. 좌측에서 조건을 선택하고 우측에 달력버튼을 누른후 날짜를 선택하면 되는데 조금 불편합니다.

     

     

    날짜필드는 @Consumption.filter.selectionType: #INTERVAL 어노테이션을 주게되면 Value Help를 좀더 편리하게 사용할 수 있습니다.

     

     

    INTERVAL을 적용했을때의 화면입니다. 

     

     

    additionalBinding

    이번에는 아래와 같이 Airline ID가 선택된 후에 Filight Number Value Help버튼을 누르게 되면 입력된 Airline ID에 해당하는 Flight Number정보만 Value Help로 나오게 구현해 보겠습니다.

     

     

    @Consumption.valueHelpDefinition 어노테이션에 additionalBinding을 아래와 같이 추가해 줍니다. localElement에는 Main View의 Airline ID 필드를 입력해 주고 element에는 Value Help CDS View의 Airline ID 필드를 입력해 줍니다. 여기까지 입력하고 APP을 다시 실행해 보겠습니다. 

     

     

    Airline ID Value Help에 AA를 입력하고 Flight Number Value Help버튼을 클릭해 보겠습니다. 아래와 같이 Airline ID에 필터가 걸리면서 AA와 관련된 Flight Number값만 화면에 보여지게 됩니다. 만약 additionalBinding 정보를 정확히 입력했는데 반영이 안된다면 브라우저 강력 새로고침을 한번 해보세요. BAS 캐시문제로 어노테이션이 바로 반영이 안될수도 있습니다.

     

     

    강력새로고침 방법은 APP의 화면에서 F12키를 누르면 개발자 모드창이 우측에 활성화 됩니다. 이 상태에서 좌측 새로고침 아이콘에 마우스 우클릭을 하게되면 아래 화면과 같이 선택 리스트가 나옵니다. 여기에서 '캐시 비우기 및 강력 새로고침' 을 선택하면 됩니다. 새로고침 후 개발자 화면은 닫고 테스트를 진행하시면 됩니다.

     

     

     

    @Search.searchable: true

    지금까지는 하나의 필드를 대상으로 하는 Value Help를 구현해 보았는데 이번에는 여러필드를 대상으로하는 Value Help를 구현해 보겠습니다. 설명만 듣고는 감이 잘 안오겠지만 일단 한번 따라해 보겠습니다.

     

     

    Main View 헤더부분에 @Search.searchable: true 어노테이션을 추가합니다. 멀티필드를 대상으로 하는 Value Help를 사용하겠다고 선언하는 부분이라고 생각하시면 됩니다. @Search.searchable: true 어노테이션을 단독으로 사용하게 되면 에러가 발생합니다. 어떤 필드를 대상으로 할지를 지정해 줘야 합니다. 

     

     

    CarrierId, ConnectionId, CarrName 필드에 @Search.defaultSearchElement: true 어노테이션을 추가합니다.

    그리고 다시 APP을 실행해 보겠습니다.

     

     

    Filter필드 가장 앞쪽에 입력창이 하나 추가된걸 확인할수 있습니다. 이 입력창은 @Search.defaultSearchElement로 지정했던 필드 모두를 검색합니다. 아래는 AZ으로 검색했을때의 결과입니다.

     

     

    Flight No.로도 검색이 됩니다.

     

     

    Airline name으로도 검색이 됩니다. 그러나 Full name을 정확히 입력해야 검색이 됩니다. 코드의 Description필드는 일부만 입력하더라도 입력한 Text가 포함되어 있으면 검색이 되면 편리할 것 같습니다.

    예를들어 ALITA만 입력해도 아래와 같이 검색이 되었으면 합니다. 해당 기능을 구현해 보겠습니다.

     

     

    CarrName필드에 @Search.fuzzinessThreshold: 0.8 어노테이션을 추가합니다. 그리고 APP을 다시 실행시켜 보겠습니다.

     

     

    ALITA만 입력하고 조회하면 아래와 같이 조회가 됩니다. @Search.fuzzinessThreshold 뒤의 숫자는 0.1 ~ 1.0 사이의 값을 입력할 수 있습니다.

    Note.
    @Search.fuzzinessThreshold
    1.0 : 완전히 일치하는 것만 검색(정확한 검색)
    0.8 : 80%이상 유사하면 검색 결과에 포함
    0.1 : 10%이상 유사하면 검색 결과에 포함(느슨한 검색)
    0.0 : 허용안함(에러발생)

     

     

    여기까지 따라오느라 수고하셨습니다. Value Help는 APP을 개발할때 항상 들어가는 기능이기 때문에 잘 정리해두시면 프로젝트시 개발시간을 절약할 수 있습니다.

    다음시간부터는 본격적으로 CUD기능이 있는 Managed APP을 개발해 보겠습니다.

    반응형