Oracle Essbaseでは、Oracle Hyperion Planningの日付は数値として格納されます。たとえば、開始日2021年5月21日は20210521として格納されます。
Essbaseデータベースを使用するPlanning以外のビジネス・プロセスでは、1970年1月1日午前0時からの秒単位の経過時間を使用する日付機能(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
ビジネス・ルールでこれを行うには、Planningメンバーにこの結果を書き込むまで、Essbaseの日付要素を変数に保持します。これを行うために、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;