300x250
728x90

Number Range에 대해서..


쉽게 말하자면 새 데이터를 삽입하거나 할 때 순서대로 번호를 부여하는 범위를 설정하는 것이라고 보면 된다.

#전 블로그에서도 썼기 때문에 바로 넘어가겠다. 

 

 

SAP GUI vs CLOUD


여기서 중요한 것은 GUIT-Code : SNRO을 통해서 Number Range생성하면 된다. 

하지만 Cloud는 (아직까지?) Number Range Object을 직접 만들고, Intervel Object도 직접 만들어야 한다.

 

 

시작하기 앞서 다음과 같은 Table 있다고 하자.

여기서 증가시켜 줄 것은Building_ID이다.

Table

 

Domain

 

Object Name의 자릿수는 최대 10자리이다.

 

Number Range 생성하기 


1. Class을 만들어보자. 

 

2. 사용자에게 맞게 값을 넣어보자. 

 

3. ( IF_OO_ADT_CLASSRUN )을 사용해서 다음과 같이 만들자.

 

4. Number Range Object생성해 보자. 해당하는 입력 값에 따라서 을 넣어주면 된다. 

# Object Name : ZNR_BLD_GJ

# 로직은 밑에 더 보기를 확인 바란다.

더보기
DATA : nr_attribute  TYPE cl_numberrange_objects=>nr_attribute,
           obj_text      TYPE cl_numberrange_objects=>nr_obj_text,
           lv_returncode TYPE cl_numberrange_objects=>nr_returncode,
           lv_errors     TYPE cl_numberrange_objects=>nr_errors.

    nr_attribute-buffer = 'X'.
    nr_attribute-object = 'ZNR_BLD_GJ'. 
    nr_attribute-domlen = 'ZD_BUILD_GJ'. 
    nr_attribute-percentage = 10.       
    nr_attribute-devclass = 'Y_GAMJA_UPLOAD'. 
  " nr_attribute-corrnr = ''. "


    obj_text-langu = 'E'.
    obj_text-object = 'ZNR_BLD_GJ'.    
    obj_text-txt = 'Building ID Range'.
    obj_text-txtshort = 'Building ID'. 



    TRY.
        cl_numberrange_objects=>create(
        EXPORTING
            attributes = nr_attribute
            obj_text   = obj_text
        IMPORTING
            errors     = lv_errors
            returncode = lv_returncode ).


      CATCH cx_number_ranges
        INTO DATA(lx_number_range).
    ENDTRY.

 

3. Interval Object 생성해 보자. Interval 설정 사용자에 맞게 을 넣어보자.

# 로직은 밑에 더 보기를 확인 바란다.

더보기
DATA:
      nrt_interval TYPE cl_numberrange_intervals=>nr_interval,
      nrs_interval LIKE LINE OF nrt_interval.

    nrs_interval-subobject = ''.
    nrs_interval-nrrangenr = '01'.       
    " nrs_INTERVAL-toyear "
    nrs_interval-fromnumber  = '1000000'. 
    nrs_interval-tonumber    = '9999999'. 
    nrs_interval-procind     = 'I'.
    APPEND nrs_interval TO nrt_interval.


    TRY.

        CALL METHOD cl_numberrange_intervals=>create 
          EXPORTING
            interval  = nrt_interval
            object    = 'ZNR_BLD_GJ'
            subobject = ''
          IMPORTING
            error     = DATA(error)
            error_inf = DATA(error_inf)
            error_iv  = DATA(error_iv).

      CATCH  cx_nr_object_not_found
        INTO DATA(lx_no_obj_found).

      CATCH cx_number_ranges
        INTO DATA(cx_number_ranges).

    ENDTRY.

 

4. 이제 실행을 시켜보자. 

# 오른쪽 클릭해서 [Run As] -> [ABAP Applocation (Console) 눌러보자 또는 F9를 누르면 실행이 된다.

 

5. Number Range 생성이 된 것이다. 확인 하는 방법패키지를 선택해서 Refresh을 클릭하거나 F5를 눌러보자.

 

그럼 다음과 같이 패키지 안Number Range가 생성 되어있는 걸 볼 수 있다.

 

Number Range 사용하는 방법


1. 기본 프로그램 예시를 들어본다면)  우리가 봐야 할 것은 빨간 박스이다.  Number_get을 통해서 설정했던 Number Range ObjectInterval Object에 맞게 넣어보자. 

# 로직은 밑에 더 보기를 확인 바란다.

더보기
DATA lv_bldg_num TYPE n LENGTH 5.

          cl_numberrange_runtime=>number_get(
            EXPORTING
              nr_range_nr       = '01'
              object            = 'ZNR_BLD_GJ'
              quantity          = 1
            IMPORTING
              number            = DATA(number)
              returncode        = DATA(ret_code)
              returned_quantity = DATA(ret_qty)
          ).

 

2. 실행을 시켜서 데이터를 생성해보면 다음과 같이 Number Range가 실행이 되는 걸 볼 수 있다. 

 

 

끝.

 

 

 

도움이 되셨으면 클릭 한번 부탁드립니다!!

 

 

 

 

728x90