ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ABAP] #31 Number Range
    SAP/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
Designed by Tistory.