FM to get XML tag values


Tables:

 tables

 

Example XML:

 

<ANIL>HI</ANIL>

<OZGEN>BYE</OZGEN>

Return:

 return

 

Source Code:

 

FUNCTION ZGET_XML_TAG_VALUES.

*”———————————————————————-

*”*”Local Interface:

*”  TABLES

*”      IT_XML TYPE  STRING_TABLE

*”      RT_VALUES TYPE  BSP_STABLE_2C

*”———————————————————————-

data ls_xml type string.

data beg type string value ‘<‘.

data end type string value ‘>’.

data sla type string value ‘/’.

data ls_result type bsp_2_ct.

translate beg to upper case.

translate end to upper case.

translate sla to upper case.

data lv_value1 type string.

data lv_value2 type string.

data lv_value3 type string.

data lv_len  type i.

data lv_len1 type i.

data lv_len2 type i.

data lv_len3 type i.

data lv_pos1 type i.

data lv_pos2 type i.

data lv_pos3 type i.

data lv_pos4 type i.

data value1 type string.

data value2 type string.

loop at it_xml into ls_xml.

 translate ls_xml to upper case.

 clearlv_pos1value1value2,

        lv_pos2lv_len.

* Looking for ‘<‘

 find first occurrence of beg in ls_xml

      match offset lv_pos1.

 check sysubrc eq 0.

* Looking for ‘>’

 find first occurrence of end in ls_xml

 match offset lv_pos2.

 check sysubrc eq 0.

 lv_len lv_pos2 – lv_pos1 + 1.

 clear lv_value1.

 lv_value1 ls_xml+lv_pos1(lv_len).

 clearlv_value3lv_len3lv_value2value1.

 lv_len3 strlenlv_value1 – 2.

 lv_value3 lv_value1+1(lv_len3).

 value1 lv_value3.

 concatenate beg sla lv_value3 end

        into lv_value2.

 find lv_value2 in ls_xml .

 check sysubrc eq 0.

 clearlv_pos1lv_pos2lv_len1.

 lv_len1 strlenlv_value1 ).

 find first occurrence of lv_value1 in ls_xml

             match offset lv_pos1.

 lv_pos3 lv_pos1 + lv_len1.

 find first occurrence of lv_value2 in ls_xml

             match offset lv_pos4.

 lv_len lv_pos4 – lv_pos3.

 value2 ls_xml+lv_pos3(lv_len).

 ls_resultcol1 value1.

 ls_resultcol2 value2.

 append ls_result to rt_values.

 clear ls_result.

endloop.

ENDFUNCTION.

Leave a comment

Your email address will not be published. Required fields are marked *