Skip to Content
0
Apr 06, 2015 at 08:48 AM

Mail delivering very late using SO_NEW_DOCUMENT_ATT_SEND_API1

27 Views

Hi all,

I have a program to generate a mail with pdf attached and send to particular mail id based on SAP user id.

Some times, mail is delivered to outlook we soon, and some times it takes more than 3 to 4 hours.

Can any one suggest a way so that mail can be triggered immediately.

Below is the code which i'm using for the requirement.

IF NOT IT_OUT1 IS INITIAL.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZSD_FRM_MCF'

IMPORTING

FM_NAME = FUNC_NAME1

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

w_ctrlop-getotf = 'X'.

w_ctrlop-no_dialog = 'X'.

w_compop-tdnoprev = 'X'.

w_compop-tddest = 'locl'.

CALL FUNCTION FUNC_NAME1

EXPORTING

control_parameters = w_ctrlop

output_options = w_compop

user_settings = ' '

IMPORTING

job_output_info = w_return

TABLES

IT_OUT = IT_OUT1.

* * EXCEPTIONS

* * formatting_error = 1

* internal_error = 2

* send_error = 3

* user_canceled = 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.

i_otf[] = w_return-otfdata[].

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = 'PDF'

max_linewidth = 132

IMPORTING

bin_filesize = v_len_in

TABLES

otf = i_otf

lines = i_tline

EXCEPTIONS

err_max_linewidth = 1

err_format = 2

err_conv_not_possible = 3

OTHERS = 4.

IF sy-subrc <> 0.

ENDIF.

LOOP AT i_tline.

TRANSLATE i_tline USING '~'.

CONCATENATE wa_buffer i_tline INTO wa_buffer.

ENDLOOP.

TRANSLATE wa_buffer USING '~'.

DO.

i_record = wa_buffer.

APPEND i_record.

SHIFT wa_buffer LEFT BY 255 PLACES.

IF wa_buffer IS INITIAL.

EXIT.

ENDIF.

ENDDO.

* Attachment

REFRESH: i_reclist,

i_objtxt,

i_objbin,

i_objpack.

CLEAR wa_objhead.

clear i_objtxt.

i_objbin[] = i_record[].

* Create Message Body Title and Description

i_objtxt = 'Please find pdf-Attachment!'.

APPEND i_objtxt.

DESCRIBE TABLE i_objtxt LINES v_lines_txt.

READ TABLE i_objtxt INDEX v_lines_txt.

wa_doc_chng-obj_name = 'smartform'.

wa_doc_chng-expiry_dat = sy-datum + 10.

**wa_doc_chng-obj_descr = 'smartform'.

data : desc type sodocchgi1-obj_descr.

concatenate wa_out1-vbeln ', ' wa_out1-matnr ' & ' wa_out1-name1 into desc.

*wa_doc_chng-obj_descr = 'machin clearance form'.

wa_doc_chng-obj_descr = desc.

wa_doc_chng-sensitivty = 'F'.

wa_doc_chng-doc_size = v_lines_txt * 255.

* Main Text

CLEAR i_objpack-transf_bin.

clear: i_objpack.

i_objpack-head_start = 1.

i_objpack-head_num = 0.

i_objpack-body_start = 1.

i_objpack-body_num = v_lines_txt.

i_objpack-doc_type = 'RAW'.

APPEND i_objpack.

* Attachment (pdf-Attachment)

i_objpack-transf_bin = 'X'.

i_objpack-head_start = 1.

i_objpack-head_num = 0.

i_objpack-body_start = 1.

DESCRIBE TABLE i_objbin LINES v_lines_bin.

READ TABLE i_objbin INDEX v_lines_bin.

i_objpack-doc_size = v_lines_bin * 255 .

i_objpack-body_num = v_lines_bin.

i_objpack-doc_type = 'PDF'.

i_objpack-obj_name = 'smart'.

i_objpack-obj_descr = WA_OUT1-VBELN.

APPEND i_objpack.

CLEAR i_reclist.

data : userid type standard table of ZMCF_BM_RM,

w_userid type ZMCF_BM_RM.

select * into table userid from ZMCF_BM_RM .

clear : w_userid.

LOOP AT userid into w_userid.

i_reclist-receiver = w_userid-USRID_LONG.

i_reclist-rec_type = 'U'.

APPEND i_reclist.

clear : w_userid.

ENDLOOP.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = wa_doc_chng

put_in_outbox = 'X'

commit_work = '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.

WRITE:/ 'Error When Sending the File', sy-subrc.

ELSE.

WRITE:/ 'Mail sent'.

ENDIF.

endif.