限對(duì)象維護(hù)實(shí)戰(zhàn):從SU21定義到PFCG角色生成的完整指南)
簡(jiǎn)介從權(quán)限字段維護(hù)、權(quán)限對(duì)象創(chuàng)建到角色授權(quán)與程序校驗(yàn)SAP權(quán)限維護(hù)專題文檔面向SAP系統(tǒng)管理員、ABAP開(kāi)發(fā)顧問(wèn)及權(quán)限運(yùn)維人員內(nèi)容系統(tǒng)且貼近實(shí)踐。全篇圍繞SU20、SU21、PFCG等核心事務(wù)代碼展開(kāi)SU20中維護(hù)權(quán)限字段、選擇數(shù)據(jù)元素并設(shè)定取值范圍SU21中選用合適對(duì)象類、自定義權(quán)限對(duì)象及授權(quán)字段PFCG中創(chuàng)建角色、分配菜單權(quán)限、掛接用戶并執(zhí)行用戶比較使權(quán)限配置真正落地。文檔同時(shí)給出AUTHORITY-CHECK OBJECT語(yǔ)句在ABAP程序中的用法說(shuō)明如何結(jié)合sy-subrc完成權(quán)限判斷并補(bǔ)充通過(guò)S_GUI權(quán)限對(duì)象限制ALV報(bào)表導(dǎo)出的設(shè)置幫助保護(hù)敏感數(shù)據(jù)。壓縮包內(nèi)僅1個(gè)doc文件約348KB攜帶方便已有1539人學(xué)習(xí)下載適合需要快速掌握SAP權(quán)限體系或作為內(nèi)部培訓(xùn)參考的SAP從業(yè)者。1. SAP維護(hù)權(quán)限對(duì)象為什么這份文檔值得從“出問(wèn)題”開(kāi)始讀“SAP維護(hù)權(quán)限對(duì)象”這六個(gè)字拆開(kāi)看是三個(gè)動(dòng)作維護(hù)、權(quán)限對(duì)象、文檔化。真正做過(guò)權(quán)限實(shí)施的都清楚系統(tǒng)里最容易被忽略、也最容易引發(fā)生產(chǎn)事故的恰恰就是這組配置。用戶報(bào)“權(quán)限不足”BASIS查SU53最后定位到某個(gè)維護(hù)類權(quán)限對(duì)象缺失或字段值配錯(cuò)前后不到十分鐘真正難的是這類對(duì)象散落在業(yè)務(wù)顧問(wèn)的說(shuō)明文檔里、開(kāi)發(fā)者的注釋里和系統(tǒng)里的實(shí)際狀態(tài)根本對(duì)不上。這份文檔要解決的就是把“維護(hù)權(quán)限對(duì)象”這件事從黑匣子變成可維護(hù)、可交接、可復(fù)現(xiàn)的操作記錄。適合誰(shuí)讀SAP權(quán)限顧問(wèn)、BASIS運(yùn)維、經(jīng)常處理授權(quán)問(wèn)題的ABAP開(kāi)發(fā)以及需要在項(xiàng)目交付時(shí)整理權(quán)限模塊文檔的人。讀完你能回答三件事對(duì)象在哪維護(hù)、怎么掛進(jìn)角色并生效、出問(wèn)題時(shí)怎么查。2. 權(quán)限對(duì)象的底層邏輯從SU21定義到SU24默認(rèn)掛載2.1 權(quán)限對(duì)象的四個(gè)構(gòu)成部分權(quán)限對(duì)象是SAP授權(quán)檢查的最小單元比角色更底層。一個(gè)角色可以掛幾十個(gè)對(duì)象系統(tǒng)在執(zhí)行程序時(shí)按“對(duì)象”逐個(gè)檢查任何一個(gè)對(duì)象的檢查沒(méi)通過(guò)功能都會(huì)報(bào)權(quán)限不足。維護(hù)類權(quán)限對(duì)象指的是那些服務(wù)于“新增、修改、刪除、顯示”這類維護(hù)動(dòng)作的對(duì)象典型場(chǎng)景就是自定義表的維護(hù)功能——對(duì)象建沒(méi)建、字段值給沒(méi)給直接決定用戶能不能在界面上保存數(shù)據(jù)。一個(gè)權(quán)限對(duì)象由四部分構(gòu)成缺一不可。構(gòu)成說(shuō)明示例對(duì)象類用于分組歸類決定在SUIM等工具里的收納位置“AA”資產(chǎn)、“XX”自定義開(kāi)發(fā)對(duì)象名對(duì)象的唯一標(biāo)識(shí)自定義對(duì)象一般用Y/Z開(kāi)頭Y_MAT_MAINT權(quán)限字段對(duì)象內(nèi)部攜帶的檢查字段至少包含一個(gè)ACTVT、MATNR、WERKS活動(dòng)值A(chǔ)CTVT字段允許的動(dòng)作值01新增、02修改、03顯示、06刪除維護(hù)類權(quán)限對(duì)象為什么容易出問(wèn)題關(guān)鍵在于“劃分口徑”。比如一張自定義物料表ZMMT001業(yè)務(wù)上要求“采購(gòu)員只許改自己負(fù)責(zé)工廠的數(shù)據(jù)倉(cāng)管員只能看”。如果權(quán)限對(duì)象里只放了ACTVT沒(méi)有放工廠字段那么授權(quán)粒度就只能到“能不能維護(hù)整個(gè)表”工廠維度的隔離做不到。反過(guò)來(lái)字段放多了角色維護(hù)時(shí)每個(gè)字段都要填值漏一個(gè)用戶就操作不了。我一般建議字段數(shù)量控制在3個(gè)以內(nèi)除了ACTVT最多再放一兩個(gè)真正需要按數(shù)據(jù)維度區(qū)分的字段如表名、工廠、公司代碼不要什么都往里塞。2.2 SU21里創(chuàng)建和維護(hù)對(duì)象的操作要點(diǎn)SU21是權(quán)限對(duì)象的“定義端”。所有自定義權(quán)限對(duì)象的創(chuàng)建工作都在這里完成。常見(jiàn)做法是給每張需要維護(hù)功能的自定義表建一個(gè)獨(dú)立對(duì)象而不是復(fù)用標(biāo)準(zhǔn)對(duì)象。操作路徑如下事務(wù)碼進(jìn)入SU21在“對(duì)象”樹(shù)里找到自定義對(duì)象類右鍵選擇創(chuàng)建輸入對(duì)象名、對(duì)象文本選擇對(duì)象類進(jìn)入字段維護(hù)頁(yè)簽添加權(quán)限字段勾選允許的活動(dòng)值保存并生成權(quán)限參數(shù)文件的默認(rèn)值新建對(duì)象后至少做一次“保存并生成字段名”動(dòng)作確認(rèn)對(duì)象出現(xiàn)在權(quán)限樹(shù)里。參數(shù)說(shuō)明對(duì)象名務(wù)必使用Y或Z開(kāi)頭這樣系統(tǒng)升級(jí)時(shí)自定義對(duì)象不會(huì)和標(biāo)準(zhǔn)對(duì)象沖突對(duì)象文本要寫(xiě)清楚“哪張表、什么用途”因?yàn)閹讉€(gè)月后連你自己都會(huì)忘記這個(gè)對(duì)象是干什么的活動(dòng)值選取時(shí)03顯示是底線業(yè)務(wù)需要維護(hù)時(shí)再加01、02、06但允許的值不要全勾——一旦勾了你自定義對(duì)象的可直接授權(quán)上限就定死了。這里給一個(gè)非常容易翻車的細(xì)節(jié)SU21里創(chuàng)建對(duì)象時(shí)如果直接選了“復(fù)制對(duì)象”的方式來(lái)創(chuàng)建復(fù)制的字段列表里往往會(huì)帶進(jìn)來(lái)原對(duì)象多余的活動(dòng)值或字段。我有一個(gè)血淚經(jīng)驗(yàn)?zāi)炒螐?fù)制標(biāo)準(zhǔn)對(duì)象創(chuàng)建自定義對(duì)象沒(méi)有清掉字段列表里的三個(gè)組織級(jí)別字段導(dǎo)致后面每個(gè)角色上都多了一組必填字段業(yè)務(wù)顧問(wèn)維護(hù)角色時(shí)天天報(bào)錯(cuò)查了兩天才發(fā)現(xiàn)是復(fù)制殘留。所以復(fù)制完成后一定把字段列表和活動(dòng)值逐項(xiàng)過(guò)一遍再保存。2.3 SU24把權(quán)限對(duì)象掛到事務(wù)碼的默認(rèn)配置SU24負(fù)責(zé)在事務(wù)碼和權(quán)限對(duì)象之間建立“默認(rèn)關(guān)聯(lián)”。PFCG生成角色的權(quán)限數(shù)據(jù)時(shí)會(huì)根據(jù)角色菜單里的事務(wù)碼自動(dòng)把SU24里配置好的對(duì)象帶出來(lái)不需要手工逐個(gè)添加。對(duì)自定義維護(hù)程序來(lái)說(shuō)這一步是必須做的——不然每次創(chuàng)建角色都要手工加對(duì)象漏加一個(gè)用戶直接沒(méi)法用。配置路徑SU24進(jìn)入后輸入事務(wù)代碼界面會(huì)列出該事務(wù)碼對(duì)應(yīng)的所有權(quán)限對(duì)象對(duì)自定義事務(wù)碼先執(zhí)行“復(fù)制默認(rèn)值到客戶自定義層”在客戶自定義層里維護(hù)對(duì)象清單把Y/Z自定義對(duì)象加入保留必需的標(biāo)準(zhǔn)對(duì)象如S_TCODE用于事務(wù)碼檢查、S_PROGRAM用于ABAP程序授權(quán)把不相關(guān)的標(biāo)準(zhǔn)對(duì)象標(biāo)記為“不檢查”或刪除關(guān)聯(lián)避免生成角色時(shí)帶入一堆用不上的默認(rèn)對(duì)象。系統(tǒng)里和SU24相關(guān)的還有SU22與SU25。SU22用來(lái)查詢“某個(gè)權(quán)限對(duì)象被哪些事務(wù)碼引用”排查“這個(gè)對(duì)象改了影響多大”時(shí)非常有用SU25是權(quán)限參數(shù)文件的初始配置工具首次實(shí)施時(shí)跑一次把標(biāo)準(zhǔn)對(duì)象配置導(dǎo)入到客戶自定義層。三者的分工是SU21定義對(duì)象SU24維護(hù)對(duì)象與事務(wù)碼的關(guān)聯(lián)SU22反向查引用SU25做初始批量裝載。注意修改SU24的默認(rèn)配置只影響之后通過(guò)PFCG“自動(dòng)生成權(quán)限”的角色。已經(jīng)存在的角色不會(huì)自動(dòng)同步必須在PFCG里重新執(zhí)行“調(diào)整權(quán)限數(shù)據(jù)”或手工補(bǔ)對(duì)象這就是“維護(hù)權(quán)限對(duì)象”這個(gè)說(shuō)法里最容易產(chǎn)生歧義的地方對(duì)象定義改了不代表線上角色跟著改了。3. 把權(quán)限對(duì)象真正落進(jìn)角色PFCG維護(hù)、參數(shù)文件生成與驗(yàn)證3.1 在權(quán)限頁(yè)維護(hù)對(duì)象字段值的兩種路徑PFCG是權(quán)限對(duì)象的“生效端”。角色維護(hù)界面的“權(quán)限”頁(yè)簽里所有對(duì)象的字段值在這里逐項(xiàng)填寫(xiě)。維護(hù)類對(duì)象在這里的典型落法是把“表名”字段填成具體的表名ACTVT按業(yè)務(wù)需要勾選動(dòng)作值組織級(jí)別字段填入允許的工廠或公司代碼范圍。路徑一菜單驅(qū)動(dòng)。在“菜單”頁(yè)簽里選好事務(wù)碼回到“權(quán)限”頁(yè)簽點(diǎn)“調(diào)整權(quán)限數(shù)據(jù)”系統(tǒng)從SU24默認(rèn)配置里把對(duì)象自動(dòng)帶出來(lái)。路徑二手工添加。點(diǎn)“權(quán)限”頁(yè)簽里的“手工添加對(duì)象”按鈕輸入對(duì)象名系統(tǒng)自動(dòng)帶出字段列表逐項(xiàng)填值。兩種路徑的選擇標(biāo)準(zhǔn)自定義維護(hù)事務(wù)碼一定手工添加因?yàn)镾U24默認(rèn)配置未必包含你的自定義對(duì)象——哪怕配了也要人工核對(duì)一遍字段值再生成參數(shù)文件。字段值的填寫(xiě)規(guī)則是維護(hù)權(quán)限對(duì)象必須講清楚的細(xì)節(jié)單個(gè)值直接輸入如工廠1000寫(xiě)成1000或001000系統(tǒng)保存時(shí)自動(dòng)規(guī)范化范圍用操作符BT表示區(qū)間內(nèi)全部值CP表示按通配符匹配如“1*”表示所有1開(kāi)頭的值* 表示該字段不限制值含義是“全部”。維護(hù)類場(chǎng)景我最常強(qiáng)調(diào)不要把整個(gè)對(duì)象的所有字段都填成 * 。ACTVT要按實(shí)際動(dòng)作勾選表名字段最好顯式值。一個(gè)只允許維護(hù)某張表的角色如果表名字段用了 * 那這個(gè)用戶將擁有系統(tǒng)里所有掛了這個(gè)對(duì)象的表維護(hù)權(quán)限安全審計(jì)一查一個(gè)準(zhǔn)。3.2 生成參數(shù)文件改了對(duì)象卻“沒(méi)生效”的分水嶺PFCG里保存角色只是把權(quán)限數(shù)據(jù)存到數(shù)據(jù)庫(kù)表用戶側(cè)不會(huì)發(fā)生任何變化。必須執(zhí)行“生成參數(shù)文件”動(dòng)作角色的權(quán)限數(shù)據(jù)才會(huì)被打包進(jìn)參數(shù)文件并通過(guò)用戶主數(shù)據(jù)SU01分配到具體用戶。很多“改了角色沒(méi)生效”的工單追到最后都是少點(diǎn)了一下生成參數(shù)文件。標(biāo)準(zhǔn)操作序列PFCG打開(kāi)角色進(jìn)入“權(quán)限”頁(yè)簽維護(hù)或調(diào)整對(duì)象字段值保存角色點(diǎn)擊“生成參數(shù)文件”觀察日志確認(rèn)無(wú)警告SU01查看用戶授權(quán)頁(yè)確認(rèn)參數(shù)文件已經(jīng)存在于用戶下通知用戶重新登錄或通過(guò)權(quán)限緩沖刷新機(jī)制使變更立即生效。參數(shù)文件名稱默認(rèn)繼承角色名也可以按角色變式組合生成多個(gè)變式參數(shù)文件。同一個(gè)角色可以生成多組參數(shù)文件每組字段值不同分配給不同用戶——這種用法在做“同一職能、不同數(shù)據(jù)范圍”的場(chǎng)景非常實(shí)用但代價(jià)是參數(shù)文件變多后權(quán)限變更的維護(hù)量成倍增長(zhǎng)。我建議團(tuán)隊(duì)在權(quán)限設(shè)計(jì)階段就定好“一角色一參數(shù)文件”為主、“變式參數(shù)文件”為輔的原則節(jié)省后面的維護(hù)成本。這里還有一個(gè)新手常踩的點(diǎn)角色里分配了事務(wù)碼但事務(wù)碼本身在SU01里授權(quán)范圍Tcode授權(quán)不足時(shí)用戶連事務(wù)碼都進(jìn)不去會(huì)誤以為是權(quán)限對(duì)象的問(wèn)題。排查順序一定是事務(wù)碼能進(jìn)嗎→SU53報(bào)什么→再回到對(duì)象字段值上不要一上來(lái)就翻權(quán)限對(duì)象。3.3 用一段ABAP快速核查角色里的權(quán)限對(duì)象PFCG界面逐條查看權(quán)限對(duì)象效率低遇到幾十個(gè)角色的批量巡檢根本看不完。我一般會(huì)在系統(tǒng)里放一個(gè)小報(bào)表直接用ABAP讀取角色權(quán)限數(shù)據(jù)表AGR_1251按角色名輸出對(duì)象和字段值清單。下面是一段可以跑的自定義報(bào)表代碼REPORT z_perm_check. PARAMETERS: p_agr TYPE agr_name OBLIGATORY, 角色名 p_obj TYPE xuobject. 權(quán)限對(duì)象留空表示全部 DATA: gt_out TYPE TABLE OF agr_1251. START-OF-SELECTION. SELECT * FROM agr_1251 INTO TABLE gt_out WHERE agr_name p_agr AND ( p_obj space OR object p_obj ). IF sy-subrc 0. LOOP AT gt_out INTO DATA(gs_out). WRITE: / gs_out-object, | , gs_out-field, | , gs_out-low, | , gs_out-high. ENDLOOP. ELSE. WRITE: / 未找到該角色的權(quán)限對(duì)象請(qǐng)檢查角色名. ENDIF.邏輯說(shuō)明報(bào)表從AGR_1251讀取指定角色下掛載的權(quán)限對(duì)象、字段、授權(quán)值LOW-HIGH區(qū)間輸出為逐行清單。p_agr為必輸參數(shù)p_obj為空時(shí)輸出該角色的全部對(duì)象如果要核查某個(gè)關(guān)鍵對(duì)象可以在p_obj里輸入對(duì)象名做精確篩選。參數(shù)說(shuō)明AGR_1251是角色權(quán)限數(shù)據(jù)的標(biāo)準(zhǔn)存儲(chǔ)表存的是PFCG里維護(hù)的字段級(jí)授權(quán)值不是用戶最終生效的完整授權(quán)因?yàn)橛脩魧?shí)際拿到的權(quán)限還需要結(jié)合參數(shù)文件生成狀態(tài)來(lái)看。這段代碼的用途是做“角色維護(hù)狀態(tài)”的快速巡檢比如一個(gè)大項(xiàng)目上線前檢查所有自定義維護(hù)角色是否都掛載了對(duì)應(yīng)的Y/Z對(duì)象比在SUIM里導(dǎo)報(bào)表快得多。運(yùn)行報(bào)錯(cuò)時(shí)先檢查角色名是否輸錯(cuò)或者對(duì)象名是否存在如果輸出為空但角色確實(shí)有權(quán)限多半是權(quán)限數(shù)據(jù)還沒(méi)生成參數(shù)文件用SUIM的角色比對(duì)報(bào)表確認(rèn)一下。4. 權(quán)限不足怎么排查SU53逆向定位要維護(hù)的對(duì)象4.1 SU53看缺失權(quán)限的標(biāo)準(zhǔn)動(dòng)作用戶報(bào)“權(quán)限不足”時(shí)第一動(dòng)作是讓用戶在報(bào)錯(cuò)界面停留直接輸入事務(wù)碼SU53。SU53會(huì)顯示當(dāng)前會(huì)話最近一次權(quán)限檢查失敗的對(duì)象、字段、期望值以及用戶實(shí)際擁有值。注意SU53只記錄“最后一次失敗的檢查”如果一個(gè)操作涉及多個(gè)權(quán)限對(duì)象檢查失敗SU53只會(huì)顯示最先失敗的那個(gè)。修完一個(gè)讓用戶重試如果繼續(xù)報(bào)錯(cuò)再看SU53——這時(shí)候顯示的才是下一個(gè)缺失項(xiàng)。SU53界面核心信息有三個(gè)缺失對(duì)象的名稱、缺失字段、期望值。比如用戶執(zhí)行某個(gè)報(bào)表時(shí)報(bào)錯(cuò)SU53顯示對(duì)象Y_MAT_MAINT字段ACTVT期望值02而用戶當(dāng)前的授權(quán)值只有03。這個(gè)信息直接指向維護(hù)方向給該用戶所在角色補(bǔ)上ACTVT02。排查的操作路徑是固定的用戶復(fù)現(xiàn)報(bào)錯(cuò)隨即執(zhí)行SU53記錄對(duì)象名、字段、期望值SU01打開(kāi)用戶主數(shù)據(jù)找到用戶掛的角色PFCG打開(kāi)對(duì)應(yīng)角色定位到該對(duì)象檢查字段值修正字段值、保存并生成參數(shù)文件用戶重新登錄驗(yàn)證。一個(gè)容易忽視的步驟SU53里的對(duì)象名記錄的是“檢查用的對(duì)象”如果你在PFCG角色里改的是“參數(shù)文件里的對(duì)象”要確認(rèn)兩者一致。曾經(jīng)遇到過(guò)角色里掛的是標(biāo)準(zhǔn)對(duì)象S_TABLE標(biāo)準(zhǔn)表維護(hù)檢查而SU53里報(bào)的是自定義對(duì)象說(shuō)明該事務(wù)碼在執(zhí)行時(shí)既檢查了標(biāo)準(zhǔn)對(duì)象又檢查了自定義對(duì)象缺哪頭補(bǔ)哪頭但不能只補(bǔ)一頭就收工。4.2 不同類型的失敗與處理優(yōu)先級(jí)權(quán)限檢查失敗的性質(zhì)不同處理策略也不同。把失敗類型分清楚能避免大量無(wú)效操作。失敗類型SU53表現(xiàn)處理優(yōu)先級(jí)對(duì)應(yīng)動(dòng)作對(duì)象整體缺失對(duì)象名不在用戶的任何授權(quán)數(shù)據(jù)里高PFCG手工添加對(duì)象或補(bǔ)事務(wù)碼后重新生成參數(shù)文件活動(dòng)值缺失對(duì)象在ACTVT期望值超出已有值高按業(yè)務(wù)需求補(bǔ)充活動(dòng)值字段值不匹配對(duì)象在、活動(dòng)值在但組織級(jí)別字段工廠/公司代碼值不覆蓋中調(diào)整字段授權(quán)范圍按數(shù)據(jù)范圍精確賦值參數(shù)文件未生成SU53顯示對(duì)象和值在角色里都有但用戶側(cè)生效數(shù)據(jù)沒(méi)有中重新生成參數(shù)文件并刷新權(quán)限緩沖我習(xí)慣的排查順序是對(duì)象有沒(méi)有→活動(dòng)值夠不夠→字段值對(duì)不對(duì)→參數(shù)文件生沒(méi)生成。這個(gè)順序是從“最可能翻車”到“最少見(jiàn)”排列的。實(shí)際工單里字段值不匹配的概率最高——尤其組織級(jí)別字段工廠、公司代碼、控制范圍。很多角色在PFCG里把組織級(jí)別字段默認(rèn)填成 * 看起來(lái)省事實(shí)際上埋了大雷一旦業(yè)務(wù)要求按工廠區(qū)分?jǐn)?shù)據(jù)權(quán)限你就得把 * 拆成具體值還要逐角色確認(rèn)有沒(méi)有被其他用戶借用了同一個(gè)角色。所以給維護(hù)類角色配組織級(jí)別時(shí)哪怕業(yè)務(wù)暫時(shí)沒(méi)提要求也建議按實(shí)際業(yè)務(wù)范圍填值不給后續(xù)留 * 的隱患。另一個(gè)高頻誤區(qū)看到SU53里報(bào)“ACTVT缺02”有人在角色里把這個(gè)對(duì)象的ACTVT直接改成 * 所有活動(dòng)值全部放開(kāi)。權(quán)限檢查確實(shí)能過(guò)但等于把刪除、打印等可能不該開(kāi)放的動(dòng)作全放開(kāi)了。處理原則是“補(bǔ)最少的活動(dòng)值滿足本次需求”不是“放開(kāi)最大值讓報(bào)錯(cuò)消失”。5. 維護(hù)權(quán)限對(duì)象的五個(gè)常見(jiàn)坑現(xiàn)象、原因、解法5.1 改了角色沒(méi)生成參數(shù)文件用戶側(cè)權(quán)限不更新現(xiàn)象PFCG里角色權(quán)限對(duì)象字段值已經(jīng)改好并保存用戶重新登錄后仍報(bào)同樣的權(quán)限不足。原因角色保存和數(shù)據(jù)打包是兩個(gè)動(dòng)作。“保存”只寫(xiě)了PFCG的角色數(shù)據(jù)表“生成參數(shù)文件”才把權(quán)限數(shù)據(jù)寫(xiě)入用戶授權(quán)目錄。漏掉生成參數(shù)文件用戶拿到的永遠(yuǎn)是舊的參數(shù)文件內(nèi)容。解決返回到PFCG執(zhí)行“生成參數(shù)文件”確認(rèn)日志無(wú)錯(cuò)誤后再通知用戶重試。如果是批量改動(dòng)用“批量生成參數(shù)文件”的事務(wù)碼按角色范圍一次處理同時(shí)提醒用戶重新登錄以刷新權(quán)限緩沖。5.2 復(fù)制標(biāo)準(zhǔn)對(duì)象創(chuàng)建自定義對(duì)象帶上多余字段現(xiàn)象新建的Y/Z權(quán)限對(duì)象在PFCG里掛到角色后出現(xiàn)當(dāng)初沒(méi)打算限制的字段業(yè)務(wù)顧問(wèn)填寫(xiě)角色權(quán)限時(shí)被多出來(lái)的必填項(xiàng)卡住。原因通過(guò)“復(fù)制對(duì)象”方式創(chuàng)建新對(duì)象字段列表和活動(dòng)值會(huì)從源對(duì)象帶過(guò)來(lái)。標(biāo)準(zhǔn)對(duì)象常含多個(gè)組織級(jí)別字段復(fù)制后沒(méi)有清理就直接保存了。解決SU21打開(kāi)對(duì)象逐條檢查權(quán)限字段列表刪除不需要的字段如只做表級(jí)維護(hù)就不需要保留成本中心字段同時(shí)清理ACTVT里未使用活動(dòng)值。改完重新保存到PFCG里刷新該對(duì)象的所有引用角色并重新生成參數(shù)文件。5.3 活動(dòng)值只給了03顯示保存和修改全部報(bào)錯(cuò)現(xiàn)象維護(hù)角色時(shí)只勾了03顯示用戶打開(kāi)界面看數(shù)據(jù)正常一點(diǎn)“新建”或“保存”就提示權(quán)限不足。原因自定義維護(hù)類程序的權(quán)限檢查通常把“顯示”和“維護(hù)”分開(kāi)處理。03只放行顯示動(dòng)作02修改、01新增、06刪除都沒(méi)有授權(quán)。解決SU53確認(rèn)缺失的活動(dòng)值后在PFCG權(quán)限頁(yè)對(duì)應(yīng)該對(duì)象的ACTVT字段補(bǔ)勾業(yè)務(wù)需要的動(dòng)作值。維護(hù)類角色的常見(jiàn)組合030102和0302分別對(duì)應(yīng)錄入型與變更型業(yè)務(wù)不要只圖省事勾一個(gè)03。5.4 自定義對(duì)象在SUIM權(quán)限報(bào)表里查不到現(xiàn)象SUIM里按對(duì)象類展開(kāi)找不到自己創(chuàng)建的維護(hù)對(duì)象也沒(méi)法通過(guò)SUIM統(tǒng)計(jì)“哪些角色用到了這個(gè)對(duì)象”。原因創(chuàng)建對(duì)象時(shí)沒(méi)有選擇對(duì)象類或選擇了不常用的對(duì)象類導(dǎo)致被折疊在錯(cuò)誤分組里。SUIM默認(rèn)按對(duì)象類顯示對(duì)象樹(shù)對(duì)象類為空或非規(guī)范命名時(shí)對(duì)象不會(huì)出現(xiàn)在預(yù)期位置。解決回到SU21修改對(duì)象類維護(hù)為自定義開(kāi)發(fā)專用的對(duì)象類如“XX自定義”。如果之前已經(jīng)用不規(guī)范對(duì)象類分散建了多個(gè)對(duì)象統(tǒng)一遷移到同一對(duì)象類下再做批量角色比對(duì)。提交到傳輸請(qǐng)求時(shí)確認(rèn)對(duì)象類包含在傳輸范圍內(nèi)避免目標(biāo)系統(tǒng)里對(duì)象類丟失導(dǎo)致報(bào)表可見(jiàn)性不一致。5.5 文檔里寫(xiě)的老對(duì)象名和系統(tǒng)實(shí)際狀態(tài)對(duì)不上現(xiàn)象按權(quán)限文檔里的對(duì)象名去PFCG里找發(fā)現(xiàn)對(duì)象名不存在改文檔里指定的事務(wù)碼結(jié)果實(shí)際系統(tǒng)里事務(wù)碼對(duì)應(yīng)的對(duì)象已是大范圍授權(quán)版本。原因文檔停留在項(xiàng)目上線初期后面開(kāi)發(fā)迭代改了對(duì)象名或擴(kuò)展了對(duì)象字段但維護(hù)記錄沒(méi)有同步。新接手的人按舊文檔操作改完的角色要么權(quán)限缺失、要么權(quán)限超范圍。解決讓文檔和系統(tǒng)生成關(guān)聯(lián)。常見(jiàn)做法是定期用SU22/SUIM導(dǎo)出“對(duì)象-事務(wù)碼引用清單”和“角色-對(duì)象分配清單”覆蓋到文檔的附錄里系統(tǒng)為準(zhǔn)、文檔為輔。每次SU21有變更立刻更新對(duì)應(yīng)的對(duì)象描述和引用角色清單變更記錄寫(xiě)清日期、原因、影響角色不接受“改完系統(tǒng)就行、文檔后期再補(bǔ)”的習(xí)慣。6. 把維護(hù)經(jīng)驗(yàn)沉淀成一份能交接的權(quán)限對(duì)象文檔標(biāo)題里的.doc不是隨手起的。權(quán)限維護(hù)最怕的不是技術(shù)難點(diǎn)而是交接斷檔人走了經(jīng)驗(yàn)全在腦子里系統(tǒng)里只有一堆對(duì)象名和角色名誰(shuí)也不敢動(dòng)。所以最終落點(diǎn)是一份能交接的文檔。一份夠用的維護(hù)權(quán)限對(duì)象文檔至少包含三個(gè)部分。第一部分是對(duì)象清單對(duì)象名、對(duì)象文本、對(duì)象類、權(quán)限字段、可選活動(dòng)值、狀態(tài)有效/停用、備注里寫(xiě)清對(duì)應(yīng)表和程序名。第二部分是角色對(duì)照哪些角色掛了這個(gè)對(duì)象每個(gè)角色上該對(duì)象的字段值是多少組織級(jí)別字段是具體值還是 * 最后生成參數(shù)文件的時(shí)間。第三部分是變更記錄每次變更的日期、操作人、變更原因、影響范圍、是否已同步角色。這三部分之外再附一張SUIM導(dǎo)出的“對(duì)象-事務(wù)碼引用報(bào)表”作為系統(tǒng)快照。更新文檔的時(shí)機(jī)要固化到操作習(xí)慣里。我自己的規(guī)則是“SU21里動(dòng)一下文檔就動(dòng)一下”。改對(duì)象文本、加字段、停用對(duì)象都屬于必須同步的變更只改PFCG角色字段值時(shí)改動(dòng)記入角色對(duì)照表的變更記錄里。這樣可以保證三個(gè)月后有人問(wèn)“這個(gè)對(duì)象為什么多了一個(gè)工廠字段”翻文檔能直接回答而不是靠回憶。文檔和系統(tǒng)的校驗(yàn)手段也很簡(jiǎn)單季度跑一次SU22反向引用報(bào)表把對(duì)象清單和引用事務(wù)碼逐項(xiàng)比對(duì)發(fā)現(xiàn)文檔里沒(méi)記錄的新引用就追查來(lái)源再跑一次角色分配報(bào)表確認(rèn)沒(méi)有“文檔標(biāo)記停用但角色還在用”的對(duì)象。整個(gè)過(guò)程半小時(shí)以內(nèi)卻能防住最昂貴的生產(chǎn)事故——權(quán)限對(duì)象被誤改波及十幾個(gè)角色。我最后想說(shuō)的是別低估這一頁(yè)紙的價(jià)值。一次版本升級(jí)后自定義權(quán)限對(duì)象被覆蓋當(dāng)時(shí)系統(tǒng)里幾十個(gè)角色的權(quán)限數(shù)據(jù)全部指向了舊對(duì)象定義整個(gè)團(tuán)隊(duì)花了兩個(gè)晚上逐角色核對(duì)。如果當(dāng)時(shí)那份對(duì)象清單文檔是新的問(wèn)題半小時(shí)就能定位?,F(xiàn)在我每次改完對(duì)象都先跑一遍報(bào)表再更新文檔十分鐘的維護(hù)換來(lái)后面幾小時(shí)不加班這筆賬怎么算都值。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取