Hyperion Planning 表单数据验证功能实现

 

用户需求

在进行年度预算编制时,用户提出将预算数据进行分解时,加入表单数据验证的需求,即在预算数据分解时,分解后数据之和要满足与预算总数指定的逻辑关系,数据才能写入essbase数据库,否则,在该表单弹出提示信息,数据不进行保存。

需求分析

  用户需求在指定的表单,在数据录入完成后,点击保存按钮时,进行数据的逻辑校验,符合逻辑,数据写入essbase,同时触发EAS业务规则;不符合逻辑,弹出提示框,数据不写入essbase,不触发EAS业务规则。

需求实现

修改EPM的服务器安装目录下自定义的ValidateData.js文件。可参考ValidateDataHelper.jsSampleValidateData.js。修改完ValidateData.js后,重启所有planning服务。

功能实现的环境信息如下:

EPM版本

Enterprise Performance Management System 11.1.1.3

服务器OS

Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2

文件路径

EPM安装盘符:\Hyperion\deployments\WebLogic9\servers\HyperionPlanning\webapps\HyperionPlanning\custom\ValidateData.js

 

 Hyperion Planning 表单数据验证功能实现_第1张图片

红色背景单元格数据为承接数据,绿色背景数据为用户录入数据。

以上图为例:FY13年品牌合计-预算销售数量为100万;用户录入分解后到品牌-型号的数据之和为44万,低于预算总值100万,当用户点击保存按钮时,会弹出提示框,告知用户预算数据不符合指定的偏差度,需要重新进行分解,该数据不会写入essbase

实现代码:

///////////////////////////////

// 函数类型:系统已定义

// 创建者:

// 创建日期:

// 功能:在用户点击保存按钮时触发,根据返回bool值判定是否将数据写入essbase

// 参数:无

///////////////////////////////

function validateForm()

{

         var valid = true;

         if (equalsIgnoreCase(applicationName,"年度预算"))

         { 

                   if (equalsIgnoreCase(formName,"0101-07品牌销量预算"))

                   {

           var val1=sumAreaVal(5,currentDataGrid.endRow,6,8);

           var val2=getCellVal(3,5);

           valid=compareVal(val1,val2,"FY13");

           

                   }

         }

         return valid;

}

//////////////////////////////////////////

// 函数类型:用户自定义函数

// 创建者:shin

// 创建时间:2013-1-5

// 功能:对指定区域的连续单元格数据进行求和

// 参数:startRow区域开始行;endRow 区域结束行;startCol区域开始列;endCol 区域//结束列

//////////////////////////////////////////

function sumAreaVal(startRow,endRow,startCol,endCol)

{

var sumAllVal=0;

var row;

var col;

for(row=startRow;row<=endRow;row++)

{

 for(col=startCol;col<=endCol;col++)

 {

    var nowval=getCellVal(row,col);

         if(isNaN(nowval)==false)

    {

         sumAllVal=sumAllVal+getCellVal(row,col);

         //alert("now sumAllVal is "+"("+row+","+col+")"+getCellVal(row,col));

         }

 }

}

//alert("sumALLVal的值为"+sumAllVal);

return sumAllVal;

}

////////////////////////////

// 函数类型:用户自定义函数

// 创建者:shin

// 创建时间:2013-1-5

// 功能:比对2个数值的大小

// 参数:val1分解后数据之和;val2 预算总值;year提示用户存在问题的年份

////////////////////////////

function compareVal(val1,val2,year)

{

    var valid=true

         if(isNaN(val1)==true || isNaN(val2)==true)

         {

                   alert("请确保预算总值和分解后数值同时存在数据");

                   valid=false;

         }

         else

         {

                   if(Math.abs(val1-val2)>=1)

                   {

                            alert("分解数总和与预算合计数不相等,请修改数据,该数据不会被写进数据库"+"\n"+"存在问题的年份为:"+year);

                            valid=false;

                   }

         }

         return valid;

}

你可能感兴趣的:(Hyperion Planning 表单数据验证功能实现)