Embedded carriage return

We have  an application with a textarea that is used for comments, free form text. It seems that if the user enters a line of text, then uses the enter key to go to the next line, it captures the carriage return. When the form is brought up for review, it is completely empty, yet all the data that was entered is in the table.
If the textarea is entered without using the enter key, the data displays when the form is reviewed.
I have never encountered this problem before and tried it and it does indeed do what is described above. I entered the textarea without using the enter key and the data displays. I went back to edit and added the enter key to the textarea and the form is completely blank.
What is going on and how can I prevent this from happening ?

The data is not missing. It is in table after submit. It is just not showing up when using html/form to review. Using <cfinput type="text" name="field" value="qryField">, etc..., when there is a carriage return used in the textarea.
We took the textarea data, scrubbed out the carrirage return characters, and reinserted in the table, and then entire form displayed. When I went back to edit the form and added the carriage returns, nothing displayed.
We have isolated the problem to the carriage return in the text area becuause that is the only thing we have touched so far.

Similar Messages

  • How to handle carriage return/linefeed embedded in text field as first char

    Hi,
    I am trying to use sqlldr to import text that is comma-separated and double quote-enclosed, but contains embedded carriage return/linefeed pairs. I have a control file which works for most cases and looks like this:
    LOAD DATA
    INFILE './foo.new'
    APPEND
    CONTINUEIF LAST PRESERVE (<>'"')
    INTO TABLE <tablename>
    FIELDS TERMINATED BY "," ENCLOSED BY '"'
    TRAILING NULLCOLS
    Unfortunately, this fails when the very first character of the text field is a carriage return/linefeed pair, e.g.,:
    "11","22","33","\r\nThis is the fourth field","","","","",""
    In that case, what is actually the opening double-quote for the fourth field, is interpreted by the CONTINUEIF clause as the end of that line. Can anyone please point me to a solution?
    thanks.
    stan.

    Thanks for the suggestion. Unfortunately, I've already tried it, and it doesn't help. I believe the problem is that sqlldr tries to figure out where each record is delimited before it parses out the field. So, any field-level trimming depends on sqlldr first determining that the cr/lf is actually part of that record, and not an indication of the start of a new record (and it's doing the latter right now). Fwiw, Python's csv parser will handle this type of record just fine.
    regards.
    stan.

  • How to replace an html br tag in the field to a carriage return?

    Hi All,
    I have a requirement to replace the <<br>> tag in the text field with a carriage return character "
    Currently the data in the Comments field looks like :
    "20100627 -115541 SECURITY WILL MEET AT MAIN ENTERANCE"<<<br>>"20100627 -115605 Officer notified: ALPHA : DF-10-011891; ST VINCENTS HOSPITAL, ST VINCENTS HOSPITAL, SAINT VINCENTS HOSP, MERRION RD, MERRION, BOOTERSTOWN, DUBLIN; FIRE/ALARM ACTIVATION;'<<br>>'20100627 -115609 PDA MOBILISED AFTER AMENDMENT VIN1'<<br>>'20100627 -"
    The <<br>> break tag was used for HTML purpose and now I would like to replace it with a carriage return character for BI Publisher report.
    Appreciate3 your help.
    Regards
    B
    Edited by: Bees on Jul 21, 2010 4:36 AM

    I downloaded your html template and it works fine for that template and the xml, but in my case it is not working. I need to assign the template just for one field called "Comments" where I need <<br>> tag to work.
    I modified the html as you suggested with the Tidy software, here is what I have done may be you can help me here. I very much appreciate your help.
    1. I have imported the template with the tag <<?import:file:///C:/dfb/biPub/code/htmlmarkup.xsl?>> and it works fine.
    2. Assigned the xsl - assign-template to the comments field.
    <xsl:apply-templates select="Fact._COMMENTS_" />
    *** IncidentsFact_._COMMENTS is the field name where it has <<br>><</br>> embedded into the comments data.
    Edited by: Bees on Jul 30, 2010 6:29 AM

  • Carriage return in TextArea Flash component in Director 11

    Hello.
    I have a very big problem now
    Neither embedded Flash movies with textareas or standard flashcomponent TextArea from Director tool pallete do not react on keyboard button "Enter" pressings. There is no carriage return after ENTER button is pressed. The same with End and Home buttons!!
    Please help with any advise.
    Is that a common bug?
    See attached test.dir file. Try to type something in both textareas and then press ENTER button on keyboard. You should realize then what I'm crying about(((
    Alexey

    I too struggled with this issue. If you're looking for a solution still I have written one. Used the attached script in your Flash document, I spent a few days going back and forth between Director and Flash to figure this one out. Basically what I do is attach a key listener to the movieclip containing the textfield object that on keyDown gets the currently focused textField (this way it will work with multiple textField objects). After that it determines if the enter key is hit and if it is inserts a "/n" break at the selection starting point. The only issue is if you select a whole word in the textField and hit enter a break will be placed at the beginning of the highlighted word and that word will not be deleted. Hopefully this helps.
    -b
    // BY / contempt.productions inc.  10.30.09
    // Director 11.5 fix for bug where dynamic textfields don't register ENTER or RETURN key in Flash sprites
    // Solution involves inserting a \n carriage return wherever cursor insertion point starts.
    // In Flash this adds 2 carriage returns for every hit of the enter/return key
    // In Director 11.5 it adds 1 carriage return
    // Change "body_txt" to represent the dynamic textField object this script is referencing
    myListener = new Object();
    myListener.onKeyDown = function() {
    _global.textFocus = Selection.getFocus();
    // get a string of the path to the currently focused textField object
    _global.selStart = Selection.getBeginIndex();
    // get the insertion point, this is the start of any selection
    var multiText = body_txt.text;
    // get the text from the current textField object
    var theKey = Key.getCode();
    // get the current keyCode (13 is the keyCode for "enter/return" key)
    if (eval(textFocus) == eval(body_txt)) {
    // determine if focused textField and current textField are the same
    if (theKey == 13) {
    // enter key is pressed
    var firstPart = multiText.slice(0, selStart);
    // get the current textField's text from the beginning to the insertion point
    var secondPart = multiText.slice(selStart, multiText.length);
    // get the textField's text from the insertion point to the string's end
    body_txt.text = firstPart+"\n"+secondPart;
    // concatenate the first and second part of the textField's text with a carriage return
    Selection.setSelection(selStart+1,selStart+1);
    // place the text insertion point properly
    myListener.onKeyUp = function() {
    var theKey = Key.getCode();
    Key.addListener(myListener);

  • Serious Bug - Carriage Returns in Caption field

    LR for Windows does not handle Carriage Returns/Line Feeds correctly in the metadata Caption field.
    Windows Vista SP1, 32-bit
    Adobe Lightroom 2.4
    Library Module, Grid View
    Initial settings:
    LR Menu bar > Edit > Catalog Settings... > Metadata tab > Editing
    uncheck Offer suggestions from recently entered values
    uncheck Automatically write changes into XMP
    LR Menu bar > View > View options... > Grid View tab > Cell Icons
    check Unsaved Metadata
    Metadata panel: choose the Default Metadata Set.
    Import a JPG file into LR which contains no IPTC metadata.
    LR Menu bar > File > Import Photos from disk... > Choose the JPG file
    In the Import Photos dialog box, Information to Apply:
    Develop Settings: None
    Metadata: None
    Keywords: None
    Click Import.
    Click thumbnail of the JPG file which was Imported.
    In the Metadata panel click Caption field.
    Type "Word1" in the Caption field and press Return/Enter key.
    The Caption field loses focus.
    The Caption field should not lose focus when the Return/Enter key is pressed.
    Click the Caption field and press the Delete key to remove "Word1" from the field.
    In the Caption field type "Word1" and press Ctrl+Return/Enter key.
    As expected, the cursor moves to the line below "Word1" and the Caption field remains in focus.
    Type "Word2" and press Ctrl+Return/Enter key.
    As expected, the cursor moves to the line below "Word2" and the Caption field remains in focus.
    Click the JPG thumbnail and notice a down-arrow icon appears on the thumbnail indicating that the metadata for this JPG has been changed in the LR catalog and that it does not match the IPTC metadata that is embedded in the JPG file on the hard disk. Also notice in the Metadata panel, Metadata Status is "Has been changed".
    Click the down-arrow on the JPG thumbnail.
    See the dialog box that pops up saying "The metadata for this photo has been changed in Lightroom. Save the changes to disk?"
    Click Save.
    Notice on the JPG thumbnail, the down-arrow icon remains visible and does not disappear as it should if the JPG's metadata in the LR catalog and the metadata embedded in the JPG file on the hard disk were the same.
    Also notice in the Metadata panel, Metadata Status is "Has been changed".
    Click LR Menu bar > Edit > Catalog Settings... > Metadata tab > Editing
    check Automatically write changes into XMP
    Click OK.
    Notice on the JPG thumbnail, the down-arrow icon blinks rapidly. Also notice in the Metadata panel that "Metadata Status: Has been changed" blinks rapidly.
    Click LR Menu bar > Edit > Catalog Settings... > Metadata tab > Editing
    uncheck Automatically write changes into XMP
    Notice the blinking stops.
    Using a program that properly handles Carriage Returns/Line Feeds in IPTC metadata, such as Photo Mechanic 4.5, edit the metadata of another JPG file by typing "Word1", pressing the Return/Enter key, and typing "Word2" in the Caption field.
    Import that JPG into LR.
    LR Menu bar > File > Import Photos from disk... > Choose the JPG file
    In the Import Photos dialog box, Information to Apply:
    Develop Settings: None
    Metadata: None
    Keywords: None
    Click Import.
    Click the JPG thumbnail in LR Library Module.
    Notice in the Metadata panel, "Word1Word2" appears in the Caption field, in both the Default Metadata Set and the Large Caption Metadata Set. The CR/LF has been stripped away.
    CR/LFs typed into or pasted into the Large Caption set, also result in the persistence of the down-arrow icon even after metadata is saved to disk. And, if the Automatically write changes into XMP option is checked, the down-arrow icon blinks rapidly. And, if you view the Default set, notice Metadata Status: "Has been changed" blinks rapidly.
    When metadata is saved to disk, the down-arrow icon should disappear from the thumbnail, and in the Metadata panel, Metadata Status should read "Up to date". I would guess the blinking behavior indicates LR is stuck in some kind of loop - it is trying to save the metadata to disk and verify that it has been saved, but it keeps going round in a vicious circle. I also notice there is increased hard drive activity during the blinking behavior.

    Here is a related problem (using Lightroom 3.3, Windows).  When I import photos that have the IPTC caption field created in another program (ThumbsPlus, or IrfanView), carriage returns in the original do not show up in Lightroom.  Does anyone know why, or what to do about it?  I'd like to import lots of photos with existing captions, and some have carriage returns I would like to retain.
    For me, adding a carriage return to the Caption metadata within Lightroom works fine.  In the Library view, using the right panel, I can enter a carriage return using Ctrl+Enter in the Metadata > Default view or in the Metadata > IPTC view.  I can enter a carriage return directly with the Enter key (no Ctrl required) in the Metadata > Large Caption view.  After these entries are saved to the file, they show up correctly in other programs (IrfanView > Image > Properties > IPTC Info)

  • Carriage Return

    Hi Friends,
    Few days back one of clients of my company had a problem with carriage Returns in the data.To make it simple we take column data from the tables and output it to a flat file like notepad onto the server.This process is repeated for a number of lines.So before outputting the line I used Replace chr(13) and Chr(10) with Nulls and then output the line to the file.
    This was working fine as they had no more carriage returns but recently they noticed that one of the fields loses two spaces...It is a description field and we rpad it to 240 chars.It happens with only few records and with rest it is ok.....Due to this all records are not in the same line and that is the problem.
    Does anyone know that if if chr(13) or chr(10) has any problems with Long fields or number of spaces or something...I have done so many hit and trials but nothing works...Coul you please help me out.

    Thanks for the reply...
    I'm not sure that the column data has embedded CR's but customer did have the problem of carriage returns in the file.....I have to replace them with NULL and not spaces as it is a postion based file and I cannot change the postions...replacing with spaces means more characters which they don't wan't.
    Thanks
    Mohit

  • Newline/carriage return replacement

    I have an output from a database that has one column with embedded newlines or return carriages as well as a newline at the end of the record. When i export the data to a text file, the embedded newline/returns seem to contain those characters. I have been trying to use sed to replace the newlines but it does not work. I have used replacing the return carriage and that works but it seems to keep a character for either newline or carriage return. Is there a way to remove newlines inside a string while keeping the legitimate newline for the end of the record using either sed,awk or perl or any other tool. I am considering C but i may be overkill. I tried perl but since i am not versed in it i have been having a difficult time with it.
    This is what i have been using: sed 's/\r//g' infile > outfile
    Thanks

    Try tr -d '\r'

  • How do I add either a line Feed or Carriage Return to a column?

    I am using
    "Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production"
    "PL/SQL Release 11.2.0.1.0 - Production"
    "CORE 11.2.0.1.0 Production"
    "TNS for Linux: Version 11.2.0.1.0 - Production"
    "NLSRTL Version 11.2.0.1.0 - Production"
    I would like to know when merging two results like so:
    select
         'Answer: ' || answer_value || 'Date: ' || date || 'Name' || name_value as notes
    from table
    to show as in the column:
    Answer: B
    Date: 07-11-2013
    Name: Johnny
    I get something like this
    Answer: B Date: 07-11-2013 Name: Johnny
    Is there a way to use Line Feed or Carriage Return?
    I tried using the char(10) but did not work.
    Also where are the instruction to be able to place the query into a format to allow others to see? Originally I learned to use code { } on this site, but they changed it.
    example:
    select
    'Answer: ' || answer_value || 'Date: ' || date || 'Name' || name_value as notes
    Testing it above.
    Plus what happened to the preview button to see if I posted it correctly?
    The section on" how to ask a question "did not have much about this.

    You may be going about this the wrong way.  Such formatting is normally left to the reporting tool.
    Embedding formatting junk (like cr/lf) in your data is not a good idea.  Not only does it not belong there, but it might not always work.  CR and/or LF are platform specific.

  • Losing carriage returns in textarea / using plpdf to generate report

    Hello,
    I'm using Apex 3.1.1 and Oracle 10g database. I would appreciate any suggestions on how I can preserve carriage returns in a textarea when sending the text to a package that generates a report. Please see example of current problem (below code). I'm using an onkeypress function to check for keycode = 13 when the Enter key is pressed -- that is working. I also created an alert to show the url value -- I can see the text on multiple lines, so that appears to be working as well. The textarea value parameter in the package is defined as varchar2. Per the support folks at plpdf.com, chr(13) indicates an explicit line break, and they told me to check my text. I don't know what I'm missing. Thank you for any suggestions you may have.
    Lisa
      function callPLPDFRep()
          var url;
          url = '#OWNER#.' + $x('P&APP_PAGE_ID._REPORT_PROCEDURE').value + '?' + build_params();
          w = open(url, "winPDFRep", "Scrollbars=1, resizable=1, width=800, height=600");
          if (w.opener == null)
            w.opener = self;
            w.focus();
       function build_params()
        var lparms;
        lparms = '';
        lparms = lparms + '&p_incorrect=' + $x('P212_INCORRECT').value;
        lparms = lparms + '&p_correct=' + $x('P212_CORRECT').value;
        return lparms;
      }Text in textarea:
    035 5768 06/15/2010
    035 5768 06/16/2010
    035 5768 06/17/2010
    Printout on report:
    035 5768 06/15/2010035 5768 06/16/2010035 5768 06/17/2010

    Hello Michael,
    Thank you for your response. After doing some researching and experimenting, here's what I have found so far.
    First, using an onkeypress function to alert the keycode, a chr(13) is being returned when I press the Enter key in the textarea.
      function check_Enter(e)
        var keynum;
        var textval = $x('P212_INCORRECT').value;
        if(document.all) 
          keynum = e.keyCode
        else
          keynum = e.which
        alert(keynum);     
      }Next, when I access the value of the textarea via javascript with $x('P212_INCORRECT').value, the chr(13) is automatically converted to the newline character (\n). In an attempt to replace the \n with a \r so plpdf will recognize the carriage return, I added a javascript replace function before sending the text to the package, and it does not work.
      function build_params()
        var lparms;
        lparms = '';
        lparms = lparms + '&p_incorrect=' + $x('P212_INCORRECT').value;
        lparms = lparms + '&p_correct=' + $x('P212_CORRECT').value;
        alert(lparms.split(/\n/g).length - 1);  // confirm that a newline character is found
        lparms = lparms.replace( new RegExp( "\n", "g" ), "\r");  // replace newline character with carriage return
        return lparms;
      }When I tried to replace the newline character (\n) with chr(13), the chr(13) is printed out like it is text instead of a special character. In order to test that I have the correct syntax for the replace function in javascript, I tried replacing \n with '...', and then in the package that generates the PDF, I replaced the '...' with chr(13). That works!
    In response to your comment about the PLPDF procedure for multi line section, I am using: plpdf.PrintMultiLineCell(180, 6, l_incorrect, '0', 0). As a newbie to javascript, I am not sure why replacing \n with \r is not working. Can you advise how to use a chr(13) in the javascript replace function and have it recognized as a special character and not text? I don't know how to view special characters in the textarea other than checking for them with javascript.
    Thanks, Lisa

  • What is escape character for for Carriage Return, Line Feed, Form Feed

    Hi
    I need to a text file which should have following characters
    Carriage Return, Line Feed, Form Feed
    How do i insert them in a string
    i know "\f" is carriage return,
    but what are characters for line feed and form feed
    Ashish

    uncle_alice wrote:
    jverd wrote:
    remus.dragos wrote:
    I forgot that it does not exist in Java. A good thing
    from my point of view.Running the following makes my computer beep.
    public class Bell {
    public static void main(String... args) {
    System.out.println("\u0007");
    Sure, sending a BEL character to the console rings the bell, but that has nothing to do with Java. Anyway, I think he meant Java doesn't support the \a escape sequence in string and char literals.
    >
    >
    >I forgot that it does not exist in Java. A good thing
    from my point of view.
    Running the following makes my computer beep.
    public class Bell {
    public static void main(String... args) {
    System.out.println("\u0007");
    } Sure, sending a BEL character to the console rings the bell, but that has nothing to do with Java. Anyway, I think he meant Java doesn't support the \a escape sequence in string and char literals.
    Ah, I thought he was saying Java doesn't support ringing the bell.

  • Please explain me how I can use Form feed(\f) and Carriage return(\r)

    what is Form feed(\f) and Carriage return(\r)?
    Please explain to me.
    Thank you.

    These control characters aren't used much these days except that if you example a Windows or MSDOS text file in a binary editor you'll find each line ends with "\r\n". However when reading or writing text through classes these carriage returns will be added and removed automatically so your program doesn't see them.
    The controlls date back to teletype machines which operated rather like typewriters. Cariage return, as it's name implied, caused the print head to move back to the start of the line, line feed advanced a line (without, necessarilly, returning the carriage) and formfeed skipped to the next page.
    Newline on these machines was always "return, linefeed" because executing the carriage return on these machine could take too long. The early machines had only a single character buffer so that they had to executed the characters as quickly as they arrived. So doing the linefeed after the carriage return gave the carriage more time to return. On some teletypes if you did "linefeed, return" then the first character of the new line would often be printed somewhere in the middle of the line.
    This is the origin of the MSDOS/Windows end of line sequence.
    Many printers will still respect formfeed if printing is direct. Some will take carriage return without linefeed to allow you to start again overprinting the same line.
    However printing, these days, is seldom direct but done in bitmap form.

  • On Windows 8.1 and Firefox 36.0.1 the textarea in forms has no carriage returns. Earlier versions the forms work. Is there a fix for this?

    Prior to this version of Firefox 36.0.1, the <textarea> in my HTML forms was working; displaying carriage returns. In version 36.0.1 they no longer function properly. Instead when I enter a carriage return, it displays a space instead of a newline. I went to the most basic textarea testing
    &lt;textarea&gt; name="comments" cols=20 rows=10 &lt;/textarea&gt;
    to make sure I wasn't introducing anything with other languages.
    I am using Windows 8.1 Pro. I rolled back to Firefox 35.0 and everything works fine. I install 36.0.1 and it stops working.
    I have access to another Laptop also running the same version of windows and Firefox and it appears to be doing strange things as well. I am suspicious in that I started noticing this immediately after a windows upgrade last night. The laptop also experienced the issues it is having immediately after a windows update yesterday evening.
    I have yet another PC running a different version of windows and Firefox and it too works fine. It looks like the issue is where there is windows 8.1 Pro and Firefox 36.0.1.
    Do you guys have any idea what is going on here?
    Thanks
    JMRAUPE57

    The current release supports the white-space property for a text area and it is possible that the website uses white-space: pre instead of white-space: pre-wrap.
    The former will prevent Firefox from wrapping the text.
    You can check that in the Inspector via the right-click context menu.
    *https://developer.mozilla.org/Tools/Page_Inspector
    See:
    *https://developer.mozilla.org/en-US/Firefox/Releases/36#CSS
    <blockquote>The white-space property is now working on <textarea> HTML elements (bug 82711).</blockquote>
    See also:
    *[[/questions/1050456]] Word wrap problems in 36.0

  • Problem with "carriage Return" or "Line Feed" in a table

    Hello,
    I need help with the function Zeichen(), so called it in german, I'm not sure if it is char() in english.
    In Pages Version 4.0.1 (746) I've created a table in Pages with this function to make an "carriage Return" in a cell.
    Here an example: { ="Hello" & Zeichen(10) & "World" }, in the cell is now:
    | Hello |
    | World |
    But in Pages Version 4.0.3 (766) this function ZEICHEN() not allow the number 10 and other till 32 (I allready read the manual and understand this problem).
    Anybody an idea to make a "Carriage Return" or "Line feed" in a formular, in a cell, in a table, in Pages?
    Thanks
    Detlev Kormann

    kdetlev wrote:
    Your workaround will not be possible in my table, because there is no empty cell in the table, but I think it is also a good help too.
    *In fact I forgot that you are using a table in Pages.*
    Remaining on my first idea, In Numbers we may achieve the same goal using an auxiliary table with a single cell containing the needed line break.
    If this table is named "LineBreak",
    the formula will be:
    ="Hello"&LineBreak :: $A$1&"World"
    *In Pages, here is my workaround:*
    Enter the cell
    type a§b
    don't type the character § but ctrl + return.
    The cell will contain
    a
    b
    with the arrow, move before the a
    type =B2&"
    delete the original a
    move to the right
    delete the original b
    type "&C7
    Yvan KOENIG (VALLAURIS, France) mercredi 7 octobre 2009 17:20:04

  • My test instrument is outputting a 5 line string but labview only read until the carriage return. how can I get it to read the whole string?

    I have a labview sub-VI reading the string being outputted by a pH meter.  The meter outputs a 5 line string and labview is only reading up to each lines carriage return, there-by giving me 5 separate strings is there anyway to rectify this and have the 5 line read as one string?
    NAS1
    St Petersburg FL
    Labview 2010

    Yes, LabVIEW will automatically update. What happens is that the old serial functions still exist in 7.1 and above but the code (the block diagram) has been modified to use VISA functions. Older versions of LabVIEW are fully supported in this manner. The only way you can avoid the automatic update is to have the old serial functions in an llb and your top level VI refer to these. Having any VI that was part of vi.lib in an llb is a very bad idea and the way to fix things is to remove any VIs in the llb that are part of the LabVIEW distribution.
    I don't remember how the old serial config worked and what the new version does with the VISA Configure Serial Port. Your program should only have a single serial config and you might just be able to directly replace that with the VISA configure Serial Port.

  • Help needed with Carriage Return in Unicode system

    Hi Experts,
    we have an issue with one of our programs regarding the carriage return that is used when creating a csv file. This issue has only came about because of the recent upgrade to ECC6.
    The main change to the program was the redefinition of the line feed variable.
    Existing statement was --> DATA: v_lf TYPE x VALUE '0D'.
    This was then replaced with
    New statement --> DATA: v_lf type c VALUE cl_abap_char_utilities=>cr_lf.
    Since this change has been implemented, the csv file that is created and sent on as an attachment via the function SO_NEW_DOCUMENT_ATT_SEND_API1 is now not displayed correctly.
    When looking at the attachment in trn SOST, a message is also displayed saying the file is not in a recognizable format when selecting the file to view.
    The hex value for cl_abap_char_utilities=>cr_lf is 000D000A and this seems to be causing the issue.
    I've also tried using Function FI_DME_CHARATERS as I only really want to use the CR. However, the hex value for this is 000D and not 0D.
    Is there any way of converting this to have a hex value of 0D?
    Thanks in advance,
    Chris

    HI,
    Sorry it is not the CONTENTS_TXT it is CONTENTS_BIN. Instead of CONTENTS_BIN you need to pass to CONTENTS_HEX
    Check my Code..i have used the CONTENTS_HEX instead of CONTENTS_BIN
    DATA: l_tab_lines TYPE i,
            l_string TYPE char300,
            l_line TYPE string.
      CONSTANTS : l_c_255(255)  TYPE c VALUE '255',
                  l_c_txt(3)    TYPE c VALUE 'TXT'.
      DATA: lt_reclist  TYPE STANDARD TABLE OF somlreci1,       "Recipients
            lt_objpack  TYPE STANDARD TABLE OF sopcklsti1,
            lt_objhead  TYPE STANDARD TABLE OF solisti1,
            lt_objtxt   TYPE STANDARD TABLE OF solisti1,     "Body of EMail
            lt_objbin   TYPE STANDARD TABLE OF solisti1."Attachment of EMail
      DATA: l_doc_chng TYPE sodocchgi1,     "attributes of document to send
            l_reclist  LIKE LINE OF lt_reclist,
            l_objpack  LIKE LINE OF lt_objpack,
            l_obj      LIKE LINE OF lt_objhead.
      DATA :
        l_hex LIKE solix,
        lt_contents_hex LIKE STANDARD TABLE OF solix ,
        conv TYPE REF TO cl_abap_conv_out_ce,
        l_buffer TYPE xstring,
        l_hexa(510) TYPE x.
    * Completing the recipient list
      l_reclist-receiver = p_emailid.
      l_reclist-express  = 'X'.
      l_reclist-rec_type = 'U'.
      APPEND l_reclist TO lt_reclist.
      CLEAR  l_reclist.
    * Body of Email Message
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
      l_obj-line = '<html>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = '<body>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<p><code>Hello,</p></code>'(t04).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = cl_abap_char_utilities=>newline.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
      CONCATENATE
       '<p><code>'(f01)
       'Please click the link to access the Confirmation Form.'(t01)
       'Kindly complete the same and return it to the HR contact 15 days' &
       ' prior to the date of confirmation of the employee.'(t02)
       '</p></code>'(f02) INTO l_obj-line SEPARATED BY space.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = cl_abap_char_utilities=>newline.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
      CONCATENATE '<a href="' text-l01 text-l02 '">'
             INTO l_obj-line.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      CONCATENATE  '<p><code>'(f01)
                   'Link to Confirmation Forms'(034)
                   '</p></code>'(f02)
                   '</a>'
             INTO l_obj-line.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = cl_abap_char_utilities=>newline.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
      l_obj-line = '<p><code>The details of the employees ' &
                   'are as follows:</p></code>'(017).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = cl_abap_char_utilities=>newline.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.       " Blank line
    * Table headings in the Mail Body
      l_obj-line =  '<table border="1">'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<tr>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =   '<th><p><code>Name</p></code></th>'(030).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<th><p><code>Department</p></code></th>'(031).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<th><p><code>DOJ</p></code></th>'(032).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '<th><p><code>Confirmation Date</p></code></th>'(033).
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line =  '</tr>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
    ** Body of Email Message
    * Email Attachment
    * Append headings
      CONCATENATE 'Employee No.'(002)
                  'Employee Group'(016)
                  'Employee Name'(001)
                  'Designation'(003)
                  'Joining Date'(004)
                  'Department'(005)
                  'Branch/Location'(006)
                  'Unit'(007)
                  'Confirmation Due'(008)
                  'Form sent on'(009)
                  'Form Return by'(010)
                  'Employee Group'(016)
                  'Qualification'(012)
                  'Trainee Category'(013)
                INTO l_string
           SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
      APPEND l_string TO lt_objbin.
      CLEAR l_string.
      APPEND INITIAL LINE TO lt_objbin.
      LOOP AT p_emp_details INTO i_emp_details_line.
        CONCATENATE i_emp_details_line-pnalt
                    i_emp_details_line-egroup
                    i_emp_details_line-ename
                    i_emp_details_line-stext
                    i_emp_details_line-srvdt
                    i_emp_details_line-ltext
                    i_emp_details_line-pbtxt
                    i_emp_details_line-btrtx
                    i_emp_details_line-mndat
                    i_emp_details_line-fsdate
                    i_emp_details_line-frdate
                    i_emp_details_line-egroup
                    i_emp_details_line-ptext
                    i_emp_details_line-ftext
               INTO l_string
          SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
        APPEND l_string TO lt_objbin.
        CLEAR l_string.
        l_obj-line =  '<tr>'.
        APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
        CONCATENATE '<td>' '<p><code>'(f01)
                     i_emp_details_line-ename '</p></code>'(f02) '</td>'
                     INTO l_string.
        APPEND l_string TO lt_objtxt.   CLEAR l_string.
        CONCATENATE '<td>' '<p><code>'(f01)
                    i_emp_details_line-ltext '</p></code>'(f02) '</td>'
                    INTO l_string.
        APPEND l_string TO lt_objtxt.   CLEAR l_string.
        CONCATENATE '<td>' '<p><code>'(f01)
                    i_emp_details_line-srvdt '</p></code>'(f02) '</td>'
                    INTO l_string.
        APPEND l_string TO lt_objtxt.   CLEAR l_string.
        CONCATENATE '<td>' '<p><code>'(f01)
                    i_emp_details_line-mndat '</p></code>'(f02) '</td>'
                    INTO l_string.
        APPEND l_string TO lt_objtxt.   CLEAR l_string.
        l_obj-line =  '</tr>'.
        APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      ENDLOOP.
      l_obj-line = '  </table>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = '</body>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      l_obj-line = '</html>'.
      APPEND l_obj TO lt_objtxt.   CLEAR l_obj.
      IF r_cprob EQ 'X'.
        l_string = 'Completion of probation List'(018).
      ELSE.
        l_string = 'Completion of extension of probation List'(035).
      ENDIF.
      APPEND l_string TO lt_objhead.
    * APPEND object_header.
      CALL FUNCTION 'SO_RAW_TO_RTF'
        TABLES
          objcont_old = lt_objbin
          objcont_new = lt_objbin.
      LOOP AT lt_objbin INTO l_line.
       conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' endian = 'B').
        CALL METHOD conv->write( data = l_line ).
        l_buffer = conv->get_buffer( ).
        MOVE l_buffer TO l_hexa.
        MOVE l_hexa TO l_hex-line.
        APPEND l_hex TO lt_contents_hex.
      ENDLOOP.
    * File name for attachment
      CONCATENATE 'Completion of probation List'(018)
                   sy-datum '.XLS' INTO l_obj SEPARATED BY space.
      APPEND l_obj TO lt_objhead.
    * Email Body Details
      CLEAR l_tab_lines.
      DESCRIBE TABLE lt_objtxt LINES l_tab_lines.
      l_doc_chng-doc_size = ( l_tab_lines - 1 ) * 255 +
                              STRLEN( l_string ).  "size of doc in bytes
      l_doc_chng-obj_name = sy-repid.
      l_doc_chng-obj_langu = sy-langu.
      l_doc_chng-obj_descr = l_string.
      l_doc_chng-sensitivty = 'P'.          "  Send mail as a confidential
      l_objpack-head_start = 1.
      l_objpack-head_num   = 1.
      l_objpack-body_start = 1.
      l_objpack-body_num   = l_tab_lines.
      l_objpack-doc_type   = 'HTML'. "l_c_txt.
      APPEND l_objpack TO lt_objpack.
      CLEAR  l_objpack.
    * Email Attachment Details
      CLEAR l_tab_lines.
      DESCRIBE TABLE lt_objbin LINES l_tab_lines.
    * Creation of the entry for the compressed attachment
      l_objpack-transf_bin = 'X'.
      l_objpack-head_start = 1.
      l_objpack-head_num   = 1.
      l_objpack-body_start = 1.
      l_objpack-doc_type   = 'XLS'.
      l_objpack-obj_name   = l_obj.
      l_objpack-obj_descr  = l_obj.
      l_objpack-body_num   = l_tab_lines.
      l_objpack-doc_size   = l_tab_lines * l_c_255.
      APPEND l_objpack TO lt_objpack.
      CLEAR  l_objpack.
    * Send the document
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
        EXPORTING
          document_data              = l_doc_chng
          put_in_outbox              = ' '
          commit_work                = 'X'
        TABLES
          packing_list               = lt_objpack
          object_header              = lt_objhead
    *      contents_bin               = lt_objbin
          contents_txt               = lt_objtxt
          contents_hex               = lt_contents_hex
          receivers                  = lt_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.

Maybe you are looking for