下面的示例将使用BW系统自身提供的BADI RSR_OLAP_BADI进行处理,首先使用事务码SE19进入实施的定义界面,选中“Classic BAdI”单选按钮,并在“BAdI Name”中输入“RSR_OLAP_BADI”,单击创建按钮进行实施的创建,如图6-23所示。然后,在弹出的对话框中输入实施的技术名称“ZCL_IM_V2_IMPLT”,如图6-24所示。
进入实施后,首先在“过滤器”中加入针对哪些信息块进行实施的选择条件。此处,该BADI在过滤器中增加了过滤器值V_2,因此该逻辑只针对虚拟信息块V_2进行处理,如图6-25所示。
图6-23 BADI实施的创建
图6-24 新建实施ZCL_IM_V2_IMPLT
图6-25 信息块V_2增强BADI的实施
进入“Interface”标签页的程序类ZCL_IM_V2_IMPLT中,设定属性,定义的属性必须按照标准的命名规则进行命名,且类型必须是“I”,即整型。其中,特性必须定义为P_CHA_<特性技术名称>,如P_CHA_0CALYEAR;关键指标必须定义为P_KYF_<关键指标技术名称>,如P_KYF_K0XSJG,如图6-26所示。这里定义了P_CHA_0CALYEAR、P_KYF_K0XSSL、P_KYF_K0XSJE和P_KYF_K0XSJG 4个属性。
图6-26 增强BADI的属性定义
为了达到系统在运行查询时自动计算金额的目的,我们需要在方法中另外添加代码段,以实现系统的计算功能,其中主要包含以下3个方法:
①IF_EX_RSR_OLAP_BADI~DEFINE(www.daowen.com)
②IF_EX_RSR_OLAP_BADI~INITIALIZE
③IF_EX_RSR_OLAP_BADI~COMPUTE
总体说来,如果需要定义全局变量、CASE判断语句和对CUBE的判断,则需要在方法IF_EX_RSR_OLAP_BADI~DEFINE中进行定义,示例代码段如下。
如果希望有一些其他的变量声明和变量默认值的赋予,可以使用方法IF_EX_RSR_OLAP_BADI~INITIALIZE进行处理,由于本处不需要进行其他复杂处理,因此不对该段进行代码编写。
最后,所有的计算功能都在方法IF_EX_RSR_OLAP_BADI~COMPUTE中进行处理,示例代码段如下。
在数据和查询定义都与V_1及其查询相同的情况下,执行代码后即可看到查询结果,如图6-27所示。
图6-27 信息块V_2的查询结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。