Clique aqui caso queira ver o procedimento inverso.
Programa (SE38):
*-------------------------------------------------------------------* * Report Z_ABAP_TO_XML * * * *-------------------------------------------------------------------* * Write the data from an internal ABAP table into an XML document, * * and write it onto your frontend computer * *-------------------------------------------------------------------* REPORT z_abap_to_xml. TYPE-POOLS: abap. CONSTANTS gs_file TYPE string VALUE ´C:\temp\customers.xml´. * This is the structure for the data to go into the XML file TYPES: BEGIN OF ts_person, cust_id(4) TYPE n, firstname(20) TYPE c, lastname(20) TYPE c, END OF ts_person. * Table for the XML content DATA: gt_itab TYPE STANDARD TABLE OF char2048. * Table and work area for the data to fill the XML file with DATA: gt_person TYPE STANDARD TABLE OF ts_person, gs_person TYPE ts_person. * Source table that contains references * of the internal tables that go into the XML file DATA: gt_source_itab TYPE abap_trans_srcbind_tab, gs_source_wa TYPE abap_trans_resbind. * For error handling DATA: gs_rif_ex TYPE REF TO cx_root, gs_var_text TYPE string. * Fill the internal table gs_person-cust_id = ´3´. gs_person-firstname = ´Bill´. gs_person-lastname = ´Gates´. APPEND gs_person TO gt_person. gs_person-cust_id = ´4´. gs_person-firstname = ´Frodo´. gs_person-lastname = ´Baggins´. APPEND gs_person TO gt_person. * Fill the source table with a reference to the data table. * Within the XSLT stylesheet, the data table can be accessed with * "IPERSON". GET REFERENCE OF gt_person INTO gs_source_wa-value. gs_source_wa-name = ´IPERSON´. APPEND gs_source_wa TO gt_source_itab. * Perform the XSLT stylesheet TRY. CALL TRANSFORMATION z_abap_to_xml SOURCE (gt_source_itab) RESULT XML gt_itab. CATCH cx_root INTO gs_rif_ex. gs_var_text = gs_rif_ex->get_text( ). MESSAGE gs_var_text TYPE ´E´. ENDTRY. * Download the XML file to your client CALL METHOD cl_gui_frontend_services=>gui_download EXPORTING filename = gs_file CHANGING data_tab = gt_itab EXCEPTIONS file_write_error = 1 no_batch = 2 gui_refuse_filetransfer = 3 invalid_type = 4 no_authority = 5 unknown_error = 6 header_not_allowed = 7 separator_not_allowed = 8 filesize_not_allowed = 9 header_too_long = 10 dp_error_create = 11 dp_error_send = 12 dp_error_write = 13 unknown_dp_error = 14 access_denied = 15 dp_out_of_memory = 16 disk_full = 17 dp_timeout = 18 file_not_found = 19 dataprovider_exception = 20 control_flush_error = 21 not_supported_by_gui = 22 error_no_gui = 23 OTHERS = 24. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
Transformation (STRANS): <z_abap_to_xml>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output encoding="iso-8859-1" indent="yes" method="xml" version="1.0"/> <xsl:strip-space elements="*"/> <xsl:template match="/"> <CUSTOMERS> <xsl:apply-templates select="//IPERSON/item"/> </CUSTOMERS> </xsl:template> <xsl:template match="IPERSON/item"> <item> <customer_id> <xsl:value-of select="CUST_ID"/> </customer_id> <first_name> <xsl:value-of select="FIRSTNAME"/> </first_name> <last_name> <xsl:value-of select="LASTNAME"/> </last_name> </item> </xsl:template> </xsl:transform>
XML: <customers.xml>
Post Original