1. 程式人生 > >【轉載】替代(substitution)例項教程-FB60中替代文字

【轉載】替代(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中,

2016-09-19_15-34-05

FB60中,

2016-09-19_15-34-54

 

2.2 建立替代(substitution)

tcode:GGB1 建立一個替代,SGTXT欄位是在行專案上,所以要在line item上建立。輸入替代名字和描述

2016-09-19_15-35-56

2.3 建立Step

點選step按鈕,在跳出的視窗中選擇需要替代的欄位sgtxt

2016-09-19_15-37-12

接著選擇替代的種類,這裡選擇複雜一點的exit,

2016-09-19_15-38-53

建立一個step的先決條件(prerequisite),先決條件可以是以下幾種:

1)表字段判斷(table field)

2)規則(rule)

3)出口(exit)

這裡新增一個供應商的判斷,只有供應商是’CN543194‘的才替代,

2016-09-19_15-52-18

然後選擇vendor欄位,點選 ’=‘號

2016-09-19_15-55-08

最後點選constant輸入供應商的固定值’CN543194‘,

2016-09-19_15-56-33

條件就建立好了,如下:

2016-09-19_15-59-07

然後再建立exit,輸入exit的名字後儲存,發現狀態列報錯’User exit U_001 not declared in form pool YAF_SUBEXIT‘

提示要在YAF_SUBEXIT中定義exit U_001.

2016-09-19_16-17-00

2.4 定義exit

2.3 中的YAF_SUBEXIT是怎麼來的呢?YAF_SUBEXIT是copy標準程式RGGBS000,並通過Tcode GCX2配置的,

2016-09-19_16-26-34

Tcode: GCX2,可以看到GCX2中替代配置的正是YAF_SUBEXIT,

2016-09-19_16-21-38

在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.

2016-09-19_16-30-57

在exit U_001中新增程式碼

 

1

2

3

4

5

FORM u_001 USING c_sgtxt type bseg-sgtxt .

c_sgtxt = 'This is a test'.

ENDFORM.

2016-09-19_16-38-38

這樣替代就建立完了,但是還不能用,沒有啟用

2.5 啟用替代

Tcode OBBH,啟用替代,

2016-09-19_16-43-25

callpnt 選擇2

2016-09-19_16-46-39

active level:

2016-09-19_16-47-01

3, 測試

FB60當所有必輸欄位都輸入後才會呼叫替代,如下:

2016-09-19_16-51-02