Send mail : simple code to help how to send mail
Well i going to cover all senario below topic
Reports : Alv Reports, Classical Report And interactive Reports
Forms : Scripts and Smart Forms Adove Forms
Interface : RFC BAPI ALE/IDCS
Converstion : BDC LSMW BAPI
Enhancement : User-EXITS BADI, Customer Exit
when you working reports and smartforms then many time requirments to send mail suppose you have working alv reports then you get requiremnts to send your reports to mail attachments to then
sime code going to help out how to send mail as pdf and execel attachments lets play this code and
send your mail anywhere in sap abap programming langauge
****Objects to send mail.
DATA: lt_tline TYPE TABLE OF tline WITH HEADER LINE,
lt_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
lt_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
****Work Area declarations
DATA : ls_objhead TYPE soli_tab,
ls_doc_chng TYPE sodocchgi1,
ls_buffer TYPE string.
DATA: v_lines_txt TYPE i,
v_lines_bin TYPE i.
DATA docs LIKE docs OCCURS 0 WITH HEADER LINE.
DATA excelsize TYPE i.
DATA excel LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA doc LIKE sodocchgi1.
DATA excelln TYPE i.
DATA int_objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.
DATA int_objhead LIKE solisti1 OCCURS 2 WITH HEADER LINE.
DATA int_objtext LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA int_reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE.
DATA bodyln LIKE sy-tabix.
DATA output_data TYPE ssfcrescl.
LOOP AT lt_tline.
TRANSLATE lt_tline USING '~'.
CONCATENATE ls_buffer lt_tline INTO ls_buffer.
ENDLOOP.
TRANSLATE ls_buffer USING '~'.
DO.
lt_record = ls_buffer.
APPEND lt_record.
SHIFT ls_buffer LEFT BY 255 PLACES.
IF ls_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
excel[] = wa_data[].
** excel table sizes
DESCRIBE TABLE excel LINES excelln.
** body email
int_objtext-line = 'Test Body'.
APPEND int_objtext.
DESCRIBE TABLE int_objtext LINES bodyln.
READ TABLE int_objtext INDEX bodyln.
* CLEAR doc.
* doc-doc_size = ( bodyln - 1 ) * 255 + strlen( int_objtext ).
* doc-obj_name = ' '.
* doc-sensitivty = 'P'.
* doc-proc_syst = sy-sysid.
* doc-proc_clint = sy-mandt.
* CLEAR: int_objpack, int_objpack[].
* int_objpack-transf_bin = ' '.
* int_objpack-head_start = 1.
* int_objpack-head_num = 0.
* int_objpack-body_start = 1.
* int_objpack-body_num = bodyln.
* int_objpack-doc_type = 'RAW'.
* int_objpack-obj_descr = 'Test'.
* APPEND int_objpack.
CLEAR: int_objhead, int_objhead[].
int_objhead = 'Attachment'.
APPEND int_objhead.
***Attachment
REFRESH: lt_reclist,
lt_objtxt,
lt_objbin,
lt_objpack.
CLEAR ls_objhead.
lt_objbin[] = lt_record[].
****Create Message Body Title and Description
lt_objtxt-line = 'Dear Sir/Madam,'.
APPEND lt_objtxt.
CLEAR lt_objtxt.
lt_objtxt-line = space.
APPEND lt_objtxt.
CLEAR lt_objtxt.
lt_objtxt-line = 'Hello.....'.
APPEND lt_objtxt.
CLEAR lt_objtxt.
lt_objtxt-line = space.
APPEND lt_objtxt.
CLEAR lt_objtxt.
lt_objtxt = 'Regards,'.
APPEND lt_objtxt.
lt_objtxt = ''.
APPEND lt_objtxt.
lt_objtxt = 'Nirav Mandaliya.'.
APPEND lt_objtxt.
DESCRIBE TABLE lt_objtxt LINES v_lines_txt.
READ TABLE lt_objtxt INDEX v_lines_txt.
ls_doc_chng-obj_name = 'PO'.
ls_doc_chng-expiry_dat = sy-datum + 10.
ls_doc_chng-obj_descr = 'Nirav Test '.
ls_doc_chng-sensitivty = 'F'.
ls_doc_chng-doc_size = v_lines_txt * 255.
****Main Text
CLEAR lt_objpack-transf_bin.
lt_objpack-head_start = 1.
lt_objpack-head_num = 0.
lt_objpack-body_start = 1.
lt_objpack-body_num = v_lines_txt.
lt_objpack-doc_type = 'RAW'.
APPEND lt_objpack.
****Attachment (pdf-Attachment)
lt_objpack-transf_bin = 'X'.
lt_objpack-head_start = 1.
lt_objpack-head_num = 0.
lt_objpack-body_start = 1.
DESCRIBE TABLE lt_objbin LINES v_lines_bin.
READ TABLE lt_objbin INDEX v_lines_bin.
lt_objpack-doc_size = excelsize.
lt_objpack-body_num = excelln.
lt_objpack-doc_type = 'XLS'.
lt_objpack-obj_name = 'excel'..
lt_objpack-obj_langu = 'E'.
lt_objpack-obj_descr = 'Report in Excel'.
APPEND lt_objpack.
****E-mail receivers.
lt_reclist-receiver = 'nirav.mandaliya@squirrelsoftech.in'."gs_final-ven_mail_id. "---------->email id
lt_reclist-express = 'X'.
lt_reclist-rec_type = 'U'.
APPEND lt_reclist.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = ls_doc_chng
put_in_outbox = 'X'
* sender_address = mail_add
* sender_address_type = c_type
commit_work = 'X'
TABLES
packing_list = lt_objpack
object_header = ls_objhead
contents_bin = lt_objbin
contents_txt = lt_objtxt
receivers = lt_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.
ELSE.
MESSAGE 'Mail has been Successfully sent.' TYPE 'S'.
ENDIF.
Reports : Alv Reports, Classical Report And interactive Reports
Forms : Scripts and Smart Forms Adove Forms
Interface : RFC BAPI ALE/IDCS
Converstion : BDC LSMW BAPI
Enhancement : User-EXITS BADI, Customer Exit
when you working reports and smartforms then many time requirments to send mail suppose you have working alv reports then you get requiremnts to send your reports to mail attachments to then
sime code going to help out how to send mail as pdf and execel attachments lets play this code and
send your mail anywhere in sap abap programming langauge
****Objects to send mail.
DATA: lt_tline TYPE TABLE OF tline WITH HEADER LINE,
lt_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
lt_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
lt_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.
****Work Area declarations
DATA : ls_objhead TYPE soli_tab,
ls_doc_chng TYPE sodocchgi1,
ls_buffer TYPE string.
DATA: v_lines_txt TYPE i,
v_lines_bin TYPE i.
DATA docs LIKE docs OCCURS 0 WITH HEADER LINE.
DATA excelsize TYPE i.
DATA excel LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA doc LIKE sodocchgi1.
DATA excelln TYPE i.
DATA int_objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.
DATA int_objhead LIKE solisti1 OCCURS 2 WITH HEADER LINE.
DATA int_objtext LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA int_reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE.
DATA bodyln LIKE sy-tabix.
DATA output_data TYPE ssfcrescl.
LOOP AT lt_tline.
TRANSLATE lt_tline USING '~'.
CONCATENATE ls_buffer lt_tline INTO ls_buffer.
ENDLOOP.
TRANSLATE ls_buffer USING '~'.
DO.
lt_record = ls_buffer.
APPEND lt_record.
SHIFT ls_buffer LEFT BY 255 PLACES.
IF ls_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
excel[] = wa_data[].
** excel table sizes
DESCRIBE TABLE excel LINES excelln.
** body email
int_objtext-line = 'Test Body'.
APPEND int_objtext.
DESCRIBE TABLE int_objtext LINES bodyln.
READ TABLE int_objtext INDEX bodyln.
* CLEAR doc.
* doc-doc_size = ( bodyln - 1 ) * 255 + strlen( int_objtext ).
* doc-obj_name = ' '.
* doc-sensitivty = 'P'.
* doc-proc_syst = sy-sysid.
* doc-proc_clint = sy-mandt.
* CLEAR: int_objpack, int_objpack[].
* int_objpack-transf_bin = ' '.
* int_objpack-head_start = 1.
* int_objpack-head_num = 0.
* int_objpack-body_start = 1.
* int_objpack-body_num = bodyln.
* int_objpack-doc_type = 'RAW'.
* int_objpack-obj_descr = 'Test'.
* APPEND int_objpack.
CLEAR: int_objhead, int_objhead[].
int_objhead = 'Attachment'.
APPEND int_objhead.
***Attachment
REFRESH: lt_reclist,
lt_objtxt,
lt_objbin,
lt_objpack.
CLEAR ls_objhead.
lt_objbin[] = lt_record[].
****Create Message Body Title and Description
lt_objtxt-line = 'Dear Sir/Madam,'.
APPEND lt_objtxt.
CLEAR lt_objtxt.
lt_objtxt-line = space.
APPEND lt_objtxt.
CLEAR lt_objtxt.
lt_objtxt-line = 'Hello.....'.
APPEND lt_objtxt.
CLEAR lt_objtxt.
lt_objtxt-line = space.
APPEND lt_objtxt.
CLEAR lt_objtxt.
lt_objtxt = 'Regards,'.
APPEND lt_objtxt.
lt_objtxt = ''.
APPEND lt_objtxt.
lt_objtxt = 'Nirav Mandaliya.'.
APPEND lt_objtxt.
DESCRIBE TABLE lt_objtxt LINES v_lines_txt.
READ TABLE lt_objtxt INDEX v_lines_txt.
ls_doc_chng-obj_name = 'PO'.
ls_doc_chng-expiry_dat = sy-datum + 10.
ls_doc_chng-obj_descr = 'Nirav Test '.
ls_doc_chng-sensitivty = 'F'.
ls_doc_chng-doc_size = v_lines_txt * 255.
****Main Text
CLEAR lt_objpack-transf_bin.
lt_objpack-head_start = 1.
lt_objpack-head_num = 0.
lt_objpack-body_start = 1.
lt_objpack-body_num = v_lines_txt.
lt_objpack-doc_type = 'RAW'.
APPEND lt_objpack.
****Attachment (pdf-Attachment)
lt_objpack-transf_bin = 'X'.
lt_objpack-head_start = 1.
lt_objpack-head_num = 0.
lt_objpack-body_start = 1.
DESCRIBE TABLE lt_objbin LINES v_lines_bin.
READ TABLE lt_objbin INDEX v_lines_bin.
lt_objpack-doc_size = excelsize.
lt_objpack-body_num = excelln.
lt_objpack-doc_type = 'XLS'.
lt_objpack-obj_name = 'excel'..
lt_objpack-obj_langu = 'E'.
lt_objpack-obj_descr = 'Report in Excel'.
APPEND lt_objpack.
****E-mail receivers.
lt_reclist-receiver = 'nirav.mandaliya@squirrelsoftech.in'."gs_final-ven_mail_id. "---------->email id
lt_reclist-express = 'X'.
lt_reclist-rec_type = 'U'.
APPEND lt_reclist.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = ls_doc_chng
put_in_outbox = 'X'
* sender_address = mail_add
* sender_address_type = c_type
commit_work = 'X'
TABLES
packing_list = lt_objpack
object_header = ls_objhead
contents_bin = lt_objbin
contents_txt = lt_objtxt
receivers = lt_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.
ELSE.
MESSAGE 'Mail has been Successfully sent.' TYPE 'S'.
ENDIF.
Comments
Post a Comment