SNRO Number Range

Abap ile yapılan geliştirmelerde bazı durumlarda belirli bir numaralandırma sistematiğine ihtiyaç duyulmaktadır. Bunun için SNRO transaction kodu kullanılarak sayı aralığı tanımlanabilir ve bir fonksiyon ile bu sayı aralığında sırası ile ilgili numara çağırılabilmektedir. Daha net ifade etmek amacıyla aşağıda ki örnekte yer alan duruma bakacak olursak,

SNRO transactionu kullanarak Number Range tanımlanır ve bu range içerisinde 1 ile 9999999999 sayı aralığı belirlenir. Daha sonra abap programı içerisinde Number_Get_Next fonksiyonuna tanımladığımız range bilgileri verilerek numara aralığında sıradaki numarayı geri döndürür. Böylece daha önce kullanılmış bir numara yerine her seferinde sıradaki numara çağırılır…

  1. SNRO transactionu içerisinde Nesne adı belirlenir ve YARAT tuşuna basılır.

2) Aralık olarak NUMC20 verilir ve uyarı yüzdesi olarak 2,0 belirlenir. (Opsiyoneldir kendi belirleyeceğiniz değerleride yazabilirsiniz)…

3) Aralık bakımı butonu ile aralık belirlenir.

4) Yeni aralık belirleneceği için edit mod ile giriş yapılır.

5) No kısmına 01 yazılır ( Bu kısım aslında çağıracağımız range objesi içerisinde hangi range’in kullanılacağına dair ID olacaktır. Kod kısmında bu numaranın nasıl kullanılacağı yazmaktadır. İlk no sayı aralığının hangi sayıdan başlayacağı, Son no alanına hangi sayıya kadar bu range aralığının devam edeceği belirlenir ve kaydet tuşuna basıldıktan sonra tanımlama işlemleri tamamlanır.

7) Abap kısmına geldiğimizde, örnek olarak 10 kez döngüye giren bir DO içerisinde tanımladığımız Range objesi ve ilgili range numarasına göre Number_Get_Next fonksiyonu çağırılarak dönen numaralar ekrana bastırılır.

CONSTANTS: C_RANGE_NO  TYPE INRI-NRRANGENR VALUE '01',
           C_RANGE_OBJECT TYPE INRI-OBJECT VALUE 'ZDEMO_NR_R'.

DATA : LV_NEXT_NUMBER(50).

DO 10 TIMES.

CALL FUNCTION 'NUMBER_GET_NEXT'
  EXPORTING
    NR_RANGE_NR = C_RANGE_NO
    OBJECT      = C_RANGE_OBJECT
  IMPORTING
    NUMBER      = LV_NEXT_NUMBER.

WRITE :/ LV_NEXT_NUMBER.

ENDDO.

Program çalıştırıldığında her seferinde birbirini tekrar etmeyen sayı aralığında belirlediğiniz sayılar sırası ile gelecektir. 

Daha sonra oluşturduğunuz Range Object’i içerisinde aralık bakımına gittiğinizde bu range içerisinde kaçıncı sayının kullanıldığını görebilirsiniz.

Aynı range’i farklı bir programda çağırabilirsiniz ancak daha önce çağırılan durumlara istinaden her seferinde sıradaki sayı dönecektir.


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s