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

 

 

紅色背景單元格數據爲承接數據,綠色背景數據爲用戶錄入數據。

以上圖爲例: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;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章