2009 Dec 29 5:49 AM
Hi,
I am trying to generate an XML from ABAP using the below
data: function1 type string.
data: begin of itab occurs 0,
addrnumber like adcp-addrnumber,
function like adcp-function,
end of itab.
data:xml_string type xstring,
result like itab.
select-options: function for (function1) no intervals visible length 40.
select addrnumber
function
into table itab
from adcp
where function IN function.
*if itab[] is not initial.
*loop at itab.
*write:/ itab-addrnumber,
* itab-function.
*endloop.
*endif.
if itab[] is not initial.
CALL TRANSFORMATION zscratchpad
SOURCE para = itab
RESULT XML xml_string.
* Display result
* cl_abap_browser=>show_xml( EXPORTING xml_string = xml_string ).
CALL FUNCTION 'SCOL_TRACE_SHOW_XML'
EXPORTING
xdoc = xml_string.
endif.
Getting an error "XML Page can't be displayed".Do anyone here have an idea where I am going wrong.
Thanks,
Kiran.
Hi,
I am trying to generate an XML from ABAP using the below
data: function1 type string.
data: begin of itab occurs 0,
addrnumber like adcp-addrnumber,
function like adcp-function,
end of itab.
data:xml_string type xstring,
result like itab.
select-options: function for (function1) no intervals visible length 40.
select addrnumber
function
into table itab
from adcp
where function IN function.
*if itab[] is not initial.
*loop at itab.
*write:/ itab-addrnumber,
* itab-function.
*endloop.
*endif.
if itab[] is not initial.
CALL TRANSFORMATION zscratchpad
SOURCE para = itab
RESULT XML xml_string.
* Display result
* cl_abap_browser=>show_xml( EXPORTING xml_string = xml_string ).
CALL FUNCTION 'SCOL_TRACE_SHOW_XML'
EXPORTING
xdoc = xml_string.
endif.
Getting an error "XML Page can't be displayed".Do anyone here have an idea where I am going wrong.
Thanks,
Kiran.
2009 Dec 29 5:55 AM
Dear Kiran ,
Instead you can use following FM :
SDIXML_DATA_TO_DOM
SDIXML_DOM_TO_XML
With these FM I am faceing no Issue.
providing my code for your referance. Hope this will help to you.
form GENERATE_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 = 'it_material'
DATAOBJECT = it_material[]
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 = 'c:\Label.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. " GENERATE_XML
Regards,
Nikhil
2009 Dec 29 6:12 AM
Do I need to write any specific code in the new transfromation that I created using xslt_tool ?
Thanks,
Kiran.
2009 Dec 29 9:18 AM
I have some questions:
Firstly;Do you want to save XML file to your computer or you wanna just show it?
Secondly; Where does the data come from? Is it from an internal table?
2009 Dec 29 9:28 AM
Hi,
I am trying both the ways,to shw it on the screen as well as download todesktop and the data comes from internal table.
Thanks
Kiran.
2009 Dec 29 12:15 PM
TYPE-POOLS truxs.
DATA : gt_mara TYPE TABLE OF mara. " OCCURS 1,
DATA : o_xml TYPE REF TO cl_xml_document.
SELECT * FROM mara INTO TABLE gt_mara
UP TO 30 ROWS.
* Create XML Object
CREATE OBJECT o_xml.
* Convert data in table to XML
CALL METHOD o_xml->create_with_data( dataobject = gt_mara[] ).
CLEAR gt_mara.
* Save XML to local PC
CALL METHOD o_xml->export_to_file( filename = 'C:\test2.xml' ).
** Free
*CALL METHOD o_xml->free.
*
** Import XML Document from local PC
*CALL METHOD o_xml->import_from_file( filename = 'C:\test2.xml' ).
*
*CLEAR gt_mara[].
**break tgungor.
*
*** Display XML document
** CALL METHOD O_XML->DISPLAY.
*
**XML to internal table conversion
*CALL METHOD o_xml->get_data
* CHANGING
* dataobject = gt_mara[].
*
*break tgungor.try this..
2009 Dec 29 12:24 PM
Hi,
Thanks.
Using your code I was able to download an XML file but when I double click on the xml file it is not showing any data but actually the internal table has data.
If I am not worng we can use even gui_download to do this just by giving the extension name of the file as .xml.Isn't it ?
Thanks,
Kiran,
2009 Dec 29 12:26 PM
2009 Dec 29 9:28 AM
Hi Kiran,
Use this..........
TYPE-POOLS: truxs.
data s_file like RLGRAP-FILENAME.
DATA: itab1 TYPE truxs_t_text_data.
s_file = p_file3.
CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
EXPORTING
I_FIELD_SEPERATOR = ';'
I_LINE_HEADER = 'X'
i_filename = s_file
I_APPL_KEEP = ' '
tables
i_tab_sap_data = it_slog[]
CHANGING
I_TAB_CONVERTED_DATA = itab1
EXCEPTIONS
CONVERSION_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.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |