#1
|
|||
|
|||
Exportar a XML
Buenas a todos!
Necesitaria saber como exportar una extructura de DB SAP a un archivo XML. Saludos, Gracias! |
#2
|
||||
|
||||
A mí también me vendría muy bien. Estoy investigando precisamente sobre eso, si logro algo en claro, lo pongo aquí.
Saludos |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
Crear un XML con los datos de una tabla del sistema
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 |
#5
|
||||
|
||||
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 |
#6
|
|||
|
|||
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. |
#7
|
||||
|
||||
if_ixml_document
Alguien sabe que valores espera esta interface
IF_IXML_DOCUMENT NAME NAMESPACE??? |
Herramientas | Buscar en Tema |
Desplegado | |
|
|