Data Determination in Access

近日在看SCM620 Pricing,Unit 4当中的Data Determination in Access只有数页,但却相当重要。不过SCM620简写得太厉害了,建议看Help文档。之所以重要,是因为原来Pricing在Access层面(Access Sequence中的一条称为Access)也是可以玩的,而且很强大。

Data Determination in Access主要用于这样的场景:取一个不在订单上的值用于Pricing。解决方法很多,SAP提供的方法是:

  • 第一步,Data Determination,就是获取这个值;
  • 第二步,Data Use,就是将上面得到的值用于Pricing中。

而根据值的获取方式,有三招:

  1. 使用KOMPAZD
  2. 使用Routines
  3. 针对Sales Deals的处理方式

上述文字比较抽象,其核心是我们不但可以用Access访问Condition Record获取价格、折扣,Condition Record还可以返回字符,而这个返回字符可以用于后续Condition Type去做Pricing。如果后续的Condition Type对应的Access Sequence直接使用这个返回值,那就是第一招,这招你不需要写Code,往KOMPAZD加Field(就是返回值),配Condition Table和Access Sequence就可以了。如果返回值不是直接用于后续的Access Sequence,那就是第二招,在Requirement里写Routine。Sales Deals不懂略过。

想象一下Condition Record可以返回字符,那它就不是条件记录了,而是一个Z表,这里有太多文章可以做了。

注意:Data determination at the level of access cannot be executed in SAP CRM.  >>

附件是一个例子

Pricing及Configuration

CRM中Pricing不是必须的,Item Categories中摘掉Sales Transaction Category中的Pricing-rel就行了。如果所有Item都是非定价相关的,那就不会去determine pricing procedure了。参见Note 702735,关掉IPC部分内容。

但是如果Item的产品是可配置的(Configurable)的话,项目必然是Pricing-rel的,即便你摘掉该选项。Note 743918提到:The configuration only works correctly if pricing is performed for the header。相关Note还有851523,832436。

程序可参考FM: CRM_PRIDOC_UPDATE_EC