Transformación simple XML (strans)

En SAP existen 2 tipos de transformaciones, XLM simples y XSLT.

Las primeras como su nombre indica es la más sencilla, nos bastará con conocer un poco de XML y/o HTML.

La segunda es más compleja, ya que usa un lenguaje diferente el cual permite generar documentos de forma dinámica haciendo uso de bucles, condicionales, etc.

XML simple.



Creación de la estructura.

La creación de la estructura la crearemos como siempre desde la transacción SE11, esta deberá poder enlazar cada nodo y/o atributos de nuestro XML con los campos de dicha estructura.
Para leer o escribir el documento debemos tener en cuenta el orden y los niveles.
Supongamos que queremos leer (guardar datos en SAP) el siguiente XML:


La estructura que debemos generar sería como la siguiente:
El campo matrícula corresponde con el atributo matrícula para el nodo principal vehículos.

Como el campo coches corresponde a un nodo, tendrá como tipo otra estructura (otro nivel)




Creación de la transformación.

Para crear la transformación simple podemos usar la transacción STRANS.




El sistema por defecto nos crea una estructura XML básica, para adaptar esta estructura a nuestro tipo estructura principal o raíz hacemos clic en la varita. 

Por defecto también nos ha creado un nodo raíz, lo borramos para insertar el nuestro.

Con clic derecho, insertamos nuestro nodo raíz.


Una vez creado hacemos clic derecho sobre el nodo raíz creado y lo marcamos.

En la parte derecha hacemos clic derecho he insertamos el nodo que acabamos de marcar.


Implementación de la lógica XML.
Por defecto, todos los campos aparecerán como nodos, para este caso cambiamos el nodo matrícula a tipo atributo. 


Al hacer cambios en el nodo raíz y pulsar atrás podemos obserbar que nuestro código XML ha sido cambiado para ajustarse al nuevo nodo raíz. El siguiente paso es ajustar nuestro XML para que pueda imprimirse la estructura deseada. img 1.0

 Si volvemos a hacer clic sobre la varita, podemos observar que la estructura en árbol se ha ajustado a los cambios realizados en el XML.


Generar XML

Para poder generar el documento XML de manera que podamos verificar su correcto funcionamiento, podemos usar un programa de pruebas en el que hacemos la llamada a la transacción (call transaction).


    DATA ls_vehiculos TYPE ZESTRUCTURA_VEHICULOS_XML.
    DATAlv_xml_in                 TYPE string,
                lv_xstring_xml_in    TYPE xstring. 

     ls_vehiculos-matricula  '1234567'.

    TRY .

        call transformation ZTRANS_PRUEBA
        SOURCE vehiculos     gs_rs_ids
        RESULT XML lv_xstring_xml_in
        OPTIONS xml_header 'full'
        initial_components       'suppress'.

        CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
          EXPORTING
            im_xstring  lv_xstring_xml_in
            im_encoding 'UTF-8'
          IMPORTING
            ex_string   lv_xml_in.

    ENDTRY.


Si ponemos un breakpoint y miramos la variable lv_xml_in, podemos ver que el se ha generado correctamente la estructura deseada incluyendo el valor del atributo matricula que le hemos pasado.









Comentarios

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. El objeto GS_RS_IDS sería del tipo tabla que estas convirtiendo, para tomarlo como una tabla interna por ejemplo de Vehiculos.

    ResponderEliminar
  3. Buenas tardes.
    Tengo un xml para enviar ordenes de compras, se me ha solicitado contar el numero de documentos enviados y la cantidad de posiciones por cada una de las ordenes. Agradezco su ayuda y apoyo con este tema.... no se, si se debe calcular desde abap o desde el xml de la STRANS agregando alguna etiqueta.

    ResponderEliminar
  4. como hago para borrar un tags del xml que no esta contemplado en la estructura de la trasnformacion, esto para que no me de un error.

    ResponderEliminar

Publicar un comentario