adesso orange🍊Stellenangebote:
Software Engineer Trainee · Senior
| (Senior) Cloud Software Engineer BTP
(Senior) Consultant Technologie · Consultant ABAP
Werkstudent Softwareentwicklung · Fiori / UI5 · Consulting · Application Management
Nummernkreisobjekt: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „== Erstellung == Mit SNUM wird ein Z Nummernkreisobjekt erstellt. Durch die Einstellung "Domäne für Nummernlänge" definiert man wie lang die Nummer sein…“) |
|||
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
Mit SNUM wird ein Z Nummernkreisobjekt erstellt. | Mit SNUM wird ein Z Nummernkreisobjekt erstellt. | ||
Durch die Einstellung "Domäne für Nummernlänge" definiert man wie lang die Nummer sein soll z.B. NUMC10 | Durch die Einstellung "Domäne für Nummernlänge" definiert man wie lang die Nummer sein soll z.B. NUMC10 eine 10 stellige nummerische Nummer. | ||
Durch die Einstellung "Prozent Warnung" gibt man an wann eine Warnung erfolgen soll. Z.B. 10% besagt, das bei einem Intervall von 1000 ab der Nummer von 900 eine Warnung ausgegeben wird. | Durch die Einstellung "Prozent Warnung" gibt man an wann eine Warnung erfolgen soll. Z.B. 10% besagt, das bei einem Intervall von 1000 ab der Nummer von 900 eine Warnung ausgegeben wird. | ||
Zeile 19: | Zeile 19: | ||
=== Nächste Nummer aus Nummernkreis bekommen === | === Nächste Nummer aus Nummernkreis bekommen === | ||
<syntaxhighlight lang="abap" line start="1"> | |||
METHOD get_next_number. | METHOD get_next_number. | ||
DATA: lv_num TYPE nrlevel. "Enthält 20 Stellen, ggf. ist hier die gleiche Länge wie ev_num haben soll | DATA: lv_num TYPE nrlevel. "Enthält 20 Stellen, ggf. ist hier die gleiche Länge wie ev_num haben soll zu definieren | ||
CLEAR: ev_num. | CLEAR: ev_num. | ||
Zeile 77: | Zeile 78: | ||
ENDIF. | ENDIF. | ||
ENDMETHOD. | ENDMETHOD. | ||
</syntaxhighlight> | |||
=== Aufruf der Methode === | === Aufruf der Methode === | ||
Bei Übergabe des Parameters "iv_nr_range_nr" ist die Nummerkreisnummer zunehmen, den man im Intervall genommen hat z.B. 01. | |||
Das Z Nummernkreisobjekt ist Parameter "iv_nr_object" mitzugeben. | |||
== Transport von Nummernkreisintervallen == | == Transport von Nummernkreisintervallen == | ||
Es ist möglich Intervalle zu transportieren: SNUM -> Menüleiste "Intervalle" -> Transportieren | Es ist möglich Intervalle zu transportieren: SNUM -> Menüleiste "Intervalle" -> Transportieren |
Aktuelle Version vom 8. November 2021, 20:50 Uhr
Erstellung
Mit SNUM wird ein Z Nummernkreisobjekt erstellt.
Durch die Einstellung "Domäne für Nummernlänge" definiert man wie lang die Nummer sein soll z.B. NUMC10 eine 10 stellige nummerische Nummer.
Durch die Einstellung "Prozent Warnung" gibt man an wann eine Warnung erfolgen soll. Z.B. 10% besagt, das bei einem Intervall von 1000 ab der Nummer von 900 eine Warnung ausgegeben wird.
Codeschnipsel
Parameter der Methode
[--->] IV_NR_RANGE_NR TYPE NRNR [--->] IV_NR_OBJECT TYPE NROBJ [--->] IV_NR_OBJECT_SUB TYPE SUBOBJECT(optional) [<---] EV_NUM TYPE SEQNR4 "Aktuell 4 Stellen. Ggf. Nummernkreisdomäne anzupassen [EXC!] ERROR
Nächste Nummer aus Nummernkreis bekommen
METHOD get_next_number.
DATA: lv_num TYPE nrlevel. "Enthält 20 Stellen, ggf. ist hier die gleiche Länge wie ev_num haben soll zu definieren
CLEAR: ev_num.
CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
EXPORTING
object = iv_nr_object
EXCEPTIONS
foreign_lock = 1
object_not_found = 2
system_failure = 3
OTHERS = 4.
IF sy-subrc = 0.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = iv_nr_range_nr
object = iv_nr_object
subobject = iv_nr_object_sub
IMPORTING
number = lv_num
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 = 99.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 RAISING error.
ENDIF.
IF sy-subrc = 0.
ev_num = lv_num.
ENDIF.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 RAISING error.
ENDIF.
CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
EXPORTING
object = iv_nr_object
EXCEPTIONS
object_not_found = 1
OTHERS = 99.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 RAISING error.
ENDIF.
IF ev_num IS INITIAL.
MESSAGE ID 'NR' TYPE 'S' NUMBER '024' DISPLAY LIKE 'E' RAISING error.
ENDIF.
ENDMETHOD.
Aufruf der Methode
Bei Übergabe des Parameters "iv_nr_range_nr" ist die Nummerkreisnummer zunehmen, den man im Intervall genommen hat z.B. 01. Das Z Nummernkreisobjekt ist Parameter "iv_nr_object" mitzugeben.
Transport von Nummernkreisintervallen
Es ist möglich Intervalle zu transportieren: SNUM -> Menüleiste "Intervalle" -> Transportieren