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

Problem in HTML string conversion.

Former Member
0 Likes
2,704

Hi All.

String is truncated after special character “&” .

I am passing string from ABAP to outlook page.Contents are change into HTML format and displayed in outlook's mail body. If string contains special character “&”,getting problem.

Eg:Lv_string = ‘Production & Industrial plan’.

Expected output  is “Production & Industrial plan” in HTML.

Current output is “Production “.

Issue: String is truncated after special character “&”.

I have no issues if string contains no “&”.

Could you please help me to resolve this issue?

Thanks.

NJ.

8 REPLIES 8
Read only

former_member209120
Active Contributor
0 Likes
1,682

Hi Nagaraj,

Use and instead of '&'.

it will works

Pass values like this

<html>

<body>

<p>Production & Industrial plan</p>

</body>

</html>

Read only

0 Likes
1,682

Hi.

Thanks for your reply.

But i could not change string "&" to "and" because need to display what user is giving in abap.

Regards.

NJ

Read only

0 Likes
1,682

Hi Ramesh.

Checked your code.in code

loop at it_final into wa_final.

...

     concatenate '<td>' wa_final-carrid '</td>' into wa_objtxt-line.

     append wa_objtxt to t_objtxt.

.....

endloop.

Eg: at run time, if wa_final-carrid = 'Test & co' in above code. Is It will work?..Could you check and tell me Please.

Regards.

Nagarajan Jayaraman.


Read only

0 Likes
1,682

I tried like this way also i am getting &

*start-of-selection.
DATA:
t_objbin   TYPE STANDARD TABLE OF solisti1,   " Attachment data
t_objtxt   TYPE STANDARD TABLE OF solisti1,   " Message body
t_objpack  TYPE STANDARD TABLE OF sopcklsti1, " Packing list
t_reclist  TYPE STANDARD TABLE OF somlreci1" Receipient list
t_objhead  TYPE STANDARD TABLE OF solisti1.   " Header

DATA: wa_docdata TYPE sodocchgi1,   " Document data
       wa_objtxt  TYPE solisti1,     " Message body
       wa_objbin  TYPE solisti1,     " Attachment data
       wa_objpack TYPE sopcklsti1,   " Packing list
       wa_reclist TYPE somlreci1.    " Receipient list

DATA: w_tab_lines TYPE i.           " Table lines


TYPES : BEGIN OF ty_sflight,
         carrid     TYPE  sflight-carrid,
         connid     TYPE  sflight-connid,
         fldate     TYPE  sflight-fldate,
         price      TYPE  sflight-price,
         currency   TYPE  sflight-currency,
         planetype  TYPE  sflight-planetype,
         END OF ty_sflight.

TYPES : BEGIN OF ty_final,
         carrid(3) TYPE c,
         connid(4) TYPE c,
         fldate(8) TYPE c,
         price(17) TYPE c,
         currency(5) TYPE c,
         planetype(10) TYPE c,
         testfield(30TYPE c,
         END OF ty_final.

DATA : it_sflight TYPE TABLE OF ty_sflight,
        wa_sflight TYPE ty_sflight.
DATA : it_final TYPE TABLE OF ty_final,
        wa_final TYPE ty_final.




* Start-of-selection
START-OF-SELECTION.

   SELECT carrid
          connid
          fldate
          price
          currency
          planetype
          FROM sflight INTO TABLE it_sflight UP TO 10 ROWS.

   LOOP AT it_sflight INTO wa_sflight.
     wa_final-carrid     =    wa_sflight-carrid.
     wa_final-connid     =    wa_sflight-connid.
     wa_final-fldate     =    wa_sflight-fldate.
     wa_final-price      =    wa_sflight-price.
     wa_final-currency   =    wa_sflight-currency.
     wa_final-planetype  =    wa_sflight-planetype.
     wa_final-testfield  =    'Production & Industrial plan'.
     APPEND wa_final TO it_final.
     CLEAR wa_final.
   ENDLOOP.

* Creating message
   PERFORM create_message.

* Sending Message
   PERFORM send_message.

*&---------------------------------------------------------------------*
*&      Form  create_message
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM create_message .

**1 Title, Description & Body
   PERFORM create_title_desc_body.

**2 Receivers
   PERFORM fill_receivers.

ENDFORM.                    " create_message

*&---------------------------------------------------------------------*
*&      Form  CREATE_TITLE_DESC_BODY
*&---------------------------------------------------------------------*
*       Title, Description and body
*----------------------------------------------------------------------*
FORM create_title_desc_body.

*...Title
   wa_docdata-obj_name  = 'Email notification'.

*...Description
   wa_docdata-obj_descr = 'Email body in HTML'.

*...Message Body in HMTL
   wa_objtxt-line = '<html> <body style="background-color:#FFE4C4;">'.
   APPEND wa_objtxt TO t_objtxt.

   wa_objtxt-line = '<p> List of Test materials </p>'.
   APPEND wa_objtxt TO t_objtxt.

*   table display
   wa_objtxt-line = '<table style="MARGIN: 10px" bordercolor="#90EE90" '.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = ' cellspacing="0" cellpadding="3" width="400"'.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = ' border="1"><tbody><tr>'.
   APPEND wa_objtxt TO t_objtxt.

*   table header
   wa_objtxt-line = '<th bgcolor="#90EE90">Airline & Code</th>'.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = '<th bgcolor="#90EE90">Flight Connection Number</th>'.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = '<th bgcolor="#90EE90">Flight date</th>'.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = '<th bgcolor="#90EE90">Airfare</th>'.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = '<th bgcolor="#90EE90">Local currency of airline</th>'.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = '<th bgcolor="#90EE90">Test Field for Production</th>'.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = '<th bgcolor="#90EE90">Aircraft Type</th></tr>'.
   APPEND wa_objtxt TO t_objtxt.

*   table Contents
   LOOP AT it_final INTO wa_final.
     wa_objtxt-line = '<tr style="background-color:#eeeeee;">'.
     APPEND wa_objtxt TO t_objtxt.
     CONCATENATE '<td>' wa_final-carrid '</td>' INTO wa_objtxt-line.
     APPEND wa_objtxt TO t_objtxt.
     CONCATENATE '<td>' wa_final-connid '</td>' INTO wa_objtxt-line.
     APPEND wa_objtxt TO t_objtxt.
     CONCATENATE '<td>' wa_final-fldate '</td>' INTO wa_objtxt-line.
     APPEND wa_objtxt TO t_objtxt.
     CONCATENATE '<td>' wa_final-price '</td>' INTO wa_objtxt-line.
     APPEND wa_objtxt TO t_objtxt.
     CONCATENATE '<td>' wa_final-currency '</td>' INTO wa_objtxt-line.
     APPEND wa_objtxt TO t_objtxt.
     CONCATENATE '<td>' wa_final-testfield '</td>' INTO wa_objtxt-line.
     APPEND wa_objtxt TO t_objtxt.
     CONCATENATE '<td>' wa_final-planetype '</td></tr>' INTO wa_objtxt-line.
     APPEND wa_objtxt TO t_objtxt.
     CLEAR wa_final.
   ENDLOOP.


*   table close
   wa_objtxt-line = '</tbody> </table>'.
   APPEND wa_objtxt TO t_objtxt.


*   Signature with background color
   wa_objtxt-line = '<br><br>'.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = '<p> Regards,</p>'.
   APPEND wa_objtxt TO t_objtxt.
   wa_objtxt-line = '<p style="background-color:#1E90FF;"><b> Your Name</b></p>'.
   APPEND wa_objtxt TO t_objtxt.


*   HTML close
   wa_objtxt-line = '</body> </html> '.
   APPEND wa_objtxt TO t_objtxt.

* Document data
   DESCRIBE TABLE t_objtxt      LINES w_tab_lines.
   READ     TABLE t_objtxt      INTO wa_objtxt INDEX w_tab_lines.
   wa_docdata-doc_size =
       ( w_tab_lines - 1 ) * 255 + STRLEN( wa_objtxt ).

* Packing data
   CLEAR wa_objpack-transf_bin.
   wa_objpack-head_start = 1.
   wa_objpack-head_num   = 0.
   wa_objpack-body_start = 1.
   wa_objpack-body_num   = w_tab_lines.
*   we will pass the HTML, since we have created the message
*   body in the HTML
   wa_objpack-doc_type   = 'HTML'.
   APPEND wa_objpack TO t_objpack.

ENDFORM.                    " CREATE_TITLE_DESC_BODY

*&---------------------------------------------------------------------*
*&      Form  fill_receivers
*&---------------------------------------------------------------------*
*       Filling up the Receivers
*----------------------------------------------------------------------*
FORM fill_receivers .

   wa_reclist-receiver = 'i_am_a_fish@anchovyl.com'.
   wa_reclist-rec_type = 'U'.
   APPEND wa_reclist TO t_reclist.
   CLEAR  wa_reclist.


ENDFORM.                    " fill_receivers
*&---------------------------------------------------------------------*
*&      Form  send_message
*&---------------------------------------------------------------------*
*       Sending Mail
*----------------------------------------------------------------------*
FORM send_message .

* Send Message to external Internet ID
   CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
     EXPORTING
       document_data              = wa_docdata
       put_in_outbox              = 'X'
       commit_work                = 'X'     "used from rel.6.10
     TABLES
       packing_list               = t_objpack
       object_header              = t_objhead
       contents_txt               = t_objtxt
       receivers                  = t_reclist
     EXCEPTIONS
       too_many_receivers         = 1
       document_not_sent          = 2
       document_type_not_exist    = 3
       operation_no_authorization = 4
       parameter_error            = 5
       x_error                    = 6
       enqueue_error              = 7
       OTHERS                     = 8.

   IF sy-subrc NE 0.
     WRITE: 'Sending Failed'.
   ELSE.
     WRITE: 'Sending Successful'.
   ENDIF.
ENDFORM.                    " send_message

Message was edited by: Matthew Billingham - removed email address

Read only

arindam_m
Active Contributor
0 Likes
1,682

Hi,

I think in HTML the "&" might have been interpreted as mark of begin of character code or HTML code. Try passing &amp or &#38 might be interpreted correctly in HTML format.

Cheers,

Arindam

Read only

Former Member
0 Likes
1,682

Hi Nagaraij,

Yes it just like Arindam said, your HTML characters need to be escaped properly before displaying to user.

E.g. & escaped will become &amp.

There is this static method CL_ABAP_DYN_PRG=>ESCAPE_XSS_XML_HTML that will help you will the conversion.

E.g. Me & You after escaped will above method will become ME&#x20;&amp;&#x20;YOU, which will render correctly with HTML format and show to user.

Hope it helps. Cheers!

Read only

0 Likes
1,682

Hi Nguye.

Thanks for your reply,Could you please give me any sample for CL_ABAP_DYN_PRG=>ESCAPE_XSS_XML_HTML?

regards.

NJ

Read only

Former Member
0 Likes
1,682

Hi,

there is new function in ABAP for escaping HTML characters. I believe you can use it in this case.

Peter