Les tranches de numeros permettent l’attribution automatique et unique de numeros pour les documents, pieces et autres objets metier. Elles garantissent l’unicite meme lors d’acces paralleles.
Concepts des tranches de numeros
Concept
Description
Objet de tranche de numeros
Conteneur pour les intervalles (SNRO)
Intervalle
Plage de numeros (de-a)
Attribution interne
Le systeme attribue automatiquement
Attribution externe
L’utilisateur fournit le numero
Transactions importantes
Transaction
Description
SNRO
Gerer les objets de tranches de numeros
SNUM
Gerer les etats des tranches de numeros
SLG1
Journal des tranches de numeros
Exemples de base
Obtenir le numero suivant
DATA: lv_number TYPE char20,
lv_rc TYPE inri-returncode.
CALLFUNCTION'NUMBER_GET_NEXT"
EXPORTING
nr_range_nr = '01' " Numero d'intervalle
object='ZORDER'" Objet de tranche de numeros
IMPORTING
number= lv_number
returncode = lv_rc
EXCEPTIONS
interval_not_found =1
number_range_not_intern =2
object_not_found =3
quantity_is_0 =4
quantity_is_not_1 =5
interval_overflow =6
buffer_overflow =7
OTHERS=8.
IFsy-subrc=0.
WRITE: /'Nouveau numero:', lv_number.
ELSE.
MESSAGE'Erreur lors de l attribution du numero' TYPE'E'.
ENDIF.
Numero avec dependance annuelle
DATA: lv_number TYPE char20,
lv_year TYPE nriv-toyear.
lv_year = sy-datum(4).
CALLFUNCTION'NUMBER_GET_NEXT"
EXPORTING
nr_range_nr = '01"
object='ZINVOICE"
toyession = lv_year " Exercice fiscal
IMPORTING
number = lv_number
EXCEPTIONS
OTHERS = 1.
" Resultat par ex. : 2025-0000001
DATA(lv_doc_number) = |{ lv_year }-{ lv_number ALPHA = IN }|.
Plusieurs numeros a la fois
DATA: lv_from_number TYPE char20,
lv_to_number TYPE char20,
lv_quantity TYPE iVALUE10.
CALLFUNCTION'NUMBER_GET_NEXT"
EXPORTING
nr_range_nr = '01"
object='ZBATCH"
quantity = lv_quantity " 10 numeros
IMPORTING
number = lv_from_number
returncode = lv_rc
EXCEPTIONS
OTHERS = 1.
" lv_from_number = premier numero
" lv_from_number + quantity - 1 = dernier numero
lv_to_number = lv_from_number + lv_quantity - 1.
WRITE: / 'Plage de numeros:', lv_from_number, 'a', lv_to_number.
Numero avec sous-objet
" Sous-objet pour les tranches de numeros cross-mandant