Текущее время: Вт, июл 15 2025, 04:37

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: XSLT и "ref to data"
СообщениеДобавлено: Вт, окт 22 2019, 19:59 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 09 2014, 16:00
Сообщения: 16
Нашел в xslt следующий особенность: если структуру передать через ref data в xslt преобразование, то xslt не видит эту структуру. Есть вариант это победить?

Код программы с примером:
Code:
"-------- с ref ------------------------------
TYPES: BEGIN OF lty_s_param,
         test TYPE string,
       END OF   lty_s_param.

TYPES: BEGIN OF lty_s_query,
         r_param TYPE REF TO data,
       END OF   lty_s_query.

DATA:  lt_xslt_source TYPE abap_trans_srcbind_tab,
       ls_xslt_source TYPE abap_trans_srcbind,
       ls_data        TYPE lty_s_query,
       ls_param       TYPE lty_s_param,
       lv_xml         TYPE string.

ls_param-test = 'TEST1'.
GET REFERENCE OF ls_param INTO ls_data-r_param.

ls_xslt_source-name  = 'ROOT'.
GET REFERENCE OF ls_data INTO ls_xslt_source-value.
APPEND ls_xslt_source TO lt_xslt_source.

CALL TRANSFORMATION ztest4 SOURCE (lt_xslt_source)
                           RESULT XML lv_xml.

WRITE lv_xml.

Преобразование
Code:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" exclude-result-prefixes="asx sap" version="1.0">

  <xsl:output encoding="utf-8" indent="no" method="xml" omit-xml-declaration="yes"/>

  <xsl:strip-space elements="*"/>

  <xsl:template match="ROOT">

    <str name="id">
      <xsl:value-of select="R_PARAM/TEST"/>
    </str>

  </xsl:template>

</xsl:transform>


Ответ сейчас:
Code:
<str name="id"></str>


Хочу такой ответ:
Code:
<str name="id">TEST</str>


Вот так работает, но хочу через ref to data:

Code:
"-------- без ref ------------------------------

TYPES: BEGIN OF lty_s_param,
         test TYPE string,
       END OF   lty_s_param.

TYPES: BEGIN OF lty_s_query,
         r_param TYPE lty_s_param,
       END OF   lty_s_query.

DATA:  lt_xslt_source TYPE abap_trans_srcbind_tab,
       ls_xslt_source TYPE abap_trans_srcbind,
       ls_data        TYPE lty_s_query,
       ls_param       TYPE lty_s_param,
       lv_xml         TYPE string.


ls_data-r_param-test = 'TEST2'.

ls_xslt_source-name  = 'ROOT'.
GET REFERENCE OF ls_data INTO ls_xslt_source-value.
APPEND ls_xslt_source TO lt_xslt_source.
"-------- без ref ------------------------------

CALL TRANSFORMATION ztest4 SOURCE (lt_xslt_source)
                           RESULT XML lv_xml.


WRITE lv_xml.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XSLT и "ref to data"
СообщениеДобавлено: Ср, окт 23 2019, 01:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Если преобразование фиксированное, то зачем такие изыски? :?
На самом деле
Code:
ls_param-test = 'TEST1'.
GET REFERENCE OF ls_param INTO ls_data-r_param.
GET REFERENCE OF ls_data INTO ls_xslt_source-value.

не равно
Code:
ls_data-r_param-test = 'TEST2'.
GET REFERENCE OF ls_data INTO ls_xslt_source-value.

:o

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XSLT и "ref to data"
СообщениеДобавлено: Ср, окт 23 2019, 13:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Посмотрите вот это, возможно, подойдет.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: XSLT и "ref to data"
СообщениеДобавлено: Ср, окт 23 2019, 18:13 
Начинающий
Начинающий

Зарегистрирован:
Чт, окт 09 2014, 16:00
Сообщения: 16
Удав написал(а):
Если преобразование фиксированное, то зачем такие изыски? :?
На самом деле
Code:
ls_param-test = 'TEST1'.
GET REFERENCE OF ls_param INTO ls_data-r_param.
GET REFERENCE OF ls_data INTO ls_xslt_source-value.

не равно
Code:
ls_data-r_param-test = 'TEST2'.
GET REFERENCE OF ls_data INTO ls_xslt_source-value.

:o


оно не фиксированное. я просто упростил пример, чтоб было понятно. на самом деле архитектура следующая: есть главное преобразование в котором берутся фиксированные атрибуты из переданной структуры, также в этом преобразовании есть вызов других преобразований, которые вызываются в зависимости от параметра. Вот в них я и хотел передавать каждому свою структуру через type ref data.


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

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


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

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


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

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