汎用M 番号範囲 次番号割当

NUMBER_GET_NEXT

概要

指定した番号範囲オブジェクトから新しい番号を取得する汎用モジュールです。採番する数を指定することで複数の番号を払い出すこともできます。

パラメータ

番号範囲オブジェクト名(OBJECT)と番号範囲番号(NR_RANGE_NR)が主なパラメータです。番号範囲オブジェクトの設定によりサブオブジェクト(SUBOBJECT)や会計年度終了値(TOYEAR)が必要な場合はその値もパラメータに設定する必要があります。
一度に複数採番する場合には番号数(QUANTITY)に取得する数を設定します。
パラメータ一覧
種別パラメータ説明
インポートNR_RANGE_NR番号範囲番号
OBJECT番号範囲オブジェクト名
QUANTITY番号数
SUBOBJECTサブオブジェクト値
TOYEAR会計年度終了値
IGNORE_BUFFERオブジェクトバッファ無視
エクスポートNUMBER番号
QUANTITY番号数
RETURNCODEリターンコード
例外INTERVAL_NOT_FOUND間隔なし
NUMBER_RANGE_NOT_INTERN外部番号範囲
OBJECT_NOT_FOUNDTNROにはオブジェクトが未定義
QUANTITY_IS_0要求番号の番号は0以上に設定
QUANTITY_IS_NOT_1要求番号の番号は1に設定
INTERVAL_OVERFLOW範囲がすべて使用されているため変更は不可能
BUFFER_OVERFLOWバッファ満杯

インポートパラメータを設定する

番号範囲オブジェクト名(OBJECT)には、番号範囲オブジェクトのIDを設定します。番号範囲番号(NR_RANGE_NR)には2桁の番号範囲の番号を設定します。
設定例:インポートパラメータ
項目項目名称設定値
NR_RANGE_NR番号範囲番号01
OBJECT番号範囲オブジェクト名Z001

サンプルコード

番号範囲オブジェクトと番号範囲番号を指定して番号を取得する例です。 正常終了時にはRETURNCODEパラメータに空白(すべてOK)、1(割当られた番号がクリティカルな領域にある)、2(最後の番号で次回採番では最初の番号に戻る)、3(使用可能な番号より大きい番号が要求されている。割当済み番号はQUANTITYを参照)のいずれかが設定されます。

次番号割当の汎用モジュールの内部では番号範囲テーブルがENQUEUEではなくデータベース上でロックされるため、コミットまたはロールバックを実行するまで次の採番はできません。
DATA: LV_NR_RANGE_NR TYPE INRI-NRRANGENR,
      LV_OBJECT      TYPE INRI-OBJECT,
      LV_NUMBER      TYPE CHAR10,
      LV_RETURNCODE  TYPE INRI-RETURNCODE.

* パラメータに値を設定する
LV_NR_RANGE_NR = '01'.   " 番号範囲番号
LV_OBJECT      = 'Z001'. " 番号範囲オブジェクト名

CALL FUNCTION 'NUMBER_GET_NEXT'
  EXPORTING
    NR_RANGE_NR = LV_NR_RANGE_NR
    OBJECT      = LV_OBJECT
  IMPORTING
    NUMBER      = LV_NUMBER
    RETURNCODE  = LV_RETURNCODE
  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.
*  エラー処理
ELSE.
*  正常処理
ENDIF.
関連記事

コメントの投稿

非公開コメント

プロフィール

Z*

Author:Z*

このブログではSAPの技術情報について解説をしていきます。

2017年:ブログをリニューアルしました。(旧Zの高速道路)

カテゴリ
最新記事
最新コメント
月別アーカイブ
検索フォーム
リンク