SAP ABAP 번호(숫자) 범위에서 고유 번호(숫자)를 생성하는 방법(NUMBER_GET_NEXT)

SAP에서 고유한 숫자 번호를 생성해야 하는 경우가 있습니다.

프린트로 인쇄할 때마다 인쇄 번호를 자동으로 누적 해서 관리를 할 경우, 또는 거래명세서 번호, 출하지시서 번호, 고유 ID 번호 등을 관리할 때 해당 번호를 생성하는 프로그램 로직(Logic)이 필요합니다.

저장 된 기존의 마지막 번호를 가져오고, 이렇게 가져온 마지막 번호에서 1을 더한 숫자로 신규 번호를 생성하고, 생성 된 신규 번호는 다시 저장하는 방식으로 프로그램 로직을 추가로 구현해 주게 됩니다.

하지만 SAP ABAP에서는 번호 범위 오브젝트 유지보수 트랜잭션과 NUMBER_GET_NEXT 함수를 사용하면 앞의 프로그램 처리하는 고유 번호 생성 작업을 모두 생략할 수 있습니다.

이번 글에서는 SAP ABAP 번호(숫자) 범위에서 고유 번호(숫자)를 생성하는 방법(NUMBER_GET_NEXT)에 대해 알아보겠습니다.

SAP 번호 범위 오브젝트 유지보수 – SNRO와 SNUM

ABAP 프로그램에서 NUMBER_GET_NEXT 함수을 사용하기 위해서는 번호 범위 오브젝트를 먼저 생성해 주어야 합니다.

번호 범위 오브젝트를 생성해 줌으로써 해당 오브젝트로 현재 번호 상태가 관리되어 집니다.
고유한 숫자 번호 범위가 필요한 만큼 오브젝트를 생성해서 사용하면 됩니다. 각 오브젝트 별로 현재 번호 상태가 독립적으로 관리됩니다.

이제 SAP에서 번호 범위 오브젝트를 유지보수 하는 방법에 대해 먼저 설명해 보겠습니다.

1. SAP 번호 범위 오브젝트 유지보수 트랜잭션코드(T-code)는 SNRO 입니다.

2. 아래는 SNRO(번호 범위 오브젝트 유지보수) 초기 화면입니다.

3. 오브젝트에 번호 범위를 관리할 오브젝트 이름을 입력합니다. 중복되지 않는 임의의 이름을 지정하면 됩니다.

4. 새로운 오브젝트를 만들기 위해 생성 버튼을 클릭해서 다음 화면으로 넘어갑니다.

SAP ABAP 번호(숫자) 범위에서 고유 번호(숫자)를 생성하는 방법 SNRO - 1

5. 번호 범위 오브젝트를 생성하는 화면입니다.

6. 오브젝트에 대한 간단한 내역과 상세 텍스트를 입력하고, 간격 특성에서 번호길이 도메인을 지정해 줍니다.

  • 예제 화면의 NUMC06은 길이가 6자리인 숫자 필드 도메인입니다.
  • 따라서 ZSD006 오브젝트는 1~999999까지 숫자의 번호 범위를 가지게 됩니다.
  • 만약 종료 연도 플래그를 체크하면 년도를 지정해서 넘버레인지(Number Range)를 사용할 때 해당 년도의 번호 범위를 사용할 수 있습니다. 즉, 연도별로 번호 범위 간격을 달리 지정해서 사용할 수 있습니다.

7. 번호 범위 오브젝트의 번호 범위 간격을 유지 보수 하기 위해 ④번의 번호 번위를 클릭합니다.

SAP ABAP 번호(숫자) 범위에서 고유 번호(숫자)를 생성하는 방법 SNRO - 2

8. 오브젝트의 번호 범위 간격을 유지보수하는 트랜잭션 화면입니다. 실제 트랜잭션코드는 SNUM 입니다.

9. 신규 간격을 만들어 주기 위해 화살표로 표시한 간격 버튼을 클릭합니다.

  • 상태 버튼은 현재 번호를 유지 보수 할 때 사용합니다.
SAP ABAP 번호(숫자) 범위에서 고유 번호(숫자)를 생성하는 방법 SNUM - 1

10. 번호 범위 간격 유지보수 화면에서 ①번 간격을 클릭하고 간격 삽입 대화 상자에서 신규 간격을 지정해 줍니다.

  • No : 넘버레인지(Number Range) 선택할 때 사용할 넘버 숫자를 입력합니다.
  • 시작 번호 : 번호 범위 간격의 시작 번호를 입력합니다.
  • 종료 번호 : 번호 범위 간격의 종료 번호를 입력합니다.
  • 현재 번호 : 처음 초기 번호를 입력합니다.
    이후 NUMBER_GET_NEXT 함수가 사용될 때마다 자동으로 현재 번호는 누적 관리됩니다.

11. 신규 간격을 지정했다면 저장 버튼을 클릭해서 대화 상자를 닫으면 됩니다.

SAP ABAP 번호(숫자) 범위에서 고유 번호(숫자)를 생성하는 방법 SNUM - 2

12. 번호 범위 간격 유지 보수에서 번호 범위 오브젝트 화면으로 다시 돌아가서 오브젝트 생성을 마무리 하면 됩니다.

SAP ABAP 번호(숫자) 범위에서 고유 번호(숫자)를 생성하는 방법 SNUM - 3

13. 이상으로 번호 범위 오브젝트 생성 및 번호 범위 간격 지정 방법에 대해 먼저 알아보았습니다.

번호(숫자) 범위에서 자동으로 고유한 일련번호를 생성하는 방법

앞 단락에서 번호 범위 오브젝트를 생성했다면 이제 이 오브젝트의 번호 범위에서 고유 일련 번호를 생성하는 방법에 대해 알아보겠습니다.

NUMBER_GET_NEXT 함수를 사용한 실제 ABAP 구문은 아래와 같습니다. 최종적으로 LV_NUMBER 값을 활용하면 됩니다.

  DATA: LV_NUMBER(6) TYPE N.
  DATA: LV_RETURN LIKE INRI-RETURNCODE.
 
  CALL FUNCTION ‘NUMBER_GET_NEXT’
    EXPORTING
      NR_RANGE_NR = ’01’
      OBJECT      = ‘ZSD006’
      QUANTITY    = ‘1’
    IMPORTING
      NUMBER      = LV_NUMBER
      RETURNCODE  = LV_RETURN
    EXCEPTIONS
      OTHERS      = 1.
 
  • NR_RANGE_NR : 번호 범위 간격 유지보수 화면의 No를 입력합니다.
  • OBJECT : 번호 범위 오브젝트 명을 입력합니다.
  • QUANTITY : 디폴트 값이 “1”이면 생략해서 주로 사용합니다.
  • NUMBER : 번호 범위 오브젝트의 신규 생성된 넘버(Number) 숫자입니다.
  • RETURNCODE : Return Code로 역시 생략해서 주로 사용합니다.

마무리

특정한 용도 별로 숫자로 된 고유한 일련번호를 생성할 때 NUMBER_GET_NEXT 함수는 가장 쉽고 효과적인 방법이 될 수 있습니다.

중복 여부를 체크할 필요도 없고, 기존 마지막 번호를 가져오고, 새로 만들어진 번호를 다시 저장하는 번거로움도 해결할 수 있습니다.

필요한 용도에 맞게 번호 범위 오브젝트(Number Range Object)를 미리 만들어 놓고, ABAP 프로그램에서는 NUMBER_GET_NEXT 함수만 사용하면 모든 것이 해결 됩니다.





이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.

답글 남기기