Skip to Content
0
Former Member
Jan 20, 2009 at 11:55 AM

Simple Transformation XML to ABAP - error CX_ST_MATCH_ELEMENT

2969 Views

Hi all,

I have a problem with a transformation from xml to abap. My XML file (taken from a pdf file) is

 <?xml version="1.0" encoding="iso-8859-1" ?> 
- <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
- <asx:values>
  <NETWORK>E60000000000</NETWORK> 
  <OPERAZIONE>0010</OPERAZIONE> 
- <TABELLA>
- <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">
  <MANDT>300</MANDT> 
  <NETWORK>E60000000000</NETWORK> 
  <OPERAZIONE>0010</OPERAZIONE> 
  <ID_ACT>1</ID_ACT> 
  <DESC_ACT>ATTIVITÀ1</DESC_ACT> 
  <LONG_TXT></LONG_TXT> 
  <MAKE_BUY></MAKE_BUY> 
  <WP></WP> 
  <EVENTO_TECH></EVENTO_TECH> 
  <TIPO_LEGAME></TIPO_LEGAME> 
  <CONSEGNA></CONSEGNA> 
  </ROW>
- <ROW xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup">
  <MANDT>300</MANDT> 
  <NETWORK>E60000000000</NETWORK> 
  <OPERAZIONE>0010</OPERAZIONE> 
  <ID_ACT>2</ID_ACT> 
  <DESC_ACT>ATTIVITÀ2</DESC_ACT> 
  <LONG_TXT>ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2 ATTIVITÀ2</LONG_TXT> 
  <MAKE_BUY>M</MAKE_BUY> 
  <WP></WP> 
  <EVENTO_TECH></EVENTO_TECH> 
  <TIPO_LEGAME></TIPO_LEGAME> 
  <CONSEGNA></CONSEGNA> 
  </ROW>
  </TABELLA>
  </asx:values>
  </asx:abap>

my transformation is

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

  <tt:root name="ROOT"></tt:root>
  <tt:root name="NETWORK"></tt:root>
  <tt:root name="OPERAZIONE"></tt:root>
  <tt:template>
  <abap>
    <values>
       <network>
           <tt:value ref="NETWORK"></tt:value>
       </network>
       <operazione>
           <tt:value ref="OPERAZIONE"></tt:value>
       </operazione>
       <tabella>
          <tt:loop ref=".ROOT" name="line">
            <mandt>
              <tt:value ref="$line.mandt"></tt:value>
            </mandt>
            <network>
              <tt:value ref="$line.network"></tt:value>
            </network>
            <OPERAZIONE>
              <tt:value ref="$line.OPERAZIONE"></tt:value>
            </OPERAZIONE>
            <ID_ACT>
              <tt:value ref="$line.ID_ACT"></tt:value>
            </ID_ACT>
            <DESC_ACT>
              <tt:value ref="$line.DESC_ACT"></tt:value>
            </DESC_ACT>
            <LONG_TXT>
              <tt:value ref="$line.LONG_TXT"></tt:value>
            </LONG_TXT>
            <MAKE_BUY>
              <tt:value ref="$line.MAKE_BUY"></tt:value>
            </MAKE_BUY>
            <WP>
              <tt:value ref="$line.WP"></tt:value>
            </WP>
            <EVENTO_TECH>
              <tt:value ref="$line.EVENTO_TECH"></tt:value>
            </EVENTO_TECH>
            <TIPO_LEGAME>
              <tt:value ref="$line.TIPO_LEGAME"></tt:value>
            </TIPO_LEGAME>
            <CONSEGNA>
              <tt:value ref="$line.CONSEGNA"></tt:value>
            </CONSEGNA>
         </tt:loop>
        </tabella>
      </values>
    </abap>
  </tt:template>
</tt:transform>

when I execute my code


the system dump with this error

ST_MATCH_FAIL

excep. CX_ST_MATCH_ELEMENT

TRY.

CALL TRANSFORMATION ('ZT_NETWORK')

SOURCE XML lv_xml_data_string

RESULT network = l_network

operazione = l_operazione

root = it_data_tmp.

CATCH cx_sy_conversion_data_loss .

CATCH cx_xslt_exception INTO xslt_error.

xslt_message = xslt_error->get_text( ).

WRITE:/ xslt_message .

ENDTRY.

Any help?

thanks

enzo