1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
*&---------------------------------------------------------------------*
*& Report ZTEST_MAIL
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest_mail.
DATA:fm_name TYPE rs38l_fnam.
DATA:wa_control_par TYPE ssfctrlop.
DATA:it_otf_data TYPE ssfcrescl.
DATA:it_otf_final TYPE itcoo OCCURS 0 WITH HEADER LINE.
DATA:bin_filesize TYPE i.
DATA:it_pdfdata TYPE TABLE OF tline.
DATA:it_pdf TYPE TABLE OF solisti1.
DATA :g_sent_to_all TYPE sonv-flag.
DATA :g_tab_lines TYPE i.
DATA :i_document_data TYPE STANDARD TABLE OF sodocchgi1,
i_packing_list TYPE STANDARD TABLE OF sopcklsti1,
i_attachment TYPE STANDARD TABLE OF solisti1,
i_body_msg TYPE STANDARD TABLE OF solisti1,
i_receivers TYPE STANDARD TABLE OF somlreci1,
i_pdf TYPE STANDARD TABLE OF tline,
w_document_data LIKE LINE OF i_document_data,
w_packing_list LIKE LINE OF i_packing_list,
w_attachment LIKE LINE OF i_attachment,
w_body_msg LIKE LINE OF i_body_msg,
w_receivers LIKE LINE OF i_receivers,
w_pdf LIKE LINE OF i_pdf.
START-OF-SELECTION.
"Get Function module name for given smartform
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZDBEL_TEST'
IMPORTING
fm_name = fm_name.
wa_control_par-getotf = 'X'. "Set this to get OTF data
wa_control_par-no_dialog = 'X'. "It supresses the Printer dialog.
wa_control_par-preview = space. "It supresses the Printer dialog.
CALL FUNCTION fm_name
EXPORTING
control_parameters = wa_control_par
IMPORTING
job_output_info = it_otf_data
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
WRITE: 'DIE ', sy-subrc.
STOP.
ENDIF.
APPEND LINES OF it_otf_data-otfdata[] TO it_otf_final[].
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = bin_filesize
TABLES
otf = it_otf_final
lines = it_pdfdata[].
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
EXPORTING
line_width_dst = '255'
TABLES
content_in = it_pdfdata[]
content_out = it_pdf[].
IF sy-subrc = 0.
"Send mail
PERFORM send_mail.
ENDIF.
*&---------------------------------------------------------------------*
*& Form SEND_MAIL
*&---------------------------------------------------------------------*
FORM send_mail .
"Subject of the mail.
w_document_data-obj_name = 'MAIL_TO_HEAD'.
w_document_data-obj_descr = 'Regarding Mail Program by SAP ABAP'.
"Body of the mail
w_body_msg = 'This is body of mail msg.'.
APPEND w_body_msg TO i_body_msg.
CLEAR w_body_msg.
"Write Packing List for Body
DESCRIBE TABLE i_body_msg LINES g_tab_lines.
w_packing_list-head_start = 1.
w_packing_list-head_num = 0.
w_packing_list-body_start = 1.
w_packing_list-body_num = g_tab_lines.
w_packing_list-doc_type = 'RAW'.
APPEND w_packing_list TO i_packing_list.
CLEAR w_packing_list.
"Write Packing List for Attachment
w_packing_list-transf_bin = 'X'.
w_packing_list-head_start = 1.
w_packing_list-head_num = 1.
w_packing_list-body_start = 1.
DESCRIBE TABLE it_pdf LINES w_packing_list-body_num.
w_packing_list-doc_type = 'PDF'.
w_packing_list-obj_descr = 'PDF Attachment'.
w_packing_list-obj_name = 'PDF_ATTACHMENT'.
w_packing_list-doc_size = w_packing_list-body_num * 255.
APPEND w_packing_list TO i_packing_list.
CLEAR w_packing_list.
"Fill the document data and get size of attachment
w_document_data-obj_langu = sy-langu.
READ TABLE it_pdf INTO w_pdf INDEX g_tab_lines.
w_document_data-doc_size = ( g_tab_lines - 1 ) * 255 + strlen( w_attachment ).
"Receivers List.
w_receivers-rec_type = 'U'."Internet address
w_receivers-receiver = 'test@test.com'.
w_receivers-com_type = 'INT'.
w_receivers-notif_del = 'X'.
w_receivers-notif_ndel = 'X'.
APPEND w_receivers TO i_receivers .
CLEAR:w_receivers.
"Function module to send mail to Recipients
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_document_data
put_in_outbox = 'X'
commit_work = 'X'
IMPORTING
sent_to_all = g_sent_to_all
TABLES
packing_list = i_packing_list
contents_bin = it_pdf
contents_txt = i_body_msg
receivers = i_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 i303(me) WITH 'Mail has been Successfully Sent.'.
ENDIF.
ENDFORM. " SEND_MAIL |
Partager