2006 Aug 21 7:50 AM
Hi,
I want to transform an ABAP-Interal Table into XML with
the CALL TRANSFORMATION - Command.
I have already the XSLT-Schema, but just one Problem:
My interal table is like this
KUNNR AUFNR ....
1 A1
1 A2
1 A3
2 B1
2 B2
3 C1
4 D1
5 E1
I was able to create an XML, like this
<kunnr> 1 </kunnr>
<aufnr> A1 </aufnr>
<kunnr> 1 </kunnr>
<aufnr> A2 </aufnr>
<kunnr> 1 </kunnr>
<aufnr> A3 </aufnr>
<kunnr> 2 </kunnr>
<aufnr> B1 </aufnr>
<kunnr> 2 </kunnr>
<aufnr> B2 </aufnr>
...
but what I want ist that the <kunnr> is just once for each of different value like
<kunnr> 1 </kunnr>
<aufnr> A1 </aufnr>
<aufnr> A2 </aufnr>
<aufnr> A3 </aufnr>
<kunnr> 2 </kunnr>
<aufnr> B1 </aufnr>
<aufnr> B2 </aufnr>
<kunnr> 3 </kunnr>
<aufnr> C1 </aufnr>
...
How to I create this in XSLT???
thanks
Herbert
Hi,
I want to transform an ABAP-Interal Table into XML with
the CALL TRANSFORMATION - Command.
I have already the XSLT-Schema, but just one Problem:
My interal table is like this
KUNNR AUFNR ....
1 A1
1 A2
1 A3
2 B1
2 B2
3 C1
4 D1
5 E1
I was able to create an XML, like this
<kunnr> 1 </kunnr>
<aufnr> A1 </aufnr>
<kunnr> 1 </kunnr>
<aufnr> A2 </aufnr>
<kunnr> 1 </kunnr>
<aufnr> A3 </aufnr>
<kunnr> 2 </kunnr>
<aufnr> B1 </aufnr>
<kunnr> 2 </kunnr>
<aufnr> B2 </aufnr>
...
but what I want ist that the <kunnr> is just once for each of different value like
<kunnr> 1 </kunnr>
<aufnr> A1 </aufnr>
<aufnr> A2 </aufnr>
<aufnr> A3 </aufnr>
<kunnr> 2 </kunnr>
<aufnr> B1 </aufnr>
<aufnr> B2 </aufnr>
<kunnr> 3 </kunnr>
<aufnr> C1 </aufnr>
...
How to I create this in XSLT???
thanks
Herbert
2006 Aug 22 6:57 AM
Welcome to SDN.
you can either create a nested itab where aufnr is an itab within the main itab which holds the KUNNR and use call transofrmation.
else use the following code sample.
REPORT y_test_xml_complex
NO STANDARD PAGE HEADING.
DATA: l_ixml TYPE REF TO if_ixml,
l_ixml_sf TYPE REF TO if_ixml_stream_factory,
l_istream TYPE REF TO if_ixml_istream,
l_ostream TYPE REF TO if_ixml_ostream,
l_categories_element TYPE REF TO if_ixml_element,
l_document TYPE REF TO if_ixml_document,
l_parser TYPE REF TO if_ixml_parser,
l_root_element TYPE REF TO if_ixml_element,
l_c_element TYPE REF TO if_ixml_element,
l_s_element TYPE REF TO if_ixml_element ,
xml TYPE xstring ,
size TYPE i ,
l_xml TYPE REF TO cl_xml_document .
DATA: BEGIN OF itab OCCURS 0 ,
kunnr(10) ,
aufnr(10) ,
END OF itab .
DATA: wa LIKE LINE OF itab .
DATA: xml_out TYPE string .
CLEAR itab.
REFRESH itab .
itab-kunnr = '1' .
itab-aufnr = 'A1' .
APPEND itab.
CLEAR itab .
itab-kunnr = '1' .
itab-aufnr = 'A2' .
APPEND itab.
CLEAR itab .
itab-kunnr = '1' .
itab-aufnr = 'A3' .
APPEND itab.
CLEAR itab .
itab-kunnr = '2' .
itab-aufnr = 'b1' .
APPEND itab.
CLEAR itab .
itab-kunnr = '2' .
itab-aufnr = 'b2' .
APPEND itab.
CLEAR itab .
itab-kunnr = '3' .
itab-aufnr = 'C1' .
APPEND itab.
CLEAR itab .
SORT itab BY kunnr.
l_ixml = cl_ixml=>create( ).
l_ixml_sf = l_ixml->create_stream_factory( ).
l_document = l_ixml->create_document( ).
l_root_element = l_document->create_element( name = 'OrderData' ).
l_root_element->set_attribute( name = 'version' value = '1.0' ).
l_document->append_child( new_child = l_root_element ).
DATA: temp TYPE string .
CLEAR wa .
LOOP AT itab INTO wa .
AT NEW kunnr .
CLEAR temp.
temp = wa-kunnr .
CLEAR l_categories_element .
l_categories_element = l_document->create_simple_element( parent = l_root_element name = 'KUNNR' ).
l_categories_element->set_attribute( name = 'ID' value = temp ).
ENDAT .
CLEAR :temp ,l_c_element .
temp = wa-aufnr .
l_c_element = l_document->create_simple_element( parent = l_categories_element name = 'AUFNR' value = temp ).
ENDLOOP .
l_ostream = l_ixml_sf->create_ostream_xstring( xml ).
l_document->render( ostream = l_ostream ).
CREATE OBJECT l_xml.
CALL METHOD l_xml->parse_xstring
EXPORTING
stream = xml.
l_xml->render_2_string(
EXPORTING
pretty_print = 'X'
IMPORTING
* RETCODE = RETCODE
stream = xml_out
size = size
).
CALL METHOD l_xml->display.
Regards
Raja
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |