BW-IP中的特性派生同BW-BPS的派生类似,只不过BW-IP不是使用一个或多个Exit进行派生,而是使用ABAP OO类的方式进行派生,因此必须新建属于自己的类,同时在Planning Modeler中输入该类。
在很多项目中,我们都会遇到是使用BW-BPS还是使用BW-IP的问题,或是否同时使用旧的BW-BPS和新的BW-IP。为了达到演示的目的,本处的代码逻辑尽量和之前的代码逻辑保持一致,具体步骤如下。
第1步:在SE19中新建类ZCL_IP_CHAR_DERIVE_SAMPLE,在新建类时,需要输入CL_RSPLS_CR_EXIT_BASE,以作为新建类的超类,如图8-10所示。
图8-10 创建类ZCL_IP_CHAR_DERIVE_SAMPLE
第2步:在新建的类中,能够看到3个方法,分别对应到之前BW-BPS的3个不同的Exit,它们是:
(1)方法IF_RSPLS_CR_METHODS~CHECK
本方法用来检查特性值的组合是否符合业务规则,如物料和物料组组合的检查,日历年/月和日历年组合的检查等。此方法的输入/输出参数如图8-11所示。
图8-11 方法CHECK的参数列表
其中,I_S_CHAS参数包含了当前计划的特性(不包括指标);E_IS_VALID参数为检查的返回结果,如果特性值的组合是符合规则的,则该参数的值为“X”,如果不符合规则,则特性值为空;E_T_MESG参数包含了需要报错处理的临时消息。
由于该检查经常被调用到,且检查的规则可能十分复杂,因此最好使用缓存的方式对数据进行处理,也正因如此,标准的示例代码中使用到了缓存技术。
示例:面向对象的方法IF_RSPLS_CR_METHODS~CHECK,代码如下。
(2)方法IF_RSPLS_CR_METHODS~CREATE
与BW-BPS一样,本方法用来建议所有合理的特性组合,如所有符合要求的物料和物料组的组合建议。此方法的输入/输出参数如图8-12所示,例外参数设置如图8-13所示。
(www.daowen.com)
图8-12 方法CREATE的参数列表
图8-13 方法CREATE的例外参数设置
其中,I_TSX_SELDR参数包含了特性的选择值,仅能从这些选择值中来进行组合的建议。尽管I_TSX_SELDR参数比较复杂,但是我们仅需要考虑两个内容,即CHANM字段和RANGE结构,RANGE中包括了以RANGES格式存储的CHANM的值。E_TH_CHAS参数是程序最终返回的符合业务规则的特性值组合,该表是一个HASHED TBALE,因此读取性能较好。如果返回表E_TH_CHAS为空,则说明所有的组合都是符合规则的。E_T_MESG参数包含了需要报错处理的临时消息。
示例:面向对象的方法IF_RSPLS_CR_METHODS~CREATE,代码如下。
(3)方法IF_RSPLS_CR_METHODS~DERIVE
与之前的两个方法相比,DERIVE方法是在单个记录层面对特性进行处理,而不是在汇总级别进行读取。和CHECK一样,特性值的派生发生在单独的数据记录上,所以该方法的重要性不言而喻。此方法的输入/输出参数如图8-14所示,例外参数设置如图8-15所示。
图8-14 方法DERIVE的参数列表
图8-15 方法DERIVE的例外参数设置
其中,C_S_CHAS参数和I_S_CHAS参数有一样的结构,但是因为需要对特性的值进行派生,所以使用了作为修改结构的C_S_CHAS,而不使用作为输入结构的I_S_CHAS;E_T_MESG参数包含了需要报错处理的临时消息;CX_RSPLS_FAILED参数替代了CHECK方法中的E_IS_VALID参数,本参数只有在出现严重错误和非法的选择条件时才会被触发(如“FROM”比“TO”还大),此时系统完全退出计划功能。
示例:面向对象的方法IF_RSPLS_CR_METHODS~DERIVE,代码如下。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。