Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

xml to internal table using XSLT

Former Member
0 Likes
428

hello all,

With the help of Mr. raja I have done with the code but still i have some problem. could any one help me(raja you too).

XLST program code (YSIMPLEXMLTOITAB)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

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

<xsl:output indent="yes"/>

<xsl:template match="QfiData">

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

<asx:values>

<I_DATA>

<xsl:for-each select="Materials">

<I_DATA1>

<MATERIAL>

<xsl:value-of select="Material"/>

</MATERIAL>

<CONDITIONRATE>

<xsl:value-of select="ConditionRate"/>

</CONDITIONRATE>

<VALIDFROM>

<xsl:value-of select="ValidFrom"/>

</VALIDFROM>

<VALIDTO>

<xsl:value-of select="ValidTo"/>

</VALIDTO>

<REGIONID>

<xsl:value-of select="RegionID"/>

</REGIONID>

<MATERIALID>

<xsl:value-of select="MaterialID"/>

</MATERIALID>

</I_DATA1>

</xsl:for-each>

</I_DATA>

</asx:values>

</asx:abap>

</xsl:template>

</xsl:stylesheet>

Program to test it.

REPORT y_test_xml_tran.

TYPES: BEGIN OF i_det,

Material(10),

ConditionRate(16) type p decimals 2 ,

ValidFrom(10) ,

ValidTo(10) ,

RegionID(3) ,

MaterialID(10) ,

end of i_det .

DATA: i_data TYPE TABLE OF i_det.

data: wa like line of i_data .

DATA: xml_string TYPE string .

DATA: xslt_error TYPE REF TO cx_xslt_exception,

xslt_message TYPE string .

CLEAR xml_string .

CONCATENATE

`<?xml version="1.0" encoding="utf-8"?>`

`<QfiData xmlns:xsl="http://www2.siemens.nl/qfiservice/QfiData.xsd">`

`<Materials>`

`<Material>463581</Material>`

`<ConditionRate> 2.44</ConditionRate>`

`<ValidFrom>20060208</ValidFrom>`

`<ValidTo>99991231</ValidTo>`

`<RegionID>48</RegionID>`

`<MaterialID>36294</MaterialID>`

`</Materials>`

`<Materials>`

`<Material>463582</Material>`

`<ConditionRate> 2.44</ConditionRate>`

`<ValidFrom>20060208</ValidFrom>`

`<ValidTo>99991231</ValidTo>`

`<RegionID>48</RegionID>`

`<MaterialID>36295</MaterialID>`

`</Materials>`

`</QfiData>`

INTO xml_string .

TRY .

CALL TRANSFORMATION (`YSIMPLEXMLTOITAB`)

SOURCE XML xml_string

RESULT i_data = i_data.

CATCH cx_xslt_exception INTO xslt_error.

xslt_message = xslt_error->get_text( ).

ENDTRY.

the error i am getting is:

Error message : ABAP XML formatting error in XML node of type "element", name: "abap"

hello all,

With the help of Mr. raja I have done with the code but still i have some problem. could any one help me(raja you too).

XLST program code (YSIMPLEXMLTOITAB)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

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

<xsl:output indent="yes"/>

<xsl:template match="QfiData">

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

<asx:values>

<I_DATA>

<xsl:for-each select="Materials">

<I_DATA1>

<MATERIAL>

<xsl:value-of select="Material"/>

</MATERIAL>

<CONDITIONRATE>

<xsl:value-of select="ConditionRate"/>

</CONDITIONRATE>

<VALIDFROM>

<xsl:value-of select="ValidFrom"/>

</VALIDFROM>

<VALIDTO>

<xsl:value-of select="ValidTo"/>

</VALIDTO>

<REGIONID>

<xsl:value-of select="RegionID"/>

</REGIONID>

<MATERIALID>

<xsl:value-of select="MaterialID"/>

</MATERIALID>

</I_DATA1>

</xsl:for-each>

</I_DATA>

</asx:values>

</asx:abap>

</xsl:template>

</xsl:stylesheet>

Program to test it.

REPORT y_test_xml_tran.

TYPES: BEGIN OF i_det,

Material(10),

ConditionRate(16) type p decimals 2 ,

ValidFrom(10) ,

ValidTo(10) ,

RegionID(3) ,

MaterialID(10) ,

end of i_det .

DATA: i_data TYPE TABLE OF i_det.

data: wa like line of i_data .

DATA: xml_string TYPE string .

DATA: xslt_error TYPE REF TO cx_xslt_exception,

xslt_message TYPE string .

CLEAR xml_string .

CONCATENATE

`<?xml version="1.0" encoding="utf-8"?>`

`<QfiData xmlns:xsl="http://www2.siemens.nl/qfiservice/QfiData.xsd">`

`<Materials>`

`<Material>463581</Material>`

`<ConditionRate> 2.44</ConditionRate>`

`<ValidFrom>20060208</ValidFrom>`

`<ValidTo>99991231</ValidTo>`

`<RegionID>48</RegionID>`

`<MaterialID>36294</MaterialID>`

`</Materials>`

`<Materials>`

`<Material>463582</Material>`

`<ConditionRate> 2.44</ConditionRate>`

`<ValidFrom>20060208</ValidFrom>`

`<ValidTo>99991231</ValidTo>`

`<RegionID>48</RegionID>`

`<MaterialID>36295</MaterialID>`

`</Materials>`

`</QfiData>`

INTO xml_string .

TRY .

CALL TRANSFORMATION (`YSIMPLEXMLTOITAB`)

SOURCE XML xml_string

RESULT i_data = i_data.

CATCH cx_xslt_exception INTO xslt_error.

xslt_message = xslt_error->get_text( ).

ENDTRY.

the error i am getting is:

Error message : ABAP XML formatting error in XML node of type "element", name: "abap"

2 REPLIES 2
Read only

Former Member
0 Likes
402

solved, some minor error.

Read only

0 Likes
402

Can you tell how did you solve ?