Skip to Content
0
Former Member
Jan 22, 2009 at 04:02 PM

Error while sending Excel attachment thro FM 'SO_NEW_DOCUMENT_ATT_SEND_API1

233 Views

Experts:

I am working on sending Excel as an email attachment thro the function module 'SO_NEW_DOCUMENT_ATT_SEND_API1'

I am able to send mail successfully but I face the following two issues while opening the attachment.

1. While opening it says 'un recognized format' , on pressing 'OK' it opens the excel file.

2. The column heading (first row) which should be in Korean character is displayed in junk char. I tried to

specify the unicode (Code Page = '8500') but does not know how to do it.

I am reading the column header text from standard text.

Please let me know what mistake I have commited in my code and where I should specify the unicode transformation. I refered many samples but could not make it.

Please let me know the error.

The code is as follows.

FORM sendemail_barcodedata.
  TYPE-POOLS: truxs.
  DATA: objpack LIKE sopcklsti1 OCCURS 2  WITH HEADER LINE.
  DATA: objhead LIKE solisti1   OCCURS 1  WITH HEADER LINE.
  DATA: objbin  LIKE solisti1   OCCURS 10 WITH HEADER LINE.
  DATA: objbin1 LIKE solisti1   OCCURS 10 WITH HEADER LINE.
  DATA: objtxt  LIKE solisti1   OCCURS 10 WITH HEADER LINE.
  DATA: reclist LIKE somlreci1  OCCURS 5  WITH HEADER LINE.
  DATA: doc_chng LIKE sodocchgi1.
  DATA: tab_lines LIKE sy-tabix.
  DATA: l_sent_to_all  TYPE sonv-flag.

* Creating the document to be sent
* File Name
  doc_chng-obj_name  = 'BCODEINFO'.
* Mail Subject
  doc_chng-obj_descr = 'Delivery Barcode Information'.

* Mail Content
  objtxt = 'Hi:'.
  APPEND objtxt.
  objtxt = 'Find attached,  Delivery Barcode Information'.
  APPEND objtxt.
  CONCATENATE 'Attachment : <<' w_fname1 '>>' INTO objtxt.
  APPEND objtxt.

  DESCRIBE TABLE objtxt LINES tab_lines.
  READ TABLE objtxt INDEX tab_lines.
  
  doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
  doc_chng-obj_langu = sy-langu.
  doc_chng-sensitivty = 'F'.

* Creating the entry for the compressed document
  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.

* Creating the document attachment
* Get column names for Barcode Data
  CLEAR objbin.
  CONCATENATE text-h23
              text-h24
              text-h25
              text-h26
              text-h27
              INTO  objbin  SEPARATED BY con_tab .
  CONCATENATE objbin con_cret INTO objbin.
  APPEND objbin.
  CLEAR objbin.

  LOOP AT it_excel2 INTO wa_excel2.
    CONCATENATE wa_excel2-zz_date
                wa_excel2-zz_delivery
                wa_excel2-zz_barcode
                wa_excel2-blank1
                wa_excel2-blank2
                INTO objbin  SEPARATED BY con_tab.
    CONCATENATE objbin con_cret INTO objbin.
    APPEND objbin.
    CLEAR objbin.
  ENDLOOP.

  DESCRIBE TABLE objbin LINES tab_lines.
  objhead = w_fname1.
  APPEND objhead.

* Creating the entry for the compressed attachment
  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'.
  objpack-obj_name   = 'Barcode Information'.
  objpack-obj_descr  = 'Barcode Information'.
  objpack-doc_size   = tab_lines * 255.
  APPEND objpack.

* Entering names in the distribution list
  reclist-receiver = p_email.
  reclist-rec_type = 'U'.
  APPEND reclist.

* Sending the document
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = doc_chng
      put_in_outbox              = ' '
      commit_work                = 'X'
    IMPORTING
     sent_to_all                 = l_sent_to_all
    TABLES
      packing_list               = objpack
      object_header              = objhead
      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.
  CASE sy-subrc.
    WHEN 0.
      MESSAGE i000(z65f_msgclass) WITH text-211.
    WHEN 1.
      WRITE: / 'no authorization to send to the specified number of'.
    WHEN 2.
      WRITE: / 'document could not be sent to any of the recipients!'.
    WHEN 4.
      WRITE: / 'no authorization to send !'.
    WHEN OTHERS.
      WRITE: / 'error occurred during sending !'.
  ENDCASE.

ENDFORM.                  

Thanks in advance.

Regards

Vijai