事务代码:
VOFM
系统已定义好一些范例计价方案,计价方案由一系列按一定规则组织的计价条件类型组成,针对本例,假设定义计价方案ZFRM01,包扩6个条件:
PB00:信息记录中的含税价格。
ZM01:通过计算类型增强909算出的应交进项增值税。
909增强代码如下表:
*909通过含税价格计算出采购净价,反应到条件类型ZM01上,注意XKOMV-KAWR表示 *条件基价(请SE11查看KOMV),即信息记录价格,比如信息记录含税价为1170元/个,则其中 *价外增值税为(1170/1.17得到净价)* 17%, 909考虑不同税率情况. FORM FRM_KONDI_WERT_909. CASE KOMP-MWSKZ . WHEN 'J1'. "17% XKWERT = XKOMV-KAWRT * 17 / 117 * ( -1 ). WHEN 'J2'. "13% XKWERT = XKOMV-KAWRT * 13 / 113 * ( -1 ). WHEN 'J3'. " 7% XKWERT = XKOMV-KAWRT * 7 / 107 * ( -1 ). WHEN 'J4'. " 4% XKWERT = XKOMV-KAWRT * 4 / 104 * ( -1 ). WHEN 'J5'. " 5% XKWERT = XKOMV-KAWRT * 5 / 105 * ( -1 ). WHEN 'J6'. " 6% XKWERT = XKOMV-KAWRT * 6 / 106 * ( -1 ). WHEN 'J0'. XKWERT = 0. ENDCASE. ENDFORM. |
ZM05:通过计算类型增强908算出应计入材料成本的运输费用。
增强908代码简单,假设可抵扣运输增值税发票上是100元,由于是运输增值税为价内税(通常税率为7%),则进入存货成本为100/1.07 = 93.46,可抵扣税额为6.54元,增强代码就一句 :
XKWERT = XKOMV-KWERT * 100 / 107.
REQUEST释放后可以传输到目标系统,但是问题就出现在传输。如果只是传输,是无法正常使用的。这是SAP的一个BUG。要了解这个BUG,先要了解SAP例程的工作原理。
例程工作原理:
例 程,即Fomula,是使用在销售、采购、发票、交货等单据中定价过程的一小段程序。之所以有Fomula存在,是因为在不同的业务场景下,定价过程可能 千差万别,但是却可以拆分为一些关键的组成部分,如复制请求、数据传输、要求、公式,每个例程就是一小段专用程序,这些例程程序会被标准程序动态调用: 如:PERFORM XXX IN XXXX IF FOUND. 我们可以在例程中编写代码片段,修改运行环境中的数据。具体的每种例程都有不同的环境变量和接口数据,在此就不详细说明了。
创建例程的过程:
实际上是做了以下几件事,我们以要求–定价–998例程为例说明:
1 创建了程序:RV61A998,改程序可通过SE38查看
2 在表TFRM、TFRMT中添加数据,记录创建的例程编号等信息
3 激活例程时,RV61A998被INCLUDE 在RV61ANNN,即在RV61ANNN中添加一行:INCLUDE RV61A998.
下面解释下传输后无法正常使用。
CHANGE REQUEST释放后传输,1、2两步可以正常完成,但是第三步,虽然在目标系统中激活了,但是未能INCLUDE在RV61ANNN程序中,因此定价过程配置好之后,会出现ABAP DUMP.
解决方法:
在目标系统中运行程序:RV80HGEN即可修复BUG,而不需要在目标系统中通过VOFM激活例程。该程序的作用是根据表TFRM,TFRMT在 RV61ANNN等程序中增加INCLUDE RV61A998这样的代码,如此才能正常运行。具体见Notes:28683