Посмотри вот этот код
Code:
REPORT ZTEST_KU.
TYPE-POOLS: ixml.
TYPES: BEGIN OF xml_line,
data(256) TYPE x,
END OF xml_line.
DATA: l_ixml TYPE REF TO if_ixml,
l_streamfactory TYPE REF TO if_ixml_stream_factory,
l_ostream TYPE REF TO if_ixml_ostream,
l_renderer TYPE REF TO if_ixml_renderer,
l_document TYPE REF TO if_ixml_document,
PARSER TYPE STRING.
DATA: l_element_flights TYPE REF TO if_ixml_element,
l_element_airline TYPE REF TO if_ixml_element,
l_element_flight TYPE REF TO if_ixml_element,
l_element_from TYPE REF TO if_ixml_element,
l_element_to TYPE REF TO if_ixml_element,
l_element_dummy TYPE REF TO if_ixml_element,
l_value TYPE string.
DATA: l_xml_table TYPE TABLE OF xml_line,
l_xml_size TYPE i,
l_rc TYPE i.
DATA: lt_spfli TYPE TABLE OF spfli.
DATA: l_spfli TYPE spfli.
START-OF-SELECTION.
* Fill the internal table
SELECT * FROM spfli INTO TABLE lt_spfli.
* Sort internal table
SORT lt_spfli BY carrid.
* Start filling xml dom object from internal table
* Creating a ixml factory
l_ixml = cl_ixml=>create( ).
* Creating the dom object model
l_document = l_ixml->create_document( ).
* Fill root node with value flights
l_element_flights = l_document->create_simple_element(
name = 'document'
parent = l_document ).
l_value = 'd300.00'.
l_rc = l_element_flights->set_attribute( name = 'type' value =
l_value ).
l_value = '7'.
l_rc = l_element_flights->set_attribute( name = 'version' value =
l_value ).
l_element_airline = l_document->create_simple_element(
name = 'form_300000100001'
parent = l_element_flights ).
*page1
l_element_flight = l_document->create_simple_element(
name = 'page_300000100001'
parent = l_element_airline ).
l_element_from = l_document->create_simple_element(
name = 'rnn'
parent = l_element_flight
value = '30000000').
l_element_from = l_document->create_simple_element(
name = 'np_month'
parent = l_element_flight
value = '02').
l_element_from = l_document->create_simple_element(
name = 'np_quarter'
parent = l_element_flight
value = '1').
l_element_from = l_document->create_simple_element(
name = 'np_year'
parent = l_element_flight
value = '2008').
l_element_from = l_document->create_simple_element(
name = 'fio1'
parent = l_element_flight
value = 'Test User').
l_element_from = l_document->create_simple_element(
name = 'fio2'
parent = l_element_flight ).
l_element_from = l_document->create_simple_element(
name = 'fio3'
parent = l_element_flight ).
l_element_from = l_document->create_simple_element(
name = 'oked1'
parent = l_element_flight ).
l_element_from = l_document->create_simple_element(
name = 'oked2'
parent = l_element_flight ).
l_element_from = l_document->create_simple_element(
name = 'oked3'
parent = l_element_flight ).
l_element_from = l_document->create_simple_element(
name = 'code_currency'
parent = l_element_flight
value = 'KZT').
l_element_from = l_document->create_simple_element(
name = 'unit_weight1'
parent = l_element_flight ).
l_element_from = l_document->create_simple_element(
name = 'unit_weight2'
parent = l_element_flight ).
l_element_from = l_document->create_simple_element(
name = 'unit_weight3'
parent = l_element_flight ).
l_element_from = l_document->create_simple_element(
name = 'vd_p'
parent = l_element_flight
value = '0' ).
l_element_from = l_document->create_simple_element(
name = 'vd_o'
parent = l_element_flight
value = '0' ).
l_element_from = l_document->create_simple_element(
name = 'vd_d'
parent = l_element_flight
value = '0' ).
l_element_from = l_document->create_simple_element(
name = 'vd_u'
parent = l_element_flight
value = '0' ).
l_element_from = l_document->create_simple_element(
name = 'vd_l'
parent = l_element_flight
value = '0' ).
*
*
*
* <number_uved/>
* <date_uved/>
* <a_s_8>0</a_s_8>
* <b_s_8>0</b_s_8>
* <a_s_9/>
* <b_s_9/>
* <s_10_1>0</s_10_1>
* <s_10_2>0</s_10_2>
* <s_s/>
* <number_svid/>
* <pril_1>0</pril_1>
* <pril_2>0</pril_2>
* <pril_3>0</pril_3>
* <pril_4>0</pril_4>
* <pril_5>0</pril_5>
* <pril_6>0</pril_6>
* <pril_7>0</pril_7>
* <pril_8>0</pril_8>
* <pril_9>0</pril_9>
* <pril_10>0</pril_10>
* <pril_11>0</pril_11>
* <pril_12>0</pril_12>
* <a_s_300.00.001/>
* <b_s_300.00.001/>
* <a_s_300.00.002/>
* <a_s_300.00.003/>
* <b_s_300.00.003/>
* <a_s_300.00.004/>
* <a_s_300.00.005/>
* <a_s_300.00.006/>
* <s_300.00.007/>
* <s_300.00.008/>
* <s_300.00.009/>
* <s_300.00.010/>
* page 2
l_element_flight = l_document->create_simple_element(
name = 'page_300000200008'
parent = l_element_airline ).
l_element_from = l_document->create_simple_element(
name = 'rnn'
parent = l_element_flight
value = '60000000').
* page 3
l_element_flight = l_document->create_simple_element(
name = 'page_300000300005'
parent = l_element_airline ).
l_element_from = l_document->create_simple_element(
name = 'rnn'
parent = l_element_flight
value = '60000000').
* LOOP AT lt_spfli INTO l_spfli.
*
* AT FIRST.
** Creating a ixml factory
* l_ixml = cl_ixml=>create( ).
** Creating the dom object model
* l_document = l_ixml->create_document( ).
** Fill root node with value flights
* l_element_flights = l_document->create_simple_element(
* name = 'flights'
* parent = l_document ).
* ENDAT.
*
* AT NEW carrid.
** Create element 'airline' as child of 'flights'
* l_element_airline = l_document->create_simple_element(
* name = 'airline'
* parent = l_element_flights ).
*
** Create attribute 'code' of node 'airline'
* l_value = l_spfli-carrid.
* l_rc = l_element_airline->set_attribute( name = 'code' value =
*l_value ).
*
** Create attribute 'name' of node 'airline'
* SELECT SINGLE carrname FROM scarr INTO l_value WHERE carrid EQ
*l_spfli-carrid.
* l_rc = l_element_airline->set_attribute( name = 'name' value =
*l_value ).
*
* ENDAT.
*
* AT NEW connid.
** Create element 'flight' as child of 'airline'
* l_element_flight = l_document->create_simple_element(
* name = 'flight'
* parent = l_element_airline ).
*
** Create attribute 'number' of node 'flight'
* l_value = l_spfli-connid.
* l_rc = l_element_flight->set_attribute( name = 'number' value =
*l_value ).
*
* ENDAT.
*
** Create element 'from' as child of 'flight'
* CONCATENATE l_spfli-cityfrom ',' l_spfli-countryfr INTO l_value.
* l_element_from = l_document->create_simple_element(
* name = 'from'
* value = l_value
* parent = l_element_flight ).
*
** Create attribute 'airport' of node 'from'
* l_value = l_spfli-airpfrom.
* l_rc = l_element_from->set_attribute( name = 'airport' value =
*l_value ).
*
** Create element 'to' as child of 'flight'
* CONCATENATE l_spfli-cityto ',' l_spfli-countryto INTO l_value.
* l_element_to = l_document->create_simple_element(
* name = 'to'
* value = l_value
* parent = l_element_flight ).
*
** Create attribute 'airport' of node 'from'
* l_value = l_spfli-airpto.
* l_rc = l_element_to->set_attribute( name = 'airport' value =
*l_value ).
*
** Create element 'departure' as child of 'flight'
* l_value = l_spfli-deptime.
* l_element_dummy = l_document->create_simple_element(
* name = 'departure'
* value = l_value
* parent = l_element_flight ).
*
** Create element 'arrival' as child of 'flight'
* l_value = l_spfli-arrtime.
* l_element_dummy = l_document->create_simple_element(
* name = 'arrival'
* value = l_value
* parent = l_element_flight ).
*
** Create element 'type' as child of 'flight'
* CASE l_spfli-fltype.
* WHEN 'X'.
* l_value = 'Charter'.
* WHEN OTHERS.
* l_value = 'Scheduled'.
* ENDCASE.
* l_element_dummy = l_document->create_simple_element(
* name = 'type'
* value = l_value
* parent = l_element_flight ).
* ENDLOOP.
IF sy-subrc NE 0.
MESSAGE 'No data into db table ''spfli'', please run program
''SAPBC_DATA_GENERATOR'' with transaction ''SA38''' TYPE 'E'.
ENDIF.
* Creating a stream factory
l_streamfactory = l_ixml->create_stream_factory( ).
* Connect internal XML table to stream factory
l_ostream = l_streamfactory->create_ostream_itable( table =
l_xml_table ).
*
* CALL METHOD l_ostream->SET_INDENT
* EXPORTING
* INDENT = 2.
*
* CALL METHOD l_ostream->SET_PRETTY_PRINT
* EXPORTING
* PRETTY_PRINT = 'X'.
* Rendering the document
l_renderer = l_ixml->create_renderer( ostream = l_ostream
document = l_document ).
l_rc = l_renderer->render( ).
* Saving the XML document
l_xml_size = l_ostream->get_num_written_raw( ).
* IF xslt IS INITIAL.
parser = 'ID_INDENT'.
* ELSE.
* parser = xslt.
* ENDIF.
CALL TRANSFORMATION (parser)
SOURCE it_data = l_xml_table[]
RESULT XML l_ostream.
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_xml_size
filename = 'c:\temp1\flights.nds'
filetype = 'BIN'
CHANGING
data_tab = l_xml_table
EXCEPTIONS
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.
Bully: пришел модератор и добавил тег code