SAP Validation和Substitution

来源:互联网 发布:网络打印机主机有密码 编辑:程序博客网 时间:2024/05/29 10:47
先来看看Validation的简单应用:当用户LI_J输入Item金额大于10000时,系统提示Error信息。
1.1.新建Validation(T-code:GGB0)
如图1-1
[1].选择只在凭证头BKPF回车或保存时触发凭证的有效性检查。
[2].选择凭证头BKPF或行项目BSEG做先决条件,而CHECK时只能是行项目BSEG的有效性检查。
[3].选择在凭证头BKPF或行项目BSEG回车或保存时触发凭证的有效性检查。
1.2.选择Line item,新建Validation: ZCALI1
输入Message ID(系统要求输入以Z开头的,实际上就是自定义的,本例中自定义ZFI
1.3.点击‘step’,新建step001
如图1-3
[1].先决条件,即当什么情况下,系统才启用有效性检查,可以用Company Code, User ID, T-code等等作为先决条件。
[2].检查,即当先决条件满足的情况下,系统开始根据此处设定的检查条件进行有效性检查,不满足此处的设定,系统就提示message。
[3].消息,即当系统检查到输入的凭证满足设定的检查条件时,将要提示的信息(可自定义)。
1.4.双击Prerequest,输入先决条件:User = ‘LI_J’。
如图1-4,输入先决条件有三种方式:
[1].表栏位,当选择Line Item方式时,系统允许选择凭证头BKPF,凭证行项目BSEG及系统表SYST的栏位值作为先决条件,当然这些栏位的值规则可以通过右边的运算符等输入。如果你够厉害,也可通过菜单改到Export Mode直接输入。
[2].规则,可以新建一个先决条件的规则(如河建就省了吧),其时输入规则也就跟[1]差不多,只不过建立规则后,其它的Validation都可以直接用了。
[3].出口,这个可以用于更复杂一点的应用,接下来会举例说明。
[4].就是我们的先决条件,即当用户是‘LI_J’时,系统启用有效性检查。
1.5.双击Check,输入Check条件:Amount in LC <= ‘10000.00’。
1.6.双击Message,如图1-6
[1].选择type:E,都知道是Error了吧,即不允许过的。
[2].number:001(自己定义的,你也可以用911,这样较吓人点)
这样一个简单的Validation就完成了。
1.7.我们设定这个Validation的激活状态。(OB28)
如图1-7
[1].Callup Point,什么东东?简单来讲就是激活点,共三种:凭证头,凭证行项目和整个凭证,对应前面的设定,应为我们之前设定的是凭证行项目,所以这里选2。
[2].检查,选择我们之前新设定的Validation:ZVALI1。
[3].激活状态,共三种:0不激活(NND,忙活了半天,不激活玩什么?),1激活,2除批输入的激活。
1.8.保存后,输入凭证进行验证。(FB50,当然也可以用FI的其它T-code)
如图1-8,当用户LI_J输入金额[1]10001大于设定的10000时,系统做出错误提示,并不允许posting。
好了,现在有这样一种情况,供应商对同一笔费用的发票,隔三岔五的发一次过来,而我们粗心的入账人员呢有不去review一下,收到发票就入账,结果重复的付款给人家(你说这样的供应商也有,挺聪明,不管有意还是无意,蒙得到一次算一次,而这样的员工也有,也难怪,整天那么多付款,谁记得这个发票之前供应商有没有给过啊,NND)。现在老大发现了,你系统就不能管一下吗?我输入同样的供应商发票时给我检查一下嘛,这时简单的Validation就不好用了,解决的思路如下:
入账时将供应商发票输入到凭证头的reference栏位,系统check这个号码是否已存在,如果存在则提示错误信息给用户,以核查。Validation启用exitcheck,配置如下:
2.1.新建Validation:ZVALI2 (T-code:GGB0),因reference在凭证头,所以我们选择在Document Header建立Validation即可。
2.2.点击‘step’,新建step:001
2.3.双击Prerequest,输入先决条件:Company Code = HK10’(当然还可以加更多的先决条件)。
2.4.双击Check,输入检查条件,这里我们就选择[1]exit:U100
2.5.双击Message,如图2-5
2.6.我们设定这个Validation的激活状态。(OB28)
至此,Validation设定好了,但我们的exit:U100在哪里呢?
2.7.接下来找到exit所用到的程序。(GCX2)
如图2-7
[1].GBLR是for Validation的。
[2].GBLS是for Substitution的。
2.8.Copy 程序:RGGBR000 to ZRGGBR000并编辑判断reference重复的代码。(SE38
找到程序中FORMU100输入以上check代码保存并激活。
2.9.保存后,修改exit指定的程序为ZRGGBR00。(GCX2
2.10.保存后,输入凭证进行验证。(FB60,当然也可以用FI的其它T-code
因之前已book了一笔reference为755的发票了,所以系统提示错误信息并不能posting。
 
 
转载自:http://www.cio360.net/h/1784/336645-10872.html
0 0
原创粉丝点击