Monday, March 21, 2011

Send Greetings mail on Birthday

REPORT zbirthday MESSAGE-ID zhr.

DATA : BEGIN OF it_pa0002 OCCURS 0,
pernr LIKE pa0002-pernr,
nachn LIKE pa0002-nachn,
vorna LIKE pa0002-vorna,
gbdat like pa0002-gbdat,
END OF it_pa0002.

DATA : BEGIN OF it_pa0000 OCCURS 0,
pernr LIKE pa0000-pernr,
END OF it_pa0000.

START-OF-SELECTION.

SELECT pernr nachn vorna gbdat
FROM pa0002
INTO TABLE it_pa0002
WHERE endda >= sy-datum
AND begda <= sy-datum .

IF sy-subrc = 0.
SORT it_pa0002 BY pernr.
DELETE ADJACENT DUPLICATES FROM it_pa0002 COMPARING pernr.
ELSE.
MESSAGE i000 WITH 'No records exist'.
STOP.
ENDIF.

SELECT pernr FROM pa0000
INTO TABLE it_pa0000
FOR ALL ENTRIES IN it_pa0002
WHERE pernr = it_pa0002-pernr
AND endda >= sy-datum
AND begda <= sy-datum
AND stat2 = '3'.

IF sy-subrc = 0.
SORT it_pa0000 BY pernr.
DELETE ADJACENT DUPLICATES FROM it_pa0000 COMPARING pernr.
ELSE.
MESSAGE i000 WITH 'No records exist'.
STOP.
ENDIF.

*--Send Mail
LOOP AT it_pa0000.

PERFORM send_mail.

ENDLOOP.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form SEND_MAIL
*&---------------------------------------------------------------------*
* Send Mail
*----------------------------------------------------------------------*
FORM send_mail.

DATA : lit_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
lit_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lit_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lit_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.

DATA : dl_objhead TYPE soli_tab,
dl_doc_chng TYPE sodocchgi1,
dl_lines_bin TYPE i,
dl_lines_txt TYPE i.

clear : it_pa0002.

READ TABLE it_pa0002 WITH KEY pernr = it_pa0000-pernr.
IF it_pa0002-gbdat+4(4) = sy-datum+4(4).

*--Body of the Mail
CONCATENATE 'Dear' it_pa0002-vorna it_pa0002-nachn ',' INTO lit_objtxt
SEPARATED BY space.
APPEND lit_objtxt.

lit_objtxt = ''.
APPEND lit_objtxt.

CONCATENATE 'Wish you a Very Happy Birthday!' '' INTO
lit_objtxt SEPARATED BY space.
APPEND lit_objtxt.

lit_objtxt = ''.
APPEND lit_objtxt.

lit_objtxt = 'Regards,'.
APPEND lit_objtxt.

lit_objtxt = 'HR Team.'.
APPEND lit_objtxt.

DESCRIBE TABLE lit_objtxt LINES dl_lines_txt.

***---Document information.
CONCATENATE 'Birthday' '' INTO dl_doc_chng-obj_name
SEPARATED BY space.

CONCATENATE 'Birthday' ' Greetings' INTO dl_doc_chng-obj_descr
SEPARATED BY space.

dl_doc_chng-sensitivty = 'F'. "Functional object
dl_doc_chng-obj_langu = sy-langu.

lit_objpack-transf_bin = space.
lit_objpack-head_start = 1.
lit_objpack-head_num = 0.
lit_objpack-body_start = 1.
lit_objpack-body_num = dl_lines_txt.
lit_objpack-doc_type = 'RAW'.
APPEND lit_objpack.

*-- E-mail receivers
SELECT SINGLE
usrid_long
FROM pa0105
INTO lit_reclist-receiver
WHERE pernr = it_pa0000-pernr
AND subty = '0010'.
IF sy-subrc = 0.
lit_reclist-rec_type = 'U'.
APPEND lit_reclist.
ENDIF.

*-- Fill in HR or Managers Email ID
* lit_reclist-receiver = ''.
* lit_reclist-copy = 'X'.
* lit_reclist-rec_type = 'U'.
* APPEND lit_reclist.

*--Sending mail.
IF lit_reclist[] IS NOT INITIAL.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = dl_doc_chng
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = lit_objpack
contents_txt = lit_objtxt
receivers = lit_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.
ENDIF.
ENDIF.

ENDIF.

ENDFORM. " SEND_MAIL

No comments:

Post a Comment