Текущее время: Пн, июл 14 2025, 20:11

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


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

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


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

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