Les champs utilisateurs flexibles en R12, un cas concret

Lors d’un récent cours Administration Système de la eBusiness Suite R12 un client a exprimé le besoin suivant :
– Le client veut qu’un CUF (Champs Utilisateurs Flexibles) soit actif avec un ou plusieurs segments obligatoires si la devise de saisie de sa facture dans AP (Oracle Account Payables) n’est pas la devise fonctionnelle (disons USD)
– Si la devise de saisie est la devise fonctionnelle aucun segment ne doit être affiché.
Voici la solution retenue et réalisée en direct lors de la formation :
1… On déclare comme champ de référence pour la partie contextuelle la colonne ATTRIBUTE1 afin de tester son contenu
2… On détecte la devise, si c’est une devise autre que USD on renvoie le littéral NOT, ce résultat est stocké dans la colonne ATTRIBUTE1 associée à un segment de la partie Eléments Standard du CUF (Global Data Element) qui ne sera pas affichée
3… On ajoute autant de segments que voulu pour la valeur NOT en tant que valeur de contexte
– Voici le détail avec les copies d’écrans :
1… (Responsabilité) Développeur d’Application, (Menu) Champs flexibles > Champs utilisateurs flexibles > Enregistrer
Rechercher le CUF avec :
Application = Payables
Titre = Invoice
Dans Champs de référence (Reference Fields) déclarer la colonne ATTIBUTE1…
01_Reference Fields_FRA
2… Dans la partie Eléments Standard (Global Data Element) on ajoute un segment pour alimenter la colonne ATTRIBUT1, ce segment n’a pas de jeu de valeurs (Value Set) associé, par contre il a la propriété suivante :
Type par défaut = Instruction SQL
Valeur par défaut = SELECT ‘NOT’ FROM DUAL WHERE :INV_SUM_FOLDER.INVOICE_CURRENCY_CODE <> ‘USD’
Avec :
:INV_SUM_FOLDER correspond au BLOCK Forms de l’en-tête de facture AP
.INVOICE_CURRENCY_CODE correspond au FIELD du BLOCK qui aliment la colonne contenant la devise de la facture saisie
02_Validation_ATTRIBUTE1_FRA
3… (Responsabilité) Développeur d’Application, (Menu) Champs flexibles > Champs utilisateurs flexibles > Enregistrer
Rechercher le CUF avec :
Application = Payables
Titre = Invoice
Faire la mise ne correspondance entre le champ contextuel et le champ de référence
Champs de référence = ATTRIBUTE1
Le champ contextuel n’est pas affiché…
03_DFF_Configuration_FRA
Configurer le(s) segment(s) pour la valeur NOT qui correspond au contenu du champ contextuel et donc au contenu de ATTRIBUTE1 :
04_Segments_for_Context_FRA
4… Au final nous obtenons le comportement souhaité :
05_DFF_Invoice_FRA
Et voilà…