-
[ABAP] #31 Number RangeSAP/ABAP 2026. 1. 16. 22:57
Number Range
시스템에서 자동으로 “고유한 번호”를 생성·관리하는 메커니즘
즉, 사람이 직접 번호를 관리하지 않고 중복 없이, 순서대로 번호를 발급해 주는 SAP 표준 기능이다.
대표적인 예
- 전표 번호
- 송장 번호
- 주문 번호
- 고객/자재 번호
- 커스텀 테이블의 ID
Number Range를 사용하지 않고 직접 MAX + 1 하게 된다면
SELECT MAX( docno ) INTO lv_docno FROM ztable. lv_docno = lv_docno + 1.- 동시 실행 시 중복 번호 발생
- Lock 관리 직접 해야 함
- 성능, 안정성 모두 안 좋음
Number Range의 장점
- 동시 사용자 환경에서도 중복 없음
- SAP가 내부적으로 Lock 관리
- 트랜잭션 기반으로 안정적
- 롤백/커밋 개념과 연동 가능
Number Range Object 생성
- 번호 범위를 대표하는 객체
- TCode : SNRO에서 생성
1. SNRO에서 Object 생성
네이밍 룰 : Z~, Y~

2. 아래와 같이 설정을 한다.
- number length domain : 번호의 데이터 타입과 길이, numc, char 최대 20자 (문자 포함 가능)
- % warning : 0.1 ~ 99.9, 한도 표시, 만약 10을 넣었다면 10%남았을때 경고 창이 뜬다.
- to-year flag : 연도별 번호 관리 여부,체크 시 연도마다 번호가 다시 1부터 시작
- no rolling : 번호가 끝 범위에 도달했을 때의 동작 방식
체크한 경우 -> 마지막 번호 이후 에러 발생, 더 이상 번호 발급 불가
미체크한 경우 -> 처음 번호로 다시 돌아감 (Rolling)

3. Intervals에서 Number Range에 대해서 시작과 끝 범위를 지정할 수 있다.
NR Status는 현재까지 채번한 숫자가 들어감.



Number Range Function
1. NUMBER_GET_INFO
Number Range Object의 설정 정보를 조회하는 함수

2. NUMBER_GET_NEXT
다음 번호를 실제로 채번하는 함수

DATA: lv_number TYPE c LENGTH 6. CALL FUNCTION 'NUMBER_GET_NEXT' EXPORTING nr_range_nr = 'I1' " 오브젝트 내에서 설정한 이름 (Number Range No.) " object = 'ZNUM_CL2T4' " Number Range 생성한 오브젝트 명 " IMPORTING number = pv_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. IF sy-subrc <> 0. ... ENDIF.
3. NUMBER_CHECK
입력된 번호가 사용 가능한지 체크하는 함수

'SAP > ABAP' 카테고리의 다른 글
[ABAP] #33 ABAP OOP - Class (1) (0) 2026.01.16 [ABAP] #32 ABAP OOP (0) 2026.01.16 [ABAP] #30 LUW & Lock (0) 2026.01.16 [ABAP] #29 OPEN SQL DML (0) 2026.01.11 [ABAP] #28 BDC & Background Job (0) 2026.01.11