Une fonction calculatoire méconnue : La fonction LOOP

Contenu
Vignette article blog une fonction calculatoire méconnue EPM Cloud LOOP

 

La fonction LOOP existe depuis quelques années dans le monde Oracle mais son usage était relativement limité aux bénéfices des fonctions traditionnelles FIX & IF classiques mais statiques.

Pour les habituées des autres langages, il s’agit d’essayer de reproduire des boucles « For » ou « While » pour un paramétrage dynamique et optimisé.

Alain Mathon nous explique des cas d’usage intéressants pour l’écosystème Oracle EPM Cloud grâce aux releases récentes:

  • L’usage de la fonction LOOP pour les calculs de ratios BFR par apurement
  • Le nouvel usage 2019 de la fonction LOOP avec l’option METADATA

 

Utilisation de la commande METADATA LOOP pour itérer les entités

J’avais besoin de dupliquer le code contenu dans un ‘Template’ autant de fois que j’ai de membres dans la dimension ‘Entité’ (au sens société juridique). Je pensais initialement placer cette sélection d’entités dans une commande FIX mais le résultat obtenu n’était pas conforme aux exigences fonctionnelles. Pour faire simple, une commande LOOP me permet de calculer des indicateurs par apurement pour une entité mais n’est pas généralisable pour toutes les entités ! – je fais référence à l’article Calcul par apurement. C’est pourquoi je me suis réorienté vers une autre technique permise dans les ‘Templates’.

 

Plaçons-nous dans l’éditeur graphique des ‘Templates’ car l’emploi de certaines fonctionnalités est simplifié voire indispensable.

Dans la fenêtre ‘New Objects’, vous trouverez une commande ‘Metadata Loop’.

 

J’ai glissé-lâché cet objet dans le ‘Template Designer’ puis déplacé entre les deux icones  les scripts que je souhaite répéter selon la dimension Entité. L’onglet d’édition du ‘Metadata Loop’ m’a permis de travailler sur une dimension (Entité) et de choisir les membres pour lesquels je veux répéter le code du script.

 

 

J’exploite ensuite le DTP [Entite] pour FIXer sur une entité.

L’étape suivante est de vérifier dans la ‘rule’ (qui appelle le ‘Template’) que le code généré dans le menu ‘Script’ est celui attendu. Dans mon cas, j’ai bien un FIX par entité et ma boucle de calcul est désormais indépendante d’une entité à une autre.

 

Comment calculer son BFR dans PBCS

 

Je profite d’une évolution en cours de déploiement pour vous partager un besoin fonctionnel et sa couverture technique dans PBCS.

Je dois calculer trois indicateurs du BFR (Besoin en Fond de Roulement) selon une méthode dite d’apurement. En résumé, mon point de départ est un compte de bilan (par exemple Stock). Je dois déterminer combien de jours de CA (Chiffre d’Affaire) correspond ce montant de Stock.

 

 

Les trois indicateurs sont le DIO (Rotation des stocks moyen), DSO (Délai moyen de paiement des clients) et DPO (Délai moyen de recouvrement).

 

Pour réaliser ce calcul itératif sur un nombre inconnu de mois, j’ai opté pour la commande LOOP.

J’indique que je souhaite réaliser jusqu’à concurrence de 12 boucles et je travaille sur une condition de sortie - via la variable Quit – dès que le cumul des montant du CA en antériorité (d’où l’utilisation de @PRIOR) est supérieur ou égal au montant du Stock (condition testée dans le IF).

Dès que la condition est réalisée alors le calcul du DIO est effectué, la variable Quit valorisée à 1 afin de quitter cette boucle.

A noter que l’écriture de cette commande LOOP aurait très bien pu être réalisée via le Designer graphique et un glisser-lâcher de l’objet ‘Fixed Loop’.

 

 

En conclusion, nous apportons une solution technique assez simple à parcourir et surtout à maintenir à une exigence métier de notre client de l’industrie.

 

Dans les prochaines semaines, nous multiplierons ces zooms technologiques afin de nourrir la littérature francophone de nos expertises.

Tags
#EPM
#Cloud
#oracle