ABAP 流水號的建立與處理

2021-10-08 21:15:15 字數 2351 閱讀 8582

短文本和長文字用來說明這個編號範圍物件,輸入任意描述即可。 

編號長度域就填建立的域,但是一定要先啟用。指定這個編號範圍物件 zdiaodudan 的長度,我們定義域長度為 10,因此這個編號範圍物件生成的編號長度也是 10 位。

到期年標記是指編號按年度歸零,每當開始乙個新年度時,相應的編號也需要從頭開始,比如財務憑證和物料憑證都是這樣(比如表bkpf 和mkpf,都把年度做為乙個鍵欄位)

無翻滾間隔是指如果編號達到最大,是否自動從頭開始,勾上就不從頭開始,而在獲取編號的時候提示出錯。我們這裡應該打勾。

編號範圍處理,屬於翻譯問題,實際就是編號範圍的事務碼,如果指定這個事務碼,就可以不需要通過 snum 或者 snro 的主螢幕然後輸入編號範圍物件的名字來維護這個編號範圍,而可以輸入事務碼直接進入它的號碼範圍維護螢幕。

警告百分比是指如果編號使用到一定比例,就發出系統警告,提示管理人員增大範圍或者進行歷史資料歸檔,避免編號全部用完後影響正常業務,這裡我們填寫 95,就是95%的時候提示。

主記憶體緩衝是 指系統為了提高效能而預先取出一些編號放在應用伺服器上,當程式取用編號時直接從應用伺服器獲取,而無需再讀取資料庫了。通常,如果對號碼的連續性要求不 高的情況下可以使用這種方式,而如果是財務憑證等要求連續的編號,則應該把主記憶體緩衝關閉,方法是通過選單「編輯-設定快取-無快取」。

程式中我們也可以使用  number range 。使用三個函式即可。下面做以說明。

data: lv_num(10).      

clear:lv_num.

*&---snro取值編號

call function 'number_range_enqueue'

exporting

object = 'zppr045'

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 = 'zppr045'

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 = 8.

if sy-subrc <> 0.

message id sy-msgid type sy-msgty number sy-msgno

with sy-ms**1 sy-ms**2 sy-ms**3 sy-ms**4.

else.

call function 'number_range_dequeue' 「將號碼累加

exporting

object = 'zppr045'

exceptions

object_not_found = 1

others = 2.

endif.

endif.

建立流水號

delimiter useppd sit drop procedure if existscreateorderno create definer root procedurecreateorderno outnewordernochar 15 begin declare currentdate c...

mysql 觸發器流水號 建立生成流水號的觸發器

create table test id varchar 18 流水號,日期 8位 時間 4位 流水號 4位 name varchar 10 其他字段 go 建立生成流水號的觸發器 create trigger t insert on test instead of insert asdeclare...

根據時間建立每天重置流水號

第一次寫部落格,有講解的不好的地方還請大家多多包涵哈。首先,根據時間生成,我們先要格式化一下時間格式 dateformat dmfot new dateformat yyyymmdd 擷取當前時間作為流水號 string precode dmfot.format new date 然後我們進行資料庫...