APIs de Programacion para API Office

API Office tiene varias funciones que no necesitan programacion, tal como

  • Convertidor Automático de Listados a Excel. API Excel convierte cualquier Listado - Spool - de AS/400 en Hojas Excel totalmente formateadas (Tamaños, Colores, Bordes, Tipos de Letra, etc.) de forma automática y con sólo definir unas reglas de comportamiento, sin tocar programas ni usar bases de datos.
    • Crea informes Excel/Word desde AS/400 hacia cualquier impresora de PC o Red sin definirlas en el as400.
    • Salva Ficheros en PC o Red sin necesidad de imprimirlos.
  • FileToApi (filetoapi) es una utilidad Windows que permite al usuario final ejecutar conversiones de ficheros a Excel (y a Word), asi como guardar esas conversioones para futuro uso, etc. Aqui los tecnicos de la Empresa pueden ayudar creando definiciones de bases de datos (LF o JOIN) para que los usuarios tengan más fácil el trabajo.
  • Más info aqui

Pero a veces no es bastante, así que tambien se pueden incorrporar funciones de ApiOffice/ApiExcel en programas desarrollados, tales como programas ya existentes a los que se les añada la capacidad de generar ficheros Excel.

Hay dos formas de integrar funciones de ApiOffice en programas de usuario

api MiniExcel

MiniExcel permite generar hojas excel desde programas de as400 de forma “sencilla”, con la opcion ademas de enviar el fichero por email. MiniExcel usa las funciones de Coprint para mejorar las funciones, tal como generar excel centralizadamente.

  1. el programa “de listado” genera el fichero de trabajo APXLSWF con miembro X, siendo X algo irrepetible y con un prefijo de la aplic-web o algo asi.
    1. FIXME documentar el pgm de crear un nombre nuevo de mbr con un contador
    2. Cuando el pgm genera el fichero llama al pgm MiniExcel TFXLM1CL, pasando los params &PC10 &BIB10 &FILE10 &MBR10 &TIT1(256) &TIT2(256) &EMAIL(80)
    3. este pgm deja en ifs /tmp/&mbr.txt el script tipo api excel
  1. el pgm MINIEXCEL1, a partir del fichero APXLWF, genera un script (parecido a los de excel) dejandolo en el IFS en un dir accesible desde el pc coprint (tal como /tmp/xl) y llama al proceso de añadir una tarea a coprint.

- CoPrint toma la orden de tarea nueva y procesa el script con funciones embebidas (resumidas) de Api Office, generando la excel y enviandola por email si hace falta.

En el COPRINT.INI (en windows, con el programa amarillo cpiinfo.exe)

  • IFS= (o nombres libres) es el dir ifs a usar cuando se diga ;;Miniexcel,IFS…..
  • Folderscript= es el dir ifs por omision
[MiniExcel]
IFS=\\direccion-ip-de-tu-as400\tmp
FolderScript=\\IP-as400\tmp

en QAPIXCPI se genera un script400 que tiene una llamada como

;;MiniExcel,IniDir,ScriptFile,email o path
.param 2 (IniDir, tal como IFS) es el nombre dir ifs a usar que se define en el ini
.param 3 (Scriptfile) es el nombre-unico de script (usar un prefijo+contador)
.param 4 es un email a enviar o un path donde se deja la xls (y entonces no hay email)

- FIXME EJEMPLOS DE AS400 MINIEXCEL con codigo. Ver pagina EjemploMiniExcel.

Datos a tratar en la API MiniExcel, fichero APXLSWF:

  • WFTILI (Tipo de Linea) D=Detalle, H=Cabecera, T=Totales, Z=Datos Generales
  • Cada registro tiene hasta 99 elementos de un array para enviar datos.
    • WFT (Tipo de Dato) A=Alfanumérico, D=Numerico con dec, D6=DMY6, D8=DMY 8, M6=MDY 6, M8=MDY 8, N=Numerico sin dec, Y6=YMD 6, Y8=YMD 8, ?=Desconocido
    • WFD (Contenido) el teexto a mover a la celda
  • El registro puede tener otros campos de situacion/estado/switches para casos especiales, basicamente existen los campos WFK1, K2, K3, K4 (de 1x), WFK5, K6, K7, K8 (de 2x) y WFK9 (de 8x).


CPI Code PreProcessor

CPI Code Pre Processor (CCPP) - Pre Procesador de Codigo CPI - Especial para API Excel.

CCPP permite escribir una sola linea “macro” y que automaticamente se expandan en varias, haciendo más facil la incorporacion de sentencias complejas, tal como el caso de API Excel CPI.

La necesidad de la creación de la utilidad CCPP ha sido principalmente por el producto API Excel CPI. La capacidad de incorporar funciones de API Excel en programas RPG o ADP consiste en la escritura de varias lineas de código por cada funcion, con lo que podía costar mucho trabajo el implementar estos cambios en un programa existente.

Ahora, con CCPP, es más fácil y rápido el incorporar sentencias API Excel como líneas de comentario, que se expanden automáticamente al utilizar el PreProcesador.

Como ejemplo, imaginemos que tenemos un programa RPG que imprime un informe y queremos cambiarlo para que además permita generar una hoja Excel. Por ejemplo, en un programa RPG:

     C           ACUMPV    SUB ACUMPC     MARG   110                
     C                     ADD 1          NUMART  50                
     C*/P                  XL-Action 'SetPrint'  'Mi Empresa' 'Cab1'
                           ...etc                                   

→ Ver pagina con ejemplos de ProgramacionSintaxis con detalle adicional.

La ventaja de esta modalidad de cambio de programa (incorporando comentarios en realidad) es que el programa base NO SE MODIFICA (solo se le añaden comentarios). Esto es muy bueno porque el programa sigue funcionando “como antes” ya que solo tiene adiciones en forma de comentario.

Cuando se quiere obtener el programa objeto con API Excel se llama al Pre Procesador (opcion PX u otra en PDM) y esto hace lo siguiente:

  1. Obtiene un nuevo fuente (sin machacar el base)
  2. en ese nuevo fuente “decodifica” las sentencias adecuadas
  3. compila un objeto a partir del nuevo fuente

Ventajas de CCPP

El programa base sigue funcionando como antes, ya que las verdaderas modificaciones creadas para API Excel existen en un segundo fuente. Esto permite regresar al programa original solo compilando el fuente base.

La escritura de las sentencias API Excel solo requieren una linea por operacion, y se hace de forma cómoda porque es de escritura libre, no posicional, pudiendo aprovechar toda la longitud de las lineas (unas 70 pos).

La sentencia API EXCEL se puede escribir en cualquier posición a la derecha después de C*/P, dejando al menos un blanco de separación.

Se permiten literales de mas de ocho posiciones sin tener que crear constantes de trabajo ni otros recursos RPG.

Las lineas CCPP C*/P pueden incluirse tanto en programas puros RPG como en la parte de codigo de usuario de ADP.

Instalacion de la Opcion con PDM

Estando en PDM usar F16. Si no existe la opcion PX crearla con la tecla F6.

asociar a la opcion… ?CPI@API/APIEXCELPP &L &F &N

Procesar CCPP desde PDM

Al ejecutarse esta opcion de PDM con un miembro RPG que haya sido modificado se obtiene esta pantalla de comando:

                    API-EXCEL CPI Pre-procesador (APIEXCELPP)             
                                                                          
 Libreria . . . . . . . . . . . . > MILIB         Valor tipo carácter     
 Fichero Fuente . . . . . . . . . > QRPGSRC       Nombre                  
 Miembro  . . . . . . . . . . . . > XXXXXX        Valor tipo carácter     
 Acción a realizar  . . . . . . .   OBJ           CHK-Verif SRC-Fuente OBJ

La Libreria, Fichero Fuente y Miembro vienen por omision (del miembro donde se usó la opcion PX) y no deberian cambiarse.

En Accion puede teclearse:

  • OBJ expande las lineas de macro y compila el objeto segun el fuente expandido. El objeto se coloca en la bib donde el fuente base.
  • SRC solo expande las lineas en un nuevo fuente pero no compila.
  • CHK verifica si hay errores en las sentencias CCPP.

El fuente expandido se coloca en el Fichero Fuente QCCPPSRC en la misma biblioteca donde está el fuente base. Este fuente incluye las sentencias RPG generadas por CCPP, y es el que se compilará para generar el objeto ejecutable asociado.

Sintaxis / Modo de Uso

Identificación Sentencias: C*/P en las posiciones 6 a 9 del fuente RPG o ADP.

El primer dato de una linea es el “codigo de operación”, seguido de los parametros separados por blancos.

Una constante alfanumerica debe ir enmarcada entre dos apostrofes. Ejemplo: 'Esto es un titulo'. Una ventaja es que pueden usarse constantes de más de 8 posic. Las constantes numericas no deben ponerse entre apostrofes.

Los diferentes parametros de una operación se identifican por la posición ordinal del dato.

Los decimales de una constante numerica pueden separarse con punto o con coma.

Segun la logica del programa, la primera sentencia de API Excel que se debe ejecutar es una XL-START. Esto apertura la API Excel incluyendo algunas sentencias adicionales no de Calculo (Series p.e.).

De la misma forma, la ultima sentencia de API Excel debe ser la operación XL-END. Esto cierra la API Excel.

Sentencias de API Excel para CCPP

  • XL-Start establece el inicio de las Operaciones API Excel.
  • XL-MoveN Mueve un dato Numerico a una Celda.
  • XL-MoveNA asociado con XL-MoveN o MoveX permite mover valores “a la derecha” de celdas en la misma fila. Esto simplifica el uso de movimientos de n columnas.
  • XL-MoveX es igual que MoveN pero con datos Alfa.
  • XL-MoveXA es igual que MoveNA pero con datos Alfa.
  • XL-Action permite multiples operaciones de tipo Excel, tal como Ordenes de Impresion, Colores, Bordes, Fonts (Tipos y Tamaños de Caracteres), etc.
  • XL-End establece el Fin de Operaciones API Excel.

→ Ver pagina con ejemplos de ProgramacionSintaxis con detalle adicional.

Ayuda en Linea

El fichero de Ayuda (PC) apiexcel.chm tiene la definicion de las funciones, asi como otros textos de ayuda asociados.

Al ser un fichero normal de ayudas de PC es facil tenerlo siempre abierto para usarlo como consulta.

FIXME intentaremos refundir aqui esa ayuda.

cpiApiExcelMini Program Generator

 
/kunden/homepages/8/d674751560/htdocs/cpies/doc/data/pages/api_office/programacion.txt · Última modificación: 2/08/2017 20:22 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