Number Range를 만들고 사용하기
DATA : GV_NR_OBJ LIKE INRI-OBJECT VALUE 'ZPM001NR' .
DATA : GV_NR_OBJ_NO LIKE INRI-NRRANGENR VALUE '01'.
DATA : GV_ACCDNR(4) TYPE N.
0) 오브젝트 생성하기
t-code : SNRO
Number domain : NUMC 로 시작하는 것들이 있다.
시작번호와 간격을 지정한다. (번호범위-->간격)
시작번호 | 종료번호 |
00000001 99999999
1) 초기화
PERFORM INIT_NR_OBJECT_INTERVAL USING GV_NR_OBJ. "//번호범위 초기화.
*&----------------------------------------------------------------*
*& Form INIT_NR_OBJECT_INTERVAL
*&----------------------------------------------------------------*
FORM INIT_NR_OBJECT_INTERVAL USING P_GV_NR_OBJ.
CALL FUNCTION 'NUMBER_RANGE_INTERVAL_INIT'
EXPORTING
LANGUAGE = SY-LANGU
OBJECT = P_GV_NR_OBJ
EXCEPTIONS
OBJECT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE E000(ZZ) WITH TEXT-E01.
ENDIF.
COMMIT WORK.
ENDFORM. " INIT_NR_OBJECT_INTERVAL
2) 사용하기
PERFORM GET_NEXT_SERIAL_NO USING GV_NR_OBJ "//등록번호 생성
GV_NR_OBJ_NO
GV_ZACCDNR.
*&---------------------------------------------------------------*
*& Form GET_NEXT_SERIAL_NO
*&---------------------------------------------------------------*
FORM GET_NEXT_SERIAL_NO USING P_NR_OBJ
P_NR_OBJ_NO
P_ZACCDNR.
DATA: LV_RETURN TYPE INRI-RETURNCODE.
CLEAR : P_ZACCDNR.
*-- get next free number in the number range '01'
*-- of number range object
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = P_NR_OBJ_NO
OBJECT = P_NR_OBJ
QUANTITY = '1'
IMPORTING
NUMBER = P_ZACCDNR
RETURNCODE = LV_RETURN
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
COMMIT WORK.
ENDFORM. " GET_NEXT_SERIAL_NO
DATA : GV_NR_OBJ LIKE INRI-OBJECT VALUE 'ZPM001NR' .
DATA : GV_NR_OBJ_NO LIKE INRI-NRRANGENR VALUE '01'.
DATA : GV_ACCDNR(4) TYPE N.
0) 오브젝트 생성하기
t-code : SNRO
Number domain : NUMC 로 시작하는 것들이 있다.
시작번호와 간격을 지정한다. (번호범위-->간격)
시작번호 | 종료번호 |
00000001 99999999
1) 초기화
PERFORM INIT_NR_OBJECT_INTERVAL USING GV_NR_OBJ. "//번호범위 초기화.
*&----------------------------------------------------------------*
*& Form INIT_NR_OBJECT_INTERVAL
*&----------------------------------------------------------------*
FORM INIT_NR_OBJECT_INTERVAL USING P_GV_NR_OBJ.
CALL FUNCTION 'NUMBER_RANGE_INTERVAL_INIT'
EXPORTING
LANGUAGE = SY-LANGU
OBJECT = P_GV_NR_OBJ
EXCEPTIONS
OBJECT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE E000(ZZ) WITH TEXT-E01.
ENDIF.
COMMIT WORK.
ENDFORM. " INIT_NR_OBJECT_INTERVAL
2) 사용하기
PERFORM GET_NEXT_SERIAL_NO USING GV_NR_OBJ "//등록번호 생성
GV_NR_OBJ_NO
GV_ZACCDNR.
*&---------------------------------------------------------------*
*& Form GET_NEXT_SERIAL_NO
*&---------------------------------------------------------------*
FORM GET_NEXT_SERIAL_NO USING P_NR_OBJ
P_NR_OBJ_NO
P_ZACCDNR.
DATA: LV_RETURN TYPE INRI-RETURNCODE.
CLEAR : P_ZACCDNR.
*-- get next free number in the number range '01'
*-- of number range object
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = P_NR_OBJ_NO
OBJECT = P_NR_OBJ
QUANTITY = '1'
IMPORTING
NUMBER = P_ZACCDNR
RETURNCODE = LV_RETURN
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
COMMIT WORK.
ENDFORM. " GET_NEXT_SERIAL_NO
다음검색