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

XSLT Transform Internal Table

Former Member
0 Likes
344

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

1 REPLY 1
Read only

athavanraja
Active Contributor
0 Likes
296

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