SAP CRM Product category的决定逻辑

(1) UI上我们可以看到Category AB里面有一个indicator叫”Base Category”.

(2)在GenIL这层我们也可以看到Product有两个relation,一个”ProductBaseCategory”,一个”ProductCategory”. 这两个relation共享的一个object(表),也就是”COMM_PRPRDCATR”.

(3)但是我们发现其实这张表里面并没有存”Is_Base_Category”这个字段。也就是这个字段是在runtime时候determine出来的。

(4)从下图可以看出这个字段是在MAP_TO_UI_STRUCTURE这个接口里面实现的,这个接口在GenIL API里面用来实现将Native API layer的数据转换成GenIL layer的数据格式的作用。(由此可以看出这个接口可以用来实现一个GenIL layer的transformation field的功能)

(5) 从上面的代码中可以看出一个category assignment是不是base category,是通过看这个category对应的hierarchy id是不是与product的hierarchy id相同来判断的。而在建立Product时候,第一次选择的category的hierarchy id将会赋给product的hierarchy id。
而之后在选择category的时候就不能选择与第一个category相同的hierarchy了。

上图可以看出当你选择category时候,已有的category对应的hierarchy将会被作为”Is Not”的查询参数被默认生成出来。
如果你强行删除这些限制条件,选择一个不正确的category,如下error message将会触发。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

猜你喜欢

转载自www.cnblogs.com/sap-jerry/p/12315730.html