Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Mail Sending issue to Outlook - Mail Request not Showing in SOST

Former Member
0 Kudos

Hi,

Im using mail sending logic for sending a mail to Creator of Billing. i have one itab which is having two Users with two different mail IDs. i need to send a mail to those user mail ids to Outlook

user Mail id

12 XXX

12 XXX

13 YYY

13 YYY

at end of User i need to send a mail..

loop at itab.

at end of user.

here sending a mail...for the first user it is sending mail perfectly..and mail request is available in SOST . once its comes to second user sending a mail getting sy-subc = 0 after SO_NEW_DOCUMENT_ATT_SEND_API1 FM..and mail request Not coming for second mail id in SOST both mails also available in Sap out box.

endat.

endloop.

Kindly Help me out..

Regards

Dileep

3 REPLIES 3

Former Member
0 Kudos

Hi,

to send mails use this:

FORM docu_send_email USING pv_otfdata TYPE tsfotf

pv_emailid TYPE any

pv_formname TYPE any.

DATA: lv_filesize TYPE i,

lv_buffer TYPE string,

lv_attachment TYPE i,

lv_testo TYPE i.

DATA: li_pdfdata TYPE STANDARD TABLE OF tline,

li_mess_att TYPE STANDARD TABLE OF solisti1,

li_mtab_pdf TYPE STANDARD TABLE OF tline,

li_objpack TYPE STANDARD TABLE OF sopcklsti1,

li_objtxt TYPE STANDARD TABLE OF solisti1,

li_objbin TYPE STANDARD TABLE OF solisti1,

li_reclist TYPE STANDARD TABLE OF somlreci1,

li_objhead TYPE soli_tab.

DATA: lwa_pdfdata TYPE tline,

lwa_objpack TYPE sopcklsti1,

lwa_mess_att TYPE solisti1,

lwa_objtxt TYPE solisti1,

lwa_objbin TYPE solisti1,

lwa_reclist TYPE somlreci1,

lwa_doc_chng TYPE sodocchgi1.

CONSTANTS: lc_u TYPE char1 VALUE 'U',

lc_0 TYPE char1 VALUE '0',

lc_1 TYPE char1 VALUE '1',

lc_pdf TYPE char3 VALUE 'PDF',

lc_raw TYPE char3 VALUE 'RAW',

lc_ordform TYPE char15 VALUE 'ZORDCONFIRM_01',

lc_attachment TYPE char10 VALUE 'ATTACHMENT'.

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = lc_pdf

max_linewidth = 132

IMPORTING

bin_filesize = lv_filesize

TABLES

otf = pv_otfdata

lines = li_pdfdata

EXCEPTIONS

err_max_linewidth = 1

err_format = 2

err_conv_not_possible = 3

err_bad_otf = 4

OTHERS = 5.

IF sy-subrc 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT li_pdfdata INTO lwa_pdfdata.

TRANSLATE lwa_pdfdata USING ' ~'.

CONCATENATE lv_buffer lwa_pdfdata INTO lv_buffer.

CLEAR lwa_pdfdata.

ENDLOOP.

TRANSLATE lv_buffer USING '~ '.

DO.

lwa_mess_att = lv_buffer.

APPEND lwa_mess_att TO li_mess_att.

CLEAR lwa_mess_att.

SHIFT lv_buffer LEFT BY 255 PLACES.

IF lv_buffer IS INITIAL.

EXIT.

ENDIF.

ENDDO.

  • Object with PDF.

REFRESH li_objbin.

li_objbin] = li_mess_att[.

DESCRIBE TABLE li_objbin LINES lv_attachment.

  • Object with main text of the mail.

lwa_objtxt = space.

APPEND lwa_objtxt TO li_objtxt.

CLEAR lwa_objtxt.

DESCRIBE TABLE li_objtxt LINES lv_testo.

  • Create the document which is to be sent

lwa_doc_chng-obj_name = text-008.

lwa_doc_chng-obj_descr = text-008.

lwa_doc_chng-sensitivty = lc_0.

lwa_doc_chng-obj_prio = lc_1.

lwa_doc_chng-doc_size = lv_testo * 225.

  • Pack to main body.

CLEAR lwa_objpack-transf_bin.

  • header

lwa_objpack-head_start = 1.

  • The document needs no header (head_num = 0)

lwa_objpack-head_num = 0.

  • body

lwa_objpack-body_start = 1.

lwa_objpack-body_num = lv_testo.

lwa_objpack-doc_type = lc_raw.

APPEND lwa_objpack TO li_objpack.

CLEAR lwa_objpack.

  • Create the attachment.

  • Fill the fields of the packing_list for the attachment:

lwa_objpack-transf_bin = gc_x .

  • header

lwa_objpack-head_start = 1.

lwa_objpack-head_num = 1.

  • body

lwa_objpack-body_start = 1.

lwa_objpack-body_num = lv_attachment.

lwa_objpack-doc_type = lc_pdf.

lwa_objpack-obj_name = lc_attachment.

lwa_objpack-obj_descr = text-008.

lwa_objpack-doc_size = lv_attachment * 255.

APPEND lwa_objpack TO li_objpack.

CLEAR lwa_objpack.

lwa_reclist-receiver = pv_emailid.

lwa_reclist-rec_type = lc_u.

lwa_reclist-notif_del = gc_x.

lwa_reclist-notif_ndel = gc_x.

APPEND lwa_reclist TO li_reclist.

IF li_reclist IS NOT INITIAL.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = lwa_doc_chng

put_in_outbox = gc_x

TABLES

packing_list = li_objpack

object_header = li_objhead

contents_bin = li_objbin

contents_txt = li_objtxt

receivers = li_reclist

EXCEPTIONS

too_many_receivers = 1

document_not_sent = 2

document_type_not_exist = 3

operation_no_authorization = 4

parameter_error = 5

x_error = 6

enqueue_error = 7

OTHERS = 8.

IF sy-subrc 0.

  • MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno

  • WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDIF.

ENDFORM. " DOCU_SEND_EMAIL

0 Kudos

HI,

This is my code it is working fine for first Customer. and able to send mail(i can view request in SOST). but for the second customer it is giving sy-subrc = 0 after using FM but not sending mail(i can't view request in SOST)...Kindly Help me out..


 AT END OF CUST.
      PERFORM MAIL_SEND_ALL USING WA_NAST-CUST.
    ENDAT.

this is in form : 

*Converting OTF data to PDF
  IF NOT I_OTF1[] IS INITIAL.
    CALL FUNCTION 'CONVERT_OTF'
      EXPORTING
        FORMAT                = 'PDF'
        MAX_LINEWIDTH         = 132
*        ARCHIVE_INDEX         = ' '
*        COPYNUMBER            = 0
*        ASCII_BIDI_VIS2LOG    = ' '
*        PDF_DELETE_OTFTAB     = ' '
      IMPORTING
        BIN_FILESIZE          = V_LEN_IN
*        BIN_FILE              =
      TABLES
        OTF                   = I_OTF1
        LINES                 = I_TLINE
      EXCEPTIONS
        ERR_MAX_LINEWIDTH     = 1
        ERR_FORMAT            = 2
        ERR_CONV_NOT_POSSIBLE = 3
        ERR_BAD_OTF           = 4
        OTHERS                = 5.
    IF SY-SUBRC <> 0.
      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    LOOP AT I_TLINE  INTO WA_ILINE.
      TRANSLATE WA_ILINE USING '~'.
      CONCATENATE WA_BUFFER WA_ILINE INTO WA_BUFFER.
    ENDLOOP.

    TRANSLATE WA_BUFFER USING '~'.

    DO.
      APPEND WA_BUFFER TO I_RECORD.
      SHIFT WA_BUFFER LEFT BY 255 PLACES.
      IF WA_BUFFER IS INITIAL.
        EXIT.
      ENDIF.
    ENDDO.
    REFRESH:
    I_RECLIST,
    I_OBJTXT,
    I_OBJBIN,
    I_OBJPACK.

    CLEAR WA_OBJHEAD.

    I_OBJBIN = I_RECORD.
*      Create Message Body
*      "1. Title and Description

    WA_OBJTXT = 'u201CThis is a computer generated Invoice and Shipping Notification. Please do not reply to this e-mail In case you need any clarification, Kindly contact respective Teamu201D '.
    APPEND WA_OBJTXT TO I_OBJTXT.
    DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.
    READ TABLE I_OBJTXT INTO WA_OBJTXT INDEX V_LINES_TXT.
    WA_DOC_CHNG-OBJ_NAME = 'Auto Send mail to customers '.
*      WA_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.

    WA_DOC_CHNG-OBJ_DESCR = 'Invoice and Shipping details Notification -'.
    CONCATENATE WA_DOC_CHNG-OBJ_DESCR TEXT INTO WA_DOC_CHNG-OBJ_DESCR.

    WA_DOC_CHNG-SENSITIVTY = 'F'.
    WA_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.
    "1. Main Text
    WA_DOC_CHNG-DOC_SIZE = ( V_LINES_TXT - 1 ) * 255 + STRLEN( WA_OBJTXT ).

    CLEAR WA_OBJPACK-TRANSF_BIN.
    WA_OBJPACK-HEAD_START = 1.
    WA_OBJPACK-HEAD_NUM = 0.
    WA_OBJPACK-BODY_START = 1.
    WA_OBJPACK-BODY_NUM = V_LINES_TXT.
    WA_OBJPACK-DOC_TYPE = 'RAW'.
    APPEND WA_OBJPACK TO I_OBJPACK.
* (pdf-Attachment)
    WA_OBJPACK-TRANSF_BIN = 'X'.
    WA_OBJPACK-HEAD_START = 1.
    WA_OBJPACK-HEAD_NUM = 0.
    WA_OBJPACK-BODY_START = 1.
*       Länge des Attachment ermitteln
    DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.
    READ TABLE I_OBJBIN INTO WA_OBJBIN   INDEX V_LINES_BIN.
    WA_OBJPACK-DOC_SIZE = V_LINES_BIN * 255 .

    WA_OBJPACK-BODY_NUM = V_LINES_BIN.
    WA_OBJPACK-DOC_TYPE = 'PDF'.
    WA_OBJPACK-OBJ_NAME = WA_DOC_CHNG-OBJ_DESCR.
    WA_OBJPACK-OBJ_DESCR = WA_DOC_CHNG-OBJ_DESCR.
    APPEND WA_OBJPACK TO I_OBJPACK.
*checking mail ids of customers
    LOOP AT T_ADR6 INTO WA_ADR6 WHERE KUNAG EQ CUST.
      CLEAR WA_RECLIST.
      WA_RECLIST-RECEIVER = WA_ADR6-SMTP_ADDR.
      WA_RECLIST-REC_TYPE = 'U'.
      APPEND WA_RECLIST TO I_RECLIST.
      CLEAR:WA_RECLIST,WA_ADR6.
    ENDLOOP.
*sendign mail
    IF NOT I_RECLIST[] IS INITIAL.
      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        EXPORTING
          DOCUMENT_DATA              = WA_DOC_CHNG
          PUT_IN_OUTBOX              = 'X'
        TABLES
          PACKING_LIST               = I_OBJPACK
          OBJECT_HEADER              = WA_OBJHEAD
          CONTENTS_BIN               = I_OBJBIN
          CONTENTS_TXT               = I_OBJTXT
          RECEIVERS                  = I_RECLIST
        EXCEPTIONS
          TOO_MANY_RECEIVERS         = 1
          DOCUMENT_NOT_SENT          = 2
          DOCUMENT_TYPE_NOT_EXIST    = 3
          OPERATION_NO_AUTHORIZATION = 4
          PARAMETER_ERROR            = 5
          X_ERROR                    = 6
          ENQUEUE_ERROR              = 7
          OTHERS                     = 8.

      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
*        RETCODE = SY-SUBRC.
        WAIT UP TO 2 SECONDS.
        SUBMIT RSCONN01 WITH MODE = 'INT'
                  WITH OUTPUT = ''
                  AND RETURN.

      ENDIF.
    ENDIF.

    REFRESH: I_RECLIST,I_OBJTXT,I_OBJBIN,I_OBJPACK,I_TLINE,I_RECORD,I_OTF.
    CLEAR:WA_OBJHEAD,WA_DOC_CHNG,WA_RECLIST,WA_OBJPACK,WA_OBJTXT,V_LEN_IN.

  ENDIF.
ENDFORM.                    " MAIL_SEND_ALL

Regards,

Dileep.c

Edited by: reddy kumar on Apr 30, 2009 1:43 PM

0 Kudos

Hi AD,

Thanks for u Code..

After first Customer mail sending i used Commit Work and for second second customer also now it is sending mail and same request is view in SOST..

Regards

Dileepc