★ SAP 이야기/ABAP

[ABAP] 넘버레인지에 대한 것(Number range, 번호 채번, SNRO)

조피볼락 2025. 5. 17. 08:57


넘버레인지(번호범위)란? 자동으로 숫자를 증가시켜 번호를 부여하기 위한 오브젝트.
(예) 인사 포털에서 기안 작성 시 결재문서 번호 채번(발번)

 

넘버레인지를 생성, 사용, 삭제하는 방법을 알아보자.

 

 

 넘버레인지 생성

 

- 티코드 : SNRO

- 오브젝트명 입력 후 Create 클릭.(예: ZADOCU)

 

 

- 넘버레인지의 내역(Txt) 입력.

- Number Length Domain(번호 길이 도메인) : 해당 넘버레인지 오브젝트의 속성을 도메인을 참조하여 정의(타입과 길이)

- % Warning(경고) : 해당 넘버레인지 오브젝트에 번호가 n%만큼 할당되었을 경우에 경고함

- 모두 입력 후 저장 버튼 클릭

- 저장 후, 표 모양 아이콘(간격 편집) 클릭.(단축키 F7)  

 

 

- 넘버레인지 오브젝트가 생성되었다. 이제 간격(Intervals)을 설정해보자.

- 간격(Intervals) 편집 모양 아이콘 클릭.

 


- Number Range No.(번호범위 번호) : 해당 넘버레인지(번호범위) 오브젝트 내에서 구분을 위한 식별 변호, 하나의 넘버레인지 오브젝트 안에 여러 개의 번호범위 번호를 지정해서 개별 사용 가능. (예) 자격수당 결재문서 번호 : '01' 사용, 사직서 결재문서 번호 : '02' 사용
- From No.(시작 번호) : 채번이 시작되는 첫번째 번호
- To Number(종료 번호) : 마지막 번호
- NR Status(상태) : 현재 몇번까지 채번되었는지 최종 번호(넘버레인지 상태 값)



- 내용 입력 후 저장 버튼 클릭.

- 이제 최종적으로 이 오브젝트를 사용할 준비가 되었다.

 

 


 넘버레인지 사용


프로그램 내에서 넘버레인지 오브젝트를 사용하여 번호를 부여하기 위해 펑션 NUMBER_GET_NEXT 을 호출한다.
- NUMBER_GET_NEXT : 넘버레인지에서 다음 숫자 할당

- LV_NUMBER에 번호가 채번되어 담긴다.

DATA: LV_NUMBER TYPE NUMC10.

  CALL FUNCTION 'NUMBER_GET_NEXT'
    EXPORTING
      nr_range_nr             = '01'
      object                  = 'ZADOCU'
    IMPORTING
      number                  = LV_NUMBER
    EXCEPTIONS
      interval_not_found      = 1
      number_range_not_intern = 2
      object_not_found        = 3
      quantity_is_0           = 4
      quantity_is_not_1       = 5
      interval_overflow       = 6
      buffer_overflow         = 7
      OTHERS                  = 8.

 



 넘버레인지 삭제


혹여나. 넘버레인지 오브젝트 자체를 삭제하고 싶다면?
티코드 SNRO에는 삭제 버튼이 안보인다.
상단 메뉴에서 찾았는데 이마저도 비활성화 되어 있다.
넘버레인지를 삭제 하기 위해서는, 1) 간격 초기화 ➡️ 2) 오브젝트 삭제 순서대로 진행되어야 한다.

1) 간격 초기화 

- 지금까지 해당 오브젝트 내에 부여된 모든 번호가 삭제된다.

- 모든 간격을 선택한 후 행 삭제 버튼 클릭 -> 저장 버튼 클릭


2) 넘버레인지 오브젝트 삭제
이제 SNRO에서 상단 메뉴 Number range object(번호 범위 오브젝트)에 보면 삭제 버튼이 활성화되어 있다.

- Delete 클릭.

- 넘버레인지 오브젝트 삭제 완료.

 

 

-끝-

728x90