Текущее время: Чт, мар 28 2024, 21:11

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: выгрузка из SAP в XML формат
СообщениеДобавлено: Пн, авг 04 2008, 12:32 
Начинающий
Начинающий

Зарегистрирован:
Пн, май 26 2008, 09:17
Сообщения: 5
Здравствуйте, коллеги!
Пожалуйста, Вы могли бы поделиться документацией по ХML в SAPe.
Я новичок, вообще никогда не программировала на АБАПЕ. А мне дали задание сделать выгрузку расчета транспортного налога из SAPa в XML формат для налоговой :shock: . Ищу любую информацию по данной теме... :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 04 2008, 12:44 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, мар 21 2007, 07:42
Сообщения: 51
Посмотри вот этот код

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 :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 04 2008, 12:46 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
http://sapboard.ru/forum/viewtopic.php ... hlight=xml

Для табличных данных, на мой взгляд, проще всего воспользоваться стандартной возможностью ALV-грида для выгрузки в XML.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 04 2008, 14:13 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
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, а то ведь совершенно не читаемо получается

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, авг 04 2008, 14:19 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
kicik написал(а):
Посмотри вот этот код

Лучше посоветуй поиском пользоваться :)

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 28 2008, 12:23 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, окт 06 2005, 09:02
Сообщения: 64
Пол: Мужской
создаю 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"?>


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB