프로그램을 만들다 보면 문서번호등 Number Range 를 사용해야 하는 경우가 있습니다.
Number Range를 만들고 사용하는 방법에 대해 알아보겠습니다.
1. 오브젝트 생성 ( T-CODE : SNRO )
- 번호길이 도메인: 넘버레인지 번호의 길이
- 종료 연도 플래그 : 체크하면 년도를 지정해서 넘버레인지 사용할때 해당 년도의 넘버레인지를 사용할 수 있다.
( 함수 참조)
- 경고 % : EX. 전체 넘버 레인지중에 10% 남았을때 경고
- 버퍼의 번호수 : 기본값이 '10'이고 속도를 위해 미리 10개의 번호를 버퍼에 담아두고 사용하는것이다.
( 10으로 되어있어도 넘버레인지는 1씩 오름)
SAP 는 대부분 여러개의 어플리케이션 서버를 사용하는데 여러서버의
여러 사용자가 몰리면 넘버레인지 순서가 1,,2,,11,,12 이런식으로
번호가 역전되거나 꼬일 수 있다.
무조건 순차적으로 사용되어져야 하는 넘버레인지면 번허의 번호 수 를 1로 설정해야한다!
2. 간격 설정 ( T-CODE : SNRO )
1) 넘버 : 넘버레인지 사용시 선택할 넘버
2) 년도 : 1번에서 오브젝트 생성시 [종료 년도 플래그] 를 설정했으면 보이고 아니면 없음
년도 사용시 여러개의 년도의 넘버레인지를 추가하고 사용할 수 있다.
3) 넘버레인지 시작 번호
4) 넘버레인지 끝 번호
5) 넘버레인지 현재 번호: 오브젝트 생성시 설정한 버퍼 수 많큼 증가한다.
수정모드에서 현재 번호를 수정할 수 있고, 함수를 이용해 초기화 할 수도 있다.
3. 사용 함수
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01' 2번의 1번 - 넘버레인지 넘버
object = 'ZNRTEST' 넘버레인지명
toyear = sy-datum(4) 2번의 2번 - 사용할 년도
1번에서 종료년도 플래그 체크안했으면 사용안해도됨
IMPORTING
number = lv_number 넘버레인지 결과값 - TYPE string 또는 넘버레인지의 번호길이
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
OTHERS = 7.
4. 초기화 함수
넘버레인지를 SNRO에서 직접 현재번호를 변경할 수 있지만 함수를 사용하여
현재값을 초기화 할 수 있다 => 해당 넘버레인지 내의 모든 넘버의 현재 번호가 리셋된다!
CALL FUNCTION 'NUMBER_RANGE_INTERVAL_INIT'
EXPORTING
object = 'ZNRTEST' 넘버레인지명
EXCEPTIONS
no_interval_found = 1
object_not_found = 2.
'Etc' 카테고리의 다른 글
SMW0 의 사진 띄우기(cl_gui_picture) (0) | 2022.11.02 |
---|---|
스마트폼 실행 후 PDF로 파일 변환 (0) | 2022.07.19 |
SUBMIT / CALL TRANSACTION (0) | 2021.11.18 |
SELECT OPTION, RANGES (0) | 2021.06.30 |
SAP 연산자 (0) | 2021.06.30 |