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:
- Leer los datos del fichero XML
- Convertir esos datos a una tabla interna para poderlos tratar
- 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.
Y eso es todo, hemos visto una manera sencilla de tratar ficheros XML mediante ABAP utilizando una Transformación Simple.