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

SDIXML_DOM_TO_DATA

Former Member
0 Likes
1,027

hi,

I'm trying to convert an xml file to an internal table. in the process, i'm stuck with the function module "SDIXML_DOM_TO_DATA".

Can anyone help me out in using this FM..?

Regards,

Satish.S

1 ACCEPTED SOLUTION
Read only

ak_upadhyay
Contributor
0 Likes
727

Hi,

Check this Report....


report z. 
type-pools truxs. 

data: it_table like t001 occurs 0. 

data: l_dom TYPE REF TO IF_IXML_ELEMENT, 
m_document TYPE REF TO IF_IXML_DOCUMENT, 
m_xmldoc TYPE REF TO CL_XML_DOCUMENT, 
g_ixml TYPE REF TO IF_IXML, 
l_iref_pstreamfactory TYPE REF TO if_ixml_stream_factory, 
l_iref_postream TYPE REF TO if_ixml_ostream, 
It_CONVERTED_DATA TYPE TRUXS_XML_TABLE, 
it_converted_line like line of It_CONVERTED_DATA, 
w_result TYPE I, 
w_rc like sy-subrc, 
s_node type string. 

start-of-selection. 
select * from t001 into table it_table. 

end-of-selection. 
******************************************** 
**** initialize iXML-Framework **** 
******************************************** 
write: / 'initialiazing iXML:'. 
class cl_ixml definition load. 
g_ixml = cl_ixml=>create( ). 
check not g_ixml is initial. 
write: 'ok'. 

******************************************** 
**** create DOM from SAP data **** 
******************************************** 
write: / 'creating iXML doc:'. 
m_document = g_ixml->create_document( ). 
check not m_document is initial. 
write: 'ok'. 

write: / 'converting DATA TO DOM 1:'. 
CALL FUNCTION 'SDIXML_DATA_TO_DOM' 
EXPORTING 
NAME = 'IT_TABLE' 
DATAOBJECT = it_table[] 
IMPORTING 
DATA_AS_DOM = l_dom 
CHANGING 
DOCUMENT = m_document 
EXCEPTIONS 
ILLEGAL_NAME = 1 
OTHERS = 2. 
if sy-subrc = 0. write 'ok'. 
else. write: 'Err =', sy-subrc. 
endif. 
check not l_dom is initial. 

write: / 'appending DOM to iXML doc:'. 
w_rc = m_document->append_child( new_child = l_dom ). 
if w_rc is initial. write 'ok'. 
else. write: 'Err =', w_rc. 
endif. 

******************************************** 
**** creating object XML doc **** 
******************************************** 
write: / 'creating XML document:'. 
create object m_xmldoc. 
check not m_xmldoc is initial. 
write 'ok'. 

write: / 'getting XML from DOM:'. 
w_rc = m_xmldoc->create_with_dom( document = m_document ). 
if w_rc is initial. write 'ok'. 
else. write: 'Err =', w_rc. 
endif. 

******************************************** 
**** visualize object XML doc ************** 
******************************************** 
write: / 'displaying XML document:'. 
call method m_xmldoc->display. 

write: / 'select node from XML document:'. 
s_node = m_xmldoc->call_f4( ). 
write s_node. 

******************************************** 
**** convert DOM to XML doc (table) **** 
**** method 2 - OO **** 
******************************************** 
write: / 'creating stream factory:'. 
l_iref_pstreamfactory = g_ixml->create_stream_factory( ). 
check not l_iref_pstreamfactory is initial. 
write 'ok'. 

write: / 'creating ostream table:'. 
l_iref_postream = l_iref_pstreamfactory->create_ostream_itable( 
table = it_converted_data ). 
check not l_iref_postream is initial. 
write 'ok'. 

write: / 'rendering (filling table):'. 
CALL METHOD m_document->render( ostream = l_iref_postream ). 
* -- how many bytes were written to the table? 
w_result = l_iref_postream->get_num_written_raw( ). 
write: / w_result, 'bytes were written to the table:'. 
loop at it_converted_data into it_converted_line. 
write it_converted_line-data. 
endloop. 

write: / 'end of processing'. 
* end of code

Reward points if useful.... (Don't forget)

Regards

AK

hi,

I'm trying to convert an xml file to an internal table. in the process, i'm stuck with the function module "SDIXML_DOM_TO_DATA".

Can anyone help me out in using this FM..?

Regards,

Satish.S

2 REPLIES 2
Read only

ak_upadhyay
Contributor
0 Likes
728

Hi,

Check this Report....


report z. 
type-pools truxs. 

data: it_table like t001 occurs 0. 

data: l_dom TYPE REF TO IF_IXML_ELEMENT, 
m_document TYPE REF TO IF_IXML_DOCUMENT, 
m_xmldoc TYPE REF TO CL_XML_DOCUMENT, 
g_ixml TYPE REF TO IF_IXML, 
l_iref_pstreamfactory TYPE REF TO if_ixml_stream_factory, 
l_iref_postream TYPE REF TO if_ixml_ostream, 
It_CONVERTED_DATA TYPE TRUXS_XML_TABLE, 
it_converted_line like line of It_CONVERTED_DATA, 
w_result TYPE I, 
w_rc like sy-subrc, 
s_node type string. 

start-of-selection. 
select * from t001 into table it_table. 

end-of-selection. 
******************************************** 
**** initialize iXML-Framework **** 
******************************************** 
write: / 'initialiazing iXML:'. 
class cl_ixml definition load. 
g_ixml = cl_ixml=>create( ). 
check not g_ixml is initial. 
write: 'ok'. 

******************************************** 
**** create DOM from SAP data **** 
******************************************** 
write: / 'creating iXML doc:'. 
m_document = g_ixml->create_document( ). 
check not m_document is initial. 
write: 'ok'. 

write: / 'converting DATA TO DOM 1:'. 
CALL FUNCTION 'SDIXML_DATA_TO_DOM' 
EXPORTING 
NAME = 'IT_TABLE' 
DATAOBJECT = it_table[] 
IMPORTING 
DATA_AS_DOM = l_dom 
CHANGING 
DOCUMENT = m_document 
EXCEPTIONS 
ILLEGAL_NAME = 1 
OTHERS = 2. 
if sy-subrc = 0. write 'ok'. 
else. write: 'Err =', sy-subrc. 
endif. 
check not l_dom is initial. 

write: / 'appending DOM to iXML doc:'. 
w_rc = m_document->append_child( new_child = l_dom ). 
if w_rc is initial. write 'ok'. 
else. write: 'Err =', w_rc. 
endif. 

******************************************** 
**** creating object XML doc **** 
******************************************** 
write: / 'creating XML document:'. 
create object m_xmldoc. 
check not m_xmldoc is initial. 
write 'ok'. 

write: / 'getting XML from DOM:'. 
w_rc = m_xmldoc->create_with_dom( document = m_document ). 
if w_rc is initial. write 'ok'. 
else. write: 'Err =', w_rc. 
endif. 

******************************************** 
**** visualize object XML doc ************** 
******************************************** 
write: / 'displaying XML document:'. 
call method m_xmldoc->display. 

write: / 'select node from XML document:'. 
s_node = m_xmldoc->call_f4( ). 
write s_node. 

******************************************** 
**** convert DOM to XML doc (table) **** 
**** method 2 - OO **** 
******************************************** 
write: / 'creating stream factory:'. 
l_iref_pstreamfactory = g_ixml->create_stream_factory( ). 
check not l_iref_pstreamfactory is initial. 
write 'ok'. 

write: / 'creating ostream table:'. 
l_iref_postream = l_iref_pstreamfactory->create_ostream_itable( 
table = it_converted_data ). 
check not l_iref_postream is initial. 
write 'ok'. 

write: / 'rendering (filling table):'. 
CALL METHOD m_document->render( ostream = l_iref_postream ). 
* -- how many bytes were written to the table? 
w_result = l_iref_postream->get_num_written_raw( ). 
write: / w_result, 'bytes were written to the table:'. 
loop at it_converted_data into it_converted_line. 
write it_converted_line-data. 
endloop. 

write: / 'end of processing'. 
* end of code

Reward points if useful.... (Don't forget)

Regards

AK

Read only

0 Likes
727

hi,

Thanx for ur reply. well, ur code seems to be too spicy for me, i'm a beginer in abap...! i shall tell u my need. i converted my int table that had 4 records, to an xml file. it was done successfully. now i need to revert the process. ie: convert the XML file containing the 4 records to an int table. plz post a code which satisfies my need...

Regards,

Satish.S