使用商業規則在 Planning 中填入系統日期

Oracle Essbase 會將來自 Planning 的日期儲存成數值,例如,開始日期 2021 年 5 月 21 日會儲存成 20210521。

Planning 以外使用 Essbase 資料庫的商業程序會利用使用自 1970 年 1 月 1 日午夜後經過之秒數 (與 Planning 儲存日期的方式不同的非數值格式) 的日期功能來儲存這類日期。

您可以將 Essbase 日期格式轉換成 Planning 格式,以於表單中用來在 Planning 日期成員中填入系統日期 (今天的日期)。

例如,假設您想要在表單中使用計算,以將系統產生的日期動態新增 (根據目前的系統日期) 至某個 Planning 成員作為 "Start_Date"。此需求可能源於針對記錄動態新增唯讀、非使用者日期輸入 (例如,用以識別何時新增了新合約或客戶) 的稽核需求。

若要將 Essbase 日期值 2021 年 5 月 21 日轉換成對等的 Planning 數值,請將月份乘以 100,將年度乘以 10,100,然後將這些計算的乘積與日數相加,如以下所示:

Year = 2021 * 10,000 = 2021000 
Month = 05 * 100 = 500
Day = 21
2021000 + 500 + 21 = 2021521

您可以在商業規則中進行此操作,方法是將 Essbase 日期元素保留在變數中,直到您將結果寫入至 Planning 成員為止。為了完成此操作,Essbase 提供協助您擷取今天的日期 (@TODAY) 並可從該日期導出日、月、年 (@DATEPART) 的函數。

下列範例示範如何使用 @TODAY@DATEPART 來建立變數,這些變數會以 Essbase 格式儲存來自系統日期的日期/月份/年度、執行計算以將它們轉換成 Planning 日期格式,以及將 Planning 日期格式儲存在變數中以視需要填入 "Start_Date":

Var_Day = @DATEPART(@TODAY(),DP_DAY);
Var_Month ==@DATEPART(@TODAY(),DP_MONTH)*100;
Var_Year = @DATEPART(@TODAY(),DP_YEAR)*10000;
Var_TodayDate = @sum(Var_Day, Var_Month, Var_Year);

Start_Date = Var_TodayDate;

您可以使用公式 (使用類似以下的語法) 將系統日期以 "Start_Date" 形式動態新增至某個成員:

@MEMBER(@HspNthMbr(@name(@descendants("AllMembers")),nextMember))->"Start_Date"=Var_TodayDate;