SAP采购订单价格自动更新BADIME_DEFINE_CALCTYPE应用1.业务场景:同一工厂下的采购订单,送到不同的库存地点时,与供应商协商的采购价格不同。同一工厂的不同库存地点位于不同的城市,所以供应商送货的运费有所不同,但运费是包含在产品价格里面的,而且供应商只开产品发票,不开运费发票,没有办法增加运费的条件类型,所以系统上PB00的价格要求增加库存地点维度。2.系统配置:1)定义条件表:基础的方法不多做介绍,只是要讲一下标准的条件表里是没有库存地点LGORT这个字段的,需要添加一下。有3个结构KOMG(允许条件结构字段)KOMK(定价通讯抬头)KOMP(定价通讯项目)要把你想增加的字段添加到这3个表里,KOMG表是必加的,抬头字段加到表KOMK,行项目字段加到KOMP,这里要添加的字段是库存地点LGORT,所以只加KOMG和KOMP表。然后去后台配置SPRO—物料管理—采购—条件—定义价格确认流程—条件表的扩展字段类别把库存地点字段加上。然后就可以按正常的方法定义条件表了。把这个条件表添加到PB00的存取顺序里,放在最前面,优先级最高。确保这些字段都没有红灯。3.维护数据MEK1这里维护2个价格,正常的信息记录不考虑库存地点时价格为126,当库存地点=1000时,价格为200然后创建采购订单测试一下。注意:一定要输入完库存地点再回车。这样价格就带出来了。但如果输入完工厂就回车,取到的价格还是标准信息记录的价格,之后再输入库存地点,价格也不会变了。只能手动点“更新”按钮,系统才会再重新算价格,取与库存地点相关的价格。这种情况不仅发生在我们自己增加的字段上,标准条件表里本来就有的字段也会有这种情况,如字段“国际贸易条件”INCO1。除了一些非常关键的字段如,物料、供应商、采购组织、工厂等字段,更改了值后价格会自动更新,有些字段如,库存地点,国际贸易条件等,字段的值发生变化后,回车是不会让订单价格自动更新的,只能手动点击“更新”按钮。这样操作起来十分不方便,所以就要用BADI来解决。4.增强事务码:SE19新建个BADI然后激活就OK了。这样在创建采购订单时价格就可以自动更新了。