일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SAP ERP
- 유럽여행
- Oracle DB
- 파이썬
- 도커
- SAP ABAP
- Spring Framework
- 오라클 디비
- JavaScript
- IT
- 영어
- node.js
- SAP
- Java
- 자바
- 자바스크립트
- docker
- Mac
- 비지니스영어
- Python
- 딥러닝
- 노드
- 오라클
- sap mm
- ABAP
- oracle
- db
- nodejs
- 머신러닝
- Programming
- Today
- Total
JIHYUN JEONG
[SAP/ABAP] SNRO (Number Ranage) 본문
출처 : http://www.abapgogo.com/develope/23673
티코드 SNRO의 넘버레인지 입니다.
일정한 규칙에 의해 채번할 수 있는 기능을 가지고 있습니다.
무작정 붙는 게시판글의 번호수 같은 그런 느낌이라고 이해하시면 편할 거 같습니다.
일단 SNRO로 들어가봅니다.
Z로 시작하는 임의의 넘버레인지 이름을 만들어 주시고 생성
다음 화면 입니다. number length domain에 넘버레인지의 길이를 설정하고
warning에는 5라고 설정하면 넘버레인지의 전체 값중에 5%가 남았을때 경고를 해주는 그런기능이고(이건 뒤에서 그룹으로 설명)
numbers in buffer는 기본으로 10이 되어 있는데 데이터 무결성을 위해서는 1로 맞추는 것이 좋다.
ㄴ부연설명
버퍼란 것이 DB를 읽는 횟수를 줄이고 성능의 개선을 가져오기 위해 쓰는 것인데 물론 10으로 되있으면 1보다는
빠를 것이다. 그런데 보통의 서버들이 한대로 구성이 안되어 있듯이 SAP의 어플리케이션서버도 여러대로 구성이 되있을수 있다.
만약 2개의 어플리케이션 서버로 이루어진 SAP가 있다고 하자.
이때 버퍼를 10으로 주게되면 1첫째 어플리케이션서버(이하 AS)에서 1~10을 가져오고 2번째 AS에서 11~20 이렇게 값을 가져온다.
그래서 이때 사용자가 몰리지 않아서 1번째 AS로만 작업을 했을 경우에는 상관이 없을 수 있다. 그런데 사용자가 몰려서 DISPACHER(분배기)에
의해 사용자1은 AS1에 사용자 2는 AS2에 분배되었다고 가정할때 1,2,3, 이렇게 순차적으로 구성되어 있어야 할 넘버레인지에
갑자기 11, 12, 13 등의 버퍼에 할당된 녀석들이 갑자기 들어와서 번호가 역전될 가능성이 생기는 것이다.
(Dispacher와 Work Process는 기회가 된다면 나중에)
SAP의 3TIER
구성을 하고 저장을 하게되면 상단에 Number Ranges라는 버튼이 생기게된다.
넘버레인지의 인터벌 값을 작성해주자!.
위에 +인터벌을 클릭!
인터벌에 따른 그룹을 만들수 있다. 1이라는 그룹에 1부터 1000까지 담을거야. 현재 값은 0이란다.
이런식으로 그룹1 과 2를 만들어보자.
그럼 실제로 넘버레인지 값을 가져오기 위한 간단한 예제를 보자!
*넘버레인지에서 값을 가져오기 위해서는 NUMBER_GET_NEXT라는 펑션을 사용한다. 패턴으로 간단히 부르자.
REPORT zlist.
DATA: number1(4) TYPE n. "넘버레인지에서 받아올 변수
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '1' "넘버레인지 No.(그룹)지정 2로도 설정해놓고 실행해보자
object = 'ZLIST' "넘버레인지 이름
quantity = '1' "증가수량 1이면 1씩증가 2면 2씩증가
* SUBOBJECT = ' '
* toyear = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
number = number1 "가져온 값을 여기다 담자!
* QUANTITY = QUANTITY
* RETURNCODE = RETURNCODE
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. "실패메세지
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
WRITE number1.
첫번째 실행
2번째 실행
3번째 실행까지하고 SNRO에서 확인해본 현재값 역시 3이다.
'SAP ERP System > ABAP TIP' 카테고리의 다른 글
[SAP] ABAP에서 그래프 (Graph) (0) | 2014.03.31 |
---|---|
[SAP] DBCO 사용하여 데이터 조회하기 (0) | 2014.03.27 |
[권한관련] 권한이 왜 안되는지 확인 하고 싶거나 추가 하고 싶을떄 (0) | 2014.03.11 |
[권한관련] T-code를 사용할 수 있는 권한을 확인하고 싶을때 (0) | 2014.03.11 |
[SAP] User Exit, BADI 찾기 (0) | 2014.02.25 |