Создать документ xml можно несколькими способами. Например, трансформации, использование специальных ФМов и классов.
Класс if_ixml_document позволяет создавать новый и получать данные из готового документа.
Пример создания простого xml файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
DATA: lo_file TYPE REF TO if_ixml_document. DATA: lo_document TYPE REF TO if_ixml_element. DATA: lo_head TYPE REF TO if_ixml_element. DATA: lo_TABle TYPE REF TO if_ixml_element. lo_file = lo_ixml->create_document( ). lo_document = lo_file->create_simple_element( name = 'Document' parent = lo_file ). lo_head = lo_file->create_simple_element( name = 'Head' parent = lo_document ). "Атрибут для тега 'Head' lo_head->set_attribute( name = 'Type' value = 'Заголовок' ). lo_file->create_simple_element( name = 'Num' parent = lo_head value = '1 - Номер задания' ). lo_file->create_simple_element( "дата name = 'Datum' parent = lo_head value = |{ sy-datum DATE = USER } - дата| ). lo_file->create_simple_element( " id устройства name = 'ID' parent = lo_head value = 'id устройства' ). lo_TABle = lo_file->create_simple_element( name = 'Table' parent = lo_document ). * value = 'Табличная часть' ). lo_TABle->set_attribute( name = 'Type' value = 'Табличная часть' ). lo_file->create_simple_element( name = 'Unit' parent = lo_table value = '№ 1' ). lo_file->create_simple_element( name = 'unit' parent = lo_TABle value = '№ 2' ). lo_file->create_simple_element( name = 'Unit' parent = lo_table value = '№ 3' ). lo_file->create_simple_element( name = 'Unit' parent = lo_table value = '№ N' ). "выгрузка в файл DATA: lo_streamfactory TYPE REF TO if_ixml_stream_factory, lo_ostream TYPE REF TO if_ixml_ostream, lo_renderer TYPE REF TO if_ixml_renderer, lv_rc TYPE i. DATA lt_data_tab TYPE TABLE OF x255. DATA lv_size type I. lo_streamfactory = lo_ixml->create_stream_factory( ). *Связываем внутреннюю таблицу и фабрику lo_ostream = lo_streamfactory->create_ostream_itable( table = lt_data_tab ). *Оформление документа lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_file ). lv_rc = lo_renderer->render( ). *Сохранение XML lv_size = lo_ostream->get_num_written_raw( ). CALL METHOD cl_gui_frontend_services=>gui_download EXPORTING bin_filesize = lv_size filename = 'C:\Temp\FILE2.XML' filetype = 'BIN' CHANGING data_tab = lt_data_tab 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. |