포스트

Alert/Confirm by Abstract Entity

Alert/Confirm by Abstract Entity

1. 확인 창을 위한 Data definition 정의

  • New > Data Definition
  • Name : ZC_TWBS_RESET_CONFIRM

소스코드

1
2
3
4
5
6
7
8
@EndUserText.label: '초기화 작업 확인 팝업'
define abstract entity ZC_TWBS_RESET_CONFIRM
{
  @EndUserText.label: '선택하신 TASK의 배포 및 완료 상태를 정말 초기화하시겠습니까?'
  // 단순 안내 멘트만 보여주기 위해 입력 필드는 화면에서 숨깁니다.
  @UI.hidden: true 
  DummyField : abap.char(1); 
}

2. Behavior Definition 정의

1
2
3
// 기존: action resetStatus result [1] $self;
// 변경: 뒤에 parameter 키워드와 함께 1단계에서 만든 팝업 엔티티명을 엮어줍니다.
action resetStatus parameter ZC_TWBS_RESET_CONFIRM result [1] $self; 

2. Behavior Definition(Root) 정의

1
2
3
// 기존: action resetStatus result [1] $self;
// 변경: 뒤에 parameter 키워드와 함께 1단계에서 만든 팝업 엔티티명을 엮어줍니다.
action resetStatus result [1] $self; 

3. Behavior Definition(Projection) 정의

1
use action resetStatus; 

4. Abap Class 작성

  • severity = if_abap_behv_message=>severity-success 에 따라 메시지 창이 다름

severity-succes

관련 이미지

severity-information

관련 이미지

severity-error

관련 이미지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
METHOD resetStatus.
    IF keys IS INITIAL. RETURN. ENDIF.

    " 1. 들어온 keys 내용을 기반으로 초고속 일괄 업데이트 처리
    MODIFY ENTITIES OF zr_twbs_task2 IN LOCAL MODE
      ENTITY ZrTwbsTask2
        UPDATE FROM VALUE #( FOR key IN keys (
                               %tky              = key-%tky
                               DeployYn          = 'N'
                               CompleteYn        = 'N'
                               Progress          = 0 " 숫자 필드일 경우 정수 형식 주입
                               %control-DeployYn   = if_abap_behv=>mk-on
                               %control-CompleteYn = if_abap_behv=>mk-on
                               %control-Progress   = if_abap_behv=>mk-on
                            ) )
      FAILED DATA(ls_failed)
      REPORTED DATA(ls_reported).

    failed   = CORRESPONDING #( DEEP ls_failed ).
    reported = CORRESPONDING #( DEEP ls_reported ).

    " 2. 완수 후 재조회 및 화면 리턴
    IF ls_failed IS INITIAL.
      READ ENTITIES OF zr_twbs_task2 IN LOCAL MODE
        ENTITY ZrTwbsTask2 ALL FIELDS WITH CORRESPONDING #( keys ) RESULT DATA(lt_result_tasks).

      result = VALUE #( FOR ls_res IN lt_result_tasks ( %tky = ls_res-%tky %param = ls_res ) ).

      " [최종 마감 알림창]
      reported-zrtwbstask2 = VALUE #( FOR key IN keys (
        %tky = key-%tky
        %msg = new_message_with_text(
                 severity = if_abap_behv_message=>severity-success
                 text     = '배포 및 완료 상태가 정상적으로 초기화 되었습니다.'
               )
      ) ).
    ENDIF.
  ENDMETHOD.

5. Metadata Extention 작성

1
2
3
4
5
6
7
8
9
@EndUserText.label: '프로그램 UUID' // 한글 컬럼명 적용
@UI.selectionField: [ { position: 10 } ]
@UI.lineItem: [ { position: 10 }
// 액션버튼
...
,{ type: #FOR_ACTION, dataAction: 'resetStatus', label: '상태 초기화', poition: 50}
...
]
ProgUuid;
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.