Beruflich Dokumente
Kultur Dokumente
*INITIALIZATION.
TYPES: BEGIN OF ty_mkpf,
mblnr TYPE mkpf-mblnr,
mjahr TYPE mkpf-mjahr,
bldat TYPE mkpf-bldat,
END OF ty_mkpf.
* IF sy-datum = lv_date_mail.
PERFORM get_data.
PERFORM get_final.
IF p_rad2 = 'X'.
PERFORM mail_header.
PERFORM mail_body.
ENDIF.
DESCRIBE TABLE it_final LINES DATA(lv_mail_count).
IF lv_check = 'X' AND p_rad2 = 'X'. "" Check For the mail radio button
* PERFORM send_mail.
* lv_mail_count = lv_mail_count.
WRITE:/ 'Mail Sent Successfully for ', lv_mail_count, ' Material(s)' COLOR 5.
* ENDIF.
ELSE.
* MESSAGE 'Program run Successfully' TYPE 'S'.
WRITE:/ 'Program run Successfully.'.
WRITE:/ lv_mail_count, ' Material(s) found in this Week' COLOR 5.
ENDIF.
END-OF-SELECTION.
IF p_rad1 = 'X'.
PERFORM prepare_fieldcat.
PERFORM alv_list_display.
ENDIF.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
BREAK-POINT.
wa_daterange-sign = 'I'.
wa_daterange-option = 'BT'.
wa_daterange-low = lv_date_sun.
wa_daterange-high = lv_date_sat.
APPEND wa_daterange TO it_daterange.
SELECT
mblnr
mjahr
matnr
erfmg
erfme
xblnr_mkpf
dmbtr
budat_mkpf
werks
lifnr
bwart
aufnr
ebeln
FROM mseg
INTO TABLE it_mseg
WHERE matnr IN s_matnr
AND werks IN s_werks
AND bwart IN s_bwart
AND cpudt_mkpf IN it_daterange. """Doc. Date between Sunday and Saturday.
SORT it_mseg.
SELECT
mblnr
mjahr
bldat
FROM mkpf
INTO TABLE it_mkpf
FOR ALL ENTRIES IN it_mseg
WHERE mblnr = it_mseg-mblnr
AND mjahr = it_mseg-mjahr.
"" AND bldat BETWEEN lv_date_sun AND lv_date_sat. """Doc Date between Sunday
and Saturday.
SORT it_mkpf.
SELECT *
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_mseg
WHERE spras IN ('EN', 'E')
AND matnr = it_mseg-matnr.
SORT it_makt.
SELECT * FROM lfa1 INTO TABLE it_lfa1 FOR ALL ENTRIES IN it_mseg WHERE lifnr =
it_mseg-lifnr.
IF it_lfa1 IS NOT INITIAL.
SELECT * FROM adr6 INTO TABLE it_adr6 FOR ALL ENTRIES IN it_lfa1 WHERE
addrnumber = it_lfa1-adrnr.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_FINAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_final .
wa_final-matnr = wa_mseg-matnr.
wa_final-erfmg = wa_mseg-erfmg.
wa_final-erfme = wa_mseg-erfme.
wa_final-xblnr_mkpf = wa_mseg-xblnr_mkpf.
wa_final-dmbtr = wa_mseg-dmbtr.
wa_final-budat_mkpf = wa_mseg-budat_mkpf.
wa_final-werks = wa_mseg-werks.
wa_final-ebeln = wa_mseg-ebeln.
wa_final-mblnr = wa_mkpf-mblnr.
wa_final-bldat = wa_mkpf-bldat.
ENDIF.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mseg-matnr BINARY SEARCH.
IF sy-subrc = 0.
wa_final-maktx = wa_makt-maktx.
ENDIF.
wa_final-adrnr = wa_lfa1-adrnr.
wa_final-email = wa_adr6-smtp_addr.
wa_ven_email-adrnr = wa_lfa1-adrnr.
wa_ven_email-email = wa_adr6-smtp_addr.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PREPARE_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prepare_fieldcat .
CLEAR wa_fcat.
REFRESH it_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'LIFNR'.
wa_fcat-seltext_m = 'Vendor'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-seltext_m = 'Material'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'MAKTX'.
wa_fcat-seltext_m = 'Material Description'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'ERFMG'.
wa_fcat-seltext_m = 'Quantity'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'ERFME'.
wa_fcat-seltext_m = 'Unit of Entry'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'XBLNR_MKPF'.
wa_fcat-seltext_m = 'Refrence'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'BMBTR'.
wa_fcat-seltext_m = 'Currency'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'BLDAT'.
wa_fcat-seltext_m = 'Doc. Date'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'MBLNR'.
wa_fcat-seltext_m = 'Material Doc.'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'BUDAT_MKPF'.
wa_fcat-seltext_m = 'Posting Date'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'Werks'.
wa_fcat-seltext_m = 'Plant'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
* lv_col = 1 + lv_col.
* wa_fcat-col_pos = lv_col.
* wa_fcat-fieldname = 'LIFNR'.
* wa_fcat-seltext_m = 'Vendor'.
* APPEND wa_fcat TO it_fcat.
* CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'BWART'.
wa_fcat-seltext_m = 'Movement Type'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'AUFNR'.
wa_fcat-seltext_m = 'Order'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'EBELN'.
wa_fcat-seltext_m = 'PO'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'ADRNR'.
wa_fcat-seltext_m = 'Address Number'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
lv_col = 1 + lv_col.
wa_fcat-col_pos = lv_col.
wa_fcat-fieldname = 'EMAIL'.
wa_fcat-seltext_m = 'Email ID'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ENDIF.
wa_layout-colwidth_optimize = 'X'.
wa_layout-zebra = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ALV_LIST_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM alv_list_display .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form MAIL_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM mail_header .
CLEAR wa_it_message.
c1 = 'Dear Sir / Madam'.
CONCATENATE c1 ',' INTO wa_it_message-line. " SEPARATED BY space.
APPEND wa_it_message TO it_message.
wa_it_message-line = ''.
APPEND wa_it_message TO it_message.
wa_it_message-line = ''.
APPEND wa_it_message TO it_message.
wa_it_message-line = ''.
APPEND wa_it_message TO it_message.
wa_it_message-line = ''.
APPEND wa_it_message TO it_message.
wa_it_message-line = ''.
APPEND wa_it_message TO it_message.
wa_it_message-line = ''.
APPEND wa_it_message TO it_message.
wa_it_message-line = 'Thanks and Regards,'.
APPEND wa_it_message TO it_message.
wa_it_message-line = 'HITPA of India Pvt Ltd'.
APPEND wa_it_message TO it_message.
wa_it_message-line = ''.
APPEND wa_it_message TO it_message.
wa_it_message-line = ''.
APPEND wa_it_message TO it_message.
wa_it_message-line = '*** Note:- This is a system generated mail, please do not
reply.'.
APPEND wa_it_message TO it_message.
CONCATENATE 'Se.No'
'Material'
'Material Desc.'
'Quantity'
'Unit of Entry'
'Reference'
'Loc. Currency Amount'
'Doc. Date'
'Material Document'
'Posting Date'
'Plant'
'Vendor'
'Movement Type'
'Order'
'PO No.'
INTO wa_attachment SEPARATED BY
cl_abap_char_utilities=>horizontal_tab.
* CONCATENATE cl_abap_char_utilities=>cr_lf wa_attachment INTO wa_attachment.
APPEND wa_attachment TO it_attachment_header. "" Added to the Header in
Attachment file.
CLEAR: wa_attachment.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form MAIL_BODY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM mail_body .
DATA: lv_count_new TYPE i VALUE 5.
SORT it_final BY lifnr ASCENDING.
SORT it_ven_email BY lifnr ASCENDING.
DELETE ADJACENT DUPLICATES FROM it_ven_email COMPARING lifnr.
LOOP AT it_final INTO wa_final.
BREAK-POINT.
lv_count = lv_count + 1.
ON CHANGE OF wa_final-lifnr. "" Logic to send the mail to all the Vendor .
REFRESH : it_attachment_vendor.
* APPEND LINES OF it_attachment_header TO it_attachment_vendor.
it_attachment_vendor = it_attachment.
REFRESH it_attachment.
IF lv_email NE ''.
PERFORM mail_footer.
PERFORM send_mail.
ENDIF.
ENDON.
CONCATENATE
lv_count
wa_final-matnr
wa_final-maktx
wa_final-erfmg
wa_final-erfme
wa_final-xblnr_mkpf
wa_final-dmbtr
wa_final-bldat
wa_final-mblnr
wa_final-budat_mkpf
wa_final-werks
wa_final-lifnr
wa_final-bwart
wa_final-aufnr
wa_final-ebeln
INTO wa_attachment SEPARATED BY
cl_abap_char_utilities=>horizontal_tab.
CONCATENATE cl_abap_char_utilities=>cr_lf wa_attachment INTO wa_attachment.
APPEND wa_attachment TO it_attachment.
CLEAR: wa_attachment.
CLEAR: lv_email.
READ TABLE it_ven_email INTO wa_ven_email WITH KEY adrnr = wa_final-adrnr
lifnr = wa_final-lifnr
email = wa_final-email.
IF sy-subrc = 0 AND wa_ven_email-email NE ''.
lv_email = wa_ven_email-email.
ELSE.
lv_email = 'dummy@gmail.com'.
ENDIF.
lv_check = 'X'.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form MAIL_FOOTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM mail_footer .
CLEAR wa_it_message.
ENDIF.
gd_doc_data-doc_size = 1.
*Populate the subject/generic message attributes
gd_doc_data-obj_langu = sy-langu.
gd_doc_data-obj_name = 'SAPRPT'.
gd_doc_data-obj_descr = psubject.
gd_doc_data-sensitivty = 'F'.
*Describe the body of the message
CLEAR wa_it_packing_list.
REFRESH it_packing_list.
wa_it_packing_list-transf_bin = space.
wa_it_packing_list-head_start = 1.
wa_it_packing_list-head_num = 0.
wa_it_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES wa_it_packing_list-body_num.
wa_it_packing_list-doc_type = 'RAW'.
APPEND wa_it_packing_list TO it_packing_list.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SEND_MAIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM send_mail .
*&------ Call the Function Module to send the message to External and SAP Inbox
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = gd_doc_data
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = it_packing_list
* contents_bin = it_attachment_vendor "" Added on 15.05.2019
contents_bin = it_attachment_head_body "" Added on 15.05.2019
contents_txt = it_message
receivers = it_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.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSEIF sy-subrc = 0.
MESSAGE 'Mail Sent' TYPE 'S'.
ENDIF.
ENDFORM.