Skip to Content
0
Former Member
May 14, 2008 at 09:14 AM

end user receving same mail , twice in a day .

67 Views

Hi,

Throu this report , i am sending mail to a user. I the scheuld this program as background job.

But My problem is end user receving same mail twice a day.I am sure , Program is executed onces in day.

Plz help me to solve the problem

REPORT zplm008_tdr_mail_alert .

*DATA DECLARATION.

DATA: it_ztdr TYPE TABLE OF ztdr WITH HEADER LINE.

DATA wa_maktx TYPE makt-maktx..

*SELECTION SCREEN

PARAMETER: p_date TYPE sy-datum DEFAULT sy-datum MODIF ID dat .

*START-OF-SELECTION

START-OF-SELECTION.

SELECT * FROM ztdr INTO TABLE it_ztdr

WHERE rlddt = p_date.

IF it_ztdr[] IS NOT INITIAL.

LOOP AT it_ztdr.

PERFORM send_mail.

ENDLOOP.

ENDIF.

&----


*& Form SEND_MAIL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM send_mail .

DATA: lt_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0

WITH HEADER LINE.

DATA: ls_message TYPE char255.

DATA: lt_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

lt_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,

lt_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

lt_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,

gf_cnt TYPE i,

gf_sent_all(1) TYPE c,

gs_doc_data LIKE sodocchgi1,

gf_error TYPE sy-subrc.

  • Adds text to email text table

----


lt_message = 'Hi,'.

APPEND lt_message.CLEAR lt_message.APPEND lt_message.

lt_message = 'Requested design is released. Pls raise the TPR (If required to be ordered).'.

APPEND lt_message.CLEAR: lt_message.APPEND lt_message.

lt_message = 'Details of the released design:'. APPEND lt_message.

lt_message = '*******************************'.APPEND lt_message.CLEAR: lt_message.APPEND lt_message.

MOVE : 'TDR No ' TO lt_message.

lt_message+21(1) = ':'.

lt_message+22(40) = it_ztdr-tdrid .APPEND lt_message.

MOVE : 'PED Part no ' TO lt_message.

lt_message+21(1) = ':'.

lt_message+22(40) = it_ztdr-matnr.

APPEND lt_message.

CLEAR: wa_maktx.

SELECT SINGLE maktx FROM makt INTO wa_maktx WHERE matnr = it_ztdr-matnr.

MOVE 'PED Part Description' TO lt_message.

lt_message+21(1) = ':'.

lt_message+22(40) = wa_maktx .APPEND lt_message.

MOVE : 'PED Part Rev no' TO lt_message .

lt_message+21(1) = ':'.

lt_message+22(40) = it_ztdr-matnr_rv .APPEND lt_message.

MOVE: 'Rnd part No ' TO lt_message .

lt_message+21(1) = ':'.

lt_message+22(40) = it_ztdr-ref_matnr . APPEND lt_message.

MOVE : 'Rnd Part Rev ' TO lt_message .

lt_message+21(1) = ':'.

lt_message+22(40) = it_ztdr-ref_matnr_rv .APPEND lt_message.

CLEAR: lt_message.

APPEND lt_message.

APPEND lt_message.

lt_message = 'To View the Design:'.

APPEND lt_message.

lt_message = '*******************'.APPEND lt_message.

CLEAR: lt_message.

APPEND lt_message.

lt_message ='For Standard gauge, use Transaction: ZPED_TOOLPRINT'.

APPEND lt_message.

lt_message ='For Non-Standard gauge, use Transaction: ZCV04N or CV04N'.

APPEND lt_message.

*

*Send email message, although is not sent from SAP until mail send

*program has been executed(rsconn01)

----


  • Fill the document data.

gs_doc_data-doc_size = 1.

DATA subject TYPE string.

CONCATENATE 'Design Released for' it_ztdr-tdrid 'of' it_ztdr-ref_matnr

INTO subject SEPARATED BY space.

  • Populate the subject/generic message attributes

gs_doc_data-obj_langu = sy-langu.

gs_doc_data-obj_name = 'TDREQ'.

gs_doc_data-obj_descr = subject .

gs_doc_data-sensitivty = 'O'.

  • Describe the body of the message

CLEAR lt_packing_list.

REFRESH lt_packing_list.

lt_packing_list-transf_bin = space.

lt_packing_list-head_start = 1.

lt_packing_list-head_num = 0.

lt_packing_list-body_start = 1.

DESCRIBE TABLE lt_message LINES lt_packing_list-body_num.

lt_packing_list-doc_type = 'RAW'.

APPEND lt_packing_list.

CLEAR lt_receivers.

REFRESH lt_receivers.

  • Add the recipients email address

  • For SAP mail

  • IF NOT GSCR_UNAME IS INITIAL.

lt_receivers-receiver = it_ztdr-reqnm.

lt_receivers-rec_type = 'U'.

APPEND lt_receivers.

  • ENDIF.

  • For external mail

  • IF NOT gs_outtab-reqnm IS INITIAL.

  • lt_receivers-receiver = gs_outtab-reqnm.

  • lt_receivers-rec_type = 'U'.

  • APPEND lt_receivers.

  • ENDIF.

  • Call the FM to post the message to SAPMAIL

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = gs_doc_data

put_in_outbox = 'X'

commit_work = 'X'

IMPORTING

sent_to_all = gf_sent_all

TABLES

packing_list = lt_packing_list

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.

  • Store function module return code

gf_error = sy-subrc.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

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

ENDIF.

  • Get lt_receivers return code

LOOP AT lt_receivers.

ENDLOOP.

PERFORM initiate_mail_execute_program.

CLEAR:lt_message[] , lt_message , gs_doc_data ,gf_sent_all,lt_packing_list[]

,lt_packing_list ,lt_receivers[], lt_receivers.

ENDFORM. " SEND_MAIL

&----


*& 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