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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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