Cómo generar informes dinámicos desde una jerarquía

En esta sección:

Se pueden definir relaciones jerárquicas entre campos en un archivo máster y mostrarlas automáticamente con el Lenguaje de modelos financieros (FML). Los campos principal y secundario deben compartir los valores de datos y su relación debe ser jerárquica. Los formatos de los campos principal y secundario deben ser numéricos o alfanuméricos.

Por ejemplo, supongamos que:

Al examinar estos campos, es posible construir todo el organigrama de la empresa o de la estructura de cuentas. Sin embargo, para imprimir dicho organigrama en un informe FML tradicional, necesita listar las identificaciones de los empleados o los números de cuenta en la sintaxis de solicitud en el orden en que deben aparecer en el informe. Si se añade, se elimina o se transfiere un empleado o una cuenta, tiene que cambiar la solicitud de informe para reflejar el cambio en el organigrama. Por ejemplo:

TABLE FILE EMPLOYEE
PRINT DEPARTMENT CURR_JOBCODE
FOR EMP_ID
999999999   OVER
222222222   OVER
 .
 .
 .

A diferencia de lo anterior, con las jerarquías FML puede definir la relación jerárquica existente entre dos campos en el archivo máster y cargar esta información en la memoria. La solicitud FML puede entonces construir de manera dinámica las filas que representan esta relación y mostrarlas en el informe, empezando en cualquier punto de la jerarquía. En el ejemplo mostrado, EMP_ID se identifica como el campo de jerarquía.


Principio de página

x
Requisitos de las jerarquías FML
  1. En el archivo máster, utilice los atributos PROPERTY=PARENT_OF y REFERENCE=hierarchyfld para definir la relación jerárquica entre dos campos. Para más información, consulte el manual Cómo describir datos con el lenguaje WebFOCUS .

    Se debe cargar la jerarquía en la memoria. A esta jerarquía cargada se le llama diagrama. Si se define la jerarquía en el archivo máster y se menciona en la solicitud FML, se carga automáticamente. Si desea utilizar una jerarquía definida en un archivo máster que no ha sido mencionado en la solicitud FML o combinado con el archivo máster mencionado en la solicitud FML, emita el comando LOAD CHART antes de emitir la solicitud FML.

    Se pueden cargar hasta dieciséis diagramas. Los diagramas se descargan automáticamente cuando termina la sesión.

  2. En la frase FOR de la solicitud FML. Use la frase GET/WITH CHILDREN o ADD para recuperar los datos jerárquicos, empezando por un punto específico de la jerarquía.

Para utilizar jerarquías FML, el campo FOR debe ser:

En otras palabras, el campo FOR debe encontrarse en una jerarquía de principal-secundario o debe estar vinculado a una de ellas. El último caso admite datos de transacción que contengan el campo de jerarquía que se va a unir al origen de datos independiente, que incluye la definición de la jerarquía.

Como con cualquier otra solicitud FML, se muestra una fila etiquetada, incluso cuando en el archivo no existen datos para los valores de datos, con un punto (.) que representa los datos no disponibles. Puede anular esta convención añadiendo la frase WHEN EXISTS a la definición de una fila etiquetada. Esta acción hará que sólo aparezca la fila si existen datos para esa etiqueta.



Ejemplo: Cómo definir una jerarquía en un archivo máster

El archivo máster CENTGL contiene una jerarquía de diagrama de cuentas. El campo GL_ACCOUNT_PARENT es el campo principal de la jerarquía. El campo GL_ACCOUNT es el campo de jerarquía. El campo GL_ACCOUNT_CAPTION puede usarse como leyenda descriptiva del campo de jerarquía.

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, $

El origen de datos CENTSYSF contiene datos financieros a nivel de detalle. Se trata de datos financieros no consolidados de una corporación ficticia, CenturyCorp. Ha sido diseñado para estar separado de la base de datos CENTGL como si viniera de un sistema de contabilidad externo. Utiliza un sistema de línea de cuenta diferente (SYS_ACCOUNT) que se puede unir al campo SYS_ACCOUNT de CENTGL. Se emplean signos naturales para los datos (los gastos son negativos y los ingresos, negativos).

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', $

Principio de página

x
Cómo mostrar una jerarquía FML

Cómo:

Los comandos GET CHILDREN y WITH CHILDREN recuperan y muestran datos dinámicamente en el informe FML. GET CHILDREN muestra solamente el valor secundario, no el principal mencionado en el comando. WITH CHILDREN muestra primero el valor principal y luego el secundario.



x
Sintaxis: Cómo Mostrar una jerarquía FML
TABLE FILE filename{PRINT|SUM} ...
FOR hierarchyfld 
parentvalue {GET|WITH} CHILD[REN] [n|ALL]
 [AS CAPTION|'text'] [LABEL label]
.
.
.
END

donde:

filename

Es el nombre del archivo que se debe utilizar en la solicitud FML. Si no se puede cargar automáticamente la jerarquía de esta solicitud, debió cargarse previamente mediante la emisión del comando LOAD CHART.

hierarchyfld

Es el nombre del campo de jerarquía. Si la solicitud menciona una estructura unida, el nombre debe ser el nombre de campo del archivo host. No se admiten alias.

parentvalue

Es el valor principal para el que debe ser recuperado el valor secundario.

GET CHILDREN

Muestra la jerarquía empezando por el primer secundario del parentvalue especificado. No incluye al principal en la visualización. (Esto corresponde a la sintaxis FML CHILD1 OVER CHILD2 OVER...)

WITH CHILDREN

Muestra la jerarquía empezando por el parentvalue especificado. Incluye al principal en la visualización. (Esto corresponde a la sintaxis FML parentvalue OVER CHILD1 OVER CHILD2 OVER ...).

n|ALL

Es un número entero positivo de 1 a 99 que especifica el número de niveles de la jerarquía que hay que mostrar. Si se especifica un número superior a 99, aparece un mensaje de advertencia y n se convierte en 99. El valor predeterminado es 1. Por lo tanto, si se omite n, sólo se muestran los secundarios directos. GET o WITH CHILDREN 2 muestra los secundarios y los subsecundarios directos. GET o WITH CHILDREN 99 muestra hasta 99 niveles de secundarios. ALL es sinónimo de 99. Cada ocurrencia de un secundario se imprime sobre la siguiente. Se sangran en dos espacios los niveles sucesivos del campo de jerarquía del nivel anterior.

CAPTION

Indica que los valores de títulos que hay que mostrar se deben tomar del campo definido como CAPTION en el archivo máster.

Fíjese que las filas marcadas admiten la frase AS CAPTION, incluyendo aquellas que no utilizan la sintaxis GET/WITH CHILDREN o ADD. Sin embargo, se debe definir la jerarquía (especificando el atributo PARENT_OF) para cargar y mostrar los valores de títulos. Si no se define la jerarquía, se ignora la frase AS CAPTION.

'text'

Es una cadena de texto utilizada como fila de título para los valores de campo de jerarquía. El campo CAPTION definido en el archivo máster no se utiliza como título en la salida de informe.

label

Es una etiqueta de fila implícita. Cada fila generada se etiqueta con el texto especificado de etiqueta.

Nota: La jerarquía aparece clasificada por el campo principal y, dentro de éste, clasificada según el campo de jerarquía.

Para más información sobre las funciones FMLFOR, FMLLIST, FMLCAP y FMLINFO que devuelven valores de etiquetas y subtítulos utilizados en solicitudes FML, consulte . Cómo usar las funciones.



Ejemplo: Cómo mostrar una jerarquía FML

La siguiente solicitud muestra dos niveles de números de cuenta, empezando por la cuenta 3000:

SET BLANKINDENT=ON
TABLE FILE CENTGL
PRINT GL_ACCOUNT_PARENT
FOR GL_ACCOUNT 
3000 WITH CHILDREN 2 
END

La salida aparece en la imagen siguiente.

             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

Nota: Si la solicitud especifica GET CHILDREN en vez de WITH CHILDREN, la línea del valor principal (3000) no aparece en la salida de informe.



Ejemplo: Cómo mostrar una jerarquía FML con títulos

La siguiente solicitud muestra dos niveles de la jerarquía del plan de cuentas, empezando por la cuenta 1000 (parte superior de la jerarquía), con los valores del campo de título en lugar de los números de cuentas.

SET BLANKINDENT=ONTABLE FILE CENTGL
PRINT GL_ACCOUNT_PARENT
FOR GL_ACCOUNT 
1000 WITH CHILDREN 2 AS CAPTION 
END

La salida aparece en la imagen siguiente.

                                    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  

Nota: Si la solicitud especifica GET CHILDREN en vez de WITH CHILDREN, la línea del valor principal (1000, resultado antes de impuestos) no aparece en la salida de informe.


Principio de página

x
Cómo consolidar una jerarquía FML

Cómo:

El comando ADD consolida múltiples niveles de la jerarquía en una línea de la salida de informe FML. Puede utilizar ADD por sí solo o junto a GET CHILDREN o WITH CHILDREN. Tome en consideración que ADD ha sido diseñado para funcionar con solicitudes que utilizan el comando SUM. También ha sido diseñado para usarlo con datos detallados, no con datos consolidados.

Cuando se utiliza solo, ADD agrega el principal y el secundario en una línea de la salida de informe, resumiendo los valores de datos numéricos incluidos en la línea. Esto corresponde con la sintaxis FML parentvalue o CHILD1 OR CHILD2 OR ...

Cuando se utiliza junto con GET CHILDREN, ADD muestra una línea para cada secundario del valor principal especificado. Cada línea es una suma de ese secundario y todos sus respectivos secundarios. Puede especificar el número de niveles de secundarios que desee mostrar (esto determina el número de líneas generadas en la salida de informe) y la profundidad de resumen debajo de cada secundario. De forma predeterminada, sólo los secundarios directos tienen una línea en la salida de informe y el resumen de cada secundario incluye todos sus respectivos secundarios.

Cuando se utiliza junto con WITH CHILDREN, ADD muestra primero una línea en la salida de informe que consta del resumen del valor principal y todos sus secundarios. Luego muestra líneas adicionales idénticas a las que se muestran para GET CHILDREN ADD.

Para utilizar un registro de datos en más de una línea de un informe FML (por ejemplo, para mostrar tanto detalle como líneas del resumen o para consolidar los datos detallados en múltiples niveles), se necesita el siguiente ajuste:

SET FORMULTIPLE=ON


x
Sintaxis: Cómo Crear una línea de resumen para una jerarquía FML
TABLE FILE filenameSUM ...
FOR hierarchyfld 
parentvalue ADD [n|ALL]
 [AS CAPTION|'text'] [LABEL label]
.
.
.
END

donde:

filename

Es el nombre del archivo que se debe utilizar en la solicitud FML. Si no se puede cargar automáticamente la jerarquía de esta solicitud, debió cargarse previamente mediante la emisión del comando LOAD CHART.

hierarchyfld

Es el nombre del campo de jerarquía. Si la solicitud menciona una estructura unida, el nombre debe ser el nombre de campo del archivo host. No se admiten alias.

parentvalue

Es el valor principal que determina el punto inicial en la jerarquía para agregación.

ADD

Muestra al principal y a n niveles de sus secundarios en una fila y suma los valores de datos numéricos que aparecen en la fila. Esto corresponde a la sintaxis parentvalue de FML, o CHILD 1 OR CHILD2 OR CHILD3, etc. cuando sea necesario.

Para mostrar la suma de los secundarios solamente, debe mostrar la fila principal y la fila de resumen y luego utilizar una RECAP para sustraer la fila principal de la suma. Por ejemplo:

FOR ... 
parentvalue                 OVER 
parentvalue ADD 1           OVER
RECAP CHILDSUM = R2-R1;
n|ALL

Es un número entero positivo de 1 a 99 que especifica el número de niveles de la jerarquía que hay que agregar. ALL es el valor predeterminado. Por lo tanto, si se omite n, todos los secundarios se incluyen en la suma. Si n es 1, sólo se incluyen los secundarios directos. Si n es 2, se incluyen los secundarios o subsecundarios directos. ADD 99 incluye hasta 99 niveles de secundarios. ALL es sinónimo de 99.

CAPTION

Indica que se muestra el título del valor principal para toda la fila.

Tenga en cuenta que la frase AS CAPTION se admite para filas marcadas, incluyendo aquellas que no utilizan la sintaxis GET CHILDREN o ADD. Sin embargo, se debe definir la jerarquía (especificando el atributo PARENT_OF) para cargar y mostrar los valores de títulos. Si no se define la jerarquía, se ignora la frase AS CAPTION.

'text'

Es una cadena de texto que se utiliza como título de fila para la fila agregada. El campo CAPTION definido en el archivo máster no se utiliza como título en la salida de informe.

label

Es una etiqueta de fila implícita. Cada fila generada se etiqueta con el texto especificado de etiqueta.



Ejemplo: Cómo mostrar una línea de resumen de una jerarquía FML

El origen de datos CENTSYSF contiene datos financieros a nivel de detalle. Para utilizar la jerarquía de cuentas en el origen de datos CENTGL con sus datos financieros, se combinan los dos orígenes de datos. Los datos contenidos en CENTSYSF se almacenan con signos naturales; es decir, en términos financieros, que los ingresos y las deudas se almacenan como números negativos. La parte de la jerarquía utilizada en esta solicitud contiene sólo datos positivos.

Tenga en cuenta que no se necesita combinar para que sea única, porque la jerarquía se define en el segmento host.

Primero, el comando WITH CHILDREN muestra las líneas de la jerarquía empezando por la cuenta Gastos de ventas. Tenga en cuenta que solamente las cuentas sin secundarios se alimentan en este origen de datos detallado. El comando ADD crea entonces una línea que es la suma de la cuenta 3100 y todos sus secundarios.

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 salida aparece en la imagen siguiente.

informe



x
Sintaxis: Cómo Consolidar datos de jerarquía FML en cualquier nivel y a cualquier profundidad
TABLE FILE filename 
SUM ...
FOR hierarchyfld 
parentvalue {GET|WITH} CHILD[REN] [n|ALL] ADD [m|ALL]
 [AS CAPTION|'text'] [LABEL label]
.
.
.
END

donde:

filename

Es el nombre del archivo empleado en la solicitud FML. Si la jerarquía de esta solicitud no se carga automáticamente, indica que se cargó anteriormente mediante el comando LOAD CHART.

hierarchyfld

Es el nombre del campo de jerarquía. Si la solicitud menciona una estructura unida, el nombre debe ser el nombre de campo del archivo host. No se admiten alias.

parentvalue

Es el valor principal que determina el punto inicial en la jerarquía para agregación.

GET|WITH

GET especifica que la primera línea generada en el informe, sea la línea consolidada para el primer elemento secundario del valor principal. GET especifica que la primera línea generada en el informe sea la línea consolidada para el valor principal, seguida por las líneas consolidadas de cada uno de sus secundarios, hasta el nivel especificado por n.

n|ALL

Es un número entero positivo de 1 a 99 que especifica el número de niveles de elementos secundarios que se va a mostrar. La línea de salida de cada secundario contiene la suma de dicho secundario y sus secundarios hasta la profundidad especificada para la opción ADD. El valor predeterminado es 1. Por lo tanto, si se omite n, cada secundario directo tiene una línea en el informe. Si n es 2, los secundarios y los subsecundarios directos tiene cada uno una línea en la salida de informe. ALL es sinónimo de 99.

ADD

Suma la jerarquía hasta la profundidad especificada por m para cada línea generada por los comandos GET o WITH CHILDREN.

m|ALL

Es un número entero positivo de 1 a 99 que especifica el número de niveles de secundarios que hay que consolidar en cada línea de la salida de informe. Si se especifica un número mayor de 99, aparece un mensaje de advertencia y m se convierte en 99. ALL es el valor predeterminado. Por lo tanto, si se omite m, la línea consolidada suma todos los secundarios. Si m es 2, sólo se consolidan los secundarios y subsecundarios de cada línea en la salida de informe. ADD 99 agrega secundarios en 9 niveles. ALL es sinónimo de 99.

CAPTION

Indica que se muestra el título del valor principal para toda la fila.

Tenga en cuenta que la frase AS CAPTION se admite para filas marcadas, incluyendo aquellas que no utilizan la sintaxis GET CHILDREN o ADD. Sin embargo, se debe definir la jerarquía (especificando el atributo PARENT_OF) para cargar y mostrar los valores de títulos. Si no se define la jerarquía, se ignora la frase AS CAPTION.

'text'

Es una cadena de texto que se utiliza como título de fila para la fila agregada. El campo CAPTION definido en el archivo máster no se utiliza como título en la salida de informe.

label

Es una etiqueta de fila implícita. Cada fila generada se etiqueta con el texto especificado de etiqueta.



Ejemplo: Cómo consolidar datos de jerarquía FML

En la siguiente solicitud, el primer comando WITH CHILD muestra los datos detallados de la jerarquía, empezando por la cuenta 3100. El siguiente comando WITH CHILD crea una línea consolidada para la cuenta principal (3100) y cada secundario directo.

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

Tenga en cuenta que no se necesita combinar para que sea única, porque la jerarquía se define en el segmento host.

En la salida siguiente, la parte superior muestra los datos detallados. La parte inferior muestra los datos consolidados. En la parte consolidada del informe:

informe

El uso de GET CHILDREN en vez de WITH CHILDREN elimina la línea superior de cada parte de la salida. Las líneas restantes son las mismas.

informe

La siguiente solicitud muestra una línea consolidada para la cuenta 2000 y cada uno de sus secundarios y subsecundarios directos.

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 salida aparece en la imagen siguiente.

informe


Principio de página

x
Cómo cargar manualmente una jerarquía

Cómo:

Referencia:

En la mayoría de los casos, las jerarquías se cargan automáticamente como resultado de la sintaxis de la solicitud. Sin embargo, si necesita utilizar una jerarquía definida en un archivo máster contra un origen de datos que no esté combinado con el archivo de jerarquía (pero que contenga el mismo campo de jerarquía), puede cargar manualmente los datos de jerarquía con el comando LOAD CHART.

El número de diagramas que se puede cargar está limitado por la memoria disponible. Los diagramas quedan descargados automáticamente cuando termina la sesión.

Este diagrama se carga ejecutando una solicitud TABLE que produce una lista de valores principales y sus elementos secundarios.

TABLE FILE chartfile 
BY parentfield BY hierarchyfield 
[SUM captionfield]
END

El diagrama que resulta de esto contiene la siguiente información. Podría también contener los títulos asociados, dependiendo de si se utiliza la frase AS CAPTION en la solicitud.

parentfield     hierarchyfield 
-----------     -------------- 
parentvalue1    child1 
parentvalue1    child2
parentvalue2    child3 
  .
  .
  .


x
Sintaxis: Cómo Cargar una jerarquía desde un archivo máster para utilizarla con un archivo máster separado

Si necesita utilizar una jerarquía definida en un archivo máster basado en un origen de datos que no ha sido combinado con el archivo de la jerarquía, pero que contiene el mismo campo de jerarquía, puede cargar manualmente los datos de la jerarquía.

La memoria disponible dicta el número de diagramas que se puede cargar. Los diagramas quedan descargados automáticamente cuando finaliza WebFOCUS.

LOAD CHART chartfile[.sega].hierarchyfld 
   [FOR requestfile[[.segb].fieldb]]

donde:

chartfile

Es el nombre del archivo máster que contiene la información de jerarquía.

sega

Es el nombre del segmento que contiene el campo de jerarquía. El nombre del segmento sólo es necesario cuando un campo situado en otro campo de la estructura tiene el mismo nombre de campo que el campo de jerarquía.

hierarchyfld

Es el campo de jerarquía. Se requiere porque un archivo máster puede definir múltiples jerarquías.

FOR

Carga una jerarquía definida en un archivo máster que no se utiliza en la solicitud de informe FML. Por ejemplo, si el archivo máster B contiene la información de jerarquía pero se utiliza el archivo máster A en la solicitud (sin una join entre los archivos máster A y B), emita el siguiente comando LOAD CHART antes de la solicitud FML:

LOAD CHART B.FLDB FOR A.FLDA
TABLE FILE A ...
requestfile

es el nombre del archivo máster utilizado en la solicitud FML.

segb

Es el nombre del segmento que contiene los valores de campo de jerarquía en el archivo máster utilizados en la solicitud FML. No es obligatorio si tiene el mismo nombre que sega.

fieldb

es el campo en el archivo máster especificado en la solicitud FML que contiene los valores del campo de jerarquía. No es obligatorio si tiene el mismo nombre que el campo de la jerarquía.

Nota:



x
Referencia: Notas sobre el uso de jerarquías FML

WebFOCUS