En este último artículo de la serie sobre procesamiento de ficheros XML vamos a utilizar la Transformación Simple que creamos en el artículo anterior para leer los datos de nuestro fichero XML y guardarlos en SAP.

3. Carga de datos XML en SAP

Antes de empezar con el código del report con el que vamos a realizar la carga de los datos XML en SAP, veamos qué es lo que tenemos que hacer en nuestro programa:

  1. Leer los datos del fichero XML
  2. Convertir esos datos a una tabla interna para poderlos tratar
  3. Grabar esos datos en la base de datos

Para que el código se vea mejor y más claro se ha dividido cada uno de estos pasos en una subrutina, así, veamos lo que contienen los forms LEER_XML, TRANSFORMAR_XML y GUARDAR_DATOS.

Programa principal

En el programa principal crearemos dos variables: cds será la tabla interna en la que guardaremos los datos después de transformarlos y xml_cds será el string donde leeremos el fichero XML.

Una vez creadas las variables llamaremos a las tres rutinas mencionadas anteriormente.


************************************************************************
* DECLARACIONES                                                        *
************************************************************************
DATA: cds	  TYPE zxml_cd_tt,  "Tabla interna
xml_cds TYPE string.	  "String para leer el XML

************************************************************************
* PROGRAMA PRINCIPAL                                                   *
************************************************************************
START-OF-SELECTION.

** Leer los datos
  PERFORM leer_xml CHANGING xml_cds.

** Transformar los datos
  PERFORM transformar_xml USING xml_cds
                          CHANGING cds.

** Guardar los datos
  PERFORM guardar_datos USING cds. 

Leer datos del fichero XML

En esta rutina leeremos los datos del fichero XML mediante el método GUI_UPLOAD de la clase estándar CL_GUI_FRONTEND_SERVICES, que nos guarda en una tabla interna los datos leídos. Y después guardaremos esos datos en la variable creada previamente donde tendremos todo el contenido del XML en texto plano.

*&---------------------------------------------------------------------*
FORM leer_xml  CHANGING xml_cds TYPE string.
*&---------------------------------------------------------------------*
  DATA: tabla_xml TYPE TABLE OF string,
        linea_xml TYPE string.

  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      Filename	= 'C:\cd_catalog.xml'
    CHANGING
      data_tab	= tabla_xml.

  LOOP AT tabla_xml INTO linea_xml.
    CONCATENATE xml_cds linea_xml INTO xml_cds.
  ENDLOOP.

ENDFORM.

Transformar datos del XML a SAP

En esta rutina nos valdremos de la Transformación Simple que hemos creado para, a partir del contenido del XML, informar nuestra tabla interna con el catálogo de CDs.

*&---------------------------------------------------------------------*
FORM transformar_xml  USING    xml_cds  TYPE string
                CHANGING cds      TYPE zxml_cd_tt.
*&---------------------------------------------------------------------*

  CALL TRANSFORMATION zxml_cd_ts
    SOURCE XML xml_cds
    RESULT catalog = cds.

ENDFORM. 

Guardar los datos en la base de datos

Como último paso guardaremos los datos temporales en la tabla de base de datos.

*&---------------------------------------------------------------------*
FORM guardar_datos  USING cds TYPE zxml_cd_tt.
*&---------------------------------------------------------------------*

  INSERT zxml_cd FROM TABLE cds.

ENDFORM.

Resultado

Después de ejecutar el programa veremos como ya tenemos todos los registros del XML guardados en la base de datos.

Guardar datos XML en base de datos ABAP

Y eso es todo, hemos visto una manera sencilla de tratar ficheros XML mediante ABAP utilizando una Transformación Simple.