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

ABAP -> XML

Former Member
0 Likes
1,091

Hi All,

We are using 4.6c, i would like to understnad the process of downloading ABAP report to XML.

i have tried 'SAP_CONVERT_TO_XML_FORMAT'.

if anybody can provide a sample program, it is highly helpful.

Thanks,

RS

Hi All,

We are using 4.6c, i would like to understnad the process of downloading ABAP report to XML.

i have tried 'SAP_CONVERT_TO_XML_FORMAT'.

if anybody can provide a sample program, it is highly helpful.

Thanks,

RS

6 REPLIES 6
Read only

Former Member
0 Likes
920

Hi,

check these links..

/people/r.eijpe/blog/2005/11/10/xml-dom-processing-in-abap-part-i--convert-an-abap-table-into-xml-file-using-sap-dom-approach

Regards

vijay

Read only

Former Member
0 Likes
920

try this prog:

simply go through and execute:

*&----


*

*& Report ZITAB_TO_XML_1 *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZITAB_TO_XML_1 .

*----


*

  • Export an internal table to XML document *

*----


*

PARAMETERS: GK_RUTA TYPE RLGRAP-FILENAME.

*----


*

  • TYPE TURNOS *

TYPES: BEGIN OF TURNOS,

LU LIKE T552A-TPR01,

MA LIKE T552A-TPR01,

MI LIKE T552A-TPR01,

JU LIKE T552A-TPR01,

VI LIKE T552A-TPR01,

SA LIKE T552A-TPR01,

DO LIKE T552A-TPR01,

END OF TURNOS.

  • TYPE TURNOS *

*----


*

*----


*

  • TYPE SOCIO *

TYPES: BEGIN OF SOCIO,

NUMERO LIKE PERNR-PERNR,

REPOSICION LIKE PA0050-ZAUVE,

NOMBRE LIKE PA0002-VORNA,

TURNOS TYPE TURNOS,

END OF SOCIO.

  • TYPE SOCIO *

*----


*

*----


*

  • ESTRUCTURA ACCESOS *

DATA: BEGIN OF ACCESOS OCCURS 0,

SOCIO TYPE SOCIO,

END OF ACCESOS.

  • ESTRUCTURA ACCESOS *

*----


*

*----


*

  • START OF SELECTION *

START-OF-SELECTION.

PERFORM LLENA_ACCESOS.

PERFORM DESCARGA_XML.

END-OF-SELECTION.

  • END OF SELECTION *

*----


*

*----


*

  • FORM LLENA_ACCESOS *

FORM LLENA_ACCESOS.

REFRESH ACCESOS.

CLEAR ACCESOS.

MOVE: '45050' TO ACCESOS-SOCIO-NUMERO,

'MOISES MORENO' TO ACCESOS-SOCIO-NOMBRE,

'0' TO ACCESOS-SOCIO-REPOSICION,

'T1' TO ACCESOS-SOCIO-TURNOS-LU,

'T2' TO ACCESOS-SOCIO-TURNOS-MA,

'T3' TO ACCESOS-SOCIO-TURNOS-MI,

'T4' TO ACCESOS-SOCIO-TURNOS-JU,

'T5' TO ACCESOS-SOCIO-TURNOS-VI,

'T6' TO ACCESOS-SOCIO-TURNOS-SA,

'T7' TO ACCESOS-SOCIO-TURNOS-DO.

APPEND ACCESOS.

CLEAR ACCESOS.

MOVE: '45051' TO ACCESOS-SOCIO-NUMERO,

'RUTH PEÑA' TO ACCESOS-SOCIO-NOMBRE,

'0' TO ACCESOS-SOCIO-REPOSICION,

'T1' TO ACCESOS-SOCIO-TURNOS-LU,

'T2' TO ACCESOS-SOCIO-TURNOS-MA,

'T3' TO ACCESOS-SOCIO-TURNOS-MI,

'T4' TO ACCESOS-SOCIO-TURNOS-JU,

'T5' TO ACCESOS-SOCIO-TURNOS-VI,

'T6' TO ACCESOS-SOCIO-TURNOS-SA,

'T7' TO ACCESOS-SOCIO-TURNOS-DO.

APPEND ACCESOS.

ENDFORM.

  • FORM LLENA_ACCESOS *

*----


*

*----


*

  • FORM DESCARGA_XML *

FORM DESCARGA_XML.

DATA: L_DOM TYPE REF TO IF_IXML_ELEMENT,

M_DOCUMENT TYPE REF TO IF_IXML_DOCUMENT,

G_IXML TYPE REF TO IF_IXML,

W_STRING TYPE XSTRING,

W_SIZE TYPE I,

W_RESULT TYPE I,

W_LINE TYPE STRING,

IT_XML TYPE DCXMLLINES,

S_XML LIKE LINE OF IT_XML,

W_RC LIKE SY-SUBRC.

DATA: XML TYPE DCXMLLINES.

DATA: RC TYPE SY-SUBRC.

DATA:BEGIN OF XML_TAB OCCURS 0,

D LIKE LINE OF XML,

END OF XML_TAB.

CLASS CL_IXML DEFINITION LOAD.

G_IXML = CL_IXML=>CREATE( ).

CHECK NOT G_IXML IS INITIAL.

M_DOCUMENT = G_IXML->CREATE_DOCUMENT( ).

CHECK NOT M_DOCUMENT IS INITIAL.

WRITE: / 'Converting DATA TO DOM 1:'.

*----


CALL FUNCTION FOR: Bridge Between ABAP and iXML----


*

CALL FUNCTION 'SDIXML_DATA_TO_DOM'

EXPORTING

NAME = 'ACCESOS'

DATAOBJECT = ACCESOS[]

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.

W_RC = M_DOCUMENT->APPEND_CHILD( NEW_CHILD = L_DOM ).

IF W_RC IS INITIAL.

WRITE 'Ok'.

ELSE.

WRITE: 'Err =',

W_RC.

ENDIF.

*----


CALL FUNCTION FOR: put the XML data ino ITAB----


*

CALL FUNCTION 'SDIXML_DOM_TO_XML'

EXPORTING

DOCUMENT = M_DOCUMENT

IMPORTING

XML_AS_STRING = W_STRING

SIZE = W_SIZE

TABLES

XML_AS_TABLE = IT_XML

EXCEPTIONS

NO_DOCUMENT = 1

OTHERS = 2.

IF SY-SUBRC = 0.

WRITE 'Ok'.

ELSE.

WRITE: 'Err =',

SY-SUBRC.

ENDIF.

LOOP AT IT_XML INTO XML_TAB-D.

APPEND XML_TAB.

ENDLOOP.

----File Transfer from Internal Table to Presentation Server File--

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

BIN_FILESIZE = W_SIZE

FILENAME = 'D:GK_RUTA.XML'

FILETYPE = 'BIN'

TABLES

DATA_TAB = XML_TAB

EXCEPTIONS

OTHERS = 10.

IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM. " of FORM: DESCARGA_XML



if helpful rewards the points

Read only

0 Likes
920

very helpful Thank you I did not see how to reward the points but would like to

Read only

vinod_gunaware2
Active Contributor
0 Likes
920

SDIXML_DATA_TO_DOM Convert SAP data (elementary/structured/table types) into DOM (XML)

SDIXML_DOM_TO_XML Convert DOM (XML) into string of bytes that can be downloaded to PC or application server

SDIXML_DOM_TO_SCREEN Display DOM (XML)

SDIXML_DOM_TO_DATA

report z.

data: it_table like t001 occurs 0.

data: l_dom TYPE REF TO IF_IXML_ELEMENT,

m_document TYPE REF TO IF_IXML_DOCUMENT,

g_ixml TYPE REF TO IF_IXML,

w_string TYPE XSTRING,

w_size TYPE I,

w_result TYPE I,

w_line TYPE STRING,

it_xml TYPE DCXMLLINES,

s_xml like line of it_xml,

w_rc like sy-subrc.

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.

********************************************

        • visualize iXML (DOM) ****

********************************************

write: / 'displaying DOM:'.

CALL FUNCTION 'SDIXML_DOM_TO_SCREEN'

EXPORTING

DOCUMENT = m_document

EXCEPTIONS

NO_DOCUMENT = 1

OTHERS = 2.

if sy-subrc = 0. write 'ok'.

else. write: 'Err =', sy-subrc.

endif.

********************************************

        • convert DOM to XML doc (table) ****

********************************************

write: / 'converting DOM TO XML:'.

CALL FUNCTION 'SDIXML_DOM_TO_XML'

EXPORTING

DOCUMENT = m_document

  • PRETTY_PRINT = ' '

IMPORTING

XML_AS_STRING = w_string

SIZE = w_size

TABLES

XML_AS_TABLE = it_xml

EXCEPTIONS

NO_DOCUMENT = 1

OTHERS = 2.

if sy-subrc = 0. write 'ok'.

else. write: 'Err =', sy-subrc.

endif.

write: / 'XML as string of size:', w_size, / w_string.

describe table it_xml lines w_result.

write: / 'XML as table of', w_result, 'lines:'..

loop at it_xml into s_xml.

write s_xml.

endloop.

write: / 'end of processing'.

  • end of code

regards

vinod

Read only

0 Likes
920

Hi Vinod,

Thanks for timely inputs.

i am able to go ahead with the example provided by you.

Thanks,

RS

Read only

0 Likes
920

Hello Vinod and Biswajit. Thank you for the sample programs. I have a question about something that is the same in both outputs. Both output a Element with the name <item>. Is there anyway to modify this? For example, in the sample from Biswajit, it outputs this before the start of the information for the Personnel Number ACCESOS-SOCIO-NUMERO.

Message was edited by: Bob Ackerman