SAPфорум.RU
https://www.sapboard.ru/forum/

Трансформация из XML во внутреннюю таблицу
https://www.sapboard.ru/forum/viewtopic.php?f=13&t=97440
Страница 1 из 1

Автор:  Copperhead [ Вт, мар 12 2019, 10:57 ]
Заголовок сообщения:  Трансформация из XML во внутреннюю таблицу

Коллеги, и снова здравствуйте. Очень мало работал с трансформациями и наткнулся на проблему. Есть XML с двойной вложенностью тегов. Я написал трансформацию. Вот она:

Code:
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">

  <tt:root name="DOCUMENTS"/>

  <tt:template>
    <Transmission>
      <tt:loop name="line" ref=".DOCUMENTS">
        <TransmissionHeader>
          <OrderCategory><tt:value ref="$ref.ORDERCATEGORY"/></OrderCategory>
          <DATE><tt:value ref="$ref.DATE"/></DATE>
          <TIME><tt:value ref="$ref.TIME"/></TIME>
          <FileName> <tt:value ref="$ref.FILENAME"/> </FileName>
          <tt:loop name="orders" ref="$line.ORDERS">
            <SalesOrderHeader>
            <BSTKD> <tt:value ref="$ref.BSTKD"/> </BSTKD>
            <AUART> <tt:value ref="$ref.AUART"/> </AUART>
            <KUNNR> <tt:value ref="$ref.KUNNR"/> </KUNNR>
            <VKORG> <tt:value ref="$ref.VKORG"/> </VKORG>
            <VTWEG> <tt:value ref="$ref.VTWEG"/> </VTWEG>
            <SPART> <tt:value ref="$ref.SPART"/> </SPART>
              <tt:loop name="items" ref="orders.ITEMS">
                <LineItem>
                <LineItemNumber><tt:value ref="$ref.POSNR"/></LineItemNumber>
                <MATNR><tt:value ref="$ref.MATNR"/></MATNR>
                <KWMENG><tt:value ref="$ref.KWMENG"/></KWMENG>
                <NETPR><tt:value ref="$ref.NETPR"/></NETPR>
                <WERKS><tt:value ref="$ref.WERKS"/></WERKS>
                <LGORT><tt:value ref="$ref.LGORT"/></LGORT>         константа
                </LineItem>
              </tt:loop>
            </SalesOrderHeader>
          </tt:loop>
        </TransmissionHeader>
      </tt:loop>
    </Transmission>
  </tt:template>

</tt:transform>


Проблема в том, что не считываются позиции заказа. Пишет ошибку:

Цитата:
Ошибка доступа к ссылочному узлу 'ORDERS.ITEMS'. Ссылочный узел не определен или не имеет необходимого типа.


При этом в структуре ORDERS есть поле ITEMS, которое является табличным типом, с полями, аналогичными указанным в трансформации. И у меня ОЧЕНЬ БОЛЬШИЕ подозрения, что я трансформацию неправильно написал. Можете подсказать как считать вложенную таблицу из вложенной таблицы?

Автор:  Удав [ Ср, мар 13 2019, 00:45 ]
Заголовок сообщения:  Re: Трансформация из XML во внутреннюю таблицу

Как у вас объявлен целевой тип данных?

Автор:  Copperhead [ Ср, мар 13 2019, 08:22 ]
Заголовок сообщения:  Re: Трансформация из XML во внутреннюю таблицу

Через табличные типы словаря. Единственное, я вот думаю может не надо указывать элементы данных типа WERKS_D И прочие и сделать все поля через CHAR а потом преобразовывать?

Я тут что ещё заметил:

Во первых заменил строку <tt:loop name="items" ref="orders.ITEMS"> на <tt:loop name="items" ref="$ref.ITEMS"> теперь ошибка другая. Пишет, что ожидается завершение элемента LineItem. Файл проверил. Сейчас ещё раз посмотрю.

Автор:  Copperhead [ Ср, мар 13 2019, 08:46 ]
Заголовок сообщения:  Re: Трансформация из XML во внутреннюю таблицу

Всё, вопрос закрыт. Во первых <tt:loop name="items" ref="orders.ITEMS"> - тут перед orders не зватало значка $. Во вторых - слово "константа" перекочевало из ТЗ. В третьих была таки ошибка в файле, которую замыленным глазом не сразу заметил - наши WEB разработчики слегка накосячили.

Всем спасибо.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/