jueves, 27 de diciembre de 2007

[Meta4 - Capital Humano] La gestión de la Compensación Total

Como no sólo de "tirar líneas" de código debe de vivir un buen técnico-consultor de Meta4 me he decidido a escribir y publicar artículos, white-papers, etc. que encuentre interesantes sobre la Gestión de Recursos Humanos y que, sobre todo, estén relacionados con Meta4.

Creo que tan importante es conocer como funciona a nivel técnico una herramienta, Meta4 en este caso, como conocerla a nivel funcional. Y no sólo me refiero a conocer el flujo de los procesos que se han desarrollado en el estándar, sino aquellos procesos o técnicas que tienen que ver con las diferentes formas de gestionar los Recursos Humanos que tienen las diversas organizaciones con las que trabajamos; privadas, públicas, cooperativas,...

En este caso, en el site español de Meta4, aparece publicado un artículo sobre "Compensación Salarial Total" que ha publicado Tomás San Román, responsable comercial de la Solución de Compensación Salarial de Meta4, en el núm. 216 (diciembre 2007) de la revista Capital Humano (Pág. 86).


"Uno de los mayores retos que tendrán que afrontar los Departamentos de Recursos Humanos de las empresas en los próximos años es el de la captación, retención y motivación del talento, debido a un cambio de escenario laboral muy brusco acontecido en los últimos año. El autor de este artículo expone en él las claves de la compensación total para estas nuevas generaciones que se incorporan a las empresas y aboga por la tecnología como herramienta de apoyo en los procesos de gestión y desarrollo de todos los modelos retributivos (fija, variable, flexible, en especie,...)"


Me parece interesante analizar como Tomás San Román refleja los diferentes tipos de retribución que actualmente existen en el mercado; retribución Fija, retribución Variable, retribución a corto o a largo Plazo, retribución Flexible y la retribución en Especie y como enfoca la ayuda que podemos ofrecer desde una aplicación como Meta4.


El enlace al árticulo es: Compensación Total (pdf) (Nota: este enlace se hace hacia otro "público" en el site español de Meta4)

lunes, 24 de diciembre de 2007

Feliz Navidad y próspero año 2008

Solo quería desearos a todos los que entráis y leéis este Blog:
Feliz Navidad y
próspero año 2008

ZORIONAK eta URTE BERRI ON!!!

jueves, 20 de diciembre de 2007

Generación de trazas "ldbinsp0_X.txt"

Las trazas de la Base de Datos Lógica son realmente utiles (aparte de que nos las pida siempre soporte) para comprobar que sentencias se lanzan contra la Base de Datos Física.


Existen el registro entradas que controlan a generación de estas trazas. Todos ellos bajo la rama HKEY_LOCAL_MACHINE\SOFTWARE\Meta4\Mind\3.X\Build\[Build]\CLIENT\CVM\LOG:
  1. DebugDir: Dónde se generarán estas trazas (por defecto: C:\Archivos de programa\meta4\M4DevClient\M4Temp)
  2. MaxLDBInspSize: Tamaño máximo que pueden alcanzar el total de archivos de traza.
  3. MaxRollingFileNum: caso de que MaxRollingFileNum sea igual a "1" número de ficheros generados antes de rotar su uso.
  4. MaxRollingFileSize: es el tamaño máximo del fichero antes de que se genere el de backup.
  5. MultipleFilesTrace: Si es "0" es que no se generarán multiples ficheros.
  6. SystemDebugDetailLevel y
  7. SystemDebugEnable.

La combinación de valores posibles para ambas entradas de registro aparece en la siguiente tabla:

SystemDebugEnableSystemDebugDetailLevelSignificado
00Sin traza
10Traza de datos
20Traza datos y metadatos
30Traza de mayor nivel
0<>0Sin traza
1<>0Traza de datos con el filtro especificado
2<>0raza de datos y metadatos con el filtro especificado
3<>0Mayor traza posible con el filtro especificado


Los valores de filtrado posibles determinan el detalle que podemos obtener. Cabe destacar que una traza con el nivel de detalle máximo (sin filtro) es más extensa y puede ser más difícil de interpretar. Los posibles tipos de filtro se listan a continuación.

SystemDebugDetailLevel

0

No se aplica filtro. Se vuelcan todos los datos

1

Se muestran detalles relacionados con la ejecución y tiempos, pero no datos

2

Todos los detalles (ejecución, datos, prepares, bindings…)(1). No filtros de seguridad.

3

Se muestran detalles relacionados con ejecuciones, tiempos y datos. Como el nivel 1 pero con datos. No muestra prepares, bind ni filtros de seguridad.

4

Se muestran detalles relacionados con ejecuciones, tiempos, datos e información de filtros de seguridad, pero no datos.


(1) No significa que sea equivalente a SystemDebugEnable = 1 y SystemDebugDetailLevel = 0. La información que se vuelca con los valores anteriores es mucho más extensa que con SystemDebugEnable = 1 y SystemDebugDetailLevel = 2.


Si el valor es menor que cero y mayor que cuatro se tomará valor cero.

Puedes encontrar información referente a estas entradas en el manual Administrador_Depuracion_Trazas.pdf, páginas 19, 20 y 21.

martes, 18 de diciembre de 2007

Detener la generación de archivos de benchmark del Servidor de aplicaciones

¿Cómo se puede detener, o limitar, la generación de los archivos de benchmark (benchmark_YYYY-MM-DD@XYZABC.txt) que genera el servidor de aplicaciones de Meta4?


Para desactivar la generación de los ficheros benchmark debes modificar el fichero startup.obl concretamente localizar el texto: “OUT_TO_FILE” dentro del bloque "COMMUNICATION_SERVER BLOCK10" y establece el valor "FALSE".


Puedes encontrar información referente a estas entradas en el manual Administración_Servidor_Aplicaciones.pdf , páginas 134 y 135.

lunes, 17 de diciembre de 2007

Trucos con el Registro de Windows

Podemos "tocar" el registro de Windows, dentro de la rama de Meta4, para poder variar el funcionamiento estándar de la aplicación.

Aquí recojo algún cambio que suelen venir muy bien:

F1 – Ayuda por IdHelpTopic

Siempre es complicado saber que Presentación se levanta desde una tarea de una opción de menú ¿no?. Con el siguiente cambio podemos modificar el comportamiento de la tecla F1 para que en vez de levantarnos la ayuda on-line de Meta4 PeopleNet, nos saque la entrada en la ayuda, es decir el IdHelpTopic. De esta forma si la opción de menú, o la presentación, tienen definido su IdHelpTopic como el ID de la Presentación lo podremos ver:

Me explico, por defecto, en una opción de menu podemos presionar F1 y obtendremos:


pero si modificamos la entrada: HKEY_LOCAL_MACHINE\SOFTWARE\Meta4\Mind\3.X\Build\[Build]\CLIENT\CLIENT\HelpSystem\HelpDocTest y ponemos test (en minúsculas) y sin tener que reiniciar el cliente obtendremos, volviendo a pulsar F1:



Lamentablemente no funciona al reves sin reiniciar el cliente.


INSTALL_MODE

La entrada INSTALL_MODE situada en HKEY_LOCAL_MACHINE\SOFTWARE\Meta4\Mind\3.X\Build\[Build]\CLIENT\TOOLS nos permite acceder a elementos propios de tecnología, tales como a Modelos de datos, Tablas lógicas, Meta4Objects, ... creados con indicador de propietario (ID Owner flag) "1".

Con poner esta entrada a 1 y reiniciar el cliente estarán visibles.

treeshowall

La entrada treeshowall hay que situarla en HKEY_LOCAL_MACHINE\SOFTWARE\Meta4\Mind\3.X\User y nos permitirá acceder a elementos escondidos del Meta4Object de nomina (nodos auxiliares, de lectura, de recalculo,..).

Hay que crear una nueva entrada como Dword y con valor a 1 (hexadecimal o decimal) y al reiniciar el cliente estarán visibles.

El problema es que tras salir del cliente estada entrada deja de existir.

ProductVersion

La entrada ProductVersionsituada en HKEY_LOCAL_MACHINE\SOFTWARE\Meta4\Mind\3.X\Build\[Build]\CLIENT\INSTALL nos permite modificar el texto que aparece en la pantalla de acceso. Por ejemplo si le doy el valor "PeopleNet v7.1 para Oscar" y reiniciar el cliente se podrá ver: "Versión PeopleNet v7.1 para Oscar"



No es que sea un truco, pero a veces tras la instalación de algún Service Pack tecnológico este valor no se refresca produciendo dudas sobre si la instalación ha sido, o no, satisfactoria.

Para acabar: ¡¡¡ OJO CON TOCAR EL REGISTRO !!! no sólo ya en la rama de Meta4 que puede hacer que se nos vaya al "garete" el cliente/servidor sino. lo que es más peligroso, la máquina.

domingo, 16 de diciembre de 2007

[ChileTech.cl] META4 CONOSUR CIERRA EL 2007 CON UNA FACTURACIÓN DE 6,5 MILLONES DE DÓLARES

(Viernes 14 de Diciembre del 2007)

Meta4 Conosur, la unidad de Meta4 que agrupa las operaciones de Argentina, Chile, Brasil y Perú, mostró un crecimiento de 25% en la facturación de 2007 respecto al 2006, alcanzando los 6,5 millones de dólares. Esta expansión se sustenta en el aumento de ventas de sus licencias y servicios en las nuevas cuentas que se sumaron a la cartera de clientes de Meta4, en todos los países de la región.

Entre las nuevas empresas y organizaciones de la región Conosur que eligieron las soluciones de Meta4 para gestionar sus RR.HH. se encuentran: el Gobierno de Córdoba, ANSES, Lufkin, Megatone, Montefiore, Supermercados Makro, Banco Ciudad, Mapfre, American Express y Taranto en Argentina; Gemalto de Brasil; Metro S.A., Saesa, Unisono y GTD de Chile; e Interbank de Perú; entre otras compañías.

Con dichas incorporaciones, Meta4 asciende la cantidad de empleados gestionados a 80.000 este año, con respecto al 2006.

El Director General de META4 Conosur, Pedro Vaquero, se manifestó muy conforme por el desempeño que tuvo la compañía. Como objetivo para el próximo año, señaló que está el seguir incrementando las ventas y afianzar la relación con los partners en la región.

En la actualidad, ya son más de cuatro millones las personas que se desempeñan en empresas y organizaciones del continente americano en las que se gestiona con Meta4. A nivel global, la compañía multinacional española ya suma más de 1.000 clientes y gestiona a 10 millones de personas.

Enlace directo a la noticia en ChileTech: Link

miércoles, 12 de diciembre de 2007

Uso del servlet DownloadBlob en el ESS/MSS

Muchas veces nos encontramos con la necesidad de publicar documentos en el ESS o en el MSS que son "estáticos" por ejemplo un listado de personas, o una descripción de una unidad organizativa,...

Ante este caso podemos actuar de dos maneras:

Enlace HTML:
Dejamos el documento en las carpetas del servidor Web y referenciamos a ellas mediante un ancla o "anchor" de la siguiente forma href="/documents/documento.pdf".

  • Pros:
    Esto es lo más sencillo
  • Contras:
    1) no podemos controlar que ese link sea privado, por lo que cualquier persona podrá enlazar a ese documento de la forma http://server:port/documents/documento.pdf.
    2) si el usuario necesita modificar el documento, es muy probable, que tenga que pedirlo a otras personas para que se lo cuelguen. (O con los implantadores) (A no ser que lo montemos como un link en PeopleNet)
    3) el documento SIEMPRE se deberá llamar de la misma forma y tener la misma extensión ya que si no tendremos que modificar también la página.

Uso de Campo BLOB:
Usar el tipo Blob en un campo de una de nuestras tablas y ser capaz de descargarlo.

  • Pros:
    1) podemos controlar que ese link sea privado, ya que como la descarga se hace usando tecnología Meta4 es necesario estar logado al sistema.
    2) si el usuario necesita modificar el documento lo hará desde Meta4 PeopleNet.
    3) Se puede cambiar de nombre y extensión las veces que se quiera... Meta4 se encarga de la descarga y vuestro navegador de decidir que programa usa para abrirlo.
  • Contras:
    1) Es algo "más" complicado ya que hay que ser capaz de insertar ese documento en la Base de Datos
    2) Si el número de documentos es grande o esto son muy grandes podemos llenar la Base de Datos.
Este post trata, además de explicar porqué lo hago, describir la forma de poder llevar a cabo esta descarga.

Vamos a pensar en que debemos sacar la descripción de una Unidad Organizativa que es un documento que el usuario realiza y pasa luego a pdf y que lo quiere colgar del historial de puestos de los empleados, de tal forma que pinchando, o haciendo click, en un link el empleado pueda ver esta descripción, pero sólo de aquellas Unidades Organizativas por las que ha pasado a lo largo de su vida profesional.

Modelo de Datos: Lo primero sería, crear una tabla que, por ejemplo, se herede de STD_WORK_UNIT (También se puede hacer con un tabla con relación 1:1 con esta). A esta tabla le añadiremos un campo CXX_DESCRIPCION_BLOB con un tipo extendido basado en un BLOB.

Meta4Object: Crearemos un Meta4Object, llamémosle CXX_WUNIT_BLOB con un nodo y estructura de nodo que llame igual de tal forma que en la sentencia recojamos el STD_ID_WORK_UNIT y el campo CXX_DESCRIPCION_BLOB de la tabla que hemos creado en el paso anterior.
Añadiremos una propiedad PRP_ID_WORK_UNIT
Añadiremos un método "CXX_CARGA" con un parámetro ARG_ID_WORK_UNIT para poder recibir el ID Unidad Organizativa que más tarde enviaremos desde la página. El código podría ser: CXX_CARGA.txt


JSPs (ESS): Necesitaremos crear una nueva página sse_g3_desc_uo.jsp. Esta página recibirá un parámetro "iduo" que se pasará al Meta4Object: CXX_WUNIT_BLOB de la siguiente forma: sse_g3_desc_uo.jsp


De esta forma al entrar en esta página se lanzará la ejecución del servlet de la descarga del Blob

No he incluido nada que compruebe que esta Unidad organizativa tiene o no un documento que, creo que se debería.

Para la incluir un documento en un campo blob dedicaré otro post...o retocaré este en breve.


lunes, 10 de diciembre de 2007

Filtro dinámico en presentaciones

Muchas veces a la hora de hacer consultas en un presentación viene muy bien poder dejar al usuario que juegue con un filtro dinámico, levantado sobre un nodo antes de su carga:

Para ello en un botón que ejecute un método debemos incluir el siguiente código: bttExecMETHOD.txt

Además en el NODO que tengamos la carga deberemos añadir una propiedad CXX_DYN_FILTER (Ámbito "Nodo", tipo "Long", visible "No" y tipo interno "34" - Sentencia Lógica del Filtro dinámico)

En la presentación tendríamos:

Y el filtro que levantaríamos sería:

Al crear el filtro se pasaría a la propiedad creada CXX_DYN_FILTER y esta se añadiría a la sentecia lógica a lanzar contra la Base de Datos Lógica (BDL)

jueves, 6 de diciembre de 2007

Bug con Call(NodeID,"ISEOF")

Parece ser que he "descubierto" un pequeño problema que Meta4 no quiere reconocer.
No se comporta igual un Call(Nodo,"ISEOF") que el ENodo.IsEOF() así que hay que modificar los códigos que utilizaban este problema.

Cambiaremos por ejemplo:

While Call(MsThisTIID,"IsEOF") = M4_FALSE

Por:

MnCount = Call(MsThisTIID,"Count")
MnPointer = 0
While MnPointer <= MnCount -1
Call(MnPointer,MsThisTIID,"MoveTo")


Un saludo,

martes, 4 de diciembre de 2007

Jobsite para Oferta Pública de Empleo en UPV



Durante el pasado mes de noviembre en la Universidad del País Vasco (UPV) se ha permitido la solicitud web de acceso a la Oferta pública de empleo de esta Administración, através de la herramienta JobSite de Meta4 PeopleNet. La url es: http://gestion-enplegu.ehu.es/

Se ha usado para ello la versión 7.1 con Sp001 de los Webservices de Meta4. Modificando el JobSite, que recordemos, es una herramienta de para empresa privada, se logro en 20 días naturales recibir casi 30.000 solicitudes para 14 procesos de selección, pertenecientes a 19.000 usuarios diferentes.

La plataforma creada para soportar este proceso fue:
  • Apache,
  • Tomcat 5.0.28,
  • M4Dispatcher + M4AppController + 2 M4AppServers con versión Meta4 PeopleNet 7.1 con Sp001, sobre servidores AIX y
  • Oracle 8.1.7

A continuación podreís ver una gráficas-estadísticas de la creación de solicitudes; una por días, para que se vea como al final se registró el mayor volumen de accesos, y, otra, por hora, para ver como estas solicitudes se realizaban a lo largo del día:

Solicitudes por día
Solicitudes por día









Solicitudes por horaSolicitudes por hora










El punto (hora/día) en el que se detecto mayor carga fue el 22 de Noviembre entre las 11 y las 12 de la mañana con 318 solicitudes.

Este mismo entorno será usado a partir de ahora para getionar Bolsas de Empleo públicas que publicará la Universidad.

Adicionalmente al proceso de solicitud se desarrollaron tres interfaces con otros tantos sistemas:


  • Pasarela de pagos del Govierno Vasco (http://www.euskadi.net/mipago) por el que se permitía el pago de las tasas através de un entorno seguro y, lo que es má importante, amigable al usuario ya que se le redirigía a la banca por internet de su Caja (Vital, BBK o Kutxa). Se ha desarrollado usando tecnología Java de Servlets y WebServices.

  • Recepción de cobros CSB57: desde las cajas se envía un fichero plano con los cobros realizados bien por la Pasarela, bien por Ventanilla o bien por Cajero automático y se procesa la conciliación de cobros. Se ha desarrollado usando tecnología de Procedures de Oracle.

  • Registro de solicitudes; cada solicitud se ha registrado en el Registro General de la UPV usando INVESICRES (Copyright (c) Informática El Corte Inglés, S.A. ) http://registro.upv-ehu.es/libro_registro/. Se ha desarrollado usando tecnología Java de Servlets y WebServices.

Por último, aunque no menos importante, se ha gestionado el entorno en dos idiomas: Castellano y Euskera.

Para la generación de informe en pdf se ha usado la libreria para este formato en java iText.

En esto momentos la Universidad se encuentra procesando estas solicitudes para poder informar a los opositores/solicitantes de otras fases de la OPE (lista de admitidos, preguntas del temario, ...)

Si alguien necesita realizar alguna consulta usad los comentarios o mandadme un e-mail.

viernes, 30 de noviembre de 2007

Teoría: Indirección

La indirección, permite entre otras muchas cosas multiplicar la potencia de muchos procesos...

Los ejemplos más claros son los de guardar en una tabla de parametrización una serie de registros con información de TI (Estructura de nodo) y campos, de tal forma que al recorerlos podamos generar nuevas salidas.

Existe por otro lado una leve desventaja y es que Meta4 PeopleNet, no puede generar dependencias por indirección, por lo que perderemos la funcionalidad de la pestaña de los items "Dependencias" para aquellos items que, como ya he dicho, se vean involucrados en llamadas de indirección.

Las funciones Ln4 más comunes que se suelen usar son:

  1. Call

    • Para llamadas a métodos o conceptos; Call(Argumentos, Nodo, Metodo); por ejemplo: Call(0,"CXX_NODO","MOVETO") o Call("CXX_NODO","BEGIN"). Hasta se pueden anidar: Call(Call("CXX_NODO","GETCURRENT") + 1 ,"CXX_NODO","MOVETO")

  2. GetItem
    • Para poder recuperar valores de campos, conceptos o propiedades GetItem(Nodo,Item,Registro); por ejemplo: GetItem("CXX_NODO","CAMPO1",0). También se puede usar GetItem("CXX_NODO","CAMPO1",-1) para recuperar valores de ámbito nodo o bloque.

  3. SetItem
    • Para poder insertar valores en campos, conceptos o propiedades SetItem(Nodo,Item,Registro,Valor); por ejemplo: SetItem("CXX_NODO","CAMPO1",0,NullValue()).

Otras funciones muy usadas serían las que nos permitirán saber desde código Ln4 el ID del nodo o del Meta4Object en el que nos encontramos: GetThisNodeID() y GetChannelID() respectivamente.

Un ejemplo de tratamiento de datos con indirección lo tenéis en: Post:Exportación genérica a Ms Excel

jueves, 29 de noviembre de 2007

Importación desde un Ms Excel

La forma rápida que la gente hace es pasar la hoja de Ms Excel a texto y luego usar las importaciones... pero eso a veces no es posible porque lo debe hacer el usuario y no un desarrollador. (Recordemos que las importaciones son una herramienta del desarrollador (M4DevClient) y no de usuario (M4DistClient o RichWeb))

Yo utilizo una forma que la verdad es rápida y permite hacer comprobaciones según se importa información.

Un ejemplo; los usuario de RRHH reciben todas las semanas una hoja Ms Excel con un listado de los nuevos teléfonos dados por el dpt. de sistemas, es decir, vamos a importar números de teléfono de tipo "Oficina" de un hoja Ms Excel donde el formato es el siguiente: DNI (en la columna A) y Teléfono (en la columna B).


Para ello crearemos un M4Object CXX_IMPORTAR_TELEFONOS con 3 nodos:

CXX_IMP_TEL_ROOT (Nodo principal) -> No tendrá campos, servirá para la ejecución de la importación. Creamos:

  • una propiedad llamada CXX_EXCEL_FILE; de ámbito nodo y tipo long (es donde el usuario podrá dejar la ruta al excel a importar que se pedirá en presentación)
  • un método llamado CXX_IMPORT de ámbito nodo, con el siguiente código: >CXX_IMPORT.TXT

CXX_AUX_PERSONA (Nodo libre) -> Cargaremos los datos de la persona por DNI (STD_SSN).

  • Añadiremos una propiedad: PRP_STD_SSN, de ámbito nodo, tipo cadena variable de 11 posiciones y NO visible.
  • La sentencia será: SELECT @STD_ID_PERSON = A.STD_ID_PERSON, @STD_SSN = A.STD_SSN FROM &STD_PERSON A WHERE (A.STD_SSN = @PRP_STD_SSN).
  • Crearemos un método: CXX_GET_ID_PERSON(ARG_STD_SSN cadena variable de 11 posiciones) ambito nodo, tipo cadena variable de 9 posiciones. El código será el siguiente: CXX_GET_ID_PERSON.TXT

CXX_IMP_AUX_PHONE (Nodo libre) -> Guardaremos el nuevo teléfono.

  • La sentencia será: SELECT @STD_ID_PERSON = A.STD_ID_PERSON, @STD_DT_START = A.STD_DT_START, @STD_DT_END = A.STD_DT_END, @STD_ID_LOCATION_TYPE = A.STD_ID_LOCATION_TYPE, @STD_ID_LINE_TYPE = A.STD_ID_LINE_TYPE, @STD_PHONE = A.STD_PHONE FROM &STD_PHONE_FAX A

La presentación, CXX_IMPORTAR_TELEFONOS quedaría algo así como:



Como temas especiales los dos botones tendrían estos códigos OBL:

a) "Abrir explorador de windows" (Botón de la carpeta) bttBROWSER.txt

b) "Visualizar el documento" (Botón de la lupa) bttVIEW.txt

Espero que os sirva

Exportación genérica a Ms Excel

Las posibilidades que se tiene importando-exportando a Excel en Meta4 PeopleNet son muchísimas...

Me encanta, personalmente, realizar consultas mediante opciones de menú donde obtengas un resultado en pantalla y luego, darle al usuario la posibilidad de exportarlo a Excel o a texto, o incluso yendo más allá permitir planificar una tarea si la exportación va a ser grande [Esto será motivo de otro Post].

Un ejemplo de exportación genérico que me gusta hacer es el siguiente.

En tu Meta4Object créate una Estructura de nodo: llamémosla CXX_AUX_ITEMS con la siguiente sentencia:

Esta estructura te cargará los ítems de tipo campo, concepto y propiedad de una estructura de nodo dada... [Lo veréis más adelante]
Nos falta añadir un par de métodos a la estructura CXX_AUX_ITEMS:
  • DESTROYBLOCK, para destruir el contenido, ámbito bloque.
  • CXX_NORMALIZAR_STRING(argumento ARG_CADENA de tipo long) devuelve LONG, ámbito nodo, que lo que hará es quitar los códigos de retorno que el Ms Excel no controla (sobre todo para el tema de campos comentario o campos de tipo long). El código es: CXX_NORMALIZAR_STRING.txt

y una propiedad para el filtro: ARG_ID_TI de ámbito nodo "No Visible" y de tipo Candena variable de 30 posiciones

En el nodo donde queráis hacer la exportación, crea un alias contra el Meta4Object "EXCEL"

Creáis un método CXX_EXPORT_EXCEL "Exportación a Ms Excel", de ámbito Nodo, que esté en cliente y metéis el siguiente código: CXX_EXPORT_EXCEL.txt

La estructura CXX_AUX_ITEMS la podéis usar donde queráis... por que es genérica siempre que se ejecute el método CXX_EXPORT_EXCEL desde el nodo que queramos exportar... si lo queremos ejecutar desde otro sitio habría que cambiar ligeramente el código.

Esto sería un ejemplo de lo que obtendríamos:


Espero que os sirva...