포스트

ValueHelp(F4) 설정

ValueHelp(F4) 설정

ValueHelp(F4) 설정(옵션)

  • 검색 도움말을 주기 위한 Helper설정
1. CBO테이블 내 데이터 이용하기(눌러서 열기)

1-1. 통합 범주 마스터 테이블 생성

테이블 생성 코드(주석은 지워야 됨)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@EndUserText.label : 'WBS 통합 범주 마스터 테이블'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #G
@AbapCatalog.dataMaintenance : #ALLOWED
define table ztwbs_category {

  key client      : abap.clnt not null;
  @EndUserText.label : '범주 고유 키'
  key category_uuid : sysuuid_x16 not null; // 1. Managed UUID 자동채번 키
  
  @EndUserText.label : '범주 분류 (예: BIZ_TYPE, UI_TYPE)'
  category_type   : abap.char(20);          // 2. '범주분류' 컬럼
  
  @EndUserText.label : '범주 명 (예: AP, FIORI, 회계)'
  category_name   : abap.char(100);         // 3. '범주명' 컬럼

  // 마법사(Generator) 패스를 위한 필수 표준 시스템 필드 세트
  created_by      : abp_creation_user;
  created_at      : abp_creation_tstmpl;
  last_changed_by : abp_locinst_lastchange_user;
  last_changed_at : abp_locinst_lastchange_tstmpl;

}

코드설명

1
2
//로그온 ID(예: CB02029393...)
abp_creation_user

1-2. 마스터 테이블 오브젝트 자동 생성 (Generator)

  • ZTWBS_CATEGORY 테이블 우클릭 후, Generate ABAP Repository Objects... 마법사를 실행

1-3. 메인 화면 프로젝션 뷰 (ZC_TWBS_TASK2) 수정

테이블 데이터 필터링 제약조건 설정

1
2
3
4
5
6
7
8
9
10
...
  // 업무구분 : CategoryType이 'BizType'인 데이터만 필터링하여 가져옴
  @Consumption.valueHelpDefinition: [{
    entity: { name: 'ZC_TWBS_CATEGORY', element: 'CategoryName' },
    additionalBinding: [ { element: 'CategoryType', localConstant: 'BizType', usage: #FILTER } ],
    useForValidation: true
  }]
  BizType,
...
//다른 컬럼들도 알맞게 수정

코드설명

1
2
1. @Consumption.valueHelpDefinition: [F4]눌렀을 , 나오는 Value help
2. additionalBinding, filter : ZTWBS_CATEGORY 테이블  데이터 특정 값만 필터
2. 콤보박스(DropDown) 만들기(눌러서 열기)

2-1. ZTWBS_YN_MASTER CBO 테이블 생성

1
2
3
4
5
6
7
8
9
10
11
12
@EndUserText.label : 'Y/N 콤보박스 마스터 테이블'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table ztwbs_yn_master {

  key client  : abap.clnt not null;
  key yn_code : abap.char(1) not null;
  yn_text     : abap.char(20);

}

2-2. ABAP 클래스 생성(NEW > ABAP CLASS)한 후, interfaces ADD > IF_OO_ADT_CLASSRUN
* Active 후, F9(실행)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
METHOD if_oo_adt_classrun~main.
   " 이안에 로직 생성
DATA lt_data TYPE TABLE OF ztwbs_yn_master.
  " ==================== AP ====================
  lt_data = VALUE #(
    ( yn_code = 'Y' yn_text = '' )
    ( yn_code = 'N' yn_text = '아니오' )
  ).

    MODIFY ztwbs_yn_master FROM TABLE @lt_data.

    out->write( lt_data ).
    "종료
  ENDMETHOD.
ENDCLASS.
...

2-3. ZC_TWBS_YN_MASTER 프로젝션 뷰 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Y/N 콤보박스 프로젝션 뷰'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.resultSet.sizeCategory: #XS -- 콤보박스 형태로 화면 컴포넌트 강제 전환

define root view entity ZC_TWBS_YN_MASTER
  as select from ztwbs_yn_master
{
  key yn_code as YnCode,
  yn_text as YnText
  
  -- DB에 저장된 순수 텍스트('') 코드('Y') 결합하여 
  -- 화면단 OData 파이기구에 '예(Y)', '아니오(N)' 형태로 포맷을 완성해 전달합니다.
  -- concat( concat( yn_text, '(' ), concat( yn_code, ')' ) ) as DisplayText
}

2-4. ZC_TWBS_TASK2 인터페이스 뷰에 콤보박스 설정

1
2
3
4
5
6
@Consumption.valueHelpDefinition: [{
  entity: { name: 'ZC_TWBS_CATEGORY', element: 'CategoryName' },
  additionalBinding: [ { element: 'CategoryType', localConstant: 'DevType', usage: #FILTER } ],
  useForValidation: true
}]
DevType,
3. 표준 도메인 사용하기(눌러서 열기)
  • complete_yn 완료 여부를 체크박스 또는 콤보박스로 설정
1
2
3
4
5
6
7
//체크박스(도메인에 따라 기본 UI 다름)
//ZTWBS_TASK2 테이블 도메인 변경
complete_yn     : abap_boolean;  //XFELD 더이상 사용하지 않음.

//ZC_TWBS_TASK2 인터페이스뷰 변경
@Metadata.renderHint: [ #COMBOBOX ] 
CompleteYn;
4. 달력 만들기(눌러서 열기)

ZTWBS_TASK2 테이블 내 컬럼 속성을 날짜 타입으로 생성

1
start_date      : abap.dats;

메타데이터 익스텐션에 설정

1
2
3
4
// 날짜 하루 입력
@Consumption.filter.selectionType: #SINGLE
// 날짜 구간 값 입력
@Consumption.filter.selectionType: #INTERVAL
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.