Application Development 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: 

XML to internal data transfer

Former Member
0 Kudos

Hi all,

I am trying to data transfer XML file to abap internal table.

How to take internal table contants. please help me.

Below XML file............

............................................................................................

<?xml version="1.0" encoding="UTF-8" ?>

<?Siebel-Property-Set EscapeNames="false"?>

- <SiebelMessage MessageId="1-1HNFO" IntObjectName="SAP 4x Order - Create SAP Order (BAPI Input)" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical">

- <ListOfBapi_Salesorder_Createfromdat1_Sgarg>

- <ImportParameters>

<CONVERT_PARVW_AUART>X</CONVERT_PARVW_AUART>

<ORDER_HEADER_IN-DOC_TYPE>ZVOR</ORDER_HEADER_IN-DOC_TYPE>

<ORDER_HEADER_IN-SALES_ORG>PSPR</ORDER_HEADER_IN-SALES_ORG>

<ORDER_HEADER_IN-DISTR_CHAN>DL</ORDER_HEADER_IN-DISTR_CHAN>

<ORDER_HEADER_IN-DIVISION>01</ORDER_HEADER_IN-DIVISION>

<ORDER_HEADER_IN-SALES_GRP />

<ORDER_HEADER_IN-SALES_OFF>PUNE</ORDER_HEADER_IN-SALES_OFF>

<ORDER_HEADER_IN-PURCH_NO>IK020809PPO00310</ORDER_HEADER_IN-PURCH_NO>

<ORDER_HEADER_IN-PURCH_DATE>08/19/2008 10:55:57</ORDER_HEADER_IN-PURCH_DATE>

<ORDER_HEADER_IN-SHIP_COND>12</ORDER_HEADER_IN-SHIP_COND>

<WITHOUT_COMMIT />

- <ListOfORDER_ITEMS_IN>

- <ORDER_ITEMS_IN>

<PO_ITM_NO>1</PO_ITM_NO>

<MATERIAL>A21176635069999</MATERIAL>

<REQ_QTY>2</REQ_QTY>

<ALTERN_BOM>1-1C1QW7</ALTERN_BOM>

</ORDER_ITEMS_IN>

- <ORDER_ITEMS_IN>

<PO_ITM_NO>2</PO_ITM_NO>

<MATERIAL>A2037665006</MATERIAL>

<REQ_QTY>2</REQ_QTY>

<ALTERN_BOM>1-1C1QW7</ALTERN_BOM>

</ORDER_ITEMS_IN>

</ListOfORDER_ITEMS_IN>

- <ListOfORDER_PARTNERS>

- <ORDER_PARTNERS>

<PARTN_ROLE>SP</PARTN_ROLE>

<PARTN_NUMB>0000002649</PARTN_NUMB>

</ORDER_PARTNERS>

- <ORDER_PARTNERS>

<PARTN_ROLE>SH</PARTN_ROLE>

<PARTN_NUMB>0000002649</PARTN_NUMB>

</ORDER_PARTNERS>

</ListOfORDER_PARTNERS>

</ImportParameters>

</ListOfBapi_Salesorder_Createfromdat1_Sgarg>

</SiebelMessage>

Thanks

SReddy.

2 REPLIES 2

karol_seman
Active Participant
0 Kudos

Hi,

1. read the xml file into a string

2. convert the string to xstring using SCMS_STRING_TO_XSTRING

3. now use FM SMUM_XML_PARSE and pass the xstring xml_input parameter of that function.

this will parse the whole xml and give you an itab of element name value pairs which you can read easily.

Regards,

Karol

uwe_schieferstein
Active Contributor
0 Kudos

Hello Reddy

The fm's proposed by Karol are straightforward to use (see sample report ZUS_SDN_XML_TO_ABAP_1 ).

There may be other approaches to parse the XML yet for your purpose it seems to be quite useful.


*&---------------------------------------------------------------------*
*& Report  ZUS_SDN_XML_TO_ABAP_1
*&
*&---------------------------------------------------------------------*
*& Thread: XML to internal data transfer
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1055170"></a>
*&---------------------------------------------------------------------*

REPORT  zus_sdn_xml_to_abap_1.

TYPE-POOLS: abap.

DATA: go_xml_doc      TYPE REF TO cl_xml_document,
      gd_rc           TYPE i.

DATA: gt_xmldata      TYPE TABLE OF string,
      gd_xmldata      TYPE string,
      gd_xstring      TYPE xstring.

DATA: gt_xml_tab      TYPE STANDARD TABLE OF smum_xmltb,
      gt_return       TYPE bapirettab,
      gs_layout       TYPE lvc_s_layo.


PARAMETERS:
  p_file    TYPE localfile  DEFAULT 'C:	empsiebel_create_so.xml'.


START-OF-SELECTION.

  CREATE OBJECT go_xml_doc.
  CALL METHOD go_xml_doc->import_from_file
    EXPORTING
      filename = p_file
    RECEIVING
      retcode  = gd_rc.

  CALL METHOD go_xml_doc->render_2_string
*    EXPORTING
*      pretty_print = 'X'
    IMPORTING
      retcode      = gd_rc
      stream       = gd_xmldata
*      size         =
      .



  CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
    EXPORTING
      text           = gd_xmldata
*     MIMETYPE       = ' '
*     ENCODING       =
    IMPORTING
      buffer         = gd_xstring
    EXCEPTIONS
      failed         = 1
      OTHERS         = 2.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


  CALL FUNCTION 'SMUM_XML_PARSE'
    EXPORTING
      xml_input = gd_xstring
    TABLES
      xml_table = gt_xml_tab
      return    = gt_return.

  gs_layout-cwidth_opt = abap_true.
  gs_layout-zebra      = abap_true.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_structure_name = 'SMUM_XMLTB'
      is_layout_lvc    = gs_layout
    TABLES
      t_outtab         = gt_xml_tab
    EXCEPTIONS
      program_error    = 1
      OTHERS           = 2.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


END-OF-SELECTION.

Regards

Uwe