Creating a linebreak/carriage return in a cell

Hi,
In Excel I can start a new line for text by typing option, apple return.
How can I do this in numbers?
Regards,
Keith

kddalias wrote:
Hi,
In Excel I can start a new line for text by typing option, apple return.
How can I do this in numbers?
This kind of question is responded in resources delivered by Apple.
May you be fair enough to look at them before asking here ?
Yvan KOENIG (VALLAURIS, France) mercredi 7 juillet 2010 14:11:13

Similar Messages

  • Numbers ought to keep check box that allows carriage return within a cell universally within a table

    Apple really fell asleep at the switch when releasing its latest version of Numbers 2013 (3.2), because it ignored the universal learning styles of human beings who have used the software in earlier releases and seemed to change features with little consideration for the community as a whole.
    For example, why would you delete the feature that allows a user to turn-on or turn-off the "carriage return within a cell".  It seems smart of them to add the abilityt to simply press the Option key and hit return at the same time to allow a carriage return within a cell, but why would you DELETE the feature that allows returns within a cell universally within a table? 
    And then the Inspector got completely revised.
    Time saved in creating technologies gets eaten up in having to relearn technology every time a new release is created that doesn't build on the previous release very well.

    Adamo,
    You are complaining to fellow users.  It is best to post your feedback to Apple using the menu item
    "Numbers > Provide Numbers Feedback"

  • 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

  • Carriage returns no longer available in Numbers

    I have just updated to the latest version of Numbers on my iPad following the update to iOS 5.  It appears that the new version has annoyingly lost the ability to insert a carriage return within a cell. The onscreen keyboard now diplays a "Next" key where the "Return" used to be.  I have tried every key combination on the onscreen and Mac bluetooth keyboard but cannot find how to insert a carriage return.  This is driving me nuts - can anyone help with this??
    Thanks

    In the previous version of Numbers i.e. before the iOS 5 update I could execute a carriage return by calling the on screen keyboard up.  However, the on screeen keyboard now has a "Next" key in place of a "Return" key which moves the cursor down to the cell below.  I have escalated this to Apple as I am sure this can't be intentional behaviour.

  • Using a Macro to add a Carriage Return after each data entry within all cells of an imported range of cells

    I have a macro that copies data from a Target workbook then pastes the data into a destination workbook.  I then wish to use lookups in the destination workbook to view specific data from the pasted range of data on a separate sheet. 
    The problem is, the cells that contain numbers from the pasted data have the green dogeared error flags associated with the cell. The only way I can make a lookup function work, is to go to each cell and manually enter a carriage return after each entry. 
    The code for the macro is given below.  What can be done so that the pasted data contains no errors associated with the number cells?  Or can a second macro be written to clean the data.  If so can you help me out?  Thanks in advance.
    Kindest Regards
    Sub ImportData()
     ' ImportData Macro allows user to select an Excel workbook (i.e. Orchestrate Excel Output),
     ' then copy & paste it into the MediaSpreadsheet.
        Dim wbk As Workbook
        Set wbk = Application.Run("MediaSpreadsheet_1.0.xlsm!OpenFile")
        If wbk Is Nothing Then
            Beep
            Exit Sub
        End If
        Set wbk = ActiveWorkbook
        Range("A9:S116").Copy
        Workbooks("MediaSpreadsheet_1.0.xlsm").Activate
        Sheets("OrchestrateData").Select
        Range("A1").Select
        ActiveSheet.Paste
        With Selection.Font
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
        End With
        With Selection.Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        Selection.Borders(xlEdgeLeft).LineStyle = xlNone
        Selection.Borders(xlEdgeTop).LineStyle = xlNone
        Selection.Borders(xlEdgeBottom).LineStyle = xlNone
        Selection.Borders(xlEdgeRight).LineStyle = xlNone
        Selection.Borders(xlInsideVertical).LineStyle = xlNone
        Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
        wbk.Close
        Sheets("MediaSchedule").Select
    End Sub
    DAPulliam64

    Hi DAPAugust64,
    The green "dogeared error flags" of the cells means that you paste numbers in these cells, but they're formated as Text.
    So you need to change the cells back to the correct format so that the lookup function works fine. You can simply call this method after pasting:
    ActiveSheet.Cells(1, 1).NumberFormat = "General"
    ActiveSheet.Cells(1, 1) = ActiveSheet.Cells(1, 1).Text
    Or use PasteSpecial method to paste the numbers as well as it's format:
    https://msdn.microsoft.com/en-us/library/office/ff837425.aspx
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Carriage return in a WD table cell

    Hi,
    I have data in a table cell which I would like to present better by adding a carriage returns so that it appears on more than one line for example as bullet points.
    I can format it using HTML but can’t seem to be able to find out how to set encode to true for that cell.
    Has anyone come across this problem before, or even have a simpler solution.
    Cheers
    Phil

    Hi Phil,
    Check this Multiple Text lines in ONE row of a Table . On what SP level are you?
    Best regards, Maksim Rashchynski.

  • Pdfs created on my iMac add hidden carriage returns after each word

    Hello Community,
    This problem exists on my iMac but not my wife's Powerbook.
    Whenever I created a pdf from Preview by printing and then selecting "save as pdf" I got a lovely looking pdf which I could send to anyone and they could view just fine.  However, if I or anyone else selected text from that pdf and pasted it into any other program, it came out with an exclamation point instead of the space between words which is, needless to say, quite undesirable.  Searching around, one thing that was suggested was clearing the font cache so I did this (several times).  It did indeed make a difference:  now instead of exclamation points a carriage return appears after every word!  Once again the pdf looks just fine, but when you copy and paste text from the pdf into any other text program this happens.
    So then I downloaded Adobe Acrobat (the one month fully functional trial program) and made pdfs with this program to see if that was the problem but, no, the same thing occurs.  So it really seems to be a strange glitch in my iMac and my system?
    Any advice would be greatly appreciated.
    Best regards,
    ---Norm

    There is no Flash player version 15... as in your code:
    <param name="swfversion" value="15.0.0.0" />
    For some reason Adobe thought it would be a good idea to target a Flash player version (15) as default.....which may be out a couple years in the future. Go figure!!!
    If you don't like player version 9, change to 10 or 11.... just not 15 (yet).
    Best wishes,
    Adninjastrator

  • Carriage Returns in HTML Code Creating Extra Spaces Between Elements

    I've looked online all over and can't find the solution to my issue. I've found several pages explaining a similar event, but no solution.
    When placing many divs next to each other, I would like to visually view the code as one div per line: (see image) To get this, I have to use hard returns in my code (this method makes editing a lot easier visually). But doing so adds extra spacing between the divs which turns a 3 column set of thumbnails to 2 colums. I can fix this if I adjust the physical margins between the divs, but this can't be the only fix.
    The other fix is if I place the code back to back to back (see image): This makes the div's behave and appear as they should, but now the code is a visual mess because it's all cluttered.
    What I want is to be able to use as many carriage returns in my code and for browsers to disregard these types of line breaks in the code. So essentially, how can I get away from these extra spaces when using hard returns in code?

    I think that both your pages have a missing </div> at the end somewhere.
    Opps... that happened when I was stripping down the page to create a working example of my issue. I've fixed the missing div and re-uploaded both pages. The problem is still there.
    Change display: inline; to float: left; and add margin: 0 0 4px 4px; (as shown below)
    I had already tried using float, but something else in the code was forcing the columns to 2 instead of 3.
    Have you used "Apply Source Formatting" ?
    I use that religiously. I'm quite anal about visually clean code.
    Well, I just fixed the problem while replying... funny... I removed the margins from the actual img element (.imageThumb img) and placed it on the div which surrounds the img (.imageThumb). I also reapplied the float. Thanks all for the help - it helped me rethink. But I could have sworn I had once placed the margins on .imageThumb before and it didn't work.
    .imageThumb {
        width: 100px;
        height: 75px;
        display: inline;
        float: left;   
        margin: 0px 10px 10px 0px;
        cursor: pointer;
    .imageThumb img {
        /*margin: 0px 10px 10px 0px;*/

  • Creating Wordpress blog entries with Safari 3 loses carriage returns

    Hi all,
    Ever since I started using Safari on Leopard, I've been losing all my carriage returns in my Wordpress entries. I don't know what's causing it, but Safari for Tiger, and Firefox 2.0.0.8 running on Tiger, Leopard, and Windows XP don't cause this to happen.
    Anyone have a clue as to why this is happening? The carriage returns are apparently getting erased somehow because where there should be a <p />, there's instead no space between the last period of a sentence and the first letter of the next.
    eg:
    This is the end of the line.This is the next line
    I'm not sure this is fixable by the users.
    Message was edited by: Michael Gaines

    Hi all,
    Same safari/wordpress problem here.
    And not the only one! (cookies, crashes)
    With the safari troubles I am now using camino more and more often. If it did copy formated text properly it would now be my first choice.
    However I do like safiris search/find a lot!!
    Detlev

  • Carriage Return ignored in ABAP Created HTML?

    We are in the pre-production box for an upgrade.
    We have ABAP source code that generates HTML logic. It worked fine in 4.6.
    The carriage return/line feeds are being ignored.
    I have already tried all the cl_abap_char_utilities=>NEWLINE
                                              cl_abap_char_utilities=>CR_LF
                                              cl_abap_char_utilities=>FORMFEED.....and more
    I've tried the conversion utilities also.
    When we look in the debugger we see the cr_lf values as ##, and 0d000a00 in hex, which should work, right?
    But, when we view the source code on the web page - where arrays are not being built because the crlfs are being ignored- we can see that when the html is being written, the crlfs are ignored and the html is all over the place, unformatted.
    I am thinking there must be a another HTML Function Module that might be available to format the html table before sending it out thru WWW_HTML_MERGER. Again, even in debug everything look good, but when it writes it to the URL the crlfs are ignored?
         Any suggestions?

    Becuase you enter your patterns as expressions where some characters are used as control characters, and then have to esacpe some of the control characters in the expressions when you enter them as java strings.
    So the expression is actually \r\n if you let a user enter it into a textfield, but you have to escape the \ if you write it as a String in the source code (since \ is an escape characters in strings)
    /Kaj

  • Carriage Return in line Text for invoice line item.

    Hi,
    I am trying to create an non PO invoice through calling a BAPI "BAPI_INVOICE_CREATE"
    in which  i am passing all the required data . I have a field called "SGTXT" which is item text and i am passing this field
    which has maximum length of 50 char i just want to add a new line characters on to it. i.e want to support Carriage Return
    just want to know whether it can hold Carrige Return.
    I just tried by entering some Characters and hitting Enter the value which i am passing is simillar to
    itemtext
    "abcdabcdabcdabcd#
    abacdabcdabcd#
    abcdabcd"   My program is not able to parse this values hence landing into dump.
    How should i support this scenario.
    Thanks,

    Here is the dump.
    The termination occurred in the ABAP program "SAPLZIBA_SSP_READ_CSV" in
    "LINE_TO_CELL_ESC_SEP".                                                 
    The main program was "ZIBA_SSP_INVOICELOAD ".                                                                               
    The termination occurred in line 149 of the source code of the (Include) 
    program "LZIBA_SSP_READ_CSVF01"                                       
    of the source code of program "LZIBA_SSP_READ_CSVF01" (when calling the
    editor 1490).                                                           
            IF i_string CS l_pipe.                     
              l_stringlength = strlen( i_string ).     
              DO l_stringlength TIMES.                 
                REPLACE '  ' WITH '""' INTO i_string.  
                IF sy-subrc NE 0.                      
                  EXIT.                                
                ENDIF.                                 
              ENDDO.                                   
            ENDIF.                                     
            ASSIGN I_STRING(L_INT) TO <L_CELL>.        
            I_INTERN_VALUE = <L_CELL>.                 
          endif.                                       
          L_INT = L_INT + 2.                           
          I_SIC_INT = L_INT.                           
          I_STRING = I_STRING+L_INT.                   
        ELSEIF I_STRING CS C_ESC.                      
        letzte Celle                                 
          L_INT = SY-FDPOS.                            
          if l_int = 0.                                
            clear i_intern_value.                      
          else.                                        
            ASSIGN I_STRING(L_INT) TO <L_CELL>.        
            I_INTERN_VALUE = <L_CELL>.                 
          endif.                                       
          L_INT = L_INT + 1.                           
          I_SIC_INT = L_INT.                           
          I_STRING = I_STRING+L_INT.                   
          L_INT = STRLEN( I_STRING ).                  
          IF L_INT > 0 . MESSAGE X001(KX) . ENDIF.     
        ELSE.                                          
          MESSAGE X001(KX) . "was ist mit csv-Format   
        ENDIF.                                         
      ENDIF.                                           
    Can you let me knwo how should i put my condition to support CR .
    thanks,

  • 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 (cmd-alt-return) in a event

    Since I switched to Mac OS Lion, carriage returns are no longer functional (cmd-alt-return). Instead of lists, my text is condensed and difficult to read. Is this a bug? Is there a setting that can correct this?

    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

  • 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

  • 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