[SAP Abap] X-DOC: SNRO – ABAP-Seriennummernanwendung

1. Definieren Sie die Tabelle (Felddomäne)

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

2. Seriennummer definieren

Tcode: SNRO/SNUM,
basierend auf dem oben erstellten Feld YDSNRO, erstellen Sie das Objekt YSNRO und definieren Sie das Seriennummernbereichs-
Fügen Sie hier eine Bildbeschreibung ein
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.
...

Fügen Sie hier eine Bildbeschreibung ein

Originalartikel, bitte geben Sie beim Nachdruck die Quelle an – Akte X

Supongo que te gusta

Origin blog.csdn.net/XLevon/article/details/130633386
Recomendado
Clasificación