在BPS中,对数据进行整体处理有3种不同的形式,即标准功能、FOX语句和Exit功能函数。相对来说,标准功能显得更加简单且功能也相对单一;FOX语句在功能和复杂度上要高于标准功能;Exit功能函数则拥有最高的复杂度和最为强大的功能。三者的关系如图8-16所示。
图8-16 BPS中3种类型功能的关系
BW-BPS中的退出功能在整个BPS的实施过程中非常重要,因为有时需要对选择的数据进行逐条处理。例如,我们手工输入“销售数量”和“销售价格”,若再让用户输入销售金额就显得不那么必要了,此时需要系统自动计算。
Exit退出功能包含一个或两个功能函数:
第一个功能函数是必输项,因为所有的计算逻辑都是在该功能函数中进行实施的。
第二个功能函数是可选的,如有时希望新建一些记录,则需要使用该功能函数。
1)初始化的功能模块有以下参数:
①输入参数
②输出参数
参数I_AREA、I_PLEVEL、I_PACKAGE、I_METHOD和I_PARAM是当前功能函数运行的环境。参数IT_EXITP包含了在“参数退出功能”中设定的参数,预估在参数组中对应的属性。参数ITO_CHA和ITO_KYF包含了在计划层次中选择的特性和关键指标。没有包含在计划层次中的特性不会出现在返回表ETO_CHAS中。参数ITO_CHASEL包含了在计划等级中对所有特性的限制,用户新增的记录也不能超出这个限制条件。例如,在计划层次中限制了公司代码1000和2000,则不能新建一条带有公司代码为3000的数据记录。参数ETO_CHAS包含了特性值的组合,删除ETO_CHAS中的数据不会起到任何作用。
2)更改数据的功能模块有以下参数:
①输入参数
②输出参数
③变更表
和初始化功能模块一样,I_AREA、I_PLEVEL、I_PACKAGE、I_METHOD和I_PA-RAM是当前功能函数运行的环境。参数IT_EXITP包含了在“参数退出功能”中设定的参数,预计在参数组中对应的属性。参数ITO_CHASEL包含了当前特性组合的唯一特性值。参数XTH_DATA包含了当前特性组合的所有数据,该表是一个哈希表,以所有的特性作为唯一标识。XTH_DATA中的每一条数据均包含两个结构,即S_CHAS和S_KYFS。在S_CHAS中包含了计划等级中的所有特性,以及关键指标的单位和货币等;S_KYFS中包含了计划范围中的所有关键指标。
如果需要新建记录或更改记录,则只能对ITO_CHA和ITO_KYF中包含的对象进行更改,否则系统将报错。对于XTH_DATA的访问必须使用FIELD-SYMBOL。如果该函数只是在1个计划范围内使用,则可以使用表类型/1SEM/_YTH_DATA_<CLIENT><PLAN-NINGAREA>,对应的行类型定义是/1SEM/_YS_DATA_<CLIENT><PLANNINGAREA>。系统运行完毕后,会将目标数据和当前系统的数据进行对比,从而确定增量以添加记录。
如果需要删除记录,则可以从XTH_DATA中删除,也可以将所有关键指标的值都设置为“0”,因为对于BW-BPS而言,所有的关键指标为“0”,则视为该记录不存在。
对于功能退出函数,假如测试数据如图8-17所示,则所有的数据只有数量和价格,没有金额。
图8-17 执行前的测试数据(www.daowen.com)
我们需要通过Exit退出功能对单个月份和单个物料的销售金额进行计算,即销售金额=销售数量×销售价格,需要按照以下步骤进行设置。
第1步:在预算设置界面(BPS0界面)双击选择一个计划层次,然后在界面左下方的“计划功能”区域中,单击鼠标右键,选择“创建计划功能”选项,如图8-18所示。
图8-18 新建计划功能路径
第2步:在弹出的“创建计划功能”对话框中输入计划功能的技术名称,这里输入LV04CL01,并输入描述“通过当月销售数量销售价格计算销售金额”,在“所有功能”下选择“退出功能”选项,如图8-19所示。
图8-19 新建退出功能输入参数
确定后进入功能函数配置界面,在功能函数输入框输入包含退出逻辑的功能函数名称,对于初始化功能函数,可以视情况决定是否输入。由于此处不涉及新增记录等功能,因此这里仅设置退出功能为ZUPF_EXIT_CALCULATE_XSJE。如果我们还希望在参数组中设置其他参数,则可以在“参数退出功能”中添加,本处不需要进行任何限定,因此不输入参数。右边有一个“要更改的字段”和“字段清单”,这两个参数决定了实际调用函数的方式。例如,有如下数据,具体见表8-1。
表8-1 退出功能参数设置的示例数据
方式一:如果不选择任何字段到“要更改的字段”中,将所有字段留在“字段清单”中,则系统会调用退出功能7次,每次处理一条数据。在这种方式下我们无法创建新的记录,因为在哈希表中只能有一个KEY组合。
方式二:如果将“公司代码”选择到“要更改的字段”中,将“日历年/月”留在“字段清单”中,则系统会调用退出功能4次,即2012/09的数据处理一次,2012/10的数据处理一次,2012/11的数据处理一次,2012/12的数据处理一次。如果新建记录,则新创建的记录在“日历年/月”的值上必须和其他记录保持一致。
方式三:如果将“日历年/月”选择到“要更改的字段”中,将“公司代码”留在“字段清单”中,则系统会调用退出功能两次,即1000公司的数据处理一次,2000公司的数据处理一次。如果新建记录,则新创建的记录在“公司代码”的值上必须和其他记录保持一致。
方式四:如果将所有的字段都选择到“要更改的字段”中,则系统会调用退出功能1次,所有的7条数据都将在这次调用中计算。此时,可以创建尽可能多的数据记录,只要对应的主数据存在,如主数据“公司代码”。
下面的示例代码就是使用初始化函数对特性值组合进行数据的增加(和后续的数据更改不属于同一个计划等级)。
下面的示例代码使用了Exit退出功能模块,对当前计划范围内选择数据运行公式“销售金额=销售数量×销售价格”(和前叙的初始化不属于同一个计划等级),代码如下。
执行完毕后可以看到,在信息块中对每个物料和每个月份都新增加了一条记录,在这条记录中没有数量和价格,只有金额,这就是运行Exit退出功能之后新增加的数据,如图8-20所示。
图8-20 退出功能执行后新增加的数据
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。