Nummernkreise ermöglichen die automatische, eindeutige Vergabe von Nummern für Belege, Dokumente und andere Geschäftsobjekte. Sie garantieren Eindeutigkeit auch bei parallelen Zugriffen.
Nummernkreis-Konzepte
Konzept
Beschreibung
Nummernkreisobjekt
Container für Intervalle (SNRO)
Intervall
Nummernbereich (von-bis)
Interne Vergabe
System vergibt automatisch
Externe Vergabe
Benutzer gibt Nummer vor
Wichtige Transaktionen
Transaktion
Beschreibung
SNRO
Nummernkreisobjekte pflegen
SNUM
Nummernkreisstände pflegen
SLG1
Nummernkreis-Protokoll
Grundlegende Beispiele
Nächste Nummer holen
DATA: lv_number TYPE char20,
lv_rc TYPE inri-returncode.
CALLFUNCTION'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr ='01'" Intervallnummer
object='ZORDER'" Nummernkreisobjekt
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: /'Neue Nummer:', lv_number.
ELSE.
MESSAGE'Fehler bei Nummernvergabe' TYPE'E'.
ENDIF.
Nummer mit Jahr-Abhängigkeit
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 " Geschäftsjahr
IMPORTING
number= lv_number
EXCEPTIONS
OTHERS=1.
" Ergebnis z.B.: 2025-0000001
DATA(lv_doc_number) =|{ lv_year }-{ lv_number ALPHA = IN }|.