FavoriteLoading
0

替代(substitution)实例教程-FB60中替代文本

[隐藏]

1, 替代介绍

替代(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 中:

2016-09-19_16-30-57

在exit U_001中添加代码

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

以上。