cpi api Excel Mini - Program Generator

info general de apiExcel Mini Gen

La version/modulo “mini” de apiExcel permite generar hojas excel de forma simplificada cuando el origen es ya encolumnado, tal como campos de un fichero.
Ahora además tenemos en beta un generador de programas RPG a partir de unas especificaciones (con wizard paso a paso) sencillas pero potentes.

  • permite tener plantillas muy fáciles de modificar (SEU) y que, a partir de ella, se genera un programa rpg el cual genera la hoja excel
  • el programa rpg generado:
    • tiene multiples puntos de entrada (tecleados con SEU en la plantilla) donde puedes poner tu código fuente adicional
    • puede ser integrado en cualquier aplicacion, llamado desde menú, por batch, etc
    • permite generar la hoja excel usando CoPrint o ejecución directa
  • el wizard:
    • paso a paso va pidiendo datos como
      • nombre de plantilla a generar (la cual a su vez permite generar el programa rpg final)
      • fichero principal a tratar
      • campos a usar del fichero
  • Fichero origen (puede ser un Join, claro, cualquier tipo de fichero de base de daos de as400 IBM)
  • Nombre, biblioteca y Titulo del programa a generar
  • Titulo y subtitulo en la Excel, se admiten variables como fecha y campos de calculo!
  • Campos para cada columna, permite campos de calculo!
  • Totales: se pueden indicar los campos de totales y por qué campo de calculo o fichero se rompen nivel, se anade además un Total General
  • La base de instrucciones RPG a generar es personalizable y cuenta con varios “insert-points” para teclear codigo directo sin que por ello se pierda la capacidad de regenerar el programa en el futuro! no es necesario generalmente modificar el programa generado!
  • Por supuesto se pueden tratar ficheros addicionales, llamar a programas, recibir parámetros…
    • Es un programa rpg free normal (RPG IV ILE) que se puede integrar en cualquier aplicacion, incluso las más antiguas, añadirse en programas CL, procesarse en interactivo o batch…
  • La Excel generada permite mucha mejora visual comparando con otras formas “rápidas” de generar una excel desde un fichero:
    • Cabecera general con fonts y color, incluso logo
    • Cabeceras de campos pueden ser las definidas en el fichero o definirse unas mas cortas o mas apropiadas, y con cualquier font, color de texto y fondo y borde
    • toda la cabecera se queda congelada durante los desplazamientos (scroll), de forma que son siempre visibles.
    • Codigos de edición y formateo para datos: decimales, millares, nada si cero, rojo si negativo, agrandar o disminuir tamaño a columnas
    • pueden definirse los colores de texto, fondo y borde para total y gran total
  • Se genera un fichero excel normal .xlsx y además se permite generar un pdf adicionalmente y enviarlo por correo/email, todo lo que permite generalmente CoPrint.
  • Y no hemos dicho lo mejor!
    • no se necesita Microsoft Office o Excel instalada en el pc!
    • por tanto no hay inconsistencias de diferentes versiones.
    • El pc donde se genera el fichero .xlsx no necesita Excel
    • El pc donde se abra el .xlsx puede tener Microsoft Office/Excel pero también funcionaría con programas compatibles, tal como LibreOffice, openOffice, etc.

:!: Requisito en as400: PDM, SEU y Compilador RPG, más la llicencia adecuada de CPI Software.

FIXME Beta - Información provisional

Pasos de Menu

Con el comando APIEXCEL se accede al menu. Con la opcion M4 se accede al submenú del generador MiniExcel.

  • 71 Info sobre apiExcel Mini Gen
    • visualiza la direccion de esta pag web
  • 72 Ver plantillas Mini Gen
    • visualiza la lista de plantillas en PDM
  • 73 Crear Plantilla Mini Gen
    • permite crear una nueva plantilla a partir de un esqueleto base
      • (tambien puedes copiar desde otra con el paso anterior)
      • o, más fácil todavía, permite un wizard que guia para crear una plantilla y generar programa a partir de preguntas simples
  • 75 Generar Programa Mini Gen
    • Pide una plantilla y genera el programa asociado
    • Este proceso se puede tambien ejecutar desde PDM asociado a una plantilla, para ello:
      • desde paso 72 en menu apiexcel (viendo miembros en pdm) pulsar F16
      • Opcion: XG (u otra si ya existe)
      • en Mandato/Comando: CALL CPI@API/TFXLMGENCL &N 8-)
  • 77 Ver juego de sentancias base
    • Permite ver (mejor no lo modifiques) el miembro con sentencias base que se usan para la generacion del programa

Definicion de la plantilla

Una plantilla es la base para generar un programa RPG. La ventaja es que es muy facil modificar la plantilla y obtener un nuevo programa.

m( Y además es todavía más sencillo, porque la propia plantilla se puede crear muy fácilmente con el wizard paso a paso, que crea una plantilla preguntando los datos básicos, y permite generar, compilar y hassta ejecutar el programa generado!

La plantilla (template) es un simple miembro fuente en el fichero TEXTCPIU/CPIAPITMPL.
Cuando se crea una nueva se ofrece una base como guia, o siempre se puede copiar de una plantilla existente, ya que son miembros fuente manejables con SEU o PDM.

(GENERAL)

En esta seccion se definen los aspectos generales del programa.

Ejemplo:

PGM     = PGMXL27                                      
PGMLIB  = MYLIB                                         
PGMTIT  = Informe Excel Cuentas Contables
FILE    = FILEACC1
FILELIB = MYPRODLIB
TIT1    = Informe de Cuentas Contables - *&fileL - *&FH
TIT2    = Plantilla: *&tmpl  pgm: *&pgm                
COPRINT = COPRINT4

Simplemente, en cada linea una clave y un valor separados por el simbolo igual = :

  • PGM = nombre del programa a generar. permite separar con coma la bib y no se necesita la linea PGMLIB= y tras otra coma se puede poner el titulo del pgm tambien
  • PGMLIB = biblioteca donde se compila y donde se genera el fuente (en fichero fuente CPIAPISRC)
  • PGMTIT = titulo/descripcion del programa
  • FILE = fichero principal. permite poner la bib detras de una coma o ponerla en linea aparte
  • FILELIB = biblioteca del fichero
    • Para casos especiales cuando el diseño del fichero no exista en la FILELIB en el momento de generar el programa, se permite FILELIBDD = xxxxx para definir de donde se toma el diseño de campos del fichero (el nombre del FILE si debe ser el mismo que el fichero del que se tomen las dds)
  • TIT1 = Titulo Cabecera general de la hoja Excel
  • TIT2 = Subtitulo para hoja excel
  • COPRINT = nombre por omision para el servidor pc Coprint. Se admite ¿algo? para teclearlo en cada ejecucion!!

(CAMPOS)

El formato de cada campo, en una linea, precedida cada linea con fld= :

      prm1            prm2                prm3     prm4      
Fld = FIELDname     , Header/Cabecera   , FORMAT , FUNCTIONS 
  • prm1 Nombre Campo el nombre del campo en fichero o bien un campo de calculo definido en el entry_point (src-D), una simple hoja D.
    • pueden verse los campos, y el diseño que tomará del fichero con el comando DSPFFD LIB/FILE
  • prm2 Cabecera La cabecera de campo/columna para Excel, si deja vacía (pero incluir la coma, claro) se toma la cabecera definida en el fichero.
    • tambien se puede usar una variable/campo de programa en formato &campo
  • prm3 Formato (format4) En el caso de campo de fichero los atributos básicos se toman del diseño del fichero, pero se pueden obligar aqui.
    Si se quiere añadir algo a los atrib del campo, hay que poner todo (no vale poner solo Z p.e.)
    En campos de calculo se debe indicar el formato.
    permite cero a cuatro caracteres, en cualquier orden,
    • A = Campo Alfa, generalmente es el valor por omision
    • N = Numerico entero, sin decimales
    • D = Numerico con decimales, indicar ademas los decimales, tal como D2 o 2D, da igual
    • 2a5 = numero de decimales
    • M = en campos numericos indica que se quieren incluir los puntos de millares
    • 0 = importes cero visibles (generalmente no hace falta, es el valor por defecto), Z es lo contrario
    • Z = cuando un dato numerico tenga cero que no se vea nada en la celda, p.e. NZ o D2Z o D2MZ
    • F = Fecha. El formato final excel puede definirse en apiexcel.ini, al igual que otros formatos libres de usuario tal como G,H,J,K,L,P,R,
  • prm4 funciones opcional, *Total si se quiere Total y y Gran Total por este campo!

Ejemplo de codificación de formatos de fecha en apiExcel.ini:

[Format]
F=d-m-aa;@
E=dd/mm/aaaa
G=d-m-aaaa;@
P=m-d-aaaa;@

entry points - puntos de entrada de codigo fuente (src-xxxx)

Puntos de entrada para teclear codigo fuente de usuario que se mezcla al final en el fuente rpg generado, permite insertar codigo fuente directo en la plantilla, lo cual permite regenerar el programa final cuanto se quiera sin perder codigo fuente personalizado.

entry point (src-FILE)

Opcional, permite incluir ficheros adicionales con hojas F normales!

(src-FILE)
     FfileAux   IF   E           K DISK    ExtFile('library/file')

Y, por ejemplo, hacer un CHAIN en (src-aRead) para leer registro en cada detalle.

     chain campoDeFileMain fileAux;

Hay otras formas de hacer esto, p.e. usar ficheros LF-JOIN, etc.

Por supuesto, EXTFILE es opcional, admite variables en lugar de constantes, etc, todo depende de la version del as400 y las necesidades.
Tambien se puede usar USROPN y hacer el open/close donde convenga.

entry point (src-D)

Opcional, permite definir campos de calculo en hojas D normales:

     D campoCalc       S             10    
     D wSaldo          S             13  2 

entry point (src-C1)

Al inicio de calculos,
este trozo es formato fijo, si se quiere teclear aqui en free entonces poner el codigo entre C/free y /end-free.

Opcional, permite incluir rpgFijo al inicio del fuente, p.e. parametros de entrada, preguntar (con un call a un programa de pantalla, o por una ventanita, etc).

Ya que este punto se ejecuta antes que nada es ideal para cambiar nombres reales de fichero(s) a abrir (tipo ovrdbf), etc.

  • Lib/File principal está contenido en la variable global xLaF, por lo que es facil hacer xLaF = 'bibXX/fileXX'
  • Igualmente el miembro de apertura está en la variable xMbF (que tiene por omision *FIRST)

entry point (src-INI)

Al inicio de calculos, tras src-C1, en formato rpgFree.

entry point (src-aOPEN)

Opcional, permite incluir sentencias rpgFree despues/after del Open del Main File p.e. Setll etc.
Si el programa tiene parámetros de entrada, ya ha pasado por ahí, claro.

Tambien permite crear aqui variables de usuario (de 01 a 99, ver mas abajo “Variables de Usuario y Globales”) para ser usadas en Excel, por ejemplo poner el contenido de un campo en una variable que sea visible en el titulo o subtitulo de la hoja Excel.

Referencia: Variables de Usuario

entry point (Exclude)

Opcional, permite sentencias rpgFree para omitir registros como

  • cliSaldo = 0
  • solo necesita la condicion, el generador la completa tal como
           if ---condicion--- ;
              //saltar este registro
           endif;

entry point (src-aRead) tras leer cada registro

Opcional, permite sentencias con cada registro despues de leer (y excluir con la regla (Exclude)), antes de generar la fila Excel.

  • wSaldo = cliDebe - cliHaber;
    • este ejemplo usa un campo de calculo (definido en (src-D) para añadirlo a (campos) y, por tanto, en una columna Excel

Por ejemplo, para crear campos de calculo con varios campos del fichero y poner esos campos en la lista de (campos).

entry point (src-aRowD) tras generar row/fila de detalle

Los calculos de este punto de entrada se insertan al final de la subrutina de tratamiento de detalle, tras generar la fila/row excel.

Control de Nivel para TOTALES

Tambien permite, con una sentencia simple, definir la posible ruptura de nivel para Totales.

  • xActual = campo o union de campos;
  • simplemente mover a xActual el contenido, asociado al registro leido, para que cuando venga uno diferente se genere el Total automático.
  • tener en cuenta que xActual es alfa, si se quieren mover numeros hacerlo tal como xActual = %char(campoNumerico);
*     *Opcional, permite sentencias con cada registro despues de leer y excluir, antes de generar fila Excel
*              saldo = pcApert + pcDebe - pcHber;
*     *permite tambien definir qué contenido del registro leido se usa para romper nivel y dar Total Auto
*           xActual = unCampo o unCampo + otroCampo;

8-O Importante: Sólo se imprimen totales si algun campo en la lista de (campos) tiene en el param4 la constante *total:

  • ejemplo de linea de (campos) con total:
    • fld = CAMPOx,cabecera,NZ,*total
  • Cuando se usa algún prm4, como para *total, no se deben dejar “restos” en las lineas de (CAMPOS)
    • es decir, las lineas deben tener sólo los datos/prm necesarios .
      • esto es correcto: fld = campo,cabec
      • esto es no recomendable: fld = campo,cabec,,,,,,,,,,,,,,mira que cosas

entry point (src-aTotal)

Punto de entrada que se inserta/ejecuta despues de totales.

entry point (src-END)

Insert Point para sentencias que se ejecutarán en la subr final srEndPgm.

entry point (src-SR)

Permite incluir subrutinas completas en free (begsr + lineas + endsr).

entry point (TABLES)

En este punto de entrada se pueden añadir lineas de tabla tradicionales RPG,
de las que se añaden como lineas al final del fuente.
Recuerda tambien definir su hoja D para definirla.

ejemplo:

(src-D)
     D tabMes          S              6    DIM(12) PERRCD(12) CTDATA
     
(tables)                                                                
** meses                                                                
Enero Febre Marzo Abril Mayo  Junio Julio AgostoSetbreOctub NovbreDicbre

Variables de Usuario y Globales

Con sentencias de calculo RPG se pueden definir lineas de script especiales para establecer variables de usuario (numeradas del 01 al 50).

Una forma de establecer una variable de usuario es generar una linea directa de script tal como:

  • x256 = 'usrVar,01,' + cliNombre;
  • exSr addScript;
    • suponiendo que en el programa hay una variable cliNombre, esta sentencia estableceria la linea de script “usrVar,01,xxxxxx” donde las xxxxx serian el contenido de esa variable, que luego puedes usar (p.e. en el subtitulo de la excel) escribiendo *&usr01
    • un buen sitio donde definir este tipo de variables es en (src-END) ya que los titulos se mueven al final, tras haber generado todas las filas excel de detalle y totales.

Ejemplo de uso de esa variable en el titulo de la Excel (y la fecha en el subtitulo):

(General)                                            
Tit1 = Informe del Cliente *&usr01
tit2 = Fecha:*&FH
(src-END)
     x256 = 'usrVar,02,' + %trim(cabec1);
     exSr addScript;                     

Las variables globales son

  • *&FH (como *&DT) es una variable global que devuelve la fecha y hora en formato 24-Dic-2015 11:08
  • *&pgmN nombre del programa
  • *&tmpL nombre de la plantilla/template
  • *&fl lib/file principal
  • *&sys nombre del sistema as400
  • *&lic?
  • *&pcuser usuario del pc donde se genera la Excel
  • *&pcname nombre del pc donde se genera la Excel

Personalizacion ini para MiniExcel

El fichero coprint.ini permite alguna personalizacion OPCIONAL relacionada con MiniExcel:

seccion [miniExcel] OPCIONAL

Seccion [miniExcel] (OPCIONAL: usar sólo si se indica)

  • ifs = carpeta de scripts (generalmente \\ipdel400\tmp\xls)
  • folderScript = es la general de scripts, generalmente la misma que ifs=
  • pgm = ruta donde está instalado cpiApiExcelMini.exe (generalmente “c:\program files\cpi\cpiApiOffice\cpiApiExcelMini.exe”)
  • deletePrt = 0 (un cero)
[MiniExcel]
folderScript = \\as400\tmp
IFS = \\192.168.xx.yyy\tmp\xls
DeletePrt = 0
pgm = "c:\programfiles+++OJOCAMBIAENCADAPC+++\cpi\ApiOffice\cpiApiExcelMini.exe"

forzar ftp en un pc

Por defecto en esta apiExcel “nueva” se usa conectividad IFS, pero hay algunos pc que tienen pegas de seguridad/acceso, para ello se puede obligar en el pc a usar FTP.

El fichero apiexcel.ini permite configurarse con cpiInfo.exe (el programa amarillo):

en la seccion [Connection] definir las claves modeMiniXL=FTP así como los valores userID= y Password=

[Connection]
modeMiniXL=FTP
userID=AS400USER
Password=AS400PASS

otras claves en apiexcel.ini

  • en la seccion [Format] definir codigos de edicion/formato para fechas p.e.
  • en la seccion [Style] definir los estilos de total y total general
    • consta de 4 parametros
      • color de texto (ver ejemplos en info colores
      • color del borde
      • tipo de borde (1,2,3 de menos a mas grueso, 6 es doble)
      • color del borde
      • atributos B=Bold(Negrita), I=Italic, + o > para aumentar font
[General]
????

[Format]
F=d-m-aa;@
G=d-m-aaaa;@

[Style]
moveRowT=Navy,Violet,1,Gold,Bi
moveRowG=Navy,Lime,6,Tomato,Bi+

Demo paso 1

El paso 1 del menu/comando APIEXCEL permite comprobar si funciona la ejecución de una demostración de ApiExcelGen, genera una hoja de calculo con la lista de paquetes/aplicaciones CPI instaladas en el as400.

Tener en cuenta que en apiexcel.ini se puede definir si se quiere conectividad por IFS (por defecto) o FTP.

  • ver en esta misma página “Personalizacion ini para miniExcel”.
    • la seccion [Connection] modeMiniXL= permite opcionalmente FTP así como los valores userID= y Password=

Notas

  • la imagen de cabecera es por defecto logo.jpg
    • lo mas facil es colocar una imagen poco alta (p.e. 40 pixels) con ese nombre en la carpeta %appdata%/cpi
      • puedes abrir esa carpeta con el programa amarillo cpiInfo, o pulsando teclaWindows + R y tecleando %appdata%/cpi

Referencia

video demo

 
/kunden/homepages/8/d674751560/htdocs/cpies/doc/data/pages/api_office/cpiapiexcelminigen.txt · Última modificación: 27/10/2017 11:57 por admin
[unknown button type]
 
Excepto donde se indique lo contrario, el contenido de este wiki esta bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki