Anuncio

Colapsar
No hay anuncio todavía.

Procesar temse de bases CRET@

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Procesar temse de bases CRET@

    Hola.

    Necesito hacer un proceso que lea un fichero temse del tipo HR_CRETE0_* (fichero de bases generado por RPC_PAYES_CRETA_BASES) para localizar dentro de este, el código de cuenta, el tipo de liquidación y otros datos que hay en el XML.
    Abro el Temse y lo que obtengo es una tabla con el contenido que os indico :
    Haga clic en la imagen para ver una versión más grande

Nombre:	CONTENIDO TEMSE.jpg
Visitas:	160
Size:	52,8 KB
ID:	36676

    Necesito obtenerlo en una tabla en la que pueda tener las etiquetas separadas, como se ve en este pantallazo.

    Haga clic en la imagen para ver una versión más grande

Nombre:	CONTENIDO XML.jpg
Visitas:	204
Size:	81,2 KB
ID:	36675

    Os agradecería vuestra ayuda.

    Un saludo.
    Archivos Adjuntos

  • #2
    Hola,

    De forma muy general y sólo para que te sirva de base, mediante objetos puedes leer el XML:

    * Creating the main iXML factory
    l_ixml = cl_ixml=>create( ).
    l_streamfactory = l_ixml->create_stream_factory( ).

    PERFORM get_xml_table CHANGING l_xml_table_size l_xml_table.

    * wrap the table containing the file into a stream
    l_istream = l_streamfactory->create_istream_itable( table = l_xml_table
    size = l_xml_table_size ).

    * Creating a document
    l_document = l_ixml->create_document( ).

    * Creating a Parser
    l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
    istream = l_istream
    document = l_document ).

    Una vez leido lo recorres y vas leyendo cada nodo:

    * Creamos un nodo iterador
    iterator = node->create_iterator( ).
    * Obtenemos el primer nodo
    node = iterator->get_next( ).
    * Recorremos todos los nodos
    WHILE NOT node IS INITIAL.
    indent = node->get_height( ) * 2.
    indent = indent + 20.
    CASE node->get_type( ).
    WHEN if_ixml_node=>co_node_element.
    * ELEMENTO
    name = node->get_name( ).
    nodemap = node->get_attributes( ).
    IF NOT nodemap IS INITIAL.
    * ATRIBUTOS
    count = nodemap->get_length( ).
    * Si encontramos un EMISOR
    * if name = 'emisor'.
    CASE name.
    WHEN 'emisor'.


    Creo que como base te puede servir, tendrás que investigar los objetos.
    Saludos
    "Soy el señor Lobo, arreglo problemas"
    http://sapymas.blogspot.com/

    Comentario

    Trabajando...
    X