SAPфорум.RU https://sapboard.ru/forum/ |
|
выгрузка из SAP в XML формат https://sapboard.ru/forum/viewtopic.php?f=13&t=39777 |
Страница 1 из 1 |
Автор: | Janet [ Пн, авг 04 2008, 12:32 ] |
Заголовок сообщения: | выгрузка из SAP в XML формат |
Здравствуйте, коллеги! Пожалуйста, Вы могли бы поделиться документацией по ХML в SAPe. Я новичок, вообще никогда не программировала на АБАПЕ. А мне дали задание сделать выгрузку расчета транспортного налога из SAPa в XML формат для налоговой . Ищу любую информацию по данной теме... |
Автор: | kicik [ Пн, авг 04 2008, 12:44 ] |
Заголовок сообщения: | |
Посмотри вот этот код 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 |
Автор: | Rokhay [ Пн, авг 04 2008, 12:46 ] |
Заголовок сообщения: | |
http://sapboard.ru/forum/viewtopic.php ... hlight=xml Для табличных данных, на мой взгляд, проще всего воспользоваться стандартной возможностью ALV-грида для выгрузки в XML. |
Автор: | sy-uname [ Пн, авг 04 2008, 14:13 ] |
Заголовок сообщения: | |
kicik написал(а): Посмотри вот этот код
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. ... kicik, когда Вы делаете вставку кода, используйте соответствующий тег CODE, а то ведь совершенно не читаемо получается |
Автор: | Bully [ Пн, авг 04 2008, 14:19 ] |
Заголовок сообщения: | |
kicik написал(а): Посмотри вот этот код
Лучше посоветуй поиском пользоваться |
Автор: | crash_kz [ Чт, авг 28 2008, 12:23 ] |
Заголовок сообщения: | |
создаю xml-документ l_ixml = cl_ixml=>create( ). l_document = l_ixml->create_document( ). задаю кодировку l_encoding = l_ixml->create_encoding( byte_order = '0' character_set = 'utf-8' ). хочу задать параметр standalone = 'no' данный параметр является буленовским - при такой передаче l_document->set_standalone( 'X'). в конечном файле появляется строка <?xml version="1.0" encoding="utf-8" standalone="yes"?> и при такой l_document->set_standalone( '-'). тоже <?xml version="1.0" encoding="utf-8" standalone="yes"?> Как сделать чтоб при формировании создавалось <?xml version="1.0" encoding="utf-8" standalone="NO"?> |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |