08-02-2007 6:25 AM
Hi ABAPers,
Can any one pls help me to Convert Internal Table Data to XML File and I dont know how to FM SAP_CONVERT_TO_XML_FORMAT....
can u give Good Example for using it.... Good Answers will be Appreciated....
08-02-2007 6:27 AM
I found this on aUser forum sometime back... pl go through it..
*&----
*
*& Report ZTESTXML *
*& *
*&----
*
*& *
*& *
*&----
*
*----
*
Report ZPRUEBA_MML_13 *
Export an internal table to XML document *
NO BORRAR ESTE CODIGO *
*----
*
report zprueba_mml_13.
*----
*
PANTALLA SELECCION *
parameters: gk_ruta type rlgrap-filename.
PANTALLA SELECCION *
*----
*
*----
*
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. "LLENA_ACCESOS
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,
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 '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 '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.
call function 'WS_DOWNLOAD'
exporting
bin_filesize = w_size
filename = gk_ruta
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. "DESCARGA_XML
FORM DESCARGA_XML *
08-02-2007 6:29 AM
08-02-2007 6:31 AM
Hi,
check this program , I think this will help you
TYPE-POOLS: ixml.
TYPES: BEGIN OF xml_line,
data(256) TYPE x,
END OF xml_line.
data : itab like catsdb occurs 100 with header line.
data : file_location type STRING.
data : file_name like sy-datum.
data : file_create type STRING.
file_name = sy-datum .
file_location = 'C:\xml\'.
concatenate file_location file_name into file_create.
concatenate file_create '.XML' into file_create.
DATA: l_xml_table TYPE TABLE OF xml_line,
l_xml_size TYPE i,
l_rc TYPE i.
select * from catsdb into table itab.
append itab .
CALL FUNCTION 'SAP_CONVERT_TO_XML_FORMAT'
EXPORTING
I_FIELD_SEPERATOR =
I_LINE_HEADER =
I_FILENAME =
I_APPL_KEEP = ' '
I_XML_DOC_NAME =
IMPORTING
PE_BIN_FILESIZE = l_xml_size
TABLES
i_tab_sap_data = itab
CHANGING
I_TAB_CONVERTED_DATA = l_xml_table
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 24
.
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 METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_xml_size
filename = file_create
filetype = 'BIN'
CHANGING
data_tab = l_xml_table
EXCEPTIONS
OTHERS = 24.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
write : 'INTERNAL TABLE DATA IS SUCCESSFULLY DOWNLOADED TO LOCATION', file_create .
Regards
08-02-2007 7:00 AM
Hi Kiran,
Thanks for ur Appropriate Code..
I need to Create Seperate XML File for Each Record in internal Table... Can u please Help me...
08-02-2007 6:32 AM
Check out this program.
&----
*& Report ZGB_EXCEL4 *
*& *
&----
*& *
*& *
&----
REPORT Z_ARIBA_SOURCING_TO_EXCEL .
TABLES: EBAN, EBKN, T024E,MAKT.
************************************************************************
*********************TYPE DECLARATION*********************************
DATA: BEGIN OF T_EBAN,
BANFN LIKE EBAN-BANFN,
BNFPO LIKE EBAN-BNFPO,
MATNR LIKE EBAN-MATNR,
MAKTX LIKE MAKT-MAKTX,
MATKL LIKE EBAN-MATKL,
MENGE(7) TYPE P DECIMALS 2,
MENGE LIKE EBAN-MENGE,
MEINS LIKE EBAN-MEINS,
PREIS LIKE EBAN-PREIS,
PREIS(7) TYPE P DECIMALS 2,
PEINH LIKE EBAN-PEINH,
IDNLF LIKE EBAN-IDNLF,
END OF T_EBAN.
DATA: ZARPRHEADER TYPE ZARPRHEADER.
************************************************************************
**********************INTERNAL TABLE**********************************
DATA: IT_EBAN LIKE T_EBAN OCCURS 0.
DATA: ZPREIS LIKE EBAN-PREIS.
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT.
SELECT-OPTIONS: ZDATE FOR EBAN-BADAT OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK B1.
************************************************************************
*******************COLS/ROWS TABLE DECLARATION************************
DATA: SEMA LIKE GXXLT_S OCCURS 0 WITH HEADER LINE.
DATA: VKEY LIKE GXXLT_V OCCURS 0 WITH HEADER LINE.
DATA: HKEY LIKE GXXLT_H OCCURS 0 WITH HEADER LINE.
DATA: ONLINE_TEXT LIKE GXXLT_O OCCURS 0 WITH HEADER LINE.
DATA: PRINT_TEXT LIKE GXXLT_P OCCURS 0 WITH HEADER LINE.
DATA: MONTH(2),YEAR(4),DAY(2).
DATA: DATE1 LIKE SY-DATUM.
***********************************************************************
***********************************************************************
*PARAMETERS: P_BANFN LIKE EBAN-BANFN,
P_BNFPO LIKE EBAN-BNFPO.
************************************************************************
*******************START-OF-SELECTION*********************************
INITIALIZATION.
DATE1 = SY-DATUM.
YEAR = DATE1+0(4).
MONTH = DATE1+4(2).
DAY = '01'.
IF MONTH EQ 1.
YEAR = YEAR - 1.
MONTH = 12.
MOVE YEAR TO DATE1+0(4).
MOVE MONTH TO DATE1+4(2).
MOVE DAY TO DATE1+6(2).
ELSE.
MOVE DAY TO DATE1+6(2).
ENDIF.
.
MOVE: 'I' TO ZDATE-SIGN,
'EQ' TO ZDATE-OPTION,
DATE1 TO ZDATE-LOW,
SY-DATUM TO ZDATE-HIGH.
APPEND ZDATE.
START-OF-SELECTION.
PERFORM BUILD_TABLE.
END-OF-SELECTION.
&----
*& Form BUILD_TABLE
&----
text
----
--> p1 text
<-- p2 text
----
FORM BUILD_TABLE .
SELECT BANFN BNFPO EBAN~MATNR MAKTX MATKL MENGE MEINS PREIS PEINH
IDNLF
INTO CORRESPONDING FIELDS OF T_EBAN
FROM EBAN JOIN MAKT
ON EBANMATNR = MAKTMATNR
WHERE BSART EQ 'ZAR'
AND MAKT~SPRAS EQ SY-LANGU
AND BADAT BETWEEN ZDATE-LOW AND ZDATE-HIGH
AND SOUR_ST EQ '01'.
APPEND T_EBAN TO IT_EBAN .
ENDSELECT.
IF SY-SUBRC NE 0.
WRITE:/ 'No Items available for Sourcing'.
EXIT.
ELSE.
SEMA-COL_NO = 1.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 1.
SEMA-COL_CUR = 0.
APPEND SEMA.
SEMA-COL_NO = 2.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 2.
SEMA-COL_CUR = 0.
APPEND SEMA.
SEMA-COL_NO = 3.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 3.
SEMA-COL_CUR = 0.
APPEND SEMA.
SEMA-COL_NO = 4.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 4.
SEMA-COL_CUR = 0.
APPEND SEMA.
SEMA-COL_NO = 5.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 5.
SEMA-COL_CUR = 0.
APPEND SEMA.
SEMA-COL_NO = 6.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 6.
SEMA-COL_CUR = 0.
APPEND SEMA.
SEMA-COL_NO = 7.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 7.
SEMA-COL_CUR = 0.
APPEND SEMA.
SEMA-COL_NO = 8.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 8.
SEMA-COL_CUR = 0.
APPEND SEMA.
SEMA-COL_NO = 9.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 9.
SEMA-COL_CUR = 0.
APPEND SEMA.
SEMA-COL_NO = 10.
SEMA-COL_TYP = 'STR'.
SEMA-COL_OPS ='DFT'.
SEMA-COL_SRC = 10.
SEMA-COL_CUR = 0.
APPEND SEMA.
VKEY-COL_NO = 1.
VKEY-COL_NAME = 'PR Number'.
APPEND VKEY.
VKEY-COL_NO = 2.
VKEY-COL_NAME = 'Item #'.
APPEND VKEY.
VKEY-COL_NO = 3.
VKEY-COL_NAME = 'Item Name'.
APPEND VKEY.
VKEY-COL_NO = 4.
VKEY-COL_NAME = 'Description'.
APPEND VKEY.
VKEY-COL_NO = 5.
VKEY-COL_NAME = 'Commodity Codes'.
APPEND VKEY.
VKEY-COL_NO = 6.
VKEY-COL_NAME = 'Total Quantity Desired'.
APPEND VKEY.
VKEY-COL_NO = 7.
VKEY-COL_NAME = 'Quantity Unit of Measure'.
APPEND VKEY.
VKEY-COL_NO = 8.
VKEY-COL_NAME = 'Initial Price'.
APPEND VKEY.
VKEY-COL_NO = 9.
VKEY-COL_NAME = 'Quantity Unit of Measure'.
APPEND VKEY.
VKEY-COL_NO = 10.
VKEY-COL_NAME = 'SKU (Part Number)'.
APPEND VKEY.
CALL FUNCTION 'XXL_FULL_API'
EXPORTING
DATA_ENDING_AT = -1
DATA_STARTING_AT = 1
FILENAME = ' '
HEADER_1 = ' '
HEADER_2 = ' '
NO_DIALOG = 'X'
NO_START = ' '
N_ATT_COLS = 0
N_HRZ_KEYS = 1
N_VRT_KEYS = 10
SEMA_TYPE = ' '
SO_TITLE = ' '
TABLES
DATA = IT_EBAN
HKEY = HKEY
ONLINE_TEXT = ONLINE_TEXT
PRINT_TEXT = PRINT_TEXT
SEMA = SEMA
VKEY = VKEY
EXCEPTIONS
CANCELLED_BY_USER = 1
DATA_TOO_BIG = 2
DIM_MISMATCH_DATA = 3
DIM_MISMATCH_SEMA = 4
DIM_MISMATCH_VKEY = 5
ERROR_IN_HKEY = 6
ERROR_IN_SEMA = 7
FILE_OPEN_ERROR = 8
FILE_WRITE_ERROR = 9
INV_DATA_RANGE = 10
INV_WINSYS = 11
INV_XXL = 12
OTHERS = 13
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR T_EBAN.
LOOP AT IT_EBAN INTO T_EBAN.
UPDATE EBAN SET SOUR_ST = '02'
WHERE BANFN = T_EBAN-BANFN
AND BNFPO = T_EBAN-BNFPO.
CALL FUNCTION 'Z_ARIBA_PURC_REQ_PULL_EXCEL'
EXPORTING
BANFN = T_EBAN-BANFN
BNFPO = T_EBAN-BNFPO
VARIANT = 'VSAP'
PARTITION = 'PHSR'.
ENDLOOP.
ENDIF.
ENDFORM. " BUILD_TABLE
Reward if it useful.
08-02-2007 6:40 AM
can one explain the Working of SAP_CONVERT_TO_XML_FORMAT Function Module.. and how to use Parameters of it
Good Answers will be Appreciated..