【轉載】替代(substitution)例項教程-FB60中替代文字
替代(Subtittution)是FI模組中常用的一種增強技術。在憑證儲存之前,如果滿足替代的先決條件(Prerequiste),憑證中的擡頭和行專案中的欄位可以被替代成新值。
替代有以下特點:
1)替代是在FI中另外一種增強-校驗(Validation)之前執行的
2)替代中不能丟擲錯誤訊息,錯誤訊息可以寫在校驗(Validation)中
3)替代分三種:
- 固定值(constant)--替代成固定值
- 欄位賦值(field assignment)--替代成另外一個欄位
- 出口(User Exit)--在出口中可以寫一段替代邏輯
4)優先順序:OKB9預設設定 > 替代GGB1 > 螢幕手工輸入
2, 例項教程
2.1 場景介紹
FB60中通過exit替代之前的文字,
SE11中,
FB60中,
2.2 建立替代(substitution)
tcode:GGB1 建立一個替代,SGTXT欄位是在行專案上,所以要在line item上建立。輸入替代名字和描述
2.3 建立Step
點選step按鈕,在跳出的視窗中選擇需要替代的欄位sgtxt
接著選擇替代的種類,這裡選擇複雜一點的exit,
建立一個step的先決條件(prerequisite),先決條件可以是以下幾種:
1)表字段判斷(table field)
2)規則(rule)
3)出口(exit)
這裡新增一個供應商的判斷,只有供應商是’CN543194‘的才替代,
然後選擇vendor欄位,點選 ’=‘號
最後點選constant輸入供應商的固定值’CN543194‘,
條件就建立好了,如下:
然後再建立exit,輸入exit的名字後儲存,發現狀態列報錯’User exit U_001 not declared in form pool YAF_SUBEXIT‘
提示要在YAF_SUBEXIT中定義exit U_001.
2.4 定義exit
2.3 中的YAF_SUBEXIT是怎麼來的呢?YAF_SUBEXIT是copy標準程式RGGBS000,並通過Tcode GCX2配置的,
Tcode: GCX2,可以看到GCX2中替代配置的正是YAF_SUBEXIT,
在YAF_SUBEXIT中定義exit U_001,程式碼如下:
在form get_exit_titles 中:
1 2 3 4 |
exits-name = 'U_001'. exits-param = c_exit_param_field. exits-title = 'TEXT'. "Text APPEND exits. |
在exit U_001中新增程式碼
1 2 3 4 5 |
FORM u_001 USING c_sgtxt type bseg-sgtxt . c_sgtxt = 'This is a test'. ENDFORM. |
這樣替代就建立完了,但是還不能用,沒有啟用
2.5 啟用替代
Tcode OBBH,啟用替代,
callpnt 選擇2
active level:
3, 測試
FB60當所有必輸欄位都輸入後才會呼叫替代,如下: