Exportar a XML

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Caher
    Junior Member
    • oct
    • 2

    #1

    Exportar a XML

    Buenas a todos!

    Necesitaria saber como exportar una extructura de DB SAP a un archivo XML.

    Saludos, Gracias!
  • davidsap
    Member
    • abr
    • 85

    #2
    A mí también me vendría muy bien. Estoy investigando precisamente sobre eso, si logro algo en claro, lo pongo aquí.

    Saludos
    Un saludo

    Comentario

    • Caher
      Junior Member
      • oct
      • 2

      #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.

      Comentario

      • raul_daimiel
        Junior Member
        • oct
        • 1

        #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

        Comentario

        • davidsap
          Member
          • abr
          • 85

          #5
          Ok, lo he probado y funciona perfecto, aunque ten&#237;a dos errores (al menos en mi PC):

          Antes de la funci&#243;n WS_DOWNLOAD ten&#237;as puesto DATA: W_SIZE TYPE I. que ya estaba declarada con anterioridad y en la propia funci&#243;n WS_DOWNLOAD hay que descomentar la l&#237;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&#243;digo justo despu&#233;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&#243;lo con 20 registros y me funciona perfectamente.

          Por cierto, a&#241;adiendo al final del todo (o antes del WS_DOWNLOAD) el siguiente c&#243;digo:

          CALL FUNCTION 'SDIXML_DOM_TO_SCREEN'
          EXPORTING
          document = M_DOCUMENT
          EXCEPTIONS
          others = 01.

          Hacemos que se muestre por pantalla el c&#243;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
          Un saludo

          Comentario

          • gerbeltran
            Member
            • jun
            • 55

            #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.

            Comentario

            • leir1612
              Junior Member
              • mar
              • 16

              #7
              if_ixml_document

              Alguien sabe que valores espera esta interface
              IF_IXML_DOCUMENT

              NAME
              NAMESPACE???

              Comentario

              Trabajando...