[SAP Abap] X-DOC: SNRO – ABAP-Seriennummernanwendung
1. Definieren Sie die Tabelle (Felddomäne)
2. Seriennummer definieren
Tcode: SNRO/SNUM,
basierend auf dem oben erstellten Feld YDSNRO, erstellen Sie das Objekt YSNRO und definieren Sie das Seriennummernbereichs-
Nummernlängenfeld : Füllen Sie einfach das erstellte Feld aus, es muss jedoch zuerst aktiviert werden.
Warnprozentsatz : Bedeutet, dass bei Ausschöpfung der Nummer bis zu einem bestimmten Prozentsatz eine Systemwarnung ausgegeben wird, die Manager auffordert, den Bereich zu erhöhen oder historische Daten zu archivieren, um eine Beeinträchtigung des normalen Geschäftsbetriebs zu vermeiden, wenn alle Nummern aufgebraucht sind. Geben Sie hier 95 ein bedeutet eine Eingabeaufforderung bei 95 %.
Kein Rollover-Intervall : Bezieht sich darauf, ob automatisch von vorne begonnen werden soll, wenn die Zahl das Maximum erreicht. Wenn diese Option aktiviert ist, wird nicht von vorne begonnen, sondern beim Abrufen der Zahl wird ein Fehler angezeigt.
Nummernkreistransaktion : Wenn Sie diesen Transaktionscode angeben, müssen Sie den Namen des Nummernkreisobjekts nicht über den Hauptbildschirm von SNRO/SNUM eingeben, um diesen Nummernkreis zu verwalten, sondern können den Transaktionscode eingeben, um dessen Nummer direkt einzugeben Bereichswartungsbildschirm.
Hauptspeicherpuffer :
bezieht sich darauf, dass das System einige Zahlen vorab abruft und auf dem Anwendungsserver ablegt, um die Leistung zu verbessern. Wenn das Programm die Zahlen abruft, werden diese direkt vom Anwendungsserver abgerufen, ohne die Datenbank zu lesen.
Normalerweise kann diese Methode verwendet werden, wenn die Kontinuität der Zahlen nicht hoch ist. Wenn fortlaufende Zahlen für Finanzdokumente usw. erforderlich sind, sollte der Hauptspeicherpuffer ausgeschaltet werden.
Sie können beim Abrufen einer Nummer den Parameter IGNORE_BUFFER = 'X' setzen, um Nummern-Hopping zu verhindern. Wenn Sie ihn auf 'X' setzen, wird Nummern-Hopping verhindert.
Nummernkreisübertragung : Im Allgemeinen werden Codes unabhängig in der Produktionsmaschine eingestellt. Wenn Sie die Wartung dieses Nummernkreises übertragen müssen, müssen Sie im Startmenü den Befehl „Bereich“ | „Übertragung“ ausführen und die Übertragungsanforderungsnummer generieren durch manuelle Bedienung.
3. Verwenden Sie die Seriennummer
Um Seriennummern in einem Programm zu verwenden, müssen Sie die folgenden drei Funktionen verwenden
FORM get_no CHANGING p_no.
CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
EXPORTING
object = 'YSNRO'
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 = '01'
object = 'YSNRO'
ignore_buffer = 'X'
IMPORTING
number = p_no
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.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL FUNCTION 'NUMBER_RANGE_DEQUEUE' "解锁
EXPORTING
object = 'YSNRO'
EXCEPTIONS
object_not_found = 1
OTHERS = 2.
ENDIF.
ENDIF.
ENDFORM.
4. Testprogramm
REPORT yz_demo_xlevon_snro.
PERFORM add_data.
PERFORM add_data.
PERFORM add_data.
COMMIT WORK.
SELECT * FROM ytxlevon_snro INTO TABLE @DATA(lt_xlevon).
cl_demo_output=>display( lt_xlevon ).
* 增加表记录
FORM add_data.
DATA: ls_xlevon TYPE ytxlevon_snro.
DATA: lv_no TYPE ytxlevon_snro-ysnro.
PERFORM get_no CHANGING lv_no.
ls_xlevon-ysnro = lv_no.
MODIFY ytxlevon_snro FROM ls_xlevon.
ENDFORM.
...
Originalartikel, bitte geben Sie beim Nachdruck die Quelle an – Akte X