[1]E表示消息定义为错误类别,此时不可保证凭证,I,W类别只是给出信息和警告,允许凭证保存,如选A,则会退出当前Tcode操作.
[2]用户可使用 Tcode:SE91字定义的Message Class(图7-7).
[3].在此选择了消息号017使用了俩参数(&),&表示在实际弹出消息时能使用实际值取代&.
[4].使用消息变量.
图7-8表示用户STONEF在使用FB50手工记帐时,Local currency amount>1000 时出现的错误(Validation ZSTLINE生效,消息的俩&参数被BKPF-USNAM和BSEG-DMBTR代替),出现的错误消息,由于凭证俩行Amount都>1000,此消息将弹出俩次. 1.ZSTLINE显然对USER STONEF操作所产生的任何会计凭证都有效,比如只想限制STONE在使用FB50记帐但是F-53付款时却允许超过1000HKD,请在先决条件上再加上Tcode FB50则Validationi就只对FB50有效. 2.想用Tcode比如FB50测试新建Validation,起码要求退出当前操作再进入,否则SAP会从缓冲中读数据认为还是上次的配置,结果拥护却认为配置失败,最保证的方法是从Validation IMG窗口使用/O FB50(或其它Tcode). 3.这种方法同样适用于任何其它相同情况的测试.
3.再谈建立Validation操作.(图7-9)
[1]删除Prerequisite和Check代码. [2]合并字符字段
[3]比如对line Validation,BKFF,BSEG,SYST(如想By Tcode选SYST-TCODE做条件)三对象可使用.
[4]选择rule做Prerequisite和Check(参考图7-5).
[5]可使用User Exit做Prerequisite和Check.(参考第8例凭证的退代). [6]一些常用逻辑表达式.
[7]通常使用的是Constant(常量). 1.读者也许有这样的疑问,Validation究竟是怎么工作的? 很好,使用SE37在Function FI_VALIDATION_HEADER和FI_VALIDATION_ITEM合适位置设置断点,就可知道更详细的程序逻辑. 另外,相关Table T001D|和相关程序GBTDMFI0|RGUGBR00,有兴趣的读者不妨研究一下. 2.另一个留给读者的疑问是,一个Validation可有多个Steps,不妨假设一Line Validation有俩Steps-STEP1和Step2,它们的Prerequisite都是:BKPF-BUKRS = 5100,但是Check却不同甚至是矛盾的,Step1 check是BSEG-DMBTR <=1000.而Step2-check却是BSEG-DMBTR > 1000,结果会如何? 3.财务凭证的退代(Substitution)
和Validation一样,凭证的退代在多个模块中能找到,IMG Path(IMG Path如图7-1标号2). 比较实用的Substitution IMG T-code有: OBBH:AP/AR/GL Doc.| OACS:AM Create Assets|OA02:Mass change Assets|GCVY:Global Substitution(In SPL,Company Level)|GCVX:Local Substitution(In SPL,Company code Level). 和Validation不同的是,Validation只做检测,一般不做相应数据的修改,Substitution弥补了这反面的缺陷,甚至允许和user_exit相结合. 假设用户希望在产生APAR凭证能将vendor,customer 或其它信息比如写入Assignment(BSEG-ZUONR)字段,或者希望某些P&L科目在记入某些特定成本中心时将些分析信息写入TEXT(BSEG-SGTXT)字段,可使用退代.
下面举一个最简单实例假设在公司代码5100中,如使用现金类科目10010120记帐,在
Text(BSEG-SGTXT)写入信息,同时在期初,可能会将一些凭证post到上期间,使用退代假设是post到上期间的凭证Posting Date换成上期间最后一天.
此简单实例是为了说明问题,其中有些步骤和第7例Validation相同,就不再一一讲解,希望读者在实际业务中能举一反三,发挥退代作用. 1. 自定义的退代程序. 相关Tcode:GCX2. (图9-2) [1]App. Area 选择GBLS
[2]输入自定义程序名ZSTSUB(Copy并取代SAP默认的标准程序RGGBS000)
***自定义的程序名称最好不超过8位,在OBBH似乎只能显示程序名的前8位.
相关表格函数和程序.
相关表格GB01|T001Q|T80D|GB03|GB03T|GB31|GB31T||GB907|GB90|GB92|GB922|GB901 |OXT_GENOBJDTL|,相关函数FI_SUBSTITUTION_ACTIVE|FI_SUBSTITUTION_DOC |FI_SUBSTITUTION_HEADER|FI_SUBSTITUTION_ITEM.相关程序ZSTSUB(自定义)| GBTDMFI0| GBTDMFIJ|RGUGBR00 ***使用GCX2退换标准的RGGBS000这样就无需申请Access Key,另外一个GCX1是跨Client端的,一般用于特殊总帐SPL中给Field movement定义用户出口.
2. 建立退代步骤
同Validation一样,也需为其建立Step,一个Step包括先决条件和退代(如图9-3).
[1]凭证头退代,在凭证抬头回车回保存凭证时满足条件时生效. [2]凭证行项目退代. [3]增加删除一个退代
***在本例中,使用only exit U100(对应ZSTSUB子程序U100)修改line item的Text.
[4]使用用户出口做退代. (关于怎么选Form规则请看本例思考). [5]字段级退代.
假设ZSTSUB Form U100的source code如下,那么在满足先决条件时,行项目的Text都写成了Record Payment Text.