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

How to write XML File on Application Server?

Former Member
0 Likes
1,588

Hi all,

Here is the format in which I want the output XML file:

<?xml version="1.0" Encoding = 'UTF-8"?>

- <edsn:ListMasterDataNonStuuraansluiting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:edsn="http://www.edsn.nl/Stuursignaal" xsi:schemaLocation="http://www.edsn.nl/Stuursignaal http://www.edsn.nl/Stuursignaal/ListMasterDataNonStuuraansluiting.xsd">;

<DocumentHeader>

<SenderID>8717177000000</SenderID>

<ReceiverID>8712423010208</ReceiverID>

<DocumentID>1001</DocumentID>

</DocumentHeader>

<Responsible>

<ResponsibleID>11000</ResponsibleID>

<MasterDataNonStuuraansluiting>

<Date>20081117</Date>

<Annual_Usage>000000003001</Annual_Usage>

</MasterDataNonStuuraansluiting>

<MasterDataNonStuuraansluiting>

<Date>20081118</Date>

<Annual_Usage>000000003001</Annual_Usage>

</MasterDataNonStuuraansluiting>

</Responsible>

<Responsible>

<ResponsibleID>22000</ResponsibleID>

<MasterDataNonStuuraansluiting>

<Date>20081118</Date>

<Annual_Usage>000000004001</Annual_Usage>

</MasterDataNonStuuraansluiting>

</Responsible>

</edsn:ListMasterDataNonStuuraansluiting>

{/color} {/font}

I have used the following methods (in the order specified): 1. cl_ixml=>create( ); 2. lv_ixml->create_document( ); 3. lv_document->create_simple_element( ); 4. lv_ixml->create_stream_factory( ) 5. lv_streamfactory->create_ostream_itable( ); 6. lv_ixml->create_renderer( ); 7. lv_ostream->get_num_written_raw( ).

However, when i get the final data in the internal table 'lt_xml_table', it is in Binary/Hexadec format. How can i write this to the application server?

I tried using:

DATA: lv_string(256) TYPE c,

lt_xml_table TYPE TABLE OF xml_line,

wa_xml TYPE xml_line .

  • co_path = path on application server.

OPEN DATASET co_fpath FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

LOOP AT lt_xml_table INTO wa_xml.

MOVE wa_xml-data TO lv_string.

TRANSFER lv_string TO co_fpath.

CLEAR: lv_string.

ENDLOOP.

CLOSE DATASET co_fpath.

{/code}

But it doesnt work. Kindly help.

Hi all,

Here is the format in which I want the output XML file:

<?xml version="1.0" Encoding = 'UTF-8"?>

- <edsn:ListMasterDataNonStuuraansluiting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:edsn="http://www.edsn.nl/Stuursignaal" xsi:schemaLocation="http://www.edsn.nl/Stuursignaal http://www.edsn.nl/Stuursignaal/ListMasterDataNonStuuraansluiting.xsd">;

<DocumentHeader>

<SenderID>8717177000000</SenderID>

<ReceiverID>8712423010208</ReceiverID>

<DocumentID>1001</DocumentID>

</DocumentHeader>

<Responsible>

<ResponsibleID>11000</ResponsibleID>

<MasterDataNonStuuraansluiting>

<Date>20081117</Date>

<Annual_Usage>000000003001</Annual_Usage>

</MasterDataNonStuuraansluiting>

<MasterDataNonStuuraansluiting>

<Date>20081118</Date>

<Annual_Usage>000000003001</Annual_Usage>

</MasterDataNonStuuraansluiting>

</Responsible>

<Responsible>

<ResponsibleID>22000</ResponsibleID>

<MasterDataNonStuuraansluiting>

<Date>20081118</Date>

<Annual_Usage>000000004001</Annual_Usage>

</MasterDataNonStuuraansluiting>

</Responsible>

</edsn:ListMasterDataNonStuuraansluiting>

{/color} {/font}

I have used the following methods (in the order specified): 1. cl_ixml=>create( ); 2. lv_ixml->create_document( ); 3. lv_document->create_simple_element( ); 4. lv_ixml->create_stream_factory( ) 5. lv_streamfactory->create_ostream_itable( ); 6. lv_ixml->create_renderer( ); 7. lv_ostream->get_num_written_raw( ).

However, when i get the final data in the internal table 'lt_xml_table', it is in Binary/Hexadec format. How can i write this to the application server?

I tried using:

DATA: lv_string(256) TYPE c,

lt_xml_table TYPE TABLE OF xml_line,

wa_xml TYPE xml_line .

  • co_path = path on application server.

OPEN DATASET co_fpath FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

LOOP AT lt_xml_table INTO wa_xml.

MOVE wa_xml-data TO lv_string.

TRANSFER lv_string TO co_fpath.

CLEAR: lv_string.

ENDLOOP.

CLOSE DATASET co_fpath.

{/code}

But it doesnt work. Kindly help.

3 REPLIES 3
Read only

Former Member
0 Likes
854

Try OPEN DATASET in BINARY mode instead of TEXT mode

Read only

SantoshKallem
Active Contributor
0 Likes
854

Look at this code, it is generating XML. But iam not using methods in it.


  SELECT * FROM  lfa1  INTO TABLE  itab_lfa1
    WHERE   erdat = sy-datum
            AND LIFNR IN VENDOR.           

  IF sy-subrc <> 0.
    WRITE:/ 'No new vendor created on date ' , sy-datum."dd/mm/yyyy
    .
    WRITE:/ 'Hence NO XML generated'.
    EXIT.
  ENDIF.

  PERFORM create_xml_vendor.
*&---------------------------------------------------------------------*
*&      Form  CREATE_XML_vendor
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM create_xml_vendor.


*  CONCATENATE  '<TRANSPORTERLISTdate ="' today  '">'   INTO itab-txt.
ITAB-TXT = '<TRANSPORTERLIST>'.
  APPEND itab.

  LOOP AT itab_lfa1 INTO wa_lfa1.
    itab-txt = '<TRANSPORTER>' .
    APPEND itab.

    CONCATENATE '<' 'TNAME>' wa_lfa1-name1 '</'
       'TNAME>'  INTO itab-txt.
    APPEND itab.

    CONCATENATE '<' 'TCODE>' wa_lfa1-lifnr '</'
       'TCODE>'  INTO itab-txt.
    APPEND itab.		

    CONCATENATE '<' 'BLOCK>' wa_lfa1-sperm '</'
        'BLOCK>'  INTO itab-txt.
    APPEND itab.

    CONCATENATE '<' 'SEARCHTERM>' wa_lfa1-sortl '</'
        'SEARCHTERM>'  INTO itab-txt.
    APPEND itab .


*" sleect company code from table lfb5
    SELECT SINGLE   bukrs INTO ccode FROM lfb5  WHERE
                                lifnr = wa_lfa1-lifnr.

    CONCATENATE '<' 'COMPCODE>' ccode '</'
        'COMPCODE>'  INTO itab-txt.
    APPEND itab .

*"ADD HOUSE NO AN STREET IN   ADDRESS1
    CONCATENATE '<' 'ADDR1>' wa_lfa1-stras '</'
        'ADDR1>'  INTO itab-txt.
    APPEND itab .

*"ADD CITY IN   ADDRESS2
    CONCATENATE '<' 'ADDR2>' wa_lfa1-ort01 '</'
        'ADDR2>'  INTO itab-txt.
    APPEND itab .

*"ADD DISTRICT IN   ADDRESS3
    CONCATENATE '<' 'ADDR3>' wa_lfa1-ort02 '</'
        'ADDR3>'  INTO itab-txt.
    APPEND itab .

    CONCATENATE '<' 'ADDR4>' wa_lfa1-pstlz '</'
        'ADDR4>'  INTO itab-txt.
    APPEND itab .

    CONCATENATE '<' 'TEL1>' wa_lfa1-telf1 '</'
        'TEL1>'  INTO itab-txt.
    APPEND itab .

    CONCATENATE '<' 'TEL2>' wa_lfa1-telf2 '</'
        'TEL2>'  INTO itab-txt.
    APPEND itab .

    CONCATENATE '<' 'VAT_REG>'
    wa_lfa1-stceg '</'
        'VAT_REG>'  INTO itab-txt.
    APPEND itab .

    CONCATENATE '<' 'VAT_LIAB>'
    wa_lfa1-stkzu '</'
        'VAT_LIAB>'  INTO itab-txt.
    APPEND itab .

    itab-txt = '</TRANSPORTER>' .
    APPEND itab.

  ENDLOOP.


 ITAB-TXT = '</TRANSPORTERLIST>'.
  APPEND itab.
*
*  itab-txt = '</TRANSPORTERLIST>' .
*  APPEND itab.

  PERFORM write_to_file.

ENDFORM.                    "CREATE_XML_vendor

*&---------------------------------------------------------------------*
*&      Form  write_to_file
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM write_to_file.
  DATA : txt(800).
  CONCATENATE zfname 'Transporter' sy-datum sy-uzeit '.XML'
                                INTO  filename .
  OPEN DATASET filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
  IF sy-subrc EQ 0.
    LOOP AT itab.
      MOVE itab-txt TO txt.
      CONDENSE txt.
      TRANSFER txt TO filename.
    ENDLOOP.
    WRITE : / 'FILE CREATED' , filename.
    COMMIT WORK.
    WAIT UP TO 1 SECONDS.
  ELSE.
    ROLLBACK WORK.
    WRITE: 'No Path Found'.
  ENDIF .
  CLOSE DATASET filename.
ENDFORM.                    "write_to_file

Regards,

santosh reddy

Read only

0 Likes
854

Thanx for a quick reply Santos & Sudhir.