Dans cette section : |
Les rapports hiérarchiques entre champs peuvent être définis dans un fichier Master et affichés automatiquement à l'aide du langage de modélisation financier (FML). Les champs parent et enfant doivent partager des valeurs et leurs rapports doivent être hiérarchiques. Les formats des champs parent et enfant doivent les deux être numériques ou alphanumériques.
Par exemple, supposons que :
ou
En examinant ces champs, il est possible de construire le diagramme d'organisation ou la structure de plan de comptes entiers. Cependant, pour imprimer le plan de comptes dans un rapport FML traditionnel, il faut lister les ID ou numéros de compte d'employés dans la syntaxe de requête dans l'ordre dans lequel ils doivent s'afficher dans le rapport. Si un employé ou un compte sont ajoutés, enlevés ou transférés, vous devez modifier la requête de rapport afin de réfléter ce changement dans la structure d'organisation. Par exemple :
TABLE FILE EMPLOYEE PRINT DEPARTMENT CURR_JOBCODE FOR EMP_ID 999999999 OVER 222222222 OVER . . .
Contrairement, les hiérarchies FML vous permettent de définir le rapport hiérarchique entre deux champs dans le fichier Master et charger ces informations dans la mémoire. La requête FML peut alors construire dynamiquement les lignes qui représentent ce rapport et les afficher dans le rapport, en commençant à tout point dans l'hiérarchie. Dans l'exemple ci-après, EMP_ID s'appelle le champ d'hiérarchie.
L'hiérarchie doit être chargée dans le mémoire. L'hiérarchie chargée s'appelle un diagramme. Si l'hiérarchie est définie dans le fichier Master et si elle est référencée par la requête FML, elle est chargée automatiquement. Si vous voulez utiliser une hiérarchie définie dans un fichier Master qui n'est ni référencée dans la requête FML ni jointe au fichier Master référencé dans la requête FML, lancez la commande LOAD CHART avant de lancer la requête FML.
Le nombre de diagrammes pouvant être chargés est 16. Les diagrammes sont automatiquement déchargés à la fin de la session.
Pour utiliser les hiérarchies FML, le champ FOR doit être :
ou
Autrement dit, le champ FOR doit être dans ou lié à une hiérarchie parent-enfant. La liaison permet que les données de transaction contenant le champ d'hiérarchie soient jointes à une autre source de données contenant la définition d'hiérarchie.
Comme pour toute requête FML, une ligne balisée s'affiche même si aucunes données ne se trouvent dans le fichier pour les valeurs de balise, où un point (.) réprésente les données manquantes. Il est possible d'annuler cette convention en ajoutant la phrase WHEN EXISTS à la définition d'une ligne balisée. Cela rend l'affichage d'une ligne dépendante de l'existence de données pour la balise.
Le fichier Master CENTGL contient une hiérarchie de plan de comptes. Le champ GL_ACCOUNT_PARENT est le champ parent de l'hiérarchie. Le champ GL_ACCOUNT est le champ d'hiérarchie. Le champ GL_ACCOUNT_CAPTION peut être utilisé comme légende descriptive pour le champ de hiérarchie.
FILE=CENTGL ,SUFFIX=FOC SEGNAME=ACCOUNTS,SEGTYPE=S01 FIELDNAME=GL_ACCOUNT, ALIAS=GLACCT, FORMAT=A7, TITLE='Ledger,Account', FIELDTYPE=I, $ FIELDNAME=GL_ACCOUNT_PARENT, ALIAS=GLPAR, FORMAT=A7, TITLE=Parent, PROPERTY=PARENT_OF, REFERENCE=GL_ACCOUNT, $ FIELDNAME=GL_ACCOUNT_TYPE, ALIAS=GLTYPE, FORMAT=A1, TITLE=Type,$ FIELDNAME=GL_ROLLUP_OP, ALIAS=GLROLL, FORMAT=A1, TITLE=Op, $ FIELDNAME=GL_ACCOUNT_LEVEL, ALIAS=GLLEVEL, FORMAT=I3, TITLE=Lev, $ FIELDNAME=GL_ACCOUNT_CAPTION, ALIAS=GLCAP, FORMAT=A30, TITLE=Caption, PROPERTY=CAPTION, REFERENCE=GL_ACCOUNT, $ FIELDNAME=SYS_ACCOUNT, ALIAS=ALINE, FORMAT=A6, TITLE='System,Account,Line', MISSING=ON, $
La source de données CENTSYSF contient des données financières au niveau de détails. Ce sont des données non consolidées pour la société fictive, CenturyCorp. Cette source de données est conçue pour être séparée de la base de données CENTGL comme si elle provient d'un système de comptabilité externe. Elle utilise un système de ligne de compte différent (SYS_ACCOUNT) qui peut être joint au champ SYS_ACCOUNT dans CENTGL. Les données utilisent des signes naturels (les dépenses sont positives, les revenus sont négatifs).
FILE=CENTSYSF ,SUFFIX=FOC SEGNAME=RAWDATA ,SEGTYPE=S2 FIELDNAME=SYS_ACCOUNT , ,A6 , FIELDTYPE=I, TITLE='System,Account,Line', $ FIELDNAME=PERIOD , ,YYM , FIELDTYPE=I, $ FIELDNAME=NAT_AMOUNT , ,D10.0 , TITLE='Month,Actual', $ FIELDNAME=NAT_BUDGET , ,D10.0 , TITLE='Month,Budget', $ FIELDNAME=NAT_YTDAMT , ,D12.0 , TITLE='YTD,Actual', $
Comment : |
Les commandes GET CHILDREN et WITH CHILDREN récupèrent et affichent dynamiquement des données hiérarchiques sur le rapport FML. GET CHILDREN n'affiche que les données enfant, mais non pas la valeur parent référencée dans la commande. WITH CHILDREN affiche le parent et puis l'enfant.
TABLE FILE filename{PRINT|SUM} ... FOR hierarchyfld parentvalue {GET|WITH} CHILD[REN] [n|ALL] [AS CAPTION|'text'] [LABEL label] . . . END
où :
Est le nom du fichier à utiliser dans la requête FML. Si l'hiérarchie pour cette requête ne peut pas être chargée automatiquement, il faut qu'elle ait été chargée auparavant en lançant la commande LOAD CHART.
Est le nom de champ d'hiérarchie. Si la requête fait référence à une structure jointe, le nom doit être le nom de champ du fichier hôte. L'alias n'est pas supporté.
est la valeur parent pour laquelle les données enfant sont à récupérer.
affiche la hiérarchie à partir du premier enfant de la première parentvalue (valeur parent) spécifiée. Le parent n'est pas compris dans l'affichage. (Cela correspond à la syntaxe FML CHILD1 OVER CHILD2 OVER...).
affiche la hiérarchie à partir de la parentvalue (valeur parent) spécifiée. Le parent est compris dans l'affichage. (Cela correspond à la syntaxe parentvalue OVER CHILD1 OVER CHILD2 OVER ...)
est un nombre entier positif entre 1 et 99, qui spécifie le nombre de niveaux de l'hiérarchie à afficher. Si un nombre supérieur à 99 est spécifié, un message d'avertissement s'affiche et n est mis à 99. La valeur par défaut est 1. Par conséquent, si n est omis, seuls les enfants directs s'affichent. GET ou WITH CHILDREN 2 affiche des enfants et petits-enfants directs. GET ou WITH CHILDREN 99 affiche des enfants jusqu'à quatre-vingt dix-neuf niveaux. ALL est synonyme de 99. Chaque instance enfant s'affiche au-dessus de celle qui la suit. Des niveaux successifs du champ d'hiérarchie sont indentés deux espaces du niveau précédent.
indique que les valeurs de légende à afficher doivent être prises du champ défini comme étant la légende (CAPTION) dans le fichier Master.
Notez que la phrase AS CAPTION est supportée pour les lignes balisées, y compris celles qui n'utilisent pas la syntaxe GET/WITH CHILDREN ou ADD. Cependant, l'hiérarchie doit être définie (en spécifiant l'attribut PARENT_OF) afin de charger et afficher les valeurs de légende. Si l'hiérarchie n'est pas définie, la phrase AS CAPTION est ignorée.
Est une chaîne de texte à utiliser comme titre de ligne pour les valeurs de champ d'hiérarchie. Le champ CAPTION défini dans le fichier Master n'est pas utilisé comme légende dans la sortie de rapport.
Est un label de ligne explicite. Chaque ligne générée est labelée avec le texte de label spécifié.
Remarque : la hiérarchie s'affiche triée par le champ parent et, au sein du parent, triée par le champ de hiérachie.
Pour plus d'informations sur les fonctions FMLFOR, FMLLIST, FMLCAP, et FMLINFO, qui renvoient les valeurs de balises et les légendes utilisées dans une requête FML, consultez Utiliser les fonctions .
La requête suivante affiche deux niveaux de numéros de compte, en commençant par le compte 3000 :
SET BLANKINDENT=ON
TABLE FILE CENTGL
PRINT GL_ACCOUNT_PARENT
FOR GL_ACCOUNT
3000 WITH CHILDREN 2
END
La sortie est montrée comme ce qui suit :
Parent ------ 3000 1000 3100 3000 3110 3100 3120 3100 3130 3100 3140 3100 3200 3000 3300 3200 3400 3200 3500 3200 3600 3200 3700 3200 3800 3200 3900 3200
Remarque : Notez que si la requête spécifie GET CHILDREN au lieu de WITH CHILDREN, la ligne de la valeur parent (3000) ne s'affiche pas dans la sortie de rapport.
La requête suivante affiche deux niveaux d'un graphique d'une hiérarchie de comptes, en commençant par le compte 1000 (le haut de la hiérarchie), et affiche les valeurs du champ de légende au lieu des numéros de compte.
SET BLANKINDENT=ON TABLE FILE CENTGL PRINT GL_ACCOUNT_PARENT FOR GL_ACCOUNT 1000 WITH CHILDREN 2 AS CAPTION END
La sortie est montrée comme ce qui suit :
Parent ------ Profit Before Tax Gross Margin 1000 Sales Revenue 2000 Cost Of Goods Sold 2000 Total Operating Expenses 1000 Selling Expenses 3000 General + Admin Expenses 3000 Total R+D Costs 1000 Salaries 5000 Misc. Equipment 5000
Remarque : notez que si la requête spécifie la commande GET CHILDREN au lieu de WITH CHILDREN, la ligne de la valeur parent (1000, Profit Before Tax) ne s'affiche pas dans la sortie de rapport.
Comment : |
La commande ADD unifie les niveaux multiples de l'hiérarchie sur une ligne de la sortie du rapport FML. ADD peut être utilisée toute seule ou conjointement avec la commande GET CHILDREN ou WITH CHILDREN. Notez que ADD est conçue pour fonctionner avec les requêtes qui utilisent la commande SUM. ADD est aussi conçue pour fonctionner avec des données au niveau de détails, mais non pas avec des données consolidées.
Lorsqu'elle est utilisée toute seule, ADD regroupe le parent et les enfants sur une ligne de la sortie de rapport, additionnant les valeurs des données numériques comprises sur la ligne. Cela correspond à la syntaxe FML parentvalue (valeur parent) ou CHILD1 OR CHILD2 OR ...
Lorsqu'elle est utilisée conjointement avec GET CHILDREN, ADD affiche une ligne pour chaque enfant de la valeur parent spécifiée. Chaque ligne est la somme de cet enfant et tous ses enfants. Vous pouvez spécifier le nombre de niveaux d'enfants à afficher (qui détermine le nombre de lignes générées dans la sortie de rapport) et la profondeur de l'addition sous chaque enfant. Par défaut, seulement les enfants directs ont une ligne dans la sortie de rapport, et l'addition pour chaque enfant comprend tous ses enfants.
Lorsqu'elle est utilisée conjointement avec WITH CHILDREN, ADD affiche premièrement une ligne dans la sortie de rapport qui se compose de l'addition de la valeur parent et tous ses enfants. Ensuite, elle affiche d'autres lignes qui sont identiques à celles affichées par GET CHILDREN ADD.
Afin d'utiliser un enregistrement de données sur plus d'une ligne d'un rapport FML (par exemple, pour afficher les lignes de détail et récapitulatives ou pour consolider les données de détail à des niveaux multiples), le paramètre suivant est requis :
SET FORMULTIPLE=ON
TABLE FILE filenameSUM ... FOR hierarchyfld parentvalue ADD [n|ALL] [AS CAPTION|'text'] [LABEL label] . . . END
où :
Est le nom du fichier à utiliser dans la requête FML. Si l'hiérarchie pour cette requête ne peut pas être chargée automatiquement, il faut qu'elle ait été chargée auparavant en lançant la commande LOAD CHART.
Est le nom de champ d'hiérarchie. Si la requête fait référence à une structure jointe, le nom doit être le nom de champ du fichier hôte. L'alias n'est pas supporté.
est la valeur parent qui détermine le point de début dans la hiérarchie pour l'agrégation.
affiche les niveaux parent et les niveaux n de ses enfants sur une ligne, totalisant les valeurs de données numériques qui s'affichent sur la ligne. Ceci correspond à la syntaxe FML parentvalue ou CHILD1 OR CHILD2 OR CHILD3 et plus, si applicable.
Pour afficher uniquement la somme des enfants, vous devez afficher la ligne parent, afficher la ligne récapitulative et utiliser l'attribut RECAP pour soustrayer la ligne parent de la somme. Par exemple :
FOR ... parentvalue OVER parentvalue ADD 1 OVER RECAP CHILDSUM = R2-R1;
Est un nombre entier positif entre 1 et 99, qui spécifie le nombre de niveaux de l'hiérarchie à afficher. ALL est la valeur par défaut. Par conséquent, si n est omis, seuls les enfants directs s'affichent. Si n est 1, seuls les enfants directs sont compris. Si n est 2, les enfants et petits-enfants directs sont compris. ADD 99 inclut jusqu'à 99 niveaux d'enfants. ALL est synonyme de 99.
Indique que la légende de la valeur parent s'affiche pour la ligne de total.
Notez que la phrase AS CAPTION est supportée pour les lignes balisées, y compris celles qui n'utilisent pas la syntaxe GET CHILDREN ou ADD. Cependant, l'hiérarchie doit être définie (en spécifiant l'attribut PARENT_OF) afin de charger et afficher les valeurs de légende. Si l'hiérarchie n'est pas définie, la phrase AS CAPTION est ignorée.
est une chaîne de texte à utiliser comme titre de ligne pour la ligne agrégée. Le champ CAPTION défini dans le fichier Master n'est pas utilisé comme légende dans la sortie de rapport.
Est un label de ligne explicite. Chaque ligne générée est labelée avec le texte de label spécifié.
La source de données CENTSYSF contient des données financières au niveau de détails. Pour utiliser l'hiérarchie de compte dans la source de données CENTGL avec ces données financières, les deux sources de données sont jointes. Les données dans CENTSYSF sont stockées avec des signes naturels, qui veut dire, du point de vue financier, que les revenus et dettes sont stockés comme numéros négatifs. La partie de l'hiérarchie utilisée dans cette requête ne contient que des données positives.
Notez que la jointure ne doit pas être unique, parce que l'hiérarchie est définie dans le segment hôte.
Premièrement la commande WITH CHILDREN affiche les lignes de la hiérarchie en commençant par le compte (Selling Expenses). Notez que seulement les comptes sans enfants sont remplis dans cette source de données au niveau de détails. Ensuite, la commande ADD crée une ligne qui est la somme du compte 3100 et tous ses enfants :
SET BLANKINDENT=ON SET FORMULTIPLE=ON JOIN SYS_ACCOUNT IN CENTGL TO ALL SYS_ACCOUNT IN CENTSYSF TABLE FILE CENTGL SUM NAT_AMOUNT/D10.0 NAT_YTDAMT/D10.0 FOR GL_ACCOUNT 3100 WITH CHILDREN ALL AS CAPTION OVER BAR OVER 3100 ADD AS CAPTION IF PERIOD EQ '2002/03' END
La sortie est montrée comme ce qui suit :
TABLE FILE filename SUM ... FOR hierarchyfld parentvalue {GET|WITH} CHILD[REN] [n|ALL] ADD [m|ALL] [AS CAPTION|'text'] [LABEL label] . . . END
où :
est le nom du fichier à utiliser dans la requête FML. Si la hiérarchie pour cette requête ne peut pas être chargée automatiquement, il faut qu'elle ait été chargée auparavant en lançant la commande LOAD CHART.
Est le nom de champ d'hiérarchie. Si la requête fait référence à une structure jointe, le nom doit être le nom de champ du fichier hôte. L'alias n'est pas supporté.
est la valeur parent qui détermine le point de début dans la hiérarchie pour l'agrégation.
GET spécifie que la première ligne dans le rapport est la ligne consolidée du premier enfant de la valeur parent. WITH spécifie que la première ligne générée dans le rapport est la ligne liée de la valeur parent, suivie des lignes liées de chacun de ses enfants, jusqu'au niveau spécifié par n.
Est un nombre entier positif entre 1 et 99, qui spécifie le nombre de niveaux d'enfants à afficher. La ligne de sortie de chaque enfant est la somme de cet enfant et de ses enfants jusqu'au niveau spécifié pour l'option ADD. La valeur par défaut est 1. Par conséquent, si n est omis, chaque enfant direct a une ligne dans le rapport. Si n est 2, les enfants et petits-enfants directs ont chacun une ligne dans la sortie de rapport. ALL est synonyme de 99.
totalise la hiérarchie jusqu'au niveau spécifié par m pour chaque ligne générée par les commandes GET ou WITH CHILDREN.
est un nombre entier positif entre 1 et 99, qui spécifie le nombre d'enfants à consolider sur chaque ligne de la sortie de rapport. Si un nombre supérieur à 99 est spécifié, un message d'avertissement s'affiche et m est mis à 99. ALL est la valeur par défaut. Par conséquent, si m est omis, la ligne liée totalise tous les enfants. Si m est 2, seuls les enfants et petits-enfants directs sont liés pour chaque ligne dans la sortie de rapport. ADD 99 regroupe les enfants jusqu'à 99 niveaux. ALL est synonyme de 99.
Indique que la légende de la valeur parent s'affiche pour la ligne de total.
Notez que la phrase AS CAPTION est supportée pour les lignes balisées, y compris celles qui n'utilisent pas la syntaxe GET CHILDREN ou ADD. Cependant, l'hiérarchie doit être définie (en spécifiant l'attribut PARENT_OF) afin de charger et afficher les valeurs de légende. Si l'hiérarchie n'est pas définie, la phrase AS CAPTION est ignorée.
est une chaîne de texte à utiliser comme titre de ligne pour la ligne agrégée. Le champ CAPTION défini dans le fichier Master n'est pas utilisé comme légende dans la sortie de rapport.
Est un label de ligne explicite. Chaque ligne générée est labelée avec le texte de label spécifié.
Dans la requête suivante, la première commande WITH CHILD affiche les données de détail pour l'hiérarchie en commençant par le compte 3100. La prochaine commande WITH CHILD crée une ligne consolidée pour le compte parent (3100) et pour chaque enfant direct :
SET BLANKINDENT=ONSET FORMULTIPLE=ON JOIN SYS_ACCOUNT IN CENTGL TO ALL SYS_ACCOUNT IN CENTSYSF TABLE FILE CENTGL SUM NAT_AMOUNT/D10.0 NAT_YTDAMT/D10.0 FOR GL_ACCOUNT 3100 WITH CHILDREN ALL AS CAPTION OVER " " OVER BAR AS = OVER " " OVER 3100 WITH CHILDREN ADD AS CAPTION IF PERIOD EQ '2002/03' END
Notez que la jointure ne doit pas être unique, parce que l'hiérarchie est définie dans le segment hôte.
Dans la sortie suivante, la partie supérieure affiche les données au niveau de détails. La partie inférieure affiche les données consolidées. Dans la partie consolidée du rapport :
L'utilisation de GET CHILDREN au lieu de WITH CHILDREN élimine la première ligne de chaque partie de la sortie. Les lignes restantes ne changent pas.
La requête suivante affiche une ligne unifiée pour le compte 2000 et chacun de ses enfants et petits-enfants directs.
SET FORMULTIPLE=ON
JOIN SYS_ACCOUNT IN CENTGL TO ALL SYS_ACCOUNT IN CENTSYSF
TABLE FILE CENTGL
SUM NAT_AMOUNT/D10.0 NAT_YTDAMT/D10.0
FOR GL_ACCOUNT
2000 WITH CHILDREN 2 ADD AS CAPTION
IF PERIOD EQ '2002/03'
END
La sortie est montrée comme ce qui suit :
Comment : Référence : |
Dans la plupart des cas, une hiérarchie est chargée automatiquement par suite de la syntaxe de la requête. Cependant, si vous devez utiliser une hiérarchie définie dans un fichier Master contre une source de données qui n'est pas jointe au fichier de hiérarchie (mais qui contient le même champ de hiérarchie), vous pouvez charger manuellement les données de hiérarchie en utilisant la commande LOAD CHART.
Le nombre de diagrammes pouvant être chargés est limité en fonction du mémoire disponible. Les diagrammes sont automatiquement déchargés à la fin de la session.
Le diagramme est chargé en exécutant une requête TABLE qui produit une liste des valeurs parent et de leurs enfants associés :
TABLE FILE chartfile BY parentfield BY hierarchyfield [SUM captionfield] END
Le diagramme résultant comprend les informations suivantes. Il peut aussi comprendre les légendes associées, selon que la phrase AS CAPTION ait été utilisée dans la requête ou pas.
parentfield hierarchyfield ----------- -------------- parentvalue1 child1 parentvalue1 child2 parentvalue2 child3 . . .
Il vous est possible de charger manuellement les données d'hiérarchie si vous avez besoin d'utiliser une hiérarchie définie dans un fichier Master contre une source de données qui n'est pas jointe au ficher d'hiérarchie mais qui contient le même champ d'hiérarchie.
La mémoire disponible dicte le nombre de diagrammes pouvant être chargés. Les diagrammes sont automatiquement déchargés lorsque WebFOCUS s'interrompt.
LOAD CHART chartfile[.sega].hierarchyfld [FOR requestfile[[.segb].fieldb]]
où :
est le nom du fichier Master qui contient les informations de hiérarchie.
Est le nom du segment qui contient le champ d'hiérarchie. Le nom de segment n'est requis qui si un champ dans un autre segment de la structure a le même nom de champ que le champ d'hiérarchie.
est le champ de hiérarchie. Il est requis parce qu'un ficher Master peut définir des hiérarchies multiples.
Charge une hiérarchie définie dans un fichier Master qui n'est pas utilisée dans la requête de rapport FML. Par exemple, si le fichier Master B comprend les informations d'hiérarchie mais que le fichier Master B est utilisée dans la requête (sans jointure entre les fichiers Master A et B), lancez la commande LOAD CHART suivante avant la requête FML :
LOAD CHART B.FLDB FOR A.FLDA TABLE FILE A ...
est le nom du fichier Master à utiliser dans la requête FML.
est le nom du segment qui contient les valeurs de champ de hiérarchie dans le fichier Master utilisé dans la requête FML. Il n'est pas requis s'il a le même nom que sega.
Est le champ dans le fichier Master spécifié dans la requête FML qui contient les valeurs du champ d'hiérarchie. Il n'est pas requis s'il a le même nom que le champ d'hiérarchie.
Remarque :
SET FORMULTIPLE=ON
WebFOCUS |