채번(number range)이 포함되어 있는 로직 실행시 무한 로딩 현상

성희·2024년 7월 24일
0

[SAP개발] ABAP

목록 보기
4/12

문제

분명 문제없이 돌아가던 전표 생성 배치 프로그램이 어느날 실행만 시키면 무한 로딩이 걸리는 현상이 발견되었다.
디버깅을 떠보니 전표 번호를 생성하는 로직에 들어갈 때 무한 로딩이 시작됨을 확인하였다.
매일 배치 프로그램을 돌려 전표를 자동으로 생성하고 있었는데, 전표가 생성됨에 따라 number range의 최대 범위를 넘어서는 바람에 발생하는 문제였다.

해결

우선은 무한 로딩 현상부터 해결을 해야한다.

  1. T-CODE : SM56으로 가서

    문제가 되는 number range는 빨간색으로 표시가 된다.
    현재 무한 로딩 현상이 발생하는 프로그램에서 쓰는 number range가 빨간색으로 표시가 되어있다면 2번으로

  2. T-CODE : SNRO으로 가서 해당 넘버 레인지 object name 입력해서 체인지 버튼 클릭

  3. buffering을 No buffering으로 변경 후 저장하면 괜찮아 짐.

3번까지 완료하면 무한 로딩 현상은 해결된다!


이후 넘버 레인지 범위를 넘어가지 않도록 티코드 SNRO를 통해 직접적으로 NR Status를 초기화 시켜줬지만, 너무 비효율적이라고 생각이 들었다.
구글링을 통해 number range를 초기화하는 함수 발견!

NUMBER_RANGE_INTERVAL_INIT

해당 펑션을 이용하여, 배치 프로그램이 전표를 생성할 테이블을 확인하기 전에 전표 헤더 번호와 전표 아이템 번호의 number range를 초기화 시켜주었다.

Main 프로그램의 코드는 아래와 같다.

(생략...)
START-OF-SELECTION.
  IF sy-batch IS NOT INITIAL.
    PERFORM : number_range_init, "여기에서 number range를 초기화 시켰다.
              check_po_table,
              check_so_table,
              check_rb_table,
              save_data.

해당 폼(number_range_init)의 코드는 아래와 같다.

*&---------------------------------------------------------------------*
*& Form number_range_init
*&---------------------------------------------------------------------*
*& 헤더 : 전표번호, 아이템 : 아이템 변호 생성을 위한 Number range를 초기화 하는 폼.
*&---------------------------------------------------------------------*
FORM number_range_init.

  "헤더 채번 초기화
  CALL FUNCTION 'NUMBER_RANGE_INTERVAL_INIT'
    EXPORTING
      object            = 'ZC103FI01'
    EXCEPTIONS
      no_interval_found = 1
      object_not_found  = 2.

  "아이템 채번 초기화
  CALL FUNCTION 'NUMBER_RANGE_INTERVAL_INIT'
    EXPORTING
      object            = 'ZC103FI02'
    EXCEPTIONS
      no_interval_found = 1
      object_not_found  = 2.

ENDFORM.

number range를 초기화 시켜줬더니 다시 문제 없이 잘 돌아가는 배치 프로그램 ^___^

profile
ABAP 개발자로 성장하는 중

0개의 댓글