Ir al contenido principal

Crear Archivo XML desde Progress 4gl

Bienvenidos a otra semana en nuestro blog de programación, les quiero compartir un ejemplo de como crear un archivo XML desde Progress 4gl, esto es necesario en casos de comunicación con otros sistemas.


Primero que es un archivo XML son siglas de Extensible Markup Language , es un lenguaje que maneja etiquetas para definir la estructura de un layout para comunicar información, almacenar información y que se definan las reglas o características de la información para siempre hablar en los mismos término.

Para poder leer un XML siempre tendremos su contrapartida que es un XSD que nos sirve para definir la longitud de los campos, el tipo de campo si es carácter, entero o decimal.

Por ejemplo en México que tenemos el tema de facturación/complementos de facturación y contabilidad electrónicos para integrar la información al SAT esta institución entrega la definición del XML, por ejemplo el documento se ve así como las siguientes imágenes



La explicación en diagrama



Ejemplo


El objetivo del XML es que sea fácil de leer y de programar, veamos un ejemplo de como generar un archivo XML desde Progress 4gl

Primero un XML es un archivo con texto así que en Progress como generar un CSV es decir se trata igual como un archivo plano, la diferencia es como ir tratando las etiquetas, les voy a enseñar parte de un programa para generar el XML de Cuentas para contabilidad Electrónica



     OUTPUT STREAM sat-cat TO VALUE(vc-file) PAGE-SIZE 0
       CONVERT SOURCE "ISO8859-1" TARGET "UTF-8".
       
       /* Headers */
       FOR FIRST tablesat_mstr WHERE tablesat_code = "001"  NO-LOCK:
             
           PUT STREAM sat-cat UNFORMATTED     
               "<?xml version=" + QUOTER("1.0") + " encoding=" + 
               QUOTER("UTF-8") + "?> "    
               SKIP.
           PUT STREAM sat-cat UNFORMATTED                
                "<catalogocuentas:Catalogo xsi:schemaLocation=" + 
                QUOTER(tablesat_loc) +
                " xmlns:xsi=" + QUOTER(sat_xsi)  +
                " Version=" + QUOTER(sat__qad1)  + 
                " RFC=" + QUOTER(vc-rfc)  + 
                " Mes=" + 
                QUOTER(FILL("0", 2 - LENGTH(STRING(periodo))) + 
                STRING(periodo)) + 
                " Anio= " + QUOTER(STRING(Anio)) + 
                " xmlns:catalogocuentas=" + QUOTER(sat_doc) + ">"    
                SKIP.
       END. /* FOR FIRST tablesat_mstr WHERE tablesat_code = "001"NO-LOCK: */

   
       /* Details XML  */
       FOR EACH  tablesat2_mstr WHERE tablesat2_rfc = vc-rfc:SCREEN-VALUE AND 
                                      tablesat2_active = true      NO-LOCK:
        
           vc_account = "".
           vc_account = REPLACE(tablesat2_desc, "&", "") .
           vc_account = REPLACE(vc_account, "%", "") .
              
           PUT STREAM sat-cat UNFORMATTED       
               "<catalogocuentas:Ctas CodAgrup="            + 
               QUOTER(sat2_cod_agrup)                + 
               " NumCta=" + QUOTER(CAPS(sat2_acct))    +
               " Desc="   + QUOTER(vc_account)              + 
               " Nivel="  + QUOTER(STRING(sat2_level)) + 
               " Natur="  + QUOTER(CAPS(sat2_origin))  + "/>"         
               SKIP.
                      
       END.  /* FOR EACH  sat2_mstr  NO-LOCK:  */
       
       PUT STREAM sat-cat UNFORMATTED        
            "</catalogocuentas:Catalogo>"
            SKIP.

      OUTPUT STREAM sat-cat CLOSE.


Ejecución del programa nos crea el siguiente archivo


Este es solo un ejemplo, pero puede funcionar para comunicar 2 sistemas diferentes, enviar información entre usuarios y un tip para leer el XML en modo tabla , pueden abrirlo en Excel, lo que hago es arrastrar el archivo XML a una ventana de Excel y me pregunta como quiero abrir el archivo, selecciono XML como tabla 


Espero les sea de utilidad y les recomiendo leer también el POST dentro de este mismo blog acerca de como leer XML con Python
https://www.programacionparatodos.com/2019/05/programapython.html

También si quieren ver más programas en Progress 4gl les comparto las ligas

Como utilizar ACCUM en Progress como SUM de SQL 

Como Hacer vectores dinámicos en Progress


Como Hacer funciones en Progress

https://www.programacionparatodos.com/2020/06/FuncionesenProgress4gl.html

No olvide compartirnos y seguirnos en este blog o en Facebook.

Comentarios

  1. Como importar un archivo XML en progress 4gl para leer su información???

    ResponderBorrar
  2. Hola para leerlo es un input file y lRetOK = hDSet:READ-XML(cSourceType, cFile, cReadMode, cSchemaLocation,
    lOverrideDefaultMapping, cFieldTypeMapping, cVerifySchemaMode).
    Mira la ayuda de Progress
    https://docs.progress.com/bundle/openedge-abl-reference-117/page/READ-XML-method.html

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Graficar funciones en Python con dataframes

Bienvenidos a un nuevo post, en esta semana, en esta ocasión les quiero platicar acerca de una librería en Python que se llama  matplotlib  que nos sirve para gráfica funciones de  matemáticas. Habitualmente en Python existen muchas librerías, lo que hay que hacer es primero investigar si ya existe alguna que nos ayude y entenderla antes de inventar el hilo negro, en mi caso encontré la librería  Matplotlib Para instalar deben utilizar el comando PIP en 2.7 Instalando en Python 3.7 Si tienen Python 2.7 deben realizar la ejecución de estos 2 comandos desde consola python -m pip install -U pip python -m pip install -U matplotlib Aunque lo más recomendable es utilizar la versión 3.7 o superior de Python. Programa para graficar en Python import matplotlib.pyplot as plt import numpy as np import math as mt def move_spines():     """Esta funcion divide pone al eje y en el valor      0 de x para dividir claramente los valores positivos y     negativos.&quo

Ejemplo Macro en Word

Hola: ¿Sabían que no solo en Excel pueden hacer Macros?  ¡¡¡También en Outlook, Word, Power Point,Access  es posible hacer Macros!!!  ☺️ Ya que Word, Excel, Power Point,Access son de familia Microsoft y Visual Basic también es que podemos programar nuestras macros en esta paquetería. Como hemos visto antes, para poder programar nuestras macros, necesitamos primero configurar la Barra de tareas de Developer o Desarrollador Seleccionan el Menu File>Options>Customize Ribbon o en Español Archivo>Opciones>barra de tareas Despues la parte de seguridad de las macros Menu File>Options>Trus Center o Archivo>Opciones>Centro de Seguridad y marcamos como se ve en la imagen, la cuarta opción y el combo Ejemplo Vamos hacer un ejemplo donde, tengamos que generar varios diplomas de fin de curso, pero con una lista de Nombres , entonces vamos a crear un nuevo archivo en Word y le vamos a guardar como tipo Macro  Tenemos una plantill

Ejemplo Python para leer imagen y transformarla en una matriz

Como hemos visto en otros post, Python nos permite hacer programas de manera más rápida, en esta ocasión quiero compartirles un ejemplo para leer un archivo de imagen y como convertirlo en una matriz o un arreglo. Aplicaciones Poder hacer ingeniería de datos, es decir poder convertir una misma imagen en diferentes todos y utilizarlos para machine learning para reconocimiento de gatos, para ello hay que mostrar muchas imágenes a nuestro modelo es decir entrenarlo, para ello hay que colocarle imágenes claras y imagenes que no sean tan claras por ejemplo, se pone la imagen original y se agrega "ruido" para que se vea en rojos, grises, verdes. Se pudo utilizar para un mapa , para poder ver datos a detalle Se puede aplicar para manipular imágenes, por ejemplo agregar efectos  Seguramente a ustedes se les pueden ocurrir más aplicaciones Les comparto el ejemplo de como hacerlo en Jupiter y para hacer el ejemplo voy a utilizar el logo del blog es una imagen de 500x500 pixeles Los Pas