Текущее время: Пт, май 09 2025, 14:08

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Простые преобразования ABAP -> XML, обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 10:42 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
Добрый день/вечер! Народ, очень прошу помощи у вас. Есть вопрос по трансформациям(преобразованиям).

Делаю трансформацию из абапа в XML- все отлично. Т.е., простое преобразование:

CALL TRANSFORMATION ZPI_TR_ARCHIVE_TO_XML
SOURCE object = object
RESULT XML result.

Мне возвращается строка с тегами. Но вот беда: если я передаю object пустым (а у меня большая вложенность XML-документа, в частности, ТАБЛИЦЫ), и если они не инициализируются, то в строке возврата их нет, а мне нужна вся структура - полная <вместе с кучей пустых таблиц).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 12:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Не совсем понятно, что вы ожидаете от читателей форума. У вас выполняется какое-то ваше преобразование. По вашему мнению, оно отрабатывает не правильно. Надо полагать, что вам следует реализовать в вашей трансформации часть кода, которая будет обрабатывать вариант, что входной параметр пришел пустой.
Или же, если вы хотите получить помощь на этом ресурсе, - более детально описать проблему.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 12:07 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
Хорошо, я попробую. Когда я набираю команду

Code:
CALL TRANSFORMATION ZPI_TR_ARCHIVE_TO_XML
SOURCE object = object
RESULT XML result.


В object у меня структура, состоящая из различных вложенных полей, которые, в свою очередь, имеют тип структуры и тип -тип таблиц (это я просто, чтобы вы представляли, что я передаю).
Так вот, некоторые из них могут быть пустыми, и в этом случае в result не будет тегов с названиями этих полей, а мне необходимо, чтобы была вся структура тегов - независимо от того, пустые ли поля или нет. Теперь понятнее? Если все равно не поняли, скажите, я попытаюсь развернуть еще больше вопрос. Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 12:09 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
Кодер написал(а):
Не совсем понятно, что вы ожидаете от читателей форума. У вас выполняется какое-то ваше преобразование. По вашему мнению, оно отрабатывает не правильно. Надо полагать, что вам следует реализовать в вашей трансформации часть кода, которая будет обрабатывать вариант, что входной параметр пришел пустой.
Или же, если вы хотите получить помощь на этом ресурсе, - более детально описать проблему.



По поводу реализовать часть кода-если " входной параметр пришел пустой." там огромная вложенность у меня получается-возможно есть стандартное решение? И где реализовать такой вариант вы предлагаете мне-в абапе или в xml?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 12:58 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Цитата:
По поводу реализовать часть кода-если " входной параметр пришел пустой." там огромная вложенность у меня получается-возможно есть стандартное решение?

Стандартное решение для чего? для вашего формата выходной XML-ки? sarcasm mode on Откуда про него известно сапу? sarcasm mode off
Цитата:
И где реализовать такой вариант вы предлагаете мне-в абапе или в xml?

Дело - хозяйское, т.е. - ваше
В ABAP есть приведение данных к простому представлению в XML. Оно выполняется с помощью стандартной трансформации ID.Т.е.
Code:
CALL TRANSFORMATION ID
     SOURCE OBJECT_REF = object
     RESULT XML result.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 13:01 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
И ответили-и не ответили..вы понимаете вообще мой вопрос? я передаю структу с полями вложенных таблиц. Мне на выходе нужно получить всю структуру тегов-даже если они пустые-а не пропускать это как сейчас происходит при transformation. Если значение пустое-то и тег просто пустой должен быть-вот в чем в опрос-как мне это реализовать??


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 13:07 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
В ABAP есть приведение данных к простому представлению в XML. Оно выполняется с помощью стандартной трансформации ID.Т.е.
Code:
CALL TRANSFORMATION ID
     SOURCE OBJECT_REF = object
     RESULT XML result.
[/quote]

Точно также пустые теги не отображаются


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 13:26 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
Просто есть,конечно,вариант проверять этот 10 вложенных структур в абае на то инциализированы они или нет и если нет-то добавлять пустые строки во внутренние вложенные таблицы,Но тогда все равно получается не оч красиво с целыми числами,например

Code:
IF CLIENTS-ACCOUNTS IS INITIAL.
APPEND ACCOUNTS to CLIENTS-ACCOUNTS.
ENDIF.
APPEND CLIENTS TO object-CLIENTS.
IF object-CLIENTS IS INITIAL.
  APPEND CLIENTS to object-CLIENTS.
ENDIF.

<?xml version="1.0" encoding="utf-8" ?>
- <OBJECT>
- <BASE_INFO>
  <BIC />
  <DATE_FROM>0000-00-00</DATE_FROM>
  <DATE_TO>0000-00-00</DATE_TO>
  <BASE_DESC />
  <COUNT>0</COUNT>
  </BASE_INFO>
- <CLIENTS>
- <ZSDM_A_CLIENTS>
  <ID />
  <NAME />
  <UNP />
  <COUNTRY />
  <REGISTRATION_DATE>0000-00-00</REGISTRATION_DATE>
  <RESIDENT_TYPE />
  <PROPERTY_TYPE>0</PROPERTY_TYPE>
  <ACTIVITY_TYPE />
  <OPEN_DATE>0000-00-00</OPEN_DATE>
  <CLOSE_DATE>0000-00-00</CLOSE_DATE>
  <ACCOUNTS_COUNT>0</ACCOUNTS_COUNT>
- <ACCOUNTS>
- <ZSDM_A_ACCOUNTS>
  <ID />
  <CONTRACT_INT />
  <ACCOUNT_NUMBER />
  <ACCOUNT_NAME />
  <CURRENCY />
  <OPEN_DATE>0000-00-00</OPEN_DATE>
  <CLOSE_DATE>0000-00-00</CLOSE_DATE>
  <LAST_OPER_DATE>0000-00-00</LAST_OPER_DATE>
  <BALANCE_IN>0.0</BALANCE_IN>
  <BALANCE_OUT>0.0</BALANCE_OUT>
  <CBU>000</CBU>
  <OPERATION_COUNT>0</OPERATION_COUNT>
  <OPERATIONS />
  </ZSDM_A_ACCOUNTS>
  </ACCOUNTS>
  </ZSDM_A_CLIENTS>
  </CLIENTS>
  <ACCOUNTS />
  </OBJECT>


я имею под "некрасиво" - нули..а хочу-чтобы просто пусто было..понимаете меня теперь?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 13:32 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
хотя потом можно заменить эти нули в абапе в reulte,но это все какое-то, мне кажется, не очень правильное решение-мне нужно всего лишь,чтобы выодило все теги - и заполненные,и не заполненные..

и еще один вопрос у меня..возвращается все в в иде либо string,либо xstring-моя же конечная задача это все положить в файл в виде только не одной строчкой а вида xml документа,То бишь в таком горизонтальном-котором я его вижу в html-формате. Как мне это лучше всего сделать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 14:15 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Цитата:
Точно также пустые теги не отображаются

Прочитайте хелп на call transformation
Цитата:
The transformation option initial_components controls the output of initial structure components when transforming from ABAP to XML or JSON.
Possible Values: include
Meaning: Initial components of structures are output.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 14:24 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
Это не работает( (initial_components) думаете-я не начал с хелпа,а сразу полез на форум? Я уже второй день пытаюсь побороться с этим(( Притом я где-то на каком-то форуме уже встречал обсуждение о том,что не срабатывает эта конструкция(((


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 14:28 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
Кодер написал(а):
Цитата:
Точно также пустые теги не отображаются

Прочитайте хелп на call transformation
Цитата:
The transformation option initial_components controls the output of initial structure components when transforming from ABAP to XML or JSON.
Possible Values: include
Meaning: Initial components of structures are output.



call transformation zpi_tr_archive_to_xml
source object = object
options initial_components = 'include'
result xml result.

Это одно из самых первых<что я попытался сделать-впрочим я все <я не знать русский языка>,что есть в хелпе за исключением


call transformation zpi_tr_archive_to_xml
source object = object
options clear =..
result xml result.

у меня версия базиса старя-нету у меня такого(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 17:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Вот такой код
Code:
TYPES
  : BEGIN OF tnested
    , numc     type n LENGTH 3
    , t_carrid  TYPE STANDARD TABLE OF scarr-carrid
                  WITH NON-UNIQUE DEFAULT KEY
  , END OF tnested

  , BEGIN OF ttype
    , date   type sy-datum
    , t_nested TYPE STANDARD TABLE OF tnested
                WITH NON-UNIQUE DEFAULT KEY
  , END OF ttype
  .

DATA
  : go_xml  TYPE REF TO cl_xml_document
  , gxml_xstr TYPE xstring
  , gvar TYPE ttype
  .

START-OF-SELECTION.

  CREATE OBJECT go_xml.

  CALL TRANSFORMATION id
    SOURCE data = gvar
    OPTIONS initial_components = 'include'
    RESULT XML gxml_xstr.

  go_xml->parse_xstring( gxml_xstr ).

  go_xml->display( ).

сгенерил мне вот такой xml
Code:
<?xml version="1.0" encoding="UTF-8"?>

-<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">


-<asx:values>


-<DATA>

<DATE>0000-00-00</DATE>

<T_NESTED/>

</DATA>

</asx:values>

</asx:abap>


Как видите - пустые элементы показываются. Но только первого уровня.
Т.е. если надо что-то более сложное - реализуете сами. Хоть через трансформацию, хоть через абап, хоть через абап классами iXML

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Сб, окт 24 2015, 17:51 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 23 2015, 14:48
Сообщения: 93
Кодер написал(а):
Вот такой код
Code:
TYPES
  : BEGIN OF tnested
    , numc     type n LENGTH 3
    , t_carrid  TYPE STANDARD TABLE OF scarr-carrid
                  WITH NON-UNIQUE DEFAULT KEY
  , END OF tnested

  , BEGIN OF ttype
    , date   type sy-datum
    , t_nested TYPE STANDARD TABLE OF tnested
                WITH NON-UNIQUE DEFAULT KEY
  , END OF ttype
  .

DATA
  : go_xml  TYPE REF TO cl_xml_document
  , gxml_xstr TYPE xstring
  , gvar TYPE ttype
  .

START-OF-SELECTION.

  CREATE OBJECT go_xml.

  CALL TRANSFORMATION id
    SOURCE data = gvar
    OPTIONS initial_components = 'include'
    RESULT XML gxml_xstr.

  go_xml->parse_xstring( gxml_xstr ).

  go_xml->display( ).

сгенерил мне вот такой xml
Code:
<?xml version="1.0" encoding="UTF-8"?>

-<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">


-<asx:values>


-<DATA>

<DATE>0000-00-00</DATE>

<T_NESTED/>

</DATA>

</asx:values>

</asx:abap>


Как видите - пустые элементы показываются. Но только первого уровня.
Т.е. если надо что-то более сложное - реализуете сами. Хоть через трансформацию, хоть через абап, хоть через абап классами iXML



Оно и без этой опции реализуется-т.к. это реализуется структура первого уровня-внутренняя таблица первого уровня не реализуется уже-а второго итп уровня тем более не реализуется ничего..да,мне надо и второго итп уровня.. По поводу "сами" это я уже понял-потому,что совета так и не получил-все выше сказанное вами я итак перепробовал уже и нового вы к сожаления ничего не сказали,а вопрос и был возможно ли как-то через трансформацию это реализовать..с уважением..


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Простые преобразования,Обработка пустых тегов
СообщениеДобавлено: Пн, окт 26 2015, 04:32 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
Странная какая-то постановка. Если бы для пустой таблицы в результирующем XML выводились бы какие-нибудь пустые поля это обозначало бы что эта таблица содержит одну строку данных где все поля пустые. Соответственно чтобы различать эти ситуации и используется тот способ сериализации который вы видите.

Это когда в T_NESTED добавлена пустая строка:
Code:
<T_NESTED>
  <ROW>
  <NUMC>000</NUMC>
  <T_CARRID/>
  </ROW>
</T_NESTED>


Это когда в T_NESTED добавлено две пустых строки:
Code:
<T_NESTED>
  <ROW>
  <NUMC>000</NUMC>
  <T_CARRID/>
  </ROW>
  <ROW>
  <NUMC>000</NUMC>
  <T_CARRID/>
  </ROW>
</T_NESTED>

При этом таблица T_CARRID - пустая. Если бы в ней были пустые строки, то и там появились бы данные.

Если уж вы действительно хотите добиться такого поведения - не надо мучить трансформации, с ними ничего не выйдет. Если у вас сложная структура, и лень писать код который бы везде сделал append initial line to, то напишите рекурсивный обход вашей структуры через RTTI чтоб он во все пустые таблицы обощенно подабавлял строк.


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

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


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

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


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

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