Hoy en día, cada vez es más habitual el intercambio de datos entre diferentes sistemas. Y, aunque en principio esto supone una gran ventaja, también puede llegar a ser un quebradero de cabeza si los sistemas utilizan formatos diferentes o incompatibles. Para facilitar estos intercambios, y definir un estándar que todos los sistemas puedan entender y utilizar, se creó el lenguaje XML (eXtensible Markup Language).

La mayoría de los lenguajes de programación son capaces ya de interpretar y procesar ficheros XML transformando sus contenidos al formato propio del sistema. En esta serie de artículos vamos a ver cómo tratar estos ficheros XML con ABAP de una forma sencilla.

1. Objetivo del tratamiento de XML con ABAP

Para que la explicación sea más clara y se pueda seguir mejor, vamos a explicar el proceso completo con un ejemplo sencillo. El objetivo de este ejemplo será obtener datos de un XML simple e importarlos en una tabla de nuestro sistema SAP. El fichero que vamos a utilizar contiene un catálogo de CDs musicales, que podemos encontrar en la web www.w3schools.com, y tiene la siguiente estructura:

<CATALOG>
	<CD>
		<TITLE>Empire Burlesque</TITLE>
		<ARTIST>Bob Dylan</ARTIST>
		<COUNTRY>USA</COUNTRY>
		<COMPANY>Columbia</COMPANY>
		<PRICE>10.90</PRICE>
		<AIR_YEAR>1985</AIR_YEAR>
	</CD>
	...
	<CD>
		<TITLE>Unchain my heart</TITLE>
		<ARTIST>Joe Cocker</ARTIST>
		<COUNTRY>USA</COUNTRY>
		<COMPANY>EMI</COMPANY>
		<PRICE>8.20</PRICE>
		<AIR_YEAR>1987</AIR_YEAR>
	</CD>
</CATALOG>

2. Proceso del tratamiento de XML con ABAP

El proceso para importar estos datos XML lo podemos dividir en tres pasos principales. Primero crearemos los objetos del Diccionario de Datos ABAP mediante la transacción SE11, después crearemos una Transformación Simple en la STRANS y, para finalizar, programaremos un report sencillo mediante la SE38 en el que utilizaremos lo creado previamente para procesar el fichero XML.

1) Creación de los objetos del Diccionario ABAP

Como hemos comentado, el primero de los pasos es crear todos los objetos en el Diccionario de Datos y, para ello, empezaremos creando los dominios y elementos de datos con los que trataremos los elementos del fichero. Necesitaremos crear un elemento de datos por cada una de las propiedades del CD (título, artista, país, …), y tantos dominios como necesitemos. Podríamos utilizar elementos ya existentes en nuestro sistema, propios o estándar, pero no es muy recomendable.

Una vez que tenemos creados los elementos de datos, crearemos una estructura ABAP que defina la estructura del propio fichero XML.

Procesado ABAP de XML: Creación de objetos de diccionario

Esta estructura define cada uno de los CDs, pero como lo que queremos es recoger varios registros, necesitamos crear un tipo de tabla a partir de esa estructura. De esta manera, podremos recoger cada uno de los CDs en una tabla interna.

Tratamiento XML con ABAP: Creación de tipo de tabla

Finalmente, como lo que queremos es guardar los datos leídos del XML en una tabla ABAP de nuestro SAP ERP, crearemos una tabla de base de datos en el ABAP Dictionary. Utilizaremos lo definido anteriormente indicando, además, cuales son los campos clave, MANDT y TITLE.

Tratamiento XML con ABAP: Creación de tabla

Esto es todo por ahora, en los próximos artículos veremos cómo se crea una Transformación Simple y como se puede utilizar en un programa de carga de datos XML en ABAP.