GGB0/OB28/OKC7/GGB1/OBBH/OKC9 FICO增強(轉)
FICO的增強通常包括替代和有效性檢查,替代的目的是根據自定義邏輯替換憑證的字段內容,而有效性檢查顧名思義就是對憑證的內容進行檢查,常用Tcode包括:
GGB0/OB28/OKC7:全部/FI/CO有效性檢查
GGB1/OBBH/OKC9:全部/FI/CO替代
GGB4:ALL Rule Class
GS01:配置集
http://wenku.baidu.com/view/043ea6fb700abb68a982fb41.html
*以下增強均包括替代和有效性檢查。
以憑證有效性檢查為例,目前,很多企業在不同的項目為不同的模塊滿足不同的校驗需求建立了大量的檢查步驟,有的竟多達上百個步驟,給后續維護帶來很大不便, 常見的問題有:在檢查的先決條件中比如寫死會計科目/成本中心等條件造成新增科目或成本中心遺漏檢查;由於有效性檢查(或替代)是覆蓋性傳輸,造成后續增加步驟由於難於找到和生產機同步的配置而不得不直接在生產系統中操作, 在集中ERP服務器中該問題尤其突出。
那么,如何避免過多的FICO增強步驟? 本人覺得可以通過規范使用增強達到目的,參考做法如下:
(1).事先規划好有效性檢查步驟,每個步驟的檢查使用Exit(Exit被譯為圖1的”退出”)例程,例程可按集團公用還是企業私有划分,如集中服務器分”企業有效性檢查例程”U800和”公用有效性檢查例程”U900倆例程,將所有的有效性檢查邏輯全部放在此兩例程,如集團BCS項目相關會計科目過帳合並事務類型必輸校驗,實際上對所有企業邏輯是一樣的,可以放在公用例程U900中;再如集團會計基礎項目的自動會計憑證根據不同憑證類型的自動行文本摘要替代,也可放在公用例程U900,也就是說每個企業的FICO憑證檢查和替代,將只能看到對應公共和私有例程的2個步驟,這樣在后續的校驗或替代邏輯增加中,只需修改例程就行。
或者,按不同主題划分增強步驟,例如,有的企業為了給ERP自動集成憑證替代行項目文本,每種憑證類型1個替代步驟,造成了一大堆的替代步驟,實際上只需建立1個比如叫”行文本替代”的主題步驟+1個行文本替代例程就可,可以非常方便地將其他企業的邏輯復制過來使用。
(2).禁止企業隨意新增步驟,避免憑證檢查和憑證替代的使用混亂和后續維護的困難。
下面以BCS項目檢查相關科目合並事務類型必輸為例說明如何增強的規划使用,步驟如下:
(一).首先,如圖1,建立1個科目“合並事務類型必輸”主題步驟, 當然,為了避免增強步驟過多,可以建立1個更大的如叫”科目記帳檢查”的主題步驟,注意圖1中檢查使用的是U900例程。
(二).在例程中盡量使用可配置的邏輯代碼,我們應該從可配置性的SAP系統中學習並應用好這點。
(三).科目設置可使用Tcode:KDH1或GS01建立科目集,以應交稅費科目必須輸入合並事務類型C00(稅金-年初未交(退)數)、C01(稅金-本期應交(退)數)、C11(稅金-本期已交數-本年)或C12(稅金-本期已交數-非本年)為例,首先KDH1建立科目組ZSWLX_YJSF,該科目組的科目由用戶自行定義,接下來只需要在U900編寫以下參考代碼就可檢查應交稅費科目的合並事務類型必須輸入且必須以C開頭。
FORM U900 USING B_RESULT. Data: i_hkont like bseg-hkont, i_swlx1(1), i_setname like setleaf-setname . *檢查科目在相關科目集合中才做校驗 select single setname into i_setname from setleaf where valfrom = bseg-hkont and setname like 'ZSWLX%' . check sy-subrc eq 0 . i_swlx1 = bseg-bewar+0(1). case i_setname . *應交稅費類科目過帳時其事務類型必須是C開頭 when 'ZSWLX_YJSF' . if i_swlx1 = 'C'. b_result = b_true. else. b_result = b_false. endif. * When … endcase . ENDFORM . |
同樣,如果需要判斷應付職工薪酬科目必須輸入I開頭的事務類型,只需要增加如下代碼就可。
*職工薪酬類科目事務類型必須是I開頭
when 'ZSWLX_ZGXC'.
if i_swlx1 = 'I'.
b_result = b_true.
else.
b_result = b_false.
endif.
endcase .
這種使用例程的增強好處非常明顯,按主題管理的增強步驟非常明晰;新增檢查邏輯時只需修改例程就行,方便維護;可配置的科目在科目發生變化時無需重傳請求等,遺憾的是,目前我們很多企業在實施ERP時並未在意FICO增強的統一規划,多數企業的FICO增強使用都比較混亂,說白了,就是隨時隨意增加步驟,給后續維護帶來不小麻煩。
例程的增強有個小小的缺點,就是需具備基本的ABAP知識,這不是什么問題,作為顧問和關鍵用戶,了解基本的ABAP知識應是必須的,況且,在多數增強中,我們往往只是簡單復制代碼稍事修改。
---------------------------------------------------------------------------------------------------------------
目前BCS項目中需進行合並事務類型必輸檢查的完整的代碼如下表:
FORM U900 USING B_RESULT. Data: i_hkont like bseg-hkont, i_swlx1(1), i_setname like setleaf-setname . select single setname into i_setname from setleaf where valfrom = bseg-hkont and setname like 'ZSWLX%' . check sy-subrc eq 0 . i_swlx1 = bseg-bewar+0(1). case i_setname . *資產減值類科目事務類型必須是A開頭,注意AM集成類科目 when 'ZSWLX_ZCJZ'. if i_swlx1 = 'A'. b_result = b_true. else. b_result = b_false. endif. *應交稅費類科目事務類型必須是C開頭 when 'ZSWLX_YJSF' . if i_swlx1 = 'C'. b_result = b_true. else. b_result = b_false. endif. *長期借款類科目事務類型必須是F開頭 when 'ZSWLX_CQJQ'. if i_swlx1 = 'F'. b_result = b_true. else. b_result = b_false. endif. *長期應付款科目事務類型必須是G開頭 when 'ZSWLX_CQYF'. if i_swlx1 = 'G'. b_result = b_true. else. b_result = b_false. endif. when 'ZSWLX_DYSY'. *遞延收益類科目事務類型必須是H開頭 if i_swlx1 = 'H'. b_result = b_true. else. b_result = b_false. endif. *職工薪酬類科目事務類型必須是I開頭 when 'ZSWLX_ZGXC'. if i_swlx1 = 'I'. b_result = b_true. else. b_result = b_false. endif. endcase . ENDFORM . |
******************************************************************************************************************************************************************************
SAP的確認與替代
文/SAP方丈
1.確認與替代的作用
確認(Validation):在憑證保存前根據設置條件判斷此憑證是否有效,其中可以按抬頭、行項目或完全憑證來判斷,然后再根據Validation設置的消息類型決定憑證是否允許保存。
替代(Substitution):在憑證保存前根據設置條件判斷此憑證是否有效,其中可以按抬頭、行項目或完全憑證來判斷,然后根據替代規則把原有字段替換當前字段。
確認和替代的區別: 確認是在按條件判斷的時候直接做校驗,舉個例子說,如果一個憑證不符合確認的校驗規則,那么就出現提示。而替代,是直接替換成新值。講到這里還是不得不舉個例子來說明一下。
例子:發票校驗時如果憑證無文本則系統提示“請輸入合同號碼”。確認功能,系統按字段是否為空為檢查條件,如為空校驗后在憑證保存時出現上述信息。替代功能,同上,只是在憑證保存時直接把文本字段換成相應的信息。但不是所有的替代都可以用(比如憑證預制)這些可以通過GB01來查看。
2.確認與替代的操作
常用T-code:OB28:AP/AR/GL| OAZ1:AM|GCVW:Global Validation
下面以一個憑證校驗必須輸入0-9999之間的數字的實例來解釋一下確認的與替代的操作。
【圖】1 是可以對文檔抬頭控制。其只可選BKPF字段和只在憑證頭回車或保存憑證觸發。
【圖】2 是可以對行項目進行控制。校驗的時候是校驗行項目。其先決條件可選BKPF和BSEG,但是Check只能選BSEG字段,否則不被觸發。
【圖】3 是完全控制。其回車和保存都觸發。
RULE:就是說可以建立一個規則,那么這個規則可以任意被任意調用,有一點像公用的意思。
【圖】2 這就是讓選字段,同時看【圖】4,不光是可以選TABLE還可以選RULES,還記得RULES吧,我前面已經講過的,當然有EXIT就更好了(T-code:CMOD可以建立)
【圖】3 各種選擇條件,阿拉最喜歡的。
先決條件:Reference <> ''
檢查:Reference >= '0' AND Reference <= '9999'
信息:輸入號碼。
MESSAGE TYPE,我們可以控制是警告還是報錯。MESSAGE NUMBER是輸入信息是什么? 要記得激活哦。來看看效果吧~~~
【圖】1輸入了超出0-9999的范圍【圖】2報錯“SAP方丈”。
替代操作和確認完全一樣,下面把常用事務代碼寫一下。大家再去自己摸索摸索吧。
GGB0: All Validations. GGB1: All Substitutions GGB2: All Rule ClassGGB4: 激活
******
檢查案例:mb1a 記賬時檢查成本中心是否屬於公司 (可以 跨公司用成本中心 ) 。
GGB0 :確認和替代 。
*****************************************
標簽: sap替代校驗 |
分類: ERP、MES與企業信息化 |
SAP校驗是對在系統輸入的數據按照規則設定檢驗是否正確,可以按抬頭、行項目或完全憑證來判斷,然后根據Validation設置的消息類型決定憑證是否允許保存(取消、錯誤、警告、信息),通過事物碼OB28和GGB0實現。
校驗步驟:
1、事務代碼SE38,將程序 RGGBR000復制為ZRGGBR000
2、事務代碼GCX2,維護應用區域GBLR退出程序ZRGGBR000
3、事務代碼GGB0,維護有效性驗證。
4、事務代碼GGB4/OB28,激活有效性驗證。
SAP替代是指對某個字段或某個內容根據一定的條件判斷后替代設定的值,該替代值可以為一個常量值,也可以為變量,根據實際業務而定,替代通過事物碼OBBH和GGB1實現,其中可以按抬頭、行項目或完全憑證來替換。
替代步驟:
1、事務代碼SE38,將程序 RGGBR000復制為ZRGGBR000
2、事務代碼GCX2,維護應用區域GBLS退出程序ZRGGBR000
3、事務代碼GGB1,維護替代。
4、事務代碼GGB4/OBBH,激活替代。
總結:
- SAP標准並不是所有字段都能用與替代或驗證;
- SE11(GB01)可以查看那些字段可以用與憑證抬頭、行項目、完全憑證替代或驗證;
- 如果SAP標准不能用於替代或驗證字段可以通過SM30(V_GB01C)修改該字段,使其可以用於替代或驗證;
- 驗證或替代激活后,SA38運行程序RGUGBR00生成替代和驗證程序代碼;
- SE11(GB31)可以查看不同應用范圍有那些驗證或替代調用點可用;
- RGUGBR00生成替代和驗證程序代碼包含在程序GBTAAFI0中;




SAP替代邏輯被廣泛應用於各模塊,分為抬頭,行項目和完全憑證替代.
替代substitution,使用事務碼:OBBH /GGB1
1)替代指用戶在集成憑證或手工輸入數據到SAP系統時用另一個值代替某值.
2)替代在驗證/校驗前執行GGB0/OB28.
3)替代沒有錯誤信息,直接寫入替換值,可寫出口程序.
4)替代可以在用戶輸入數據時方便地使用 確認與替代的操作
最后記住激活替代GGB4/OBBH
OKB9默認設置優先權大於替代 GGB1,替代優先權大於手工輸入
對於新增的需要在替代中運用的字段,必須將表GB01中此字段激活(BEXCLUDE排除去掉選擇),並且再次運行程序RGUGBR00激活!
內容詳解:
SAP所有模塊的替代字段都由表GB01控制。
所謂releasefields for substitution,就是在對應的BOOLCLASS中添加該字段,或者將該字段的GB01-BEXCLUDE= 'X'改為GB01-BEXCLUDE = ' '。
BOOLCLASS(Boolean class)對於FI/CO,BOOLCLASS對應的是調用點:
BOOLCLASS = 008 at callup point 1 憑證抬頭替代
BOOLCLASS = 009 at callup point 2 憑證行項目替代
BOOLCLASS = 015 at callup point 3 完全憑證替代
對於調用點3 完全憑證替代,SAP缺省的是未激活即release所有的字段,因為GB01有如下行項目內容:
BOOLCLASS CLASSTYPE BCLTAB BCLFIELD BEXCLUDE
0015 S BKPF * X
0015 S BSEG * X
所以,完全憑證替代,你會得到如此信息-"此事件可以不替換任何字段"。
解決步驟如下:
1. 確認你已經閱讀並了解Note 42615-Substitution in FI和391309 - GB01Boolean class 015: FI subst. for call-up point 3。
2. 嘗試你需要替代的字段是否可以在調用點1 抬頭或2 行項目實現。
3. 如果第二步失敗,修改表GB01,將相應記錄刪除或將最后字段置空:
如果是抬頭字段,刪除“0015 S BKPF * X”,添加所需字段;
如果是行項字段,刪除“0015 S BSEG * X”,添加所需字段。
由於表GB01不可(通過配置)修改,你需要寫一段小程序或有相應改表的權限。
4. 運行程序RGUGBR00重新激活替代。
5. 重新維護OBBH。