본문 바로가기
RAP

RAP 15 - MANAGED REPORT : FEATURE CONTROL

by SAPortal 2026. 8. 24.
반응형

Feature Control 이란?

Feature Control 은 BO의 특정필드 또는 Action 버튼, CUD(Create, Edit, Delete)기능에 대해 활성화/비활성화 상태를 동적으로 제어하는 기능입니다. Classic ABAP에서의 PBO에서 하던 Screen Control 기능과 비슷하다고 생각하시면 됩니다. 

 

Feature Contorl 은 크게 두가지 방식으로 나눕니다.

 

Static Feature Control (정적제어)

  • 데이터의 상태와 상관없이 항상 동일한 규칙을 적용합니다. 
  • 로직구현 위치는 Interface Behavior Definition 입니다.
  • 예시) field ( readonly ) TravelId;

Dynamic Feature Control (동적제어)

  • 데이터의 상태(Status)나 비즈니스 로직 조건에 따라 실시간으로 상태가 변경됩니다.
  • Behavior Handler Class 에 로직을 구현합니다.

 

Static Feature Contol

App을 실행하고 데이터를 생성해 보겠습니다. 아래보이는 ①Booking Fee + ②Flight Price의 총 합을 Total Price 필드에 적용하려고 합니다. Total Price 필드는 계산된 값이 입력되는 필드이기 때문에 Edit 필드가 아니어야 합니다. Total Price 필드를 비활성화 시켜 보겠습니다. 

 

 

사실 Static Feature Contorl은 이미 사용을 한번 했었습니다. Travel 정보 생성시에 Travel ID를 Early Numbering으로 신규 채번하면서 필드를 readonly 상태로 만들었습니다. 그 옆에 TotalPrice 필드를 추가합니다.

 

 

그리고 App을 다시 실행시켜 확인해 보면 Total Price 필드가 비활성화 되었습니다. 통화키 필드는 금액필드에 Reference 된 필드이기 때문에 금액필드가 비활성화 되면 같이 비활성 처리 됩니다. 

 

 

 

이번엔 필수필드를 지정해 보겠습니다. 아래와 같이 field ( mandatory ) CustomerId, AgencyId 를 추가했습니다.

 

 

App을 다시 실행해 보면 생성화면 및 수정화면에 아래와 같이 필수필드인 경우 붉은색 *표시가 필드명 뒤에 붙습니다. 이 상태에서 저장한번 해볼까요?

 

 

우리의 예상과 달리 빈값으로 저장이 됩니다. Feature Control의 mandatory 기능은 화면에 필수필드 표시만 해주지 실제 제어는 해주지 않습니다. 해당 필드의 Validation에 로직을 추가하여 제어해야 합니다.

 

 

CustomerID 필드 Validation에 아래와 같이 로직을 추가하고 Message Element도 추가해 줍니다.

 

 

AgencyID 필드에도 Validation 로직을 추가하고 Message Element 도 추가해 줍니다.

 

 

Dynamic Feature Control 

이번에는 Travel Status가 B(Booked)이면 "Copy"버튼과 "Delete"버튼을 비활성화 시켜 보겠습니다. Interface Behavior Definition으로 이동합니다. "Copy" Action과 "Delete" 에 ( feature : instance ) 를 추가합니다. 옵션은 global과 instance가 존재하는데 "Copy"와 "Delete"버튼은 행을 선택했을때 활성화되는 instance 버튼이기 때문에 ( feature : instance ) 로 지정해 줘야 합니다. 추가하게 되면 아래와 같이 Entity 이름에 노란줄이 표시됩니다. 마우스로 Entity 이름을 클릭하고 Quick Assist 기능으로 메소드를 생성합니다.

 

 

입력받은 keys값으로 Entity를 Read하는 구문을 입력하고 디버깅을 해서 값이 어떻게 들어오는지 확인해 보겠습니다. App을 실행하고 GO버튼을 클릭합니다.

 

 

Instance Feature 이기 때문에 한 화면에 있는 모든 Instance 값이 keys로 들어온걸 확인할 수 있습니다.

 

 

keys로 들어온 각각의 Instance 정보의 Status 값을 비교하여 'B'인경우 Delete와 LineCoyp 버튼을 비활성화 시키고 그 값을 Result 파라미터로 리턴해 줍니다. 시스템은 이 Result 값을 가지고 있다가 사용자가 해당 행을 클릭하게 되면 Result 값을 바탕으로 버튼을 활성 또는 비활성 처리를 합니다.

 

 

상태가 B인 행을 클릭해 보겠습니다. Copy와 Delete 버튼이 비활성 되어 있습니다.

 

 

이번에는 상태가 N인 행을 클릭해 보겠습니다. Copy와 Delete 버튼이 활성화 됩니다.

반응형

'RAP' 카테고리의 다른 글

RAP 14 - MANAGED REPORT : ACTION  (0) 2026.08.04
RAP 13 - MANAGED REPORT : VALIDATION  (0) 2026.08.03
RAP 12 - MANAGED REPORT : EML  (0) 2026.07.26
RAP 11 - MANAGED REPORT : Early numbering(2)  (0) 2026.07.21
RAP 10 - MANAGED REPORT : Early numbering(1)  (0) 2026.07.09