필드의 데이터를 자동으로 체번해주는 아주 편리한 넘버레인지 기능을 사용해본다.
로직에 앞서 티코드 SNUM
또는 SNRO
에서 번호 범위 오브젝트를 만들어준다.
SNUM / SNRO
이름을 입력하고 생성하면 된다. 이미 만들어놨기 때문에 나는 변경으로 들어간다.
번호길이 도메인은 체번할 필드의 도메인을 입력해주면 된다.
% 경고는 어느정도까지 번호가 체번이 되면 경고를 줄거냐는 거다. 5% 정도 남았을때 경고를 주도록 하겠다.
이후 상단의 간격 편집
을 누르게 되면 아래의 화면이 뜬다. 저기서 간격을 설정한다.
나는 완제품일때 1번으로 시작하고, 원자재일때 2번으로 시작하는 넘버레인지를 만들기 위해 번호를 나눠놨다.
맨왼쪽에 보이는 번호범위의 번호 ⭐NO가 가장 중요하다. 이 뒤에서 NUMBER_GET_NEXT라는 펑션을 이용해 넘버레인지를 호출해 사용해볼건데 펑션에서 사용되는 nr_range_nr의 이름과 여기서 입력한 NO의 이름이 꼭!!!! 같아야한다. 초반에 여기선 01로 했는데 펑션에선 1로 쓰고 이래서 헤맸었거든....
NR 상태는 현재 어디까지 번호가 체번됐는지를 말해준다. 편집도 가능해 초기화를 시킬수도 있고 번호를 앞당길수도 있다.
Function 호출
패턴
버튼을 눌러 넘버레인지 사용하는 펑션 NUMBER_GET_NEXT를 사용해보자.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object = 'ZMP_TMAT'
IMPORTING
number = d_mara-matnr.
nr_range_nr SNUM에서 오브젝트 생성시 입력해줬던 NO의 내용을 넣어준다.
object SNUM에서 생성한 오브젝트 이름을 넣어준다.
number 체번할 필드를 넣어준다.
응용
자재유형에 따라서 번호를 다르게 체번해주기 위해 CASE문으로 나눠서 펑션을 호출했다.
CASE up-mtart.
WHEN 'FERT'.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object = 'ZMP_TMAT' "SNUM에서 생성한 넘버레인지
IMPORTING
number = d_mara-matnr. "체번할 필드
WHEN 'ROH'.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '02'
object = 'ZMP_TMAT' "SNUM에서 생성한 넘버레인지
IMPORTING
number = d_mara-matnr.
ENDCASE.
'ABAP' 카테고리의 다른 글
Selection-screen GUI Status 버튼 만들기 (0) | 2023.02.20 |
---|---|
Selection-screen 라디오 버튼 제어 (0) | 2023.02.20 |
생산계획 엑셀업로드+BDC 프로그램 2 (0) | 2023.02.20 |
생산계획 엑셀업로드+BDC 프로그램 1 (0) | 2023.02.20 |
레포트 프로그램 생성해보기 (0) | 2023.02.20 |
댓글