一
前言
鎖定是傳輸請求管理中的一個标準功能,鎖定的請求不允許其它使用者在請求中添加新的任務.
傳球請求管理詳見連接配接
無峰,公衆号:ABAP 技巧與實戰ABAP基礎知識 傳輸請求(二 管理)
本文主要介紹怎麼通過增強自動鎖定傳輸請求及配置内容的鎖保護
二
傳輸請求鎖定
通過傳輸請求的标準功能 請求->保護/移除保護來給傳輸請求添加/去除鎖定. 鎖定的請求,其他使用者無法在其中添加任務.
三
傳輸請求自動鎖定
标準功能中,傳輸請求需要手工鎖定. 如果期望傳輸請求自動鎖定, 可以簡單的通過在函數TRINT_INSERT_COMM_HEADER 開頭添加隐式增強 實作.
也可以考慮通過配置表來配置集團/使用者的自動加鎖标記,代碼中判斷配置結果,确定是否自動添加傳輸請求的鎖标記(文末給出配置解決方式).
四
鎖定對開發對象的影響
當開發對象包含在一個被保護的傳輸請求中(如圖一),其它使用者嘗試修改該對象時,系統為了確定開發對象的一緻性, 會強制在原請求中添加新的任務來記錄使用者對開發對象的修改.因為請求被保護,其它使用者無法添加任務,其它使用者也就無法修改該開發對象.(如圖二報錯)
圖一
圖二
五
鎖定對配置對象的影響
配置對象不受鎖定的影響. 配置内容可以同時記錄在不同的請求中,鎖定請求并不影響其他使用者用新的請求來記錄同一個配置對象.如圖三,同一個配置對象的相同的配置條目可以寫入兩個不同的使用者的請求(也可以寫入同一個使用者的不同配置請求中).
圖三
六
新的需求
項目中如果有多個團隊在同一個系統中開發/配置. 對于開發的對象, 因為系統的保護機制確定了開發對象被傳輸請求鎖定,對同一個開發對象的修改會強制放入同一個請求. 通過鎖定請求,可以讓使用者獨占對開發對象的編輯(直到釋放請求)
但是标準功能無法做到對配置對象,配置内容的獨占. 是以期望通過增強實作對配置的獨占.
七
配置獨占的層級
從配置請求的内容組成可以看到, 配置請求有兩個層級
- 配置表或視圖
- 配置内容
可以考慮通過一定的授權機制在增強中檢查特定的層級.
八
實作方式
01
配置表
通過配置表ZTCR_USR配置使用者名/使用者組/全局 傳輸請求自動加鎖和檢查配置鎖定标記
02
定義類
建立類ZCL_CR_ENHENCED_CHECK
把相關邏輯整合在類中, 以便後續統一維護
03
增強
在函數TR_EDIT_CHECK_OBJECTS_KEYS 開頭隐式增強調用類方法檢查配置内容
在函數TRINT_INSERT_COMM_HEADER開頭隐式增強調用類方法設定請求狀态
九
檢查配置鎖定效果
如果目前配置的内容已經存在于一個鎖定的請求中. 配置報錯過程會終止,并且報錯提示鎖定的請求,使用者,日期,時間等資訊
十
總結
當一個系統中存在多個項目組同時開發/配置時, 如果多個項目組同時配置一個對象,沒有及時溝通的情況下會導緻配置混亂.
開發對象沒問題, 系統會自動把正在修改的開發對象放入同一個請求.
本文給出一個解決配置混亂的方案:通過自動鎖定傳輸請求及新配置寫入請求時檢查配置是否已經存在于已經鎖定的請求中.來解決同一個配置被多個使用者同時編輯并寫入請求的情況.
當發現配置被其它使用者鎖定,通過協商,由之前鎖定的使用者統一修改配置,或者釋放請求,讓其它人配置
THE
END
約定
如果你對這篇文章感興趣,請幫忙點贊分享.
(如果你真的喜歡這篇文章,請記得回來打個賞,作為支援我繼續下去的動力,這是一個正回報過程. 越多的人打賞,作者越有動力分享,讀者就能享受更多的福利.畢竟打賞的金額富不了我,窮不了你,卻能支援這個公衆号長久發文.)
公衆号 : syjf1976_abap
ABAP開發技巧