Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 8581

read quite a xml in ABAP

$
0
0

Hello Guys, I have a problem, I want to create a sales order in SAP from XML, I can read de XML but  only header, no the positions. Please see:

I have this xml file:

 

-<PreFactura>
-<Comprobante subtotal="9067389.36" total="10518171.66" moneda="MXN">
-<Conceptos>
<Conceptocantidad="221.000" descripcion="9 A EJECUTIVO INTERNACIONAL" importe="7585860.36" unidad="TAG" valorUnitario="34325.16" />
<Conceptocantidad="50.000" descripcion="9 C SENIOR INNAL" importe="1455529.00" unidad="TAG" valorUnitario="29630.58" />

</Conceptos>

<ImpuestostotalImpuestosTrasladados="1457772.30" />

</Comprobante>

-<cfdi:Addenda xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
-<pm:Addenda_Pemex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pm="http://pemex.com/facturaelectronica/addenda/v2" xsi:schemaLocation="http://pem.com/facturaelectronica/addenda/v2https://pem.1reachcore.com/schemas/addenda-peme-v2.xsd">
<pm:CONTRATO>4202838000</pm:CONTRATO>
<pm:O_SURTIMIENTO>4303193735</pm:O_SURTIMIENTO>
<pm:N_ESTIMACION>GEP338_E02</pm:N_ESTIMACION>
<pm:N_ACREEDOR>0000302421</pm:N_ACREEDOR>
<pm:ENTRADA>1003038413</pm:ENTRADA>
<pm:EJERCICIO>2014</pm:EJERCICIO>
<pm:VUREGION>SMEX</pm:VUREGION>
<pm:FICHAE>333722</pm:FICHAE>
<pm:FICHAF>244781</pm:FICHAF>
<pm:MONEDA>MXN</pm:MONEDA>

</pm:Addenda_Pemex>

</cfdi:Addenda>

</PreFactura>

 

When I read this XML I can see the infotmation in an internal table like below:

Captura.PNG

As you can see I can get this information into the itab:

<pm:CONTRATO>4202838000</pm:CONTRATO>

<pm:O_SURTIMIENTO>4303193735</pm:O_SURTIMIENTO>

<pm:N_ESTIMACION>GEP338_E02</pm:N_ESTIMACION>

<pm:N_ACREEDOR>0000302421</pm:N_ACREEDOR>

<pm:ENTRADA>1003038413</pm:ENTRADA>

<pm:EJERCICIO>2014</pm:EJERCICIO>

<pm:VUREGION>SMEX</pm:VUREGION>

<pm:FICHAE>333722</pm:FICHAE>

<pm:FICHAF>244781</pm:FICHAF>

<pm:MONEDA>MXN</pm:MONEDA>

T

This is very god, but also I need information below:

-<Conceptos>

<Conceptocantidad="221.000" descripcion="9 A EJECUTIVO INTERNACIONAL" importe="7585860.36" unidad="TAG" valorUnitario="34325.16" />

<Conceptocantidad="50.000" descripcion="9 C SENIOR INNAL" importe="1455529.00" unidad="TAG" valorUnitario="29630.58" />

</Conceptos>

 

 

Does anyone can help me? Here me code:

 

FORM Procesa_XML.

*CONCATENATE'You did clic in run button:'  P_Solici INTO My_Var SEPARATED BY SPACE.

*WRITE My_Var.

CREATE OBJECT lcl_xml_doc.

CALL METHOD lcl_xml_doc->import_from_file

EXPORTING

       filename = p_filnam

     RECEIVING

       retcode  = v_subrc.

CHECK v_subrc = 0.

   v_node = lcl_xml_doc->m_document.

CHECK NOT v_node IS INITIAL.

   v_iterator = v_node->create_iterator( ).

   v_node = v_iterator->get_next( ).

WHILE NOT v_node IS INITIAL.

CASE v_node->get_type( ).

WHEN if_ixml_node=>co_node_element.

         v_name = v_node->get_name( ).

         v_nodemap = v_node->get_attributes( ).

IF NOT v_nodemap IS INITIAL.

* attributes

         v_count = v_nodemap->get_length( ).

DO v_count TIMES.

             v_index = sy-index - 1.

             v_attr = v_nodemap->get_item( v_index ).

             v_name = v_attr->get_name( ).

             v_prefix = v_attr->get_namespace_prefix( ).

             v_value = v_attr->get_value( ).

ENDDO.

ENDIF.

WHEN if_ixml_node=>co_node_text OR

       if_ixml_node=>co_node_cdata_section.

* text node

         v_value = v_node->get_value( ).

MOVE v_value TO v_char.

IF v_char <> cl_abap_char_utilities=>cr_lf.

           wa-name = v_name.

           wa-value = v_value.

APPEND wa TO itab.

CLEAR wa.

ENDIF.

ENDCASE.

* advance to next node

     v_node = v_iterator->get_next( ).

ENDWHILE.

LOOP AT itab INTO wa.

IF wa-name eq 'MONEDA'.

   Moneda = wa-value.

ENDIF.

ENDLOOP.

BREAK-POINT.

ENDFORM.

Regards


Viewing all articles
Browse latest Browse all 8581

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>