参考了FICO 里面的替代和校验 以及调试_fico bte增强调试-CSDN博客和SAP ABAP FI行项目替代与完全凭证替代 区别_rggbs000-CSDN博客会计凭证完全凭证替代出口 - 豆丁网
对财务的替代和校验做一下总结 。
1、执行顺序:先行项目替代后完全凭证替代然后执行校验。
区别 :F-02回车即执行行项目替代,保存凭证触发完全凭证替代 。
VF01/MIRO/AFAB BADI AC_DOCUMENT VF01/MIRO/HR 不经过GGB1的替代,所以可能需要对BADI: AC_DOCUMENT , BTE 或者POST_DOCUMENT 进行增强
一、替代和校验的作用
校验( validation ) :在凭证保存前根据设置条件判断此凭证是否有效,其中可以按抬头、行项目或者完全凭证来判断,后再根据valication 设置的消息消息类型决定凭证是否允许保存。
SAP 校验是对在系统输入的 数据按照规则设定检验是否正确,可以按抬头、行项目或完全凭证来判断,然后根据validation 设置的消息类型决定凭证是否允许保存,(取消、错误、警告、信息 ),通过事物代码OB28和GGB0实现。
事务步骤:
1、SE38 将RGGBR000复制为ZRGGBR000,
2、事务GCX2,维护应用区域GBLR推出程序ZRGGBR000,
3、GGB0维护有效性校验
4、GGB4/OB28 激活有效性验证,分配公司代码
替代( substitution ) : 在凭证保存前根据设置条件判断此凭证是否生效,然后根据替代规则将原有的字段替换成当前的字段。
SAP 替代是对某个字段或者内容根据一定的条件判断后替换设定的值,该替代量可以是一个常量值,也可以是变量,还可以通过出口form来完成替换,通过OBBH和GGB1实现。
事务步骤:
1、SE38 将RGGBS000复制为ZRGGBS000,
2、事务GCX2,维护应用区域GBLR推出程序ZRGGBS000,
3、GGB0维护有效性校验
4、GGB4/OBBH 激活替代,分配公司代码
校验和替代的区别: 确认是在按条件判断的时候直接做校验,举个例子说,如果一个凭证不符合确认的校验规则,那么就出现提示。而替代,是直接替换成新值。
二、总结:
SAP标准并不是所有字段都可以完成替代和校验的
SE11 ( GB01 ) 可以查看哪些字段可以完成凭证抬头、行项目、完全凭证替代或校验;
如果SAP标准不能用于替代或验证字段可以通过SM30(V_GB01C)修改该字段,使其可以用于替代或验证;
FI自动替代(substitution)时怎样把BESG表里的某个字段放出来:SM30->VWTYGB01,SE16N GB01 编辑可替代字段 EXCLUDE= 'X'改为GB01-BEXCLUDE = ' '(把X去掉),
验证或替代**后,SE38运行程序RGUGBR00生成替代和验证程序代码;
三、替代和校验怎么调试:
替代:GGB1;单击创建的替换,输入 =SHCB , 回车
校验:GGB0,单击创建的校验,输入 =SHCD , 回车
替代和校验出口:
添加替代出口form的search help
在复制出来的 ZRGGBS000中添加title。
在 get_exit_titles 中添加如下代码。
然后如果替换的是单个字段
行项目替代时 ,代码里面是bseg 不是内表 ,是工作区的概念。
实际调试时,时填写一行替代一行
仅当是完全凭证替代时的bseg才是内表
四、补充
1、替代的三种方法
1)、常量
是指满足条件时,指定这个字段的内容为定值
2)、退出
是指留出出口,ABAPer对这个字段进行处理
3)、字段-字段分配
是指将一个已经有的字段内容,赋给需要替代的内容。
2、c_exit_param_none,c_exit_param_field,c_exit_param_class 区别
c_exit_param_field -- 只能用于此字段的修改,只能用于替代,并且是以字段为返回
c_exit_param_field,c_exit_param_class 都是可以用于规则,确认,和替代,而且是以内表,结构的形式进行替代。
但是c_exit_param_field,c_exit_param_class 是以形式参数的替代,
必须使用 PERFORM us901 USING p_budat / t_bseg 等。
c_exit_param_none 则不用。
3、新增替代的时候选择字段还是出口
唯一退出只可以选择c_exit_param_class,同时这部分只能用于完全凭证的替代,不能使用FI和LC凭证
完成后 执行se38 RGUGBR00 激活 替代和校验