Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Les widgets KPI se caractérisent par l'utilisation directe d'une requête SQL pour lire les données en base de données ou le paramétrage via un fichier texte contenant des requêtes SQL de type select.

...

L'assistant se base sur la présence d'un fichier exemple « Indicateur.drpt » et sur les fichiers nommés "'CodeApplic'_Indicateur.drpt" comme par exemple « DAV_Indicateur.drpt » présent dans les implicites ERP.
La case à cocher va charger tous les modes KPI décrits dans le fichier et les proposer dans la liste déroulante.
Le choix d'un élément de la liste va garnir les champs du widget. Les données sont modifiables par la suite.

...


Quelques règles de fonctionnement :
L'assistant considère toujours « Indicateur.drpt » ou les fichiers nommé "CodeApplic_Indicateur.drpt" comme par exemple « DAV_Indicateur.drpt » (mais il reste modifiable dans la zone paramétrage)
Une alternative est aussi le nommage "CodeApplic_U_Indicateur.drpt" comme par exemple « DAV_U_Indicateur.drpt » pour des fichiers complémentaires distincts
Le nom ainsi que la balise du KPI sont indispensables
La fréquence de rafraîchissement ne doit pas être trop élevée au risque du surcharger le serveur SQL
Les noms du module et fonction sont indispensables. L'assistant les positionne après choix dans la liste
Le widget sera vide dans l'IA si le paramétrage (du widget) n'est pas bon
Attention, la visite guidée propose des exemples pour une version minimale de SQL 2012. L'utilisation de version antérieure provoque une erreur SQL.

...

Le fichier de description des KPI est un fichier texte, placé dans l'implicite ERP, et indiqué dans la zone texte de paramétrage du widget. Le nom pris par défaut est : Indicateur.drpt
L'assistant considère toujours « Indicateur.drpt » ou les fichiers nommé "CodeApplic_Indicateur.drpt" comme par exemple « DAV_Indicateur.drpt » (mais il reste modifiable dans la zone paramétrage)
Une alternative est aussi le nommage "CodeApplic_U_Indicateur.drpt" comme par exemple « DAV_U_Indicateur.drpt » pour des fichiers complémentaires distincts.


STRUCTURE COMPLETE


CODE UNIQUE DU WIDGET : Commentaire pour le zoom des widgets
C'est le code du KPI qui doit être unique par fichier. Il sert au widget à trouver la définition du KPI et il est affiché dans la liste déroulante de l'assistant. Le commentaire apparaît dans la bulle de la liste déroulante de l'assistant

Balise TYPE à F ou FEU, J ou JAUGE, L ou LIST, G ou GRAPHIQUE pour restreindre le choix du zoom des widgets
Pour restreindre le choix du zoom des widgets dans la liste déroulante de l'assistant. Une seule lettre suffit : F, J, L ou G.
Les FEU et JAUGE ont la même structure pour le KPI, cela signifie que l'on peut mettre la balise TYPE à FJ systématiquement.
Le widget TABLEAU est un widget LISTE qui retourne plusieurs colonnes, c'est donc la requête SQL qui détermine le type. Pour les graphiques, le type de graphiques (camembert ou histogramme) est déterminé par la requête SQL.

Balise MAX à 50 nombre maximum de lignes pour un widget liste.
Valeur numérique entière. Le widget LISTE a une valeur par défaut de 100 lignes affichées au maximum (ne concerne pas les autres widgets). Pour modifier cette limite, indiquer le nombre de lignes maximum à afficher
Pour ne pas avoir de limite mettre la valeur 0
Balise QUERY. Ma requête en plusieurs lignes avec des paramètres sous la forme @NOMPARAM et la database sous la forme $APPLIC. devant le nom de la table.
Écriture de la requête SQL de type SELECT Multi-ligne autorisé. Permet l'utilisation de paramètres au niveau ERP et requête. Accepte les UNION ou les variables SQL Server ou les fonctions SQL Server.
Doit être compatible avec la cible de version de serveur de base de données (SQL Server 2012 dans les exemple fournis)

Balise DEBUG à E ou R ou ER active un mode débogage lors de l'exécution du widget dans l'IA. La présence de la balise DEBUG associée à la valeur E ou R active un mode débogage lors de l'exécution du widget dans l'IA.
E = demande confirmation d'exécution de la requête, et permet de copier la requête dans le presse-papier
R = copie du résultat dans le presse-papier (ER fait les deux actions)
Pour désactiver le debug, il suffit de renommer la balise en NODEBUG pour qu'elle ne soit plus reconnue.

Balise ZOOM à CODE_APPLIC : Numéro du zoom utilisé pour les widgets LISTE pour trouver le code application et le numéro de zoom à appeler en standard; Possibilité de surcharge a5tmetlkpi.dhsp pour traiter d'autres actions.
CODE_APPLIC indique le nom du module concerné (DAV COMMUN DCPT DCONT DPAIE DRT DQUAL DAFF DDOC DGRM DSP DREG)
Numéro du zoom : numéro interne du zoom (Shift+f7 dans l'IA) Utilisé pour les widgets KPI LISTE pour trouver le code application et le numéro de zoom à appeler. En standard en cas de clic sur la ligne, possibilité de surcharger a5tmetlkpi.dhsp pour traiter d'autres actions

COMPLEMENTS
Paramètres de requêtes SQL : contexte ERP

L'écriture des requêtes SQL permet l'utilisation de paramètres de contexte ERP. Ce sont des données liées à l'exécution courante de l'ERP (à partir de l'IA) qui sont disponibles pour filtrer.

Le filtrage contextuel ERP est indispensable pour une bonne utilisation des KPI. Le zoom des widgets fonctionnant hors contexte ERP, la fonction de TEST de l'assistant utilise un module diva 'a5tmetlkpi' qui effectue le garnissage des données pour permettre la substitution des valeurs.
Paramètres de requêtes SQL : globale
A mettre en début de fichier dans une section KPI vide (=crochet ouvrant immédiatement suivi d'un crochet fermant). Ces paramètres seront valables pour tout le fichier.

Paramètres de requêtes SQL
Dans le zoom des widgets, il est possible d'attribuer une valeur à un paramètre dans la zone de texte du zoom des widgets (avec les balises INDICATEUR).
Ce paramètre, sous la forme @NOMPARAM sera valable pour ce widget uniquement. Il est prioritaire aux paramètres globaux ou locaux

Nom de base de données
La requête SQL est exécutée par la couche runtime (record diva SQL) et gère donc la répartition sur plusieurs bases de données. Notamment, la base de données décisionnelle (DataWarehouse)ou encore le module comptabilité ou paie qui serait hébergé dans une autre base.
Syntaxe : identique à celle de l'écriture des record SQL, à savoir $MADATABASE.NOMTABLE
Les valeurs possibles pour $MADATABASE sont : $DAV $BI $COMMUN $DCPT $DCONT $DPAIE $DRT $DQUAL $DAFF $DDOC $DGRM $DSP $DREG
Lorsque $MADATABASE n'est pas indiqué c'est la base de données $COMMUN qui est utilisée.
Base BI : ce mécanisme permet donc d'afficher dans l'IA des widgets qui interrogent directement la base SQL décisionnelle.
Exemple:
SELECT SUM(MAXFAC.MONTANT_FACTURE_NET_DEV) FROM $BI.F_FACTURE_VENTE_LIGNE as MAXFAC WHERE YEAR(MAXFAC.DATE_FACTURE) = YEAR(GETDATE())-1 and MAXFAC.DOSSIER_CODE = @DOSSIER
Action KPI sur widget liste
Une première action consiste à utiliser le paramétrage d'appel de zoom possible dans le fichier de paramétrage. Cette option implique que le champ ID rendu par le widget soit exploitable par le zoom puisque celui-ci le reçoit dans la zone de pilotage Harmony.DataVal.
Une alternative consiste à construire dans la requête SQL une chaîne sous la forme nommodule;nomfonction;liste param séparée par des ';' qui permet d'adresser un module Diva et de faire appel à une fonction tunnel
Exemple: une liste OF construit
GGPMBAS.DHOP;Tunnel_OF_Visualiser;"597"
GGPMBAS.DHOP;Tunnel_OF_Visualiser;"643"
Ce qui permet d'appel la fonction Diva "Tunnel_OF_Visualiser" du module "GGPMBAS.DHOP" avec en paramètre le numéro d'OF à consulter
3 actions différentes sont possibles :

...

L'utilisation du mode KPI permet de convertir des données issues d'une requête SQL en chaine de caractères exploitables par le widget (tel qu'il l'attend).
Pour cela le RESULTAT DE LA REQUETE doit respecter l'ordre et le type des champs. Les champs non retournés par la requête ont une valeur par défaut. Il n'est donc pas nécessaire de retourner TOUS les champs requis par le KPI.
Le nom des champs n'est pas significatif (c'est bien l'ordre des champs) mais il est recommandé de les mettre pour une meilleure lecture de la requête SQL.
Par contre l'ORDRE DES CHAMPS et la NATURE DES CHAMPS sont fondamentaux, à respecter selon le dictionnaire (et pas selon l'aide Runtime)
La première colonne est toujours un ID qui ne figure pas dans le dictionnaire mais il est indispensable à la couche Runtime
FEU / JAUGE



FEU

  • (Valeur minimale inutile pour un feu)

  • Valeur maximale

  • Valeur courante numérique

  • Etat (couleur)

  • Ecart par rapport à l'objectif

  • Valeur courante formatée en texte

  • Titre du widget

...

Nom Libellé Nature

Libellé

Nature

ID

Identifiant non utilisé

mettre 1

CurVal

Valeur courante

Décimal 12,3

Text

Texte widget

Chaîne 80

State

Couleur 1=vert 2=orange 3=rouge

Entier 1

MinVal

Valeur minimale

Décimal 12,3

MaxVal

Valeur maximale

Décimal 12,3

CurValTxt

Valeur courante formatée

Chaîne 40

Spread

Ecart à l'objectif

Chaîne 40

Error

Texte d'erreur

Chaîne 100

Conf

Confidentialité

Chaîne 4

TranslateCol

Liste des numéros de colonnes à traduire séparés par ';'

Chaîne 40


LISTE/TABLEAU


Liste

  • Texte à afficher

  • Titre du widget

  • Priorité de l'élément (couleur)

  • ActionKPI permettant de déterminer l'action sur double-clic dans le widget

  • ActionKPIC permettant de déterminer l'action sur clic dans le widget avec touche CTRL

  • ActionKPIS permettant de déterminer l'action sur clic dans le widget avec touche SHIFT

...


Alignement
G ou L pour un alignement à gauche
D ou R pour un alignement à droite
C pour un alignement centré


GRAPHIQUES

worddavd88059f3701bc516f3627ebe435b7fe8.png     

  • Type de graphique

  • Titre de l'axe horizontal

  • Titre de l'axe vertical

  • Orientation du graphique (histogramme seulement)

  • Palette de couleur à utiliser

  • Afficher ou non la légende

  • Valeur

  • Libellé

...

L'accès aux données au travers des vues SQL est simplifié.
Exemple : lecture du Code dossier, Référence, Désignation, Code nature produit, Libellé nature produit, Classe produit dans la table des ARTICLES


Requête SQL 'directe'
SELECT
ART.DOS AS DOSSIER
,ART.REF AS REFERENCE
,ART.DES AS DESIGNATION
,ART.PRODNAT AS NATUREPRODUIT
,NATURE_PRODUIT.LIB AS NATUREPRODUITLIBELLE
,LEFT(ART.PRODNAT,1) AS CLASSEPRODUIT
FROM ART
LEFT JOIN T000 AS T000 ON T000.DOS = '999 '
LEFT JOIN T036 AS NATURE_PRODUIT ON NATURE_PRODUIT.CEBIN = 36 AND ( NATURE_PRODUIT.DOS =
CASE WHEN T000.TABTYP_0036 = 2 THEN '999 ' ELSE ART.DOS END ) AND NATURE_PRODUIT.PRODNAT =
ART.PRODNAT
ORDER BY DOSSIER,REFERENCE


Requête SQL 'avec utilisation de la vue' (La jointure est déjà prévue)
SELECT
ARTICLE_V.DOSSIER,
ARTICLE_V.REFERENCE,
ARTICLE_V.DESIGNATION,
ARTICLE_V.NATUREPRODUIT,
ARTICLE_V.NATUREPRODUITLIBELLE,
ARTICLE_V.CLASSEPRODUIT
FROM ARTICLE_V
ORDER by DOSSIER,REFERENCE


Requête SQL 'avec utilisation de la vue et jointure' (la jointure n'est pas prévue)
SELECT
ARTICLE_V.DOSSIER,
ARTICLE_V.REFERENCE,
ARTICLE_V.DESIGNATION,
ARTICLE_V.NATUREPRODUIT,
NATURE_PRODUIT.LIBELLE AS NATUREPRODUITLIBELLE,
ARTICLE_V.CLASSEPRODUIT
FROM ARTICLE_V
LEFT JOIN TABLE_NATURE_PRODUIT_V AS NATURE_PRODUIT ON (ARTICLE_V.NATUREPRODUIT =
NATURE_PRODUIT.NATUREPRODUIT AND ARTICLE_V.DOSSIER = NATURE_PRODUIT.DOSC)
ORDER by DOSSIER,REFERENCE

...

Lorsque l'IA charge un widget en erreur en raison de son paramétrage, cela provoque un arrêt de l'IA. Pour corriger, il faut trouver le fichier de configuration de l'IA par utilisateur (NomUtilisateur.config) et le supprimer.
Ce fichier est stocké dans un dossier nommé 'ia' qui est lui-même stocké dans divalto/NOMENVIRONNEMENT.
Exemple : /divalto/erp212/ia/demo.config

Astuces SQL

UNION
Permet le mélange du résultat de plusieurs requêtes successives. Dans ce cas les champs doivent être strictement dans le même ordre et du même type.
RTRIM
Enlève les espaces.
FORMAT(date,'dd/MM/yyyy')
Formate une date.
FORMAT(decimal, 'C', 'fr-fr')
Formate une valeur en montant €.
CONCAT(a,b,c)
Concatène les chaines a et b et c.COALESCE(a,b,c)
Prend la première valeur trouvée dans l'ordre a puis b puis c.
CAST(champDate as date)
Force la conversion d'un champ Date en date SQL pour comparaison.
CASE WHEN condition1 THEN cas1 ELSE cas2 END
Test de condition.
YEAR(date)
Retourne l'année de la date.
MONTH(date)
Retourne le mois de la date.
RANK() OVER (ORDER BY X) as RANG ......ORDER BY RANG
Attribue un compteur de lignes du select.
dbo.PIECECONCAT(prefpino,pino)
Fonction de concaténation d'un préfixe de pièce avec le numéro de pièce.



...