BW-IP中存在两个接口界面,即IF_RSPLFA_SRVTYPE_IMP_EXEC和IF_RSPLFA_SRVTYPE_IMP_EXEC_REF,我们只需生成一个对象类,并包含上述两个接口界面中的一个,即可实现退出功能。其中,第一个接口界面适用于不需要其他参照数据的退出功能,第二个接口界面在实现退出功能时需要参考其他数据。这里的参考数据是指在计划功能中使用到,但是又不发生任何改变的数据。通常来说,在BW-BPS中的退出功能属于不带参考数据的计划,这也是为什么很多时候,数据都被锁定,并且有可能因为程序的BUG而被错误地更改。例如,我们希望根据实际数据来对计划数据进行处理,但同时很有可能实际数据也被错误地更改。从BW 7.0起,参考数据就被保护起来不允许更改,因为很多时候都需要使用参考数据。在下面的介绍过程中也使用了参考数据,需要说明的是,不带参考数据的退出功能的实施和带参考数据的实施过程是一样的。
接口界面IF_RSPLFA_SRVTYPE_IMP_EXEC_REF包含以下几个方法,具体如图8-21所示。
图8-21 接口界面IF_RSPLFA_SRVTYPE_IMP_EXEC_REF包含的方法
(1)方法INIT_EXECUTION
本方法用来进行一些数据处理之前的初始化工作,其包含的参数如图8-22所示。
图8-22 方法INIT_EXECUTION包含的参数
其中,参数I_R_SRVTYPE_DEF包含了服务类型定义的相关信息,如实施对象类和是否包含参考数据等;参数I_R_SRV包含了计划功能的相关信息,如信息提供者或计划功能类型;参数I_R_INFOPROV_DESC包含了信息提供者的字典信息,如使用到的特性和关键指标;参数I_R_MSG用来返回消息,所以在代码编写过程中,需要调用ADD_MSG方法对该参数进行操作,本方法会自动获取系统字段SY-MSGNO的信息,用户不需要传输其他参数;参数I_T_DATA_CHARSEL包含当前的筛选条件。
通常情况下,方法INIT_EXECUTION保持为空或含有一些一般性的选择代码。
(2)方法GET_REF_DATA_SEL
本方法用来从信息提供者中读取作为参考的数据,由于参考的数据不会被更改,因此这些数据也不会被锁定,其包含的参数如图8-23所示。
图8-23 方法GET_REF_DATA_SEL包含的参数
其中,参数I_T_DATA_CHARSEL和I_R_MSG与方法INIT_EXECUTION中的同类参数一样;参数I_R_PARAM_SET包含计划功能中的指定参数;参数E_T_REF_CHARSEL必须包含参照数据的所有有效组合,通常会将参数I_T_DATA_CHARSEL中的选择包括进来,以便降低数据量;参数E_TH_NO_REF_BLOCK_CHA包含了那些将会被排除在参照数据选择条件之外的特性。
示例:if_rsplfa_srvtype_imp_exec_ref~get_ref_data_sel,代码如下。
(3)方法ADD_NEW_BLOCKS
本方法的功能和BW-BPS中的INIT函数功能类似,用来产生不出现在数据处理中的特性组合,如参考数据的数据特性组合。这样的功能在标准的SAP开发中会被经常用到,如BW-IP中默认的复制功能实施的代码对象类CL_RSPLFC_COPY就有类似的代码段。方法ADD_NEW_BLOCKS包含的参数如图8-24所示。
(www.daowen.com)
图8-24 方法ADD_NEW_BLOCKS包含的参数
其中,参数I_R_PARAM_SET和I_R_MSG与前面描述的一样;参数I_TH_REF_DATA包含了方法GET_REF_DATA_SEL中确定的参考数据;参数I_TS_EXISTING_BLOCKS包含了已经存在于计划数据中的有效组合,和BW-BPS中一样,本处也不支持删除操作;参数E_TS_NEW_BLOCKS必须用其他的特性组合数据进行填充。
示例:if_rsplfa_srvtype_imp_exec_ref~add_new_blocks,代码如下。
(4)方法EXECUTE
本方法是整个接口界面的核心部分,因此该段代码必须填充,不像方法INIT_EXECUTION那样可以不包含任何代码。同BW-BPS中一样,本方法中也包含一个C_TH_DATA表格,该表格包含了所有即将进行处理的计划数据。方法EXECUTE包含的参数如图8-25所示。
图8-25 方法EXECUTE包含的参数
其中,参数I_R_PARAM_SET、I_TH_REF_DATA和I_R_MSG与之前其他方法的同类参数一样,仅有I_S_BLOCK_LINE是本方法独有的参数。参数I_S_BLOCK_LINE包含了那些在当前数据选择中为常数的特性,如公司代码、货币和单位等。
下述示例代码的处理逻辑是将参考数据中对应成本中心的数据全部复制到计划数据中,如果没有参考数据,则所有成本中心的所有数据都会被复制。
(5)方法FINISH_EXECUTION
本方法主要在方法EXECUTE处理完毕后,用来对大的内表或其他对象执行清理工作。本方法只有一个参数I_R_MSG,用来返回系统信息,如图8-26所示。通常来讲,该方法不包含任何代码。
图8-26 方法FINISH_EXECUTION包含的参数
总的说来,在BW-IP中执行的带参考数据的功能要比BW-BPS中的退出功能灵活,因为在BW-IP中,参考数据功能不会导致像BW-BPS中那样的数据锁定。但是,有关BW-IP的功能增强,对开发人员来说需要更高的要求,因为要大量地使用面向对象的ABAP OO语言。如果对ABAP OO语言实在不熟悉,则还有另外一种方式,即使用CL_RSPLFC_BPS_EXITS,在该对象类中我们可以使用类似BW-BPS中的功能退出。
在实际的项目实施过程中,我们往往需要实施从财务预算发起的业务计划,并且由业务计划输入的数据推算相关财务指标,最终回到财务预算,以实现全过程的预算管理。在此过程中,相互之间的数据传递以及计算逻辑都需要使用Exit功能进行编写,因此熟练掌握相关的ABAP进行预算功能的增强,在项目中显得尤为必要。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。