Ver la Versión Completa : Exportar a XML
Buenas a todos!
Necesitaria saber como exportar una extructura de DB SAP a un archivo XML.
Saludos, Gracias!
davidsap
23/10/06, 14:59:45
A mí también me vendría muy bien. Estoy investigando precisamente sobre eso, si logro algo en claro, lo pongo aquí.
Saludos
Si la versión de tu sistema te lo permite (yo no puedo) puedes echar un vistazo a este FM
RSWAD_TABLECONTENT_TO_XML
Tambien he probado esto:
CALL TRANSFORMATION (`ID`)
SOURCE header = headeritab[]
item = itemitab[]
RESULT XML xml_out.
Un saludo.
raul_daimiel
25/10/06, 14:51:52
Hola, chicos!.
Aquí tenéis un ejemplo sencillito. Lo que hace es descargar a una ruta local ( por defecto C:\ ), el contenido de la tabla del sistema MARA a un fichero XML.
Hay una parte del código - donde se lleva a cabo la transformación - que no sabría explicar qué hace, pero, vamos, el hecho es que funciona...
** Tabla del sistema
Tables: mara.
data: begin of i_idoc2 occurs 0.
include structure mara.
data: end of i_idoc2.
*** DECLARACION DE DATOS PARA EL TRATAMIENTO DEL XML
DATA: L_DOM TYPE REF TO IF_IXML_ELEMENT,
M_DOCUMENT TYPE REF TO IF_IXML_DOCUMENT,
G_IXML TYPE REF TO IF_IXML,
W_STRING TYPE XSTRING,
W_SIZE TYPE I,
W_RESULT TYPE I,
W_LINE TYPE STRING,
IT_XML TYPE DCXMLLINES,
S_XML LIKE LINE OF IT_XML,
W_RC LIKE SY-SUBRC.
DATA: XML TYPE DCXMLLINES.
DATA: RC TYPE SY-SUBRC,
BEGIN OF XML_TAB OCCURS 0,
D LIKE LINE OF XML,
END OF XML_TAB.
*** RECUPERAMOS EL CONTENIDO DE LA TABLA MARA.
** Esta parte no tengo demasiado clara cómo explicarla, pero, a lo
** que voy, lo importante es que funciona....jajajaja
select * into
table i_idoc2 from mara.
CLASS CL_IXML DEFINITION LOAD.
G_IXML = CL_IXML=>CREATE( ).
CHECK NOT G_IXML IS INITIAL.
M_DOCUMENT = G_IXML->CREATE_DOCUMENT( ).
CHECK NOT M_DOCUMENT IS INITIAL.
CALL FUNCTION 'SDIXML_DATA_TO_DOM'
EXPORTING
NAME = 'IDOC'
DATAOBJECT = I_IDOC2[]
IMPORTING
DATA_AS_DOM = L_DOM
CHANGING
DOCUMENT = M_DOCUMENT
EXCEPTIONS
ILLEGAL_NAME = 1
OTHERS = 2.
CHECK NOT L_DOM IS INITIAL.
W_RC = M_DOCUMENT->APPEND_CHILD( NEW_CHILD = L_DOM ).
CALL FUNCTION 'SDIXML_DOM_TO_XML'
EXPORTING
DOCUMENT = M_DOCUMENT
IMPORTING
XML_AS_STRING = W_STRING
SIZE = W_SIZE
TABLES
XML_AS_TABLE = IT_XML
EXCEPTIONS
NO_DOCUMENT = 1
OTHERS = 2.
** Aquí ya tenemos la tabla con la estructura del fichero XML.
LOOP AT IT_XML INTO XML_TAB-D.
APPEND XML_TAB.
ENDLOOP.
DATA: W_SIZE TYPE I.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
* BIN_FILESIZE = W_SIZE
FILENAME = 'C:\FICHERO.XML'
FILETYPE = 'BIN'
TABLES
DATA_TAB = XML_TAB
EXCEPTIONS
OTHERS = 10.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Espero que os sirva, niños!
Raúl
davidsap
26/10/06, 08:01:19
Ok, lo he probado y funciona perfecto, aunque tenía dos errores (al menos en mi PC):
Antes de la función WS_DOWNLOAD tenías puesto DATA: W_SIZE TYPE I. que ya estaba declarada con anterioridad y en la propia función WS_DOWNLOAD hay que descomentar la línea de BIN_FILESIZE = W_SIZE.
En mi caso la tabla MARA tiene 4000 registros, y al ejecutar el programa se queda colgado. Yo lo he solucionado poniendo el siguiente código justo después del select:
LOOP AT I_IDOC2.
IF SY-TABIX > 20.
DELETE I_IDOC2 INDEX SY-TABIX.
ENDIF.
ENDLOOP.
De esta foma dejo la tabla interna sólo con 20 registros y me funciona perfectamente.
Por cierto, añadiendo al final del todo (o antes del WS_DOWNLOAD) el siguiente código:
CALL FUNCTION 'SDIXML_DOM_TO_SCREEN'
EXPORTING
document = M_DOCUMENT
EXCEPTIONS
others = 01.
Hacemos que se muestre por pantalla el código del fichero XML de la misma forma que si lo estuvieramos visualizando por pantalla, contrayendo y expandiendo los nodos. Igual no tiene demasiada utilidad pero bueno, yo lo pongo por si os sirve.
Muchas gracias por tu ayuda y un saludo a todos
gerbeltran
24/10/07, 12:52:16
Buenas estoy tratando de implementar la opcion que utiliza CALL TRANSFORMATION (`ID`) para pasar de un XML a una tabla interna de Abap, pero no logro darme cuenta donde y cómo declaro la tranformación 'ID' que luego llamo.
Si alguien pudo implementarla le agradecería si me lo puede explicar un poco mas.
Saludos,
Germán.
leir1612
24/08/10, 20:28:09
Alguien sabe que valores espera esta interface
IF_IXML_DOCUMENT
NAME
NAMESPACE???
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web