理论教育 使用系统提供的BADI进行处理优化方案

使用系统提供的BADI进行处理优化方案

时间:2023-05-30 理论教育 版权反馈
【摘要】:此处,该BADI在过滤器中增加了过滤器值V_2,因此该逻辑只针对虚拟信息块V_2进行处理,如图6-25所示。如果希望有一些其他的变量声明和变量默认值的赋予,可以使用方法IF_EX_RSR_OLAP_BADI~INITIALIZE进行处理,由于本处不需要进行其他复杂处理,因此不对该段进行代码编写。最后,所有的计算功能都在方法IF_EX_RSR_OLAP_BADI~COMPUTE中进行处理,示例代码段如下。

使用系统提供的BADI进行处理优化方案

下面的示例将使用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所示。

978-7-111-50218-0-Chapter06-65.jpg

图6-23 BADI实施的创建

978-7-111-50218-0-Chapter06-66.jpg

图6-24 新建实施ZCL_IM_V2_IMPLT

978-7-111-50218-0-Chapter06-67.jpg

图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个属性。

978-7-111-50218-0-Chapter06-68.jpg

图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中进行定义,示例代码段如下。

978-7-111-50218-0-Chapter06-69.jpg

978-7-111-50218-0-Chapter06-70.jpg

如果希望有一些其他的变量声明和变量默认值的赋予,可以使用方法IF_EX_RSR_OLAP_BADI~INITIALIZE进行处理,由于本处不需要进行其他复杂处理,因此不对该段进行代码编写。

最后,所有的计算功能都在方法IF_EX_RSR_OLAP_BADI~COMPUTE中进行处理,示例代码段如下。

978-7-111-50218-0-Chapter06-71.jpg

978-7-111-50218-0-Chapter06-72.jpg

在数据和查询定义都与V_1及其查询相同的情况下,执行代码后即可看到查询结果,如图6-27所示。

978-7-111-50218-0-Chapter06-73.jpg

图6-27 信息块V_2的查询结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈