Renseignement de la date système à l'aide d'une règle métier dans Planning

Oracle Essbase stocke les dates de Planning sous forme de valeurs numériques, par exemple, la date de début 21 mai 2021 est stockée sous la forme 20210521.

Pour stocker ces dates, les processus métier autres que Planning qui utilisent la base de données Essbase emploient une fonctionnalité de date qui repose sur le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit (un format non numérique différent du format de stockage des dates de Planning).

Il est possible de convertir le format de date Essbase au format Planning afin de renseigner la date système (date du jour) dans les membres de date Planning dans les formulaires.

Admettons par exemple que vous voulez ajouter de façon dynamique une date générée par le système (en fonction de la date système actuelle) à un membre Planning en tant que "Start_Date" à l'aide d'un calcul dans un formulaire. Ce cas peut se présenter dans le cadre d'un audit exigeant d'ajouter à un enregistrement une date en lecture seule non définie par l'utilisateur, par exemple pour identifier la date d'ajout d'un contrat ou d'un client.

Pour convertir la valeur de date Essbase 21 mai 2021 afin d'obtenir la valeur numérique Planning équivalente, multipliez le mois par 100 et l'année par 10 000, puis calculez la somme de ces produits et du nombre de jours, comme suit :

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

Vous pouvez utiliser cette conversion dans une règle métier en retenant les éléments de date Essbase dans des variables tant que vous n'avez pas écrit le résultat dans un membre Planning. Pour ce faire, Essbase fournit des fonctions permettant d'extraire la date du jour (@TODAY) et de dériver le jour, le mois et l'année à partir de cette date (@DATEPART).

L'exemple suivant montre comment utiliser les fonctions @TODAY et @DATEPART pour créer des variables qui stockent la date, le mois et l'année à partir de la date système au format Essbase, les convertir au format de date Planning et stocker le format de date Planning dans une variable afin de renseigner "Start_Date" selon les besoins :

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;

Vous pouvez utiliser une formule, à l'aide d'une syntaxe semblable à celle indiquée ci-après, pour ajouter de façon dynamique la date système en tant que "Start_Date" à un membre :

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