Текущее время: Чт, июл 24 2025, 01:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 13:13 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
Добрый день, уважаемые коллеги!

Делаю для клиента XML счета. Клиент придрался к объявлению файла <?xml version="1.0" ?> (у меня сейчас так).
А ему надо чтоб было <?xml version="1.0" encoding="UTF-8" ?> .

Где этот UTF-8 указывается?
Помогите пожалуйста разобраться.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 13:27 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, июл 23 2007, 08:49
Сообщения: 31
Откуда: Москва
Пол: Мужской
Уточните - как именно вы их делаете?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 13:32 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
DATA: l_xml_table TYPE TABLE OF xml_line,
l_xml_size TYPE i,
l_rc TYPE i.
.....

** 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 e_invoice
l_element_e_invoice = l_document->create_simple_element(
name = 'InvoiceImport'
parent = l_document ).
...

* 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 ).

* 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( ).

CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_xml_size
filename = 'c:\e_invoice.xml'
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.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 13:50 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
Code:
         
data: l_encoding        type ref to if_ixml_encoding.
l_encoding = cl_xml->create_encoding(
                 byte_order = '0'
                 character_set = 'UTF-8'    ).
l_ostream->set_encoding( l_encoding )   .

_________________
Ничто так не заразительно, как смех начальника...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 14:33 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
А скажите пожалуйста куда это вставить.
Сейчас у меня

l_document = l_ixml->create_document( ).
l_ostream = l_streamfactory->create_ostream_itable( table = l_xml_table ).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 14:50 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
У вас должно получиться как-то так:
Code:
*   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 ).
*--------------------------------------------------------
    l_encoding = l_ixml->create_encoding(    byte_order = '0'
                                            character_set = 'UTF-8'    ).
    l_ostream->set_encoding( l_encoding )   .
*   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( ).

    call method cl_gui_frontend_services=>gui_download...
     

_________________
Ничто так не заразительно, как смех начальника...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 15:02 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
Большое спасибо LinevskiySV!

Но на строку l_ostream->set_encoding( l_encoding ) .
выходит ошибка
You can only omit the parameter name if the method has a single
parameter. This must be an IMPORTING parameter.

Не подскажете что это может значить?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 15:13 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
требует скорее всего запись такого вида:

Code:
l_ostream->set_encoding( exporting encoding = l_encoding ) .

_________________
Ничто так не заразительно, как смех начальника...


Последний раз редактировалось LinevskiySV Ср, мар 21 2012, 15:21, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 15:16 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
Снова ругается :(

Formal parameter "ENCODING" is not a EXPORTING parameter, it is a
IMPORTING parameter


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 15:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
irik, посмотрите справку по оператору CALL METHOD. Потом 2 раза щелкните на set_encoding, посмотрите имена параметров.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 16:15 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
Уважаемый Удав! Скажите пожалуйста что мне там посмотреть?
Не совсем понятно что искать и с какой целью.
Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Ср, мар 21 2012, 17:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
irik написал(а):
Не совсем понятно что искать и с какой целью.

Справка нужна, чтобы корректно написать вызов метода l_ostream->set_encoding
Параметры метода нужны, чтобы корректно определить их тип (exporting, importing, returning) и правильно назвать их при вызове.

Сейчас же Вы просто копируете код, который написал LinevskiySV. Он, насколько я понимаю, написал вызов метода по памяти, без проверки в реальной системе.
Метод l_ostream->set_encoding кроме входного параметра encoding имеет выходной параметр rval.
Code:
l_rval = l_ostream->set_encoding( l_encoding ).

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Чт, мар 22 2012, 14:49 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
Cпасибо.
Всё получилось.
Хочу ещё спросить (не сочтите за наглость, это мой первый XML из Сапа).
Мне надо добавить в структуру файла вот такую информацию:
<InvoiceImport xsi:schemaLocation="InvoiceImport.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ivis="http://ivis.eps.gov.lv/XMLSchemas/100001/IVIS/v1-0" xmlns="http://ivis.eps.gov.lv/XMLSchemas/100018/InvoiceImport/v1-0">
Пыталась сделать следующим образом:

** Fill root node with value e_invoice
l_element_e_invoice = l_document->create_simple_element( name = 'InvoiceImport' parent = l_document ).

* Create attribute 'code' of node 'InvoiceImport'
l_value = 'InvouceImport.xsd'.
l_rc = l_element_e_invoice->set_attribute( name = 'xsi:schemaLocation' value = l_value ).

* Create attribute 'node' of node 'InvoiceImport'
l_value = 'http://www.w3.org/2001/XMLSchema-instance'.
l_rc = l_element_e_invoice->set_attribute( name = 'xmlns:xsi' value = l_value ).

* Create attribute 'mode' of node 'InvoiceImport'
l_value = 'http://ivis.eps.gov.lv/XMLSchemas/100001/IVIS/v1-0'.
l_rc = l_element_e_invoice->set_attribute( name = 'xmlns:ivis' value = l_value ).

* Create attribute 'pode' of node 'InvoiceImport'
l_value = 'http://ivis.eps.gov.lv/XMLSchemas/100018/InvoiceImport/v1-0'.
l_rc = l_element_e_invoice->set_attribute( name = 'xmlns' value = l_value ).

Проблема в конструкциях 'xmlns:xsi' 'xmlns:ivis' . Если убрать двоеточия, то файл без проблем генерируется, а с двоеточиями - нет :(
Может для таких целей другие методы существуют?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Чт, мар 22 2012, 14:55 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
Не сочли за наглость. Это была моя первая проблема, с которой я выходил на форум. Я ее так и не решил, но клиенту для выгрузки данные строки атрибутов адреса оказались не нужны. Узнайте тоже необходимость данного

viewtopic.php?f=13&t=51180


P.S. Решите сами, выложите пожалуйста

_________________
Ничто так не заразительно, как смех начальника...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузка информации в XML файл.
СообщениеДобавлено: Чт, мар 22 2012, 15:08 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, июл 26 2010, 13:25
Сообщения: 96
Ой-ой-ой как плохо.
Буду искать, если что найду то обязательно расскажу.
Дорогой LinevskiySV. Я смотрю вы уже с XMLами хоршо знакомы, позвольте вас ещё немного помучить.
Клиент требует дату выводить в формате YYYY-MM-DDTHH:MM:SS.
Я создаю её искусственно, но может есть стандартные методы?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

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


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

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


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

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