Добрый день!
Может кто подскажет:
Есть xml файл в котором хранятся пришедшие заказы и их позиции. Хочу распарсить этот xml файл и получить на выходе
заголовки и позиции пришедших заказов. Но почему-то при применении моей xslt-трансформации заполняются только таблица заголовков заказа, а вложенная таблица позиций не заполняется(lt_table01-lines).
Пример входящего xml файла:
Code:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Order>
<DOC_NUMBER>1</DOC_NUMBER>
<DATE>2019-02-25</DATE>
<Lines>
<Line>
<CODE>22</CODE>
</Line>
<Line>
<CODE>23</CODE>
</Line>
</Lines>
</Order>
<DOC_NUMBER>2</DOC_NUMBER>
<DATE>2019-02-25</DATE>
<Lines>
<Line>
<CODE>24</CODE>
</Line>
</Lines>
<Order>
</Order>
</Root>
xslt трансформация:
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" version="1.0">
<xsl:strip-space elements="*"/>
<xsl:output indent="yes"/>
<xsl:template match="Root">
<asx:abap version="1.0">
<asx:values>
<TABLE01>
<xsl:for-each select="Order">
<Line-Item>
<DOC_NUMBER>
<xsl:value-of select="DOC_NUMBER"/>
</DOC_NUMBER>
<DATE>
<xsl:value-of select="DATE"/>
</DATE>
<Lines>
<xsl:for-each select="Lines/Line">
<Line-Item>
<CODE>
<xsl:value-of select="CODE"/>
</CODE>
</Line-Item>
</xsl:for-each>
</Lines>
</Line-Item>
</xsl:for-each>
</TABLE01>
</asx:values>
</asx:abap>
</xsl:template>
</xsl:transform>
Программа abap:
Code:
TYPES : BEGIN OF ts_table02,
code TYPE string,
END OF ts_table02.
DATA: BEGIN OF ls_table01,
doc_number TYPE string,
date TYPE string,
lines TYPE TABLE OF ts_table02,
END OF ls_table01.
DATA lt_table01 LIKE TABLE OF ls_table01.
DATA lt_table02 TYPE TABLE OF ts_table02.
i_xslt = 'ZORDER'.
TRY.
""Десериализация с помощью xslt трансформации
CALL TRANSFORMATION (i_xslt)
SOURCE XML lv_xml_content
RESULT
table01 = lt_table01.
И на выходе вложенная таблица позиций не заполнена(lt_table01-lines).