포스트

Determination 예시

Determination 예시

1. Behavior Definition에 정의

1
determination set_lifecycle_status_init on modify { create }

2. Abap Class에 method 작성

  • determination 에 ctrl + 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
METHOD set_lifecycle_status_init.

  " 1. [Entity 제어 선언] 
  " 비즈니스 객체(zbr_i_salesorder)의 데이터를 변경(MODIFY)하겠다고 선언합니다.
  " IN LOCAL MODE를 사용하여 내부 로직으로 안전하게 실행합니다.
  MODIFY ENTITIES OF zbr_i_salesorder IN LOCAL MODE
  
    " 2. [대상 엔티티 지정]
    " 값을 수정할 대상 비즈니스 객체(엔티티)의 이름을 명시합니다.
    ENTITY zbr_i_salesorder
    
    " 3. [수정할 필드 명시]
    " 업데이트할 3개의 필드를 괄호 ( ) 안에 '쉼표 없이 공백으로만' 나열합니다.
    " 괄호 시작과 끝( 앞뒤 )에 반드시 공백이 있어야 에러가 나지 않습니다.
    UPDATE FIELDS ( lifecycle_status devName description )
    
    " 4. [데이터 매핑 및 값 할당]
    " 입력 데이터(keys)를 순회하며 3개의 필드에 각각 값을 매핑합니다.
    WITH VALUE #( 
      " 파라미터로 들어온 신규 데이터 배열(keys)을 하나씩 꺼내어 'key' 변수로 순회합니다.
      FOR key IN keys ( 
        
        " [식별자 매핑] 
        " 현재 순회 중인 레코드의 고유 키(Total Key)를 매핑하여 대상을 타겟팅합니다.
        " 드래프트 상태든 액티브 상태든 %tky가 알아서 구별해 줍니다.
        " 임시 변수.
        %tky = key-%tky
        
        " [필드 1: 상태 초기값] 
        " 해당 레코드의 상태 필드에 신규 생성 초기값인 'N'(New)을 할당합니다.
        lifecycle_status = 'N' 
        
        " [필드 2: 개발자명 임시 세팅] 
        " devName 필드에 '아무개'라는 고정 문자열을 임시로 박아둡니다.
        devName          = '아무개'
        
        " [필드 3: 기본 설명 추가] 
        " 임의로 추가한 세 번째 필드에 시스템이 자동 생성했다는 기본 텍스트를 할당합니다.
        description      = '시스템 자동 생성 오더'
      ) 
    ).

ENDMETHOD.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.