Issue in Excel Attachment Extension SO_DOCUMENT_SEND_API1

Dear Team,
I am facing on unique Issue,When i am using FM:SO_DOCUMENT_SEND_API1,Mail is getting trigger properly with attachment but extension file is changed to some other format.please find attached herewith attachment.
When I see in SOST it is showing in excel format but in mail it is showing without extension.
Please find code piece of code for excel attachment.
OBJPACK-DOC_TYPE   = 'XLS'.
  OBJPACK-OBJ_NAME   = 'Permit Exception List'.
Regards,
Santosh

Hi Santhosh,
Have you passed the document size correctly? I had used as follows:
CLEAR WA_PACKING_LIST.
WA_PACKING_LIST-TRANSF_BIN   = 'X'.
WA_PACKING_LIST-HEAD_START  = 0.
WA_PACKING_LIST-HEAD_NUM     = 1.
WA_PACKING_LIST-BODY_START  = 1.
DESCRIBE TABLE GT_ATTACH LINES WA_PACKING_LIST-BODY_NUM.
WA_PACKING_LIST-DOC_TYPE      = 'XLS'.
WA_PACKING_LIST-OBJ_DESCR    = ' '.
WA_PACKING_LIST-OBJ_NAME      = 'AAA'.
WA_PACKING_LIST-DOC_SIZE        = WA_PACKING_LIST-BODY_NUM * 255.
APPEND WA_PACKING_LIST TO LT_PACKING_LIST.
Try this way.
Regards,
Abijith

Similar Messages

  • Issue with Excel Attachement in BI 7.0

    Hi,
    I have developed a custom report to send an e-mail with excel attachment in BI 7.0. When we are trying to open the excel sheet attachment in the e-mail. I am getting a message warning message stating that<b> 'This file is not in a recognizable format'</b>. but if we click on ok button then everything looks fine i.e the data is displaying as expected.
    I have developed the same reports in SAP R/3 and SRM but I don't see any issues over there.
    Can any one help me on this issue.
    Thanks in advance,
    Venkat Bomma

    When the selection screen pops up choose the KEY only function on the TOOLS on the top right corner of the screen. Then you will be able to enter the values manually.
    Hope this helps.

  • Excel attachment with SO_DOCUMENT_SEND_API1

    Hello Everyone,
    I am using SO_DOCUMENT_SEND_API1 for sending mail.
    It works well with text attachment.
    Whereas with excel attachment:
    The fn module for sending mail ‘SO_DOCUMENT_SEND_API1’ gives return code zero.
    The excel attachment mail can be seen in transaction SOST. But its process fails stating that it cannot be converted.
    (Message : Message cannot be processed as it cannot be converted)
    Can anyone suggest me what might be wrong ??

    Hi
    Please refer these sample progs to send an xcel attachment via mail...
    http://www.sapdevelopment.co.uk/reporting/email/attach_xlsmod.htm
    http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm
    http://www.sapgenie.com/abap/code/abap31.htm
    Regards,
    Anjali

  • Excel attachment using SO_DOCUMENT_SEND_API1

    Hi
    I am using FM SO_DOCUMENT_SEND_API1 to send .XLS attachment from ABAP program.
    I am using following code to calculate the size.
    DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
    t_packing_list-doc_size   =  t_packing_list-body_num * 255.
    CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
    (I have posted only relevant code)
    This was working fine in 4.7. But since upgrade to 6.0, the attachment is transferred only half the actual size.
    i.e. if my internal table shows 4 records, the attachment in the mail shows only 2 records.
    What can be done in this case. A simple solution would be to multiply the size by 2.
    t_packing_list-doc_size   =  t_packing_list-body_num * 255 * 2.
    This works, but does seem like a work around.
    What could be the reason for this and what should be the solution?

    Hi,
    I am also using 6.0 and similar logic is working fine to calculate the size. I think there must be some problem some where else in the code. Can you put your code that you have used.
    Thanks & Regards
    Rocky

  • Excel attachment opening blank in work order

    Hi Experts,
    I am having an issue with Excel attachment in work order.
    there has been some coding done using open dataset ,readdataset etc.
    I am using read in text mode .....
    the file is being picked from Application server and someone told me that there is no way that SAP can support
    the Excel attachment that is uploaded from Appication server.
    Kindly suggest on this . I tried by saving it as CSV file but the format was incorrect.
    Please suggest me how we can open the excel  file correctly.
    Thanks,
    Pradeep.

    You need to use the Open In... feature to view it in Excel.
    Once the attachment is open in the default viewer, you should have an icon that looks like a square with an up arrow on it. Tap on this, then choose Open In... and you should be able to open it in Excel.
    ~Lyssa

  • Email with excel attached

    Hello,
    I have to send an email in a workflow step with a excel attach from an internal table, Does anyone have any sugestion ?
    Thanks,
    Diego

    Hi,
    Check this [thread1|send excel attachment as email; [thread2|Re: Excel attachment in SO_DOCUMENT_SEND_API1; & [thread3|Help needed for the Excel attachment to mail;.
    Regards,
    Surjith

  • Issue while opening Excel attachment send through FM

    Hi All,
    I had program in which i am sending mail along with Excel attachment using FM SO_NEW_DOCUMENT_ATT_SEND_API1. Mail is going fine with data in Excel attachment. But when i try to open the Excel it gives an Info message saying that "<b>You are trying to open (attachment name),is in different format than specified file extension Verify that file is not corrupted and is from a trusted source before opening file. Do you want to open file now</b>". Then when i presses YES, Excel opens up with all data. I want to know how to avoid that info popup. Is there something has to be passed to FM or something has to be done to Excel like settings in EXCEL so that i can avoid that Info message coming.
    Document type of attachment is gw_packing_list-doc_type = 'XLS'.
    Thanks in advance,
    Shyam

    Hi Shyam,
                    Have you build your Excel Data table to get attachement in Mail? If no then please find the Eg. code for your reference to send Excel attachment..
    * End of Selection Event : Displaying the selected data                *
    END-OF-SELECTION.
        PERFORM EMAIL_EXCEL_ATTACHMENT.
    ******///form
    FORM EMAIL_EXCEL_ATTACHMENT .
    * Populate table with detaisl to be entered into .xls file
      PERFORM BUILD_XLS_DATA_TABLE.
    * Populate message body text
      PERFORM POPULATE_EMAIL_MESSAGE_BODY.
    * Send file by email as .xls speadsheet
      PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT
                                   TABLES IT_MESSAGE
                                          IT_ATTACH
                                    USING S_EMAIL
                                          TEXT-042
                                          C_XLS
                                          'filename'
                                 CHANGING GD_ERROR
                                          GD_RECIEVER.
    *   Instructs mail send program for SAPCONNECT to send email(rsconn01)
      PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
    ENDFORM.                    " EMAIL_EXCEL_ATTACHMENT
    ********///form BUILD_XLS_DATA_TABLE
    FORM BUILD_XLS_DATA_TABLE .
      DATA :    LV_NETWR(20)     TYPE C,
                LV_BOL_DATE(20)  TYPE C,
                LV_KAWRT(20)     TYPE C,
                LV_FKDAT(20)     TYPE C,
                LV_WAERK(20)     TYPE C,
                LV_KURRF(20)     TYPE C,
                LV_SHIPDATE(20)  TYPE C,
                LV_DEPTDATE(20)  TYPE C.
      CONSTANTS:
          CON_TAB  TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
          CON_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.  "#EC *
      DATA STR TYPE STRING.
    **********/ this parameter concatenate to get headers
      CONCATENATE STR
      'SLNO'
      'OWNER'
      'SERIAL NO'
      'FROM'
      'DESTINATION'
      'INVOICE VALUE'
      'DESCRIPTION'
      'CUSTOMER NAME'
      'BL NUMBER'
      'BL DATE'
      'VESSEL NAME/AIRLINE DETAILS'
      'MODE OF TRANSIT'
      'SHIPPING MARKS'
      'DUTY SUM INSURED'
      'FLAG'
      'OPEN COVERNO'
      'INVOICE DATE'
      'INVOICE NO'
      'LC WORDING'
      'QUANTITY'
      'PACKAGING DETAILS'
      'BASIS OF VALUATION'
      'EXCLUDE WAR SRCC'
      'CURRENCY'
      'EXCHANGE RATE'
      'ADDRESS'
      'VESSEL BUILT YEAR'
      'VESSEL FLAG'
      'VOYAGE NO'
      'SHIPMENT DATE'
      'DEPARTURE DATE'
      'SURVEYOR COUNTRY'
      'SURVEYOR CITY'
      'SURVEYOR AGENT'
      'SURVEYOR ADDRESS'
      'EXPORT CONSIGNMENT'
      'CONTAINER DETAILS'
      CL_ABAP_CHAR_UTILITIES=>CR_LF INTO STR SEPARATED BY CON_TAB.
      LOOP AT IT_FINAL.
    *******/ this is to pass body / row data
        WRITE : IT_FINAL-NETWR    TO LV_NETWR,              "#EC UOM_IN_MES
                IT_FINAL-BOL_DATE TO LV_BOL_DATE,
                IT_FINAL-KAWRT    TO LV_KAWRT,              "#EC UOM_IN_MES
                IT_FINAL-FKDAT    TO LV_FKDAT,
                IT_FINAL-WAERK    TO LV_WAERK,
                IT_FINAL-KURRF    TO LV_KURRF,
                IT_FINAL-SHIPDATE TO LV_SHIPDATE,
                IT_FINAL-DEPTDATE TO LV_DEPTDATE.
        CONCATENATE
               STR
               IT_FINAL-SLNO
               IT_FINAL-OWNER
               IT_FINAL-SRNO
               IT_FINAL-PORT_LOAD
               IT_FINAL-PORT_DSCHR
               LV_NETWR
               IT_FINAL-DESCRIP
               IT_FINAL-CUSTNAME
               IT_FINAL-BOL_NUM
               LV_BOL_DATE
               IT_FINAL-VESSELNAME
               IT_FINAL-SHP_TYPE
               IT_FINAL-SHP_MARK
               LV_KAWRT
               IT_FINAL-FLAG
               IT_FINAL-OPEN_CONO
               LV_FKDAT
               IT_FINAL-VBELN
               IT_FINAL-LC_WORD
               IT_FINAL-QUANT
               IT_FINAL-PACKDETL
               IT_FINAL-INCO1
               IT_FINAL-EXCWSR
               LV_WAERK
               LV_KURRF
               IT_FINAL-ADDPAY
               IT_FINAL-VESSBYR
               IT_FINAL-VESSFLG
               IT_FINAL-VOY_FLY_NO
               LV_SHIPDATE
               LV_DEPTDATE
               IT_FINAL-SURCOUNT
               IT_FINAL-INCO2
               IT_FINAL-EXPORT_CON
               IT_FINAL-SURAGT
               IT_FINAL-SURADD
               IT_FINAL-CONTRNO
       CL_ABAP_CHAR_UTILITIES=>CR_LF INTO STR SEPARATED BY CON_TAB.
      ENDLOOP.
      CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
        EXPORTING
          TEXT      = STR
        TABLES
          FTEXT_TAB = IT_ATTACH.
    ENDFORM.                    " BUILD_XLS_DATA_TABLE
    ******// form POPULATE_EMAIL_MESSAGE_BODY
    FORM POPULATE_EMAIL_MESSAGE_BODY .
      REFRESH IT_MESSAGE.
      IT_MESSAGE = TEXT-043.  " Please find attached Insurance Certificate details
      APPEND IT_MESSAGE.
    ENDFORM.                    " POPULATE_EMAIL_MESSAGE_BODY
    *******'/ form SEND_FILE_AS_EMAIL_ATTACHMENT
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
    *       text
    *      -->PIT_MESSAGE           text
    *      -->PIT_ATTACH            text
    *      -->P_EMAIL               text
    *      -->P_MTITLE              text
    *      -->P_FORMAT              text
    *      -->P_FILENAME            text
    *      -->P_ATTDESCRIPTION      text
    *      -->P_SENDER_ADDRESS      text
    *      -->P_SENDER_ADDRES_TYPE  text
    *      -->P_ERROR               text
    *      -->P_RECIEVER            text
    FORM SEND_FILE_AS_EMAIL_ATTACHMENT TABLES PIT_MESSAGE
                                              PIT_ATTACH
                                        USING P_EMAIL
                                              P_MTITLE
                                              P_FORMAT
                                              P_FILENAME
                                              P_ATTDESCRIPTION
                                              P_SENDER_ADDRESS
                                              P_SENDER_ADDRES_TYPE
                                     CHANGING P_ERROR
                                              P_RECIEVER.       "#EC *
      DATA: LD_ERROR    TYPE SY-SUBRC,                          "#EC *
    *        LD_RECIEVER TYPE SY-SUBRC,
            LD_MTITLE LIKE SODOCCHGI1-OBJ_DESCR,
    *        LD_EMAIL LIKE  SOMLRECI1-RECEIVER,
            LD_FORMAT TYPE  SO_OBJ_TP ,
            LD_ATTDESCRIPTION TYPE  SO_OBJ_NAM ,
            LD_ATTFILENAME TYPE  SO_OBJ_DES ,
            LD_SENDER_ADDRESS LIKE  SOEXTRECI1-RECEIVER,
            LD_SENDER_ADDRESS_TYPE LIKE  SOEXTRECI1-ADR_TYP,
            LD_RECEIVER LIKE  SY-SUBRC.                         "#EC *
    *  ld_email   = p_email.
      LD_MTITLE = P_MTITLE.
      LD_FORMAT              = P_FORMAT.
      LD_ATTDESCRIPTION      = P_ATTDESCRIPTION.
      LD_ATTFILENAME         = P_FILENAME.
      LD_SENDER_ADDRESS      = P_SENDER_ADDRESS.
      LD_SENDER_ADDRESS_TYPE = P_SENDER_ADDRES_TYPE.
    * Fill the document data.
      W_DOC_DATA-DOC_SIZE = 1.
    * Populate the subject/generic message attributes
      W_DOC_DATA-OBJ_LANGU = SY-LANGU.
      W_DOC_DATA-OBJ_NAME  = 'SAPRPT'.
      W_DOC_DATA-OBJ_DESCR = LD_MTITLE .
      W_DOC_DATA-SENSITIVTY = 'F'.
    * Fill the document data and get size of attachment
      CLEAR W_DOC_DATA.
      DESCRIBE TABLE IT_ATTACH LINES W_CNT.
      READ TABLE IT_ATTACH INDEX W_CNT.
      W_DOC_DATA-DOC_SIZE =
         W_CNT * 255 + STRLEN( IT_ATTACH ).
      W_DOC_DATA-OBJ_LANGU  = SY-LANGU.
      W_DOC_DATA-OBJ_NAME   = 'SAPRPT'.
      W_DOC_DATA-OBJ_DESCR  = LD_MTITLE.
      W_DOC_DATA-SENSITIVTY = 'F'.
      CLEAR T_ATTACHMENT.
      REFRESH T_ATTACHMENT.
      T_ATTACHMENT[] = PIT_ATTACH[].
    * Describe the body of the message
      CLEAR T_PACKING_LIST.
      REFRESH T_PACKING_LIST.
      T_PACKING_LIST-TRANSF_BIN = SPACE.
      T_PACKING_LIST-HEAD_START = 1.
      T_PACKING_LIST-HEAD_NUM = 0.
      T_PACKING_LIST-BODY_START = 1.
      DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.
      T_PACKING_LIST-DOC_TYPE = 'raw'.
      APPEND T_PACKING_LIST.
    * Create attachment notification
      T_PACKING_LIST-TRANSF_BIN = 'X'.
      T_PACKING_LIST-HEAD_START = 1.
      T_PACKING_LIST-HEAD_NUM   = 1.
      T_PACKING_LIST-BODY_START = 1.
      DESCRIBE TABLE T_ATTACHMENT LINES T_PACKING_LIST-BODY_NUM.
      T_PACKING_LIST-DOC_TYPE   =  LD_FORMAT.
      T_PACKING_LIST-OBJ_DESCR  =  LD_ATTDESCRIPTION.
      T_PACKING_LIST-OBJ_NAME   =  LD_ATTFILENAME.
      T_PACKING_LIST-DOC_SIZE   =  T_PACKING_LIST-BODY_NUM * 255.
      APPEND T_PACKING_LIST.
    * Add the recipients email address
      CLEAR T_RECEIVERS.
      REFRESH T_RECEIVERS.
      LOOP AT S_EMAIL.
        T_RECEIVERS-RECEIVER = S_EMAIL-LOW.
        T_RECEIVERS-REC_TYPE = 'U'.
        T_RECEIVERS-COM_TYPE = 'INT'.
        T_RECEIVERS-NOTIF_DEL = 'X'.
        T_RECEIVERS-NOTIF_NDEL = 'X'.
        APPEND T_RECEIVERS.
      ENDLOOP.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
        EXPORTING
          DOCUMENT_DATA              = W_DOC_DATA
          PUT_IN_OUTBOX              = 'X'
          SENDER_ADDRESS             = LD_SENDER_ADDRESS
          SENDER_ADDRESS_TYPE        = LD_SENDER_ADDRESS_TYPE
          COMMIT_WORK                = 'X'
        IMPORTING
          SENT_TO_ALL                = W_SENT_ALL
        TABLES
          PACKING_LIST               = T_PACKING_LIST
          CONTENTS_BIN               = T_ATTACHMENT
          CONTENTS_TXT               = IT_MESSAGE
          RECEIVERS                  = T_RECEIVERS
        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.
    * Populate zerror return code
      LD_ERROR = SY-SUBRC.
    * Populate zreceiver return code
      LOOP AT T_RECEIVERS.
        LD_RECEIVER = T_RECEIVERS-RETRN_CODE.
      ENDLOOP.
    ENDFORM.                    " SEND_FILE_AS_EMAIL_ATTACHMENT
    *******/form
    *&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM INITIATE_MAIL_EXECUTE_PROGRAM .
      WAIT UP TO 2 SECONDS.
      SUBMIT RSCONN01 WITH MODE = 'INT'
                    WITH OUTPUT = 'X'
                    AND RETURN.
    ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM
    *********end of code to trigger mail in excel format....
    If any other help please let me know......
    I am sure this example code will help you to resolve your problem...
    please analyse above code for your requirement...
    In my scenario the message you said is not displaying.....
    <i>Reward Points</i>
    Cheers,
    Sagun Desai

  • Issue in sending e mails with Excel attachment

    Hi,
    I am facing an issue with one function module - SO_DOCUMENT_SEND_API1. We were using this for sending mails to diff destination with excel sheet attachment contains sales data. This system has been migrated from 4.5B to ECC 5. Now this process is not working like the old one and the excel attachment is not properly formatted. All the data is being written into one cell of excel sheet and it seems only one line is present in output and is corrupted.
    Can you please let me know what might be the issue here, any alternate option available or something to be modified in new version with this function module?
    Thanks in advance,
    Ullas

    Hi Ullas,
    check this once.
    REPORT  ZLAXMI_ALVMAIL4                         .
    TABLES: EKKO.
    PARAMETERS: P_EMAIL   TYPE SOMLRECI1-RECEIVER
                                      DEFAULT '[email protected]'.
    TYPES: BEGIN OF T_EKPO,
      EBELN TYPE EKPO-EBELN,
      EBELP TYPE EKPO-EBELP,
      AEDAT TYPE EKPO-AEDAT,
      MATNR TYPE EKPO-MATNR,
    END OF T_EKPO.
    DATA: IT_EKPO TYPE STANDARD TABLE OF T_EKPO INITIAL SIZE 0,
          WA_EKPO TYPE T_EKPO.
    TYPES: BEGIN OF T_CHAREKPO,
      EBELN(10) TYPE C,
      EBELP(5)  TYPE C,
      AEDAT(8)  TYPE C,
      MATNR(18) TYPE C,
    END OF T_CHAREKPO.
    DATA: WA_CHAREKPO TYPE T_CHAREKPO.
    DATA:   IT_MESSAGE TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   IT_ATTACH TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0
                    WITH HEADER LINE.
    DATA:   T_PACKING_LIST LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,
            T_CONTENTS LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
            T_RECEIVERS LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,
            T_ATTACHMENT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
            T_OBJECT_HEADER LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,
            W_CNT TYPE I,
            W_SENT_ALL(1) TYPE C,
            W_DOC_DATA LIKE SODOCCHGI1,
            GD_ERROR    TYPE SY-SUBRC,
            GD_RECIEVER TYPE SY-SUBRC.
    *START_OF_SELECTION
    START-OF-SELECTION.
      Retrieve sample data from table ekpo
      PERFORM DATA_RETRIEVAL.
      Populate table with detaisl to be entered into .xls file
      PERFORM BUILD_XLS_DATA_TABLE.
    *END-OF-SELECTION
    END-OF-SELECTION.
    Populate message body text
      PERFORM POPULATE_EMAIL_MESSAGE_BODY.
    Send file by email as .xls speadsheet
      PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT
                                   TABLES IT_MESSAGE
                                          IT_ATTACH
                                    USING P_EMAIL
                                          'Example .xls documnet attachment'
                                          'XLS'
                                          'filename'
                                 CHANGING GD_ERROR
                                          GD_RECIEVER.
      Instructs mail send program for SAPCONNECT to send email(rsconn01)
      PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    FORM DATA_RETRIEVAL.
      SELECT EBELN EBELP AEDAT MATNR
       UP TO 10 ROWS
        FROM EKPO
        INTO TABLE IT_EKPO.
    ENDFORM.                    " DATA_RETRIEVAL
    *&      Form  BUILD_XLS_DATA_TABLE
          Build data table for .xls document
    FORM BUILD_XLS_DATA_TABLE.
    CONSTANTS: con_cret TYPE x VALUE '0D',  "OK for non Unicode
                con_tab TYPE x VALUE '09'.   "OK for non Unicode
    *If you have Unicode check active in program attributes thnen you will
    *need to declare constants as follows
    *class cl_abap_char_utilities definition load.
    CONSTANTS:
        CON_TAB  TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
        CON_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.
      CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
             INTO IT_ATTACH SEPARATED BY CON_TAB.
      CONCATENATE CON_CRET IT_ATTACH  INTO IT_ATTACH.
      APPEND  IT_ATTACH.
      LOOP AT IT_EKPO INTO WA_CHAREKPO.
        CONCATENATE WA_CHAREKPO-EBELN WA_CHAREKPO-EBELP
                    WA_CHAREKPO-AEDAT WA_CHAREKPO-MATNR
               INTO IT_ATTACH SEPARATED BY CON_TAB.
        CONCATENATE CON_CRET IT_ATTACH  INTO IT_ATTACH.
        APPEND  IT_ATTACH.
      ENDLOOP.
    ENDFORM.                    " BUILD_XLS_DATA_TABLE
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM SEND_FILE_AS_EMAIL_ATTACHMENT TABLES PIT_MESSAGE
                                              PIT_ATTACH
                                        USING P_EMAIL
                                              P_MTITLE
                                              P_FORMAT
                                              P_FILENAME
                                              P_ATTDESCRIPTION
                                              P_SENDER_ADDRESS
                                              P_SENDER_ADDRES_TYPE
                                     CHANGING P_ERROR
                                              P_RECIEVER.
      DATA: LD_ERROR    TYPE SY-SUBRC,
            LD_RECIEVER TYPE SY-SUBRC,
            LD_MTITLE LIKE SODOCCHGI1-OBJ_DESCR,
            LD_EMAIL LIKE  SOMLRECI1-RECEIVER,
            LD_FORMAT TYPE  SO_OBJ_TP ,
            LD_ATTDESCRIPTION TYPE  SO_OBJ_NAM ,
            LD_ATTFILENAME TYPE  SO_OBJ_DES ,
            LD_SENDER_ADDRESS LIKE  SOEXTRECI1-RECEIVER,
            LD_SENDER_ADDRESS_TYPE LIKE  SOEXTRECI1-ADR_TYP,
            LD_RECEIVER LIKE  SY-SUBRC.
      LD_EMAIL   = P_EMAIL.
      LD_MTITLE = P_MTITLE.
      LD_FORMAT              = P_FORMAT.
      LD_ATTDESCRIPTION      = P_ATTDESCRIPTION.
      LD_ATTFILENAME         = P_FILENAME.
      LD_SENDER_ADDRESS      = P_SENDER_ADDRESS.
      LD_SENDER_ADDRESS_TYPE = P_SENDER_ADDRES_TYPE.
    Fill the document data.
      W_DOC_DATA-DOC_SIZE = 1.
    Populate the subject/generic message attributes
      W_DOC_DATA-OBJ_LANGU = SY-LANGU.
      W_DOC_DATA-OBJ_NAME  = 'SAPRPT'.
      W_DOC_DATA-OBJ_DESCR = LD_MTITLE .
      W_DOC_DATA-SENSITIVTY = 'F'.
    Fill the document data and get size of attachment
      CLEAR W_DOC_DATA.
      READ TABLE IT_ATTACH INDEX W_CNT.
      W_DOC_DATA-DOC_SIZE =
         ( W_CNT - 1 ) * 255 + STRLEN( IT_ATTACH ).
      W_DOC_DATA-OBJ_LANGU  = SY-LANGU.
      W_DOC_DATA-OBJ_NAME   = 'SAPRPT'.
      W_DOC_DATA-OBJ_DESCR  = LD_MTITLE.
      W_DOC_DATA-SENSITIVTY = 'F'.
      CLEAR T_ATTACHMENT.
      REFRESH T_ATTACHMENT.
      T_ATTACHMENT[] = PIT_ATTACH[].
    Describe the body of the message
      CLEAR T_PACKING_LIST.
      REFRESH T_PACKING_LIST.
      T_PACKING_LIST-TRANSF_BIN = SPACE.
      T_PACKING_LIST-HEAD_START = 1.
      T_PACKING_LIST-HEAD_NUM = 0.
      T_PACKING_LIST-BODY_START = 1.
      DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.
      T_PACKING_LIST-DOC_TYPE = 'RAW'.
      APPEND T_PACKING_LIST.
    Create attachment notification
      T_PACKING_LIST-TRANSF_BIN = 'X'.
      T_PACKING_LIST-HEAD_START = 1.
      T_PACKING_LIST-HEAD_NUM   = 1.
      T_PACKING_LIST-BODY_START = 1.
      DESCRIBE TABLE T_ATTACHMENT LINES T_PACKING_LIST-BODY_NUM.
      T_PACKING_LIST-DOC_TYPE   =  LD_FORMAT.
      T_PACKING_LIST-OBJ_DESCR  =  LD_ATTDESCRIPTION.
      T_PACKING_LIST-OBJ_NAME   =  LD_ATTFILENAME.
      T_PACKING_LIST-DOC_SIZE   =  T_PACKING_LIST-BODY_NUM * 255.
      APPEND T_PACKING_LIST.
    Add the recipients email address
      CLEAR T_RECEIVERS.
      REFRESH T_RECEIVERS.
      T_RECEIVERS-RECEIVER = LD_EMAIL.
      T_RECEIVERS-REC_TYPE = 'U'.
      T_RECEIVERS-COM_TYPE = 'INT'.
      T_RECEIVERS-NOTIF_DEL = 'X'.
      T_RECEIVERS-NOTIF_NDEL = 'X'.
      APPEND T_RECEIVERS.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                DOCUMENT_DATA              = W_DOC_DATA
                PUT_IN_OUTBOX              = 'X'
                SENDER_ADDRESS             = LD_SENDER_ADDRESS
                SENDER_ADDRESS_TYPE        = LD_SENDER_ADDRESS_TYPE
                COMMIT_WORK                = 'X'
           IMPORTING
                SENT_TO_ALL                = W_SENT_ALL
           TABLES
                PACKING_LIST               = T_PACKING_LIST
                CONTENTS_BIN               = T_ATTACHMENT
                CONTENTS_TXT               = IT_MESSAGE
                RECEIVERS                  = T_RECEIVERS
           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.
    Populate zerror return code
      LD_ERROR = SY-SUBRC.
    Populate zreceiver return code
      LOOP AT T_RECEIVERS.
        LD_RECEIVER = T_RECEIVERS-RETRN_CODE.
      ENDLOOP.
    ENDFORM.
    *&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
          Instructs mail send program for SAPCONNECT to send email.
    FORM INITIATE_MAIL_EXECUTE_PROGRAM.
      WAIT UP TO 2 SECONDS.
      SUBMIT RSCONN01 WITH MODE = 'INT'
                    WITH OUTPUT = 'X'
                    AND RETURN.
    ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM
    *&      Form  POPULATE_EMAIL_MESSAGE_BODY
           Populate message body text
    FORM POPULATE_EMAIL_MESSAGE_BODY.
      REFRESH IT_MESSAGE.
      IT_MESSAGE = 'Please find attached a list test ekpo records'.
      APPEND IT_MESSAGE.
    ENDFORM.                    " POPULATE_EMAIL_MESSAGE_BODY
    Regards,
    Laxmi.

  • Issue in Sending email with EXCEL attachment

    Hi,
    Im using the FM SO_NEW_DOCUMENT_ATT_SEND_API1 for sending emails to a list of recipients with an excel attachment. In the attachment data, as the field length is 255 for the structure SOLISTI1, for the records having more than 255 characters, data is being truncated. I did a search in this forum and done some changes , still it is not working properly.
    I have used SCMS_TEXT_TO_XSTRING, SCMS_XSTRING_TO_BINARY FMs for converting the data to hexa format. This case, records having more than 255 are displayed properly in the attachment, but there are blank lines inserted between two records.
    Please suggest me to resolve this isssue.
    Thanks in advance.
    Jayashree

    Hi Jayashree,
    you might want to check out the example link by Saso in his post Send external email from within ABAP program to xls.
    For the rest I can only guess that there might be some issues with the format you use for Excel. In case of empty lines and using a text format for Excel the issue is in most cases that there are too many carriage return line feeds in the text fiel (cl_abap_char_utilities=>cr_lf).
    Hope that helps.
    Best Regards
    Michael

  • Formatting Excel Attachment output in SO_DOCUMENT_SEND_API1

    Hi ABAPers,
    I'm hoping someone can get me started with a requirement.  I"m using SO_DOCUMENT_SEND_API1 to email a file as an excel attachment.  I'm required for a four digit code to show as (0003).  Instead, when I open the excel attachment, it displays as 3.  Would anyone know how to set the document to show all fields as text?  Any help would be appreciative.
    Thanks,
    Meezy

    Hi Venkat,
    The program is sending the 4 digit code perfectly through excel in debug mode.  However, when it's when I open the file that it get's cut off.  3000 shows up fine.  Only codes with leading 0's are cut off.  3000 shows as 3000 but 0003 shows as 3.
    Thanks,
    Meezy

  • Excel Attachment Issue

    Hi ,
    I use the FM : SO_NEW_DOCUMENT_ATT_SEND_API1 for triggering an email with the excel attachment. Email triggering with an attachment  happens without any issues. But in the attachment , I am facing the following issue.
    One of the fields in the excel is numeric. Excel displays that field in the exponential format. Say for example, if the content is 38883001593305 ,excel  displays it as 3.8883E+13.  I need to display the numeric as it is without any conversion. Please kindly suggest how to achieve this.
    Thanks.

    Hi friend,
    follow the below code
    { lv_message = 'Mail For Cancelled Invoices.'.
      append lv_message to it_message.
      concatenate 'OPERATING UNIT NAME'
                  'INVOICE BATCH NAME'
                  'SUPPLIER NAME'
                  'SUPPLIER GSL'
                  'SUPPLIER PAY SITE CODE'
                  'SUPPLIER PAY SITE ADDRESS'
                  'SUPPLIER PAY SITE CITY'
                  'SUPPLIER PAY SITE STATE'
                  'SUPPLIER PAY SITE COUNTRY'
                  'INVOICE NUMBER'
                  'VOUCHER NUMBER'
                  'PO NUMBER'
                  'PO LINE NUMBER'
                  'PO BUYER NAME'
                  'INVOICE DATE'
                  'CANCELLED DATE'
                  'INVOICE ENTERED DATE'
                  'INVOICE AMOUNT'
                  'INVOICE CREATED BY'
                  into it_attachment separated by
                  cl_abap_char_utilities=>horizontal_tab.
      concatenate cl_abap_char_utilities=>cr_lf it_attachment into it_attachment.
      append it_attachment.
      loop at t_output into wa_output.
        concatenate wa_output-bukrs
                    wa_output-belnr
                    wa_output-name1
                    wa_output-gsl
                    wa_output-lifnr
                    wa_output-stras
                    wa_output-ort01
                    wa_output-regio
                    wa_output-land1
                    wa_output-xblnr
                    wa_output-belnr
                    wa_output-ebeln
                    wa_output-ebelp
                    wa_output-name2
                    wa_output-budat
                    wa_output-cpudt
                    wa_output-bldat
                    wa_output-dmbtr
                    wa_output-usnam
                     into it_attachment separated by
                 cl_abap_char_utilities=>horizontal_tab.
        concatenate cl_abap_char_utilities=>cr_lf it_attachment into it_attachment.
        append it_attachment.
      endloop.
    Selecting the mail id's
      select intid
             email
        from ztbidl
        into table t_ztbidl
       where intid = 'RICEF125' and
             obj_name = 'EPIQ'.
      loop at t_ztbidl into wa_ztbidl.
        it_receivers-receiver = wa_ztbidl-email.
        it_receivers-rec_type = 'U'.
        it_receivers-com_type = 'INT'.
        it_receivers-notif_del = 'X'.
        it_receivers-notif_ndel = 'X'.
        it_receivers-express = 'X'.
        append it_receivers.
      endloop.
    *File Type
      ld_format = 'XLS'.
    **File Name
    ld_attfilename = 'File1'.
      concatenate 'PIC_' sy-datum into ld_attfilename.
    Fill the document data.
      gd_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      gd_doc_data-obj_langu = sy-langu.
      gd_doc_data-obj_name = 'SAPRPT'.
      gd_doc_data-obj_descr = psubject .
      gd_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      clear gd_doc_data.
    Populate the subject/generic message attributes
      gd_doc_data-obj_langu = sy-langu.
      read table it_attachment index w_cnt.
      gd_doc_data-doc_size = ( w_cnt - 1 ) * 255 + strlen( it_attachment ).
      gd_doc_data-obj_name  = 'SAPRPT'.
      gd_doc_data-obj_descr = psubject.
      gd_doc_data-sensitivty = 'F'.
    Describe the body of the message
      clear it_packing_list.
      refresh it_packing_list.
      it_packing_list-transf_bin = space.
      it_packing_list-head_start = 1.
      it_packing_list-head_num   = 0.
      it_packing_list-body_start = 1.
      describe table it_message lines it_packing_list-body_num.
      it_packing_list-doc_type   = 'RAW'.
      append it_packing_list.
    **Describe the attachment info
      it_packing_list-transf_bin = 'X'.
      it_packing_list-head_start = 1.
      it_packing_list-head_num   = 1.
      it_packing_list-body_start = 1.
      describe table it_attachment lines  it_packing_list-body_num.
      it_packing_list-doc_type   = ld_format.
      it_packing_list-obj_name   = ld_attfilename.
      it_packing_list-obj_descr  = ld_attfilename.
      it_packing_list-doc_size   = it_packing_list-body_num * 255.
      append it_packing_list.
      call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        exporting
          document_data              = gd_doc_data
          put_in_outbox              = 'X'
          commit_work                = 'X'
        tables
          packing_list               = it_packing_list
          contents_bin               = it_attachment
          contents_txt               = it_message
          receivers                  = it_receivers
        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.

  • Issue with data populated in excel attachment

    Hi Folks,
    Im an emailing the report output as excel attachement. In the excel file, im getting only the header line and NOT the details, pls help me where im going wrong.
    regds,
    BG

    hi pls find the code im using as below.
    TYPES : BEGIN OF ty_output,
                  no(18) TYPE c,
           soh(13) TYPE c,
           qty(13) TYPE c,
           matnr TYPE mara-matnr,
           maktx TYPE makt-maktx,
           labst TYPE mard-labst,
           avl_qty TYPE bapicm61v-wkbst,
           END OF ty_output.
    DATA:
    docdata LIKE sodocchgi1,
    objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
    objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
    objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
    reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
    tab_lines TYPE sy-tabix.
    DATA: lv_labst(13) TYPE c,
             lv_avl_qty(13) TYPE c,
             t_output TYPE STANDARD TABLE OF ty_output,
              wa_output LIKE LINE OF t_output.
    CONSTANTS: con_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
                 con_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.
    Body
    docdata-obj_name = 'Mail_Excel_File'.
    docdata-obj_descr = 'Excel file attachment'.
    objtxt = 'Attached is the sample Excel file'.
    APPEND objtxt.
    DESCRIBE TABLE objtxt LINES tab_lines.
    READ TABLE objtxt INDEX tab_lines.
    docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
    CLEAR objpack-transf_bin.
    objpack-head_start = 1.
    objpack-head_num = 0.
    objpack-body_start = 1.
    objpack-body_num = tab_lines.
    objpack-doc_type = 'RAW'.
    APPEND objpack.
    Attachment
    *i_data-a = 'Sample'.
    *i_data-b = 'File'.
    *CONCATENATE i_data-a i_data-b INTO objbin.
    *APPEND objbin.
    CONCATENATE 'NO 'SOH'
                  'QTY' 'MATNR ' 'MAKTX'
                  'LABST' 'AVL_QTY'  INTO objbin SEPARATED BY con_tab.
      CONCATENATE con_cret objbin INTO objbin.
      APPEND objbinst.
      CLEAR objbin.ut
    wa_output-no = '123456'.
    wa_output-soh = '39000'.
    wa_output-qty = '39000'.
    wa_output-matnr = '123-456'.
    wa_output-maktx = 'test'.
    lv_labst = '39,000'.
    lv_avl_qty = '39,000'.
        CONCATENATE wa_output-no wa_output-soh
                    wa_output-qty wa_output-matnr
                    wa_output-maktx lv_labst
                    lv_avl_qty
                    INTO objbin SEPARATED BY con_tab.
        CONCATENATE con_cret objbin INTO objbin.
        APPEND objbin.
        CLEAR objbin.
    DESCRIBE TABLE objbin LINES tab_lines.
    objpack-doc_size = tab_lines * 255.
    objpack-transf_bin = 'X'.
    objpack-head_start = 1.
    objpack-head_num = 1.
    objpack-body_start = 1.
    objpack-body_num = tab_lines.
    objpack-doc_type = 'XLS'.
    docdata-obj_name = 'Excel_File_Attachment'.
    objpack-obj_descr = 'Excel File Attachment'.
    APPEND objpack.
    Create the list of recipients
    reclist-receiver = mail address.
    reclist-rec_type = 'U'.
    reclist-express = 'X'.
    APPEND reclist.
    Send the e-mail
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
      EXPORTING
        document_data              = docdata
        put_in_outbox              = 'X'
        commit_work                = 'X'
      TABLES
        packing_list               = objpack
        contents_bin               = objbin
        contents_txt               = objtxt
        receivers                  = 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.
    COMMIT WORK.

  • Facing problem in excel attachment in the Email

    Hi,
    I am facing one issue while sending an email with an excel attachment . In the excel attachment the actual number of line items are not displaying . For example if i have 4 rows in my internal table the excel shows only the first row of the internal table.
    Can anybody suggest what is the issue.
    Regards,
    Ratheesh BS

    Hi ,
    Please find the code used.
       WRITE: sy-datum TO l_date MM/DD/YY.
        CONCATENATE  text-014   "Enterprise workflow(s) are in ERROR status
                     l_date
                     INTO l_text
                     SEPARATED BY c_colon.
        wa_doc_data-obj_langu  = sy-langu.
        wa_doc_data-obj_name   = text-013.  "SAPRPT
        wa_doc_data-obj_descr  = l_text.
        wa_doc_data-sensitivty = c_false.
    Fill the document data and get size of attachment
         DESCRIBE TABLE i_attach LINES l_cnt.
         READ TABLE i_attach INTO wa_attach INDEX l_cnt.
        IF sy-subrc EQ 0.
          l_size = STRLEN( wa_attach ).
          l_docsize =   ( ( l_cnt - 1 ) * c_length255 + l_size ).
          wa_doc_data-doc_size   = l_docsize.
          wa_doc_data-obj_langu  = sy-langu.
          wa_doc_data-obj_name   = text-013.  "SAPRPT
          wa_doc_data-obj_descr  = l_text.
          wa_doc_data-sensitivty = c_false.
        ENDIF.
        lt_attachment[] = i_attach[]." XLS attachment details
    Describe the body of the message
        CLEAR wa_packing_list.
        REFRESH lt_packing_list.
        wa_packing_list-transf_bin = space.
        wa_packing_list-head_start = 1.
        wa_packing_list-head_num   = 0.
        wa_packing_list-body_start = 1.
       DESCRIBE TABLE lt_message LINES wa_packing_list-body_num .
        wa_packing_list-doc_type   = c_raw.
        APPEND wa_packing_list TO lt_packing_list.
        CLEAR wa_packing_list.
    *l_docsize = 5000.
    Create attachment notification
        wa_packing_list-transf_bin = c_active.
        wa_packing_list-head_start = 1.
        wa_packing_list-head_num   = 1.
        wa_packing_list-body_start = 1.
        DESCRIBE TABLE lt_attachment LINES wa_packing_list-body_num.
        wa_packing_list-doc_type   =  c_xls.
        wa_packing_list-obj_descr  =  text-022.
        wa_packing_list-doc_size  =  wa_packing_list-body_num * c_length255.
        APPEND wa_packing_list TO lt_packing_list.
        CLEAR: wa_packing_list,l_cnt.
    Email to be sent for multiple receivers
    Add the recipients email address
        LOOP AT s_receiv INTO wa_email.
          l_email = wa_email-low.
          wa_receivers-rec_type   = c_rectyp.
          wa_receivers-receiver   = l_email.
          wa_receivers-com_type   = c_internet.
          wa_receivers-notif_del  = c_true.
          wa_receivers-notif_ndel = c_true.
          APPEND wa_receivers  TO lt_receivers.
          CLEAR : wa_receivers, wa_email, l_email.
        ENDLOOP.
        IF lt_receivers[] IS NOT INITIAL AND
           i_itemrecord[] IS NOT INITIAL.
    email sender
          l_sender_address = sy-uname.   " Stores the sender's address
    *Function  module to handel mail sending.
          CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
            EXPORTING
              document_data                    = wa_doc_data
              put_in_outbox                    = c_true
              sender_address                   = l_sender_address
              sender_address_type              = c_sender_address_type
              commit_work                      = c_true
        IMPORTING
          SENT_TO_ALL                      =
            TABLES
              packing_list                     = lt_packing_list
              contents_bin                     = lt_attachment
             contents_hex                     = lt_attachment1
              contents_txt                     = lt_message
              receivers                        = lt_receivers
           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

  • Different Attachment extension(.xls,.txt) in sender mail adapter

    Hi Experts
    Is it possible to use different type of attachment extension (e.g .xls,.txt) in the sender mail adapter?
    My requirement is , the attachment in the mail adapter will be used as the main payload.So I am using PayloadSwapBean adapter module.
    Currently I am using the following module key for .xls attachment and it is working.Configuration for .xls attachment is as follows
    swap.keyName-Content-Disposition
    swap.keyname-Content-Description
    swap.keyName-Content-Type
    swap.keyValue-attachment;filename="MailAttachment-1.xls"
    swap.keyValue-MailAttachment-1
    swap.keyValue-application/vnd.ms-excel.
    Now, the attachment may be .xls or .txt file.
    Now If I want to use .txt atachment then do I need to define all these parameter again and in that case what will be my content type for .txt file.
    Your inputs required
    thanks
    Ayan

    PayloadSwapBean  will only convert the attachment as the main payload.
    Yeah for reading excel file I have a separate custom adapter module.This is not in the scope of my question..
    All I am asking , can .txt as well as .xls attachment be used in the same sender mail adapter.
    If that is possible what will be my content-type for .txt or can I remove content-type and use only content-disposition and content-description so that any type of attachment it can recognise.
    The momment I am specifying  content-type , I am making it particular  that only say .xls attachment , it will identify.
    I hope I make you clear.Inputs required
    Thanks
    Ayan

  • Send an Excel Attachment as mail to a list of recipients

    Hello Everyone,
    I am trying to send an email with an excel attachment. My code has been activated successfully. But I haven't received any mail.
    Kindly help.
    My code is as below.
    FORM Z_SENDMAIL .
      DATA lv_receiver type SOMLRECI1-RECEIVER.
      TYPES: BEGIN OF LTS_CHARFINAL,
        matnr(18) type c,
        maktx(40) type c,
        idnlf(35) type c,
        ltsnr(6) type c,
        werks(4) type c,
        ltsbz(20) type c,
        ernam(12) type c,
        verpr(11) type c,
        soh_qty(13) TYPE c,
        int_qty(13) TYPE c,
        ext_soh(11) TYPE c,
        hol_qty(13) TYPE c,
        all_qty(13) TYPE c,
        bac_qty(13) TYPE c,
        ext_ttl(11) TYPE c,
        END OF LTS_CHARFINAL.
      DATA: WA_CHARFINAL TYPE LTS_CHARFINAL.
      lv_receiver = '[email protected]'.
      CONCATENATE 'ITEM_TRIM'
                  'DESCRIPTION'
                  'VEND_ITEM'
                  'PLNRCODE'
                  'LOCATION'
                  'SITE'
                  'PLANNER'
                  'AVERAGE_COST'
                  'SOH_QTY'
                  'INTRANS_QTY'
                  'EXT_COST_SOH'
                  'HOLD_QTY'
                  'ALLOC_QTY'
                  'BACKORD_QTY'
                  'EXT_COST_TTL_INVEN'
             INTO IT_ATTACH SEPARATED BY CON_TAB.
      CONCATENATE CON_CRET IT_ATTACH  INTO IT_ATTACH.
      APPEND  IT_ATTACH.
      LOOP AT GIT_FINAL INTO GWA_FINAL.
        wa_charfinal-matnr = gwa_final-matnr.
        wa_charfinal-maktx = gwa_final-maktx.
        wa_charfinal-idnlf = gwa_final-idnlf.
        wa_charfinal-ltsnr = gwa_final-ltsnr.
        wa_charfinal-werks = gwa_final-werks.
        wa_charfinal-ltsbz = gwa_final-ltsbz.
        wa_charfinal-ernam = gwa_final-ernam.
        wa_charfinal-verpr = gwa_final-verpr.
        wa_charfinal-soh_qty = gwa_final-soh_qty.
        wa_charfinal-int_qty = gwa_final-int_qty.
        wa_charfinal-ext_soh = gwa_final-ext_soh.
        wa_charfinal-hol_qty = gwa_final-hol_qty.
        wa_charfinal-all_qty = gwa_final-all_qty.
        wa_charfinal-bac_qty = gwa_final-bac_qty.
        wa_charfinal-ext_ttl = gwa_final-ext_ttl.
        CONCATENATE wa_charfinal-matnr
                    wa_charfinal-maktx
                    wa_charfinal-idnlf
                    wa_charfinal-ltsnr
                    wa_charfinal-werks
                    wa_charfinal-ltsbz
                    wa_charfinal-ernam
                    wa_charfinal-verpr
                    wa_charfinal-soh_qty
                    wa_charfinal-int_qty
                    wa_charfinal-ext_soh
                    wa_charfinal-hol_qty
                    wa_charfinal-all_qty
                    wa_charfinal-bac_qty
                    wa_charfinal-ext_ttl
               INTO IT_ATTACH SEPARATED BY CON_TAB.
        CONCATENATE CON_CRET IT_ATTACH  INTO IT_ATTACH.
        APPEND  IT_ATTACH.
      ENDLOOP.
        PERFORM Z_BUILD_MESSAGE.
        PERFORM Z_SEND_FILE_ATTACHMENT
                                   TABLES IT_MESSAGE
                                          IT_ATTACH
                                    USING lv_receiver
                                          'Example .xls documnet attachment'
                                          'XLS'
                                          'filename'
                                 CHANGING GD_ERROR
                                          GD_RECIEVER.
    ENDFORM.
    FORM Z_BUILD_MESSAGE .
      REFRESH IT_MESSAGE.
      IT_MESSAGE = 'Please find the attached document'.
      APPEND IT_MESSAGE.
    ENDFORM.                    " Z_BUILD_MESSAGE
    FORM Z_SEND_FILE_ATTACHMENT  TABLES   P_IT_MESSAGE
                                          P_IT_ATTACH STRUCTURE IT_ATTACH
                                 USING    P_lv_receiver
                                          P_MTITLE
                                          P_FORMAT
                                          P_FILENAME
                                          P_ATTDESCRIPTION
                                          P_SENDER_ADDRESS
                                          P_SENDER_ADDRES_TYPE
                                 CHANGING P_ERROR
                                          P_RECIEVER.
    DATA: LD_ERROR    TYPE SY-SUBRC,
            LD_RECIEVER TYPE SY-SUBRC,
            LD_MTITLE LIKE SODOCCHGI1-OBJ_DESCR,
            LD_EMAIL LIKE  SOMLRECI1-RECEIVER,
            LD_FORMAT TYPE  SO_OBJ_TP ,
            LD_ATTDESCRIPTION TYPE  SO_OBJ_NAM ,
            LD_ATTFILENAME TYPE  SO_OBJ_DES ,
            LD_SENDER_ADDRESS LIKE  SOEXTRECI1-RECEIVER,
            LD_SENDER_ADDRESS_TYPE LIKE  SOEXTRECI1-ADR_TYP,
            LD_RECEIVER LIKE  SY-SUBRC.
      LD_EMAIL   = P_LV_RECEIVER.
      LD_MTITLE = P_MTITLE.
      LD_FORMAT              = P_FORMAT.
      LD_ATTDESCRIPTION      = P_ATTDESCRIPTION.
      LD_ATTFILENAME         = P_FILENAME.
      LD_SENDER_ADDRESS      = P_SENDER_ADDRESS.
      LD_SENDER_ADDRESS_TYPE = P_SENDER_ADDRES_TYPE.
    * Fill the document data.
      W_DOC_DATA-DOC_SIZE = 1.
    * Populate the subject/generic message attributes
      W_DOC_DATA-OBJ_LANGU = SY-LANGU.
      W_DOC_DATA-OBJ_NAME  = 'SAPRPT'.
      W_DOC_DATA-OBJ_DESCR = LD_MTITLE .
      W_DOC_DATA-SENSITIVTY = 'F'.
    * Fill the document data and get size of attachment
      CLEAR W_DOC_DATA.
      READ TABLE IT_ATTACH INDEX W_CNT.
      W_DOC_DATA-DOC_SIZE =
         ( W_CNT - 1 ) * 255 + STRLEN( IT_ATTACH ).
      W_DOC_DATA-OBJ_LANGU  = SY-LANGU.
      W_DOC_DATA-OBJ_NAME   = 'SAPRPT'.
      W_DOC_DATA-OBJ_DESCR  = LD_MTITLE.
      W_DOC_DATA-SENSITIVTY = 'F'.
      CLEAR T_ATTACHMENT.
      REFRESH T_ATTACHMENT.
      T_ATTACHMENT[] = P_IT_ATTACH[].
    * Describe the body of the message
      CLEAR T_PACKING_LIST.
      REFRESH T_PACKING_LIST.
      T_PACKING_LIST-TRANSF_BIN = SPACE.
      T_PACKING_LIST-HEAD_START = 1.
      T_PACKING_LIST-HEAD_NUM = 0.
      T_PACKING_LIST-BODY_START = 1.
      DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.
      T_PACKING_LIST-DOC_TYPE = 'RAW'.
      APPEND T_PACKING_LIST.
    * Create attachment notification
      T_PACKING_LIST-TRANSF_BIN = 'X'.
      T_PACKING_LIST-HEAD_START = 1.
      T_PACKING_LIST-HEAD_NUM   = 1.
      T_PACKING_LIST-BODY_START = 1.
    DESCRIBE TABLE T_ATTACHMENT LINES T_PACKING_LIST-BODY_NUM.
      T_PACKING_LIST-DOC_TYPE   =  LD_FORMAT.
      T_PACKING_LIST-OBJ_DESCR  =  LD_ATTDESCRIPTION.
      T_PACKING_LIST-OBJ_NAME   =  LD_ATTFILENAME.
      T_PACKING_LIST-DOC_SIZE   =  T_PACKING_LIST-BODY_NUM * 255.
      APPEND T_PACKING_LIST.
    * Add the recipients email address
      CLEAR T_RECEIVERS.
      REFRESH T_RECEIVERS.
      T_RECEIVERS-RECEIVER = LD_EMAIL.
      T_RECEIVERS-REC_TYPE = 'U'.
      T_RECEIVERS-COM_TYPE = 'INT'.
      T_RECEIVERS-NOTIF_DEL = 'X'.
      T_RECEIVERS-NOTIF_NDEL = 'X'.
      APPEND T_RECEIVERS.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                DOCUMENT_DATA              = W_DOC_DATA
                PUT_IN_OUTBOX              = 'X'
                SENDER_ADDRESS             = LD_SENDER_ADDRESS
                SENDER_ADDRESS_TYPE        = LD_SENDER_ADDRESS_TYPE
                COMMIT_WORK                = 'X'
           IMPORTING
                SENT_TO_ALL                = W_SENT_ALL
           TABLES
                PACKING_LIST               = T_PACKING_LIST
                CONTENTS_BIN               = T_ATTACHMENT
                CONTENTS_TXT               = IT_MESSAGE
                RECEIVERS                  = T_RECEIVERS
           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.
    * Populate zerror return code
      LD_ERROR = SY-SUBRC.
    * Populate zreceiver return code
      LOOP AT T_RECEIVERS.
        LD_RECEIVER = T_RECEIVERS-RETRN_CODE.
      ENDLOOP.
    ENDFORM.                    " Z_SEND_FILE_ATTACHMENT
    -Regards
    Monica

    Hi Monica,
    Please check with your BASIS team if all the required configurations are there to send mail.
    You can check in SOST transaction if you have an entry there for your mail.
    Another relevant transaction in SCOT.
    Regards,
    Santanu.

Maybe you are looking for