使用业务规则在 Planning 中填充系统日期

Oracle Essbase 将来自 Planning 的日期存储为数值,例如开始日期 2021 年 5 月 21 日存储为 20210521。

对于 Planning 以外的使用 Essbase 数据库的业务流程,日期功能使用自 1970 年 1 月 1 日午夜起过去的秒数来存储此类日期(这种非数值格式与 Planning 存储日期的方式不同)。

您可以将 Essbase 日期格式转换为 Planning 格式以在表单中使用,从而在 Planning 日期成员中填充系统日期(当天日期)。

例如,假定您要在表单中使用计算,以将系统生成的日期(基于当前系统日期)作为 "Start_Date" 动态添加到 Planning 成员。这种需求可能源自审核要求,即需要在记录中动态添加只读的非用户输入日期,例如用于确定添加新合同或客户的时间。

要将 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;