cancel
Showing results for 
Search instead for 
Did you mean: 

Email Smartforms with Email Body

Former Member
0 Kudos

Hello SAP Community,

Sorry if my question has been asked before, but I did not find any answeres yet.

I am using BO SOFMFOL and these FM to send my smartforms to external email:

- CREATE_RECIPIENT_OBJ_PPF

- CREATE_SENDER_OBJECT_PPF

- SO_USER_AUTOMATIC_INSERT

This is working fine. My question is: How do you add an Email Body? I am on ECC 6.0.

Appreciate any inputs on this issue.

Many thanks,

Kim

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Kim,

I had a requirement to convert the out put into PDF format and send an email using the function module SO_NEW_DOCUMENT_ATT_SEND_API1.

I am providing my coding, hope it helps:

-

form SEND_EMAIL .

DATA: t_mailpack TYPE sopcklsti1 OCCURS 0 WITH HEADER LINE,

t_mailhead TYPE solisti1 OCCURS 0 WITH HEADER LINE,

t_mailbin TYPE solisti1 OCCURS 0 WITH HEADER LINE,

t_mailtxt TYPE solisti1 OCCURS 0 WITH HEADER LINE,

t_mailrec TYPE somlreci1 OCCURS 0 WITH HEADER LINE.

DATA: wa_maildata TYPE sodocchgi1,

l_filename(50) TYPE c,

l_fldname(30) TYPE c,

l_fldval(100) TYPE c,

l_lines TYPE i,

l_text TYPE text128 .

DATA: w_email_subrc TYPE i.

DATA: w_ship like vbfa-vbeln.

CLEAR: wa_maildata,

t_mailtxt,

t_mailbin,

t_mailpack,

t_mailhead,

t_mailrec.

REFRESH: t_mailtxt,

t_mailbin,

t_mailpack,

t_mailhead,

t_mailrec.

*-- Fill output file

*- Fill header

CLEAR: t_mailbin.

  • t_mailbin[] = pdf_tab[].

t_mailbin[] = it_att[]. "Uthaman

*This line is added to get the shipment no in Subject Line

SELECT SINGLE * FROM vbfa WHERE vbelv EQ nast-objky

AND vbtyp_v EQ c_vbtyp_v_j

AND vbtyp_n EQ c_vbtyp_n_8.

w_ship = vbfa-vbeln.

shift w_ship left deleting leading '0'.

***********************************************************

*-- File name

if nast-kschl EQ 'ZFPL'.

CLEAR l_filename.

CONCATENATE 'Packing List -'

sy-datum4(2) sy-datum6(2) sy-datum(4) '.PDF' INTO l_filename.

*-- Creation of the document to be sent File Name

wa_maildata-obj_name = 'Packing List'.

*-- Mail Subject

CONCATENATE l_filename '-' 'Shipment No -' w_ship INTO wa_maildata-obj_descr SEPARATED BY space.

*-- Mail Contents

t_mailtxt-line = 'Packing List'.

APPEND t_mailtxt.

ENDIF.

if nast-kschl EQ 'ZFBA'.

CLEAR l_filename.

CONCATENATE 'Booking Advice -'

sy-datum4(2) sy-datum6(2) sy-datum(4) '.PDF'

INTO l_filename.

*-- Creation of the document to be sent File Name

wa_maildata-obj_name = 'Booking Advice'.

*-- Mail Subject

CONCATENATE l_filename '-' 'Shipment No -' w_ship INTO wa_maildata-obj_descr SEPARATED BY space.

*-- Mail Contents

t_mailtxt-line = 'Packing List'.

APPEND t_mailtxt.

ENDIF.

*-- Prepare Packing List

*-- Write Packing List (Main Subject)

CLEAR: l_lines, t_mailpack.

DESCRIBE TABLE t_mailtxt LINES l_lines.

  • READ TABLE t_mailtxt INDEX l_lines.

t_mailpack-doc_size = ( l_lines - 1 ) * 255 + STRLEN( t_mailtxt ).

  • CLEAR t_mailpack-transf_bin.

t_mailpack-transf_bin = ' '.

t_mailpack-head_start = 1.

t_mailpack-head_num = 0.

t_mailpack-body_start = 1.

t_mailpack-body_num = l_lines.

t_mailpack-doc_type = 'RAW'.

APPEND t_mailpack.

t_mailhead = l_filename.

APPEND t_mailhead.

*-- Write Packing List (Attachment)

CLEAR: l_lines, t_mailpack.

DESCRIBE TABLE pdf_tab[] LINES l_lines.

  • READ TABLE pdf_tab INDEX l_lines.

t_mailpack-doc_size = ( l_lines - 1 ) * 255 + STRLEN( t_mailbin ).

t_mailpack-transf_bin = 'X'.

t_mailpack-head_start = 1.

t_mailpack-head_num = 1.

t_mailpack-body_start = 1.

t_mailpack-body_num = l_lines.

t_mailpack-doc_type = 'PDF'.

t_mailpack-obj_name = l_filename.

t_mailpack-obj_descr = l_filename.

t_mailpack-obj_langu = 'E'.

APPEND t_mailpack.

*-- Set recipients

tables : ztotcemail.

SELECT SINGLE * FROM vbfa WHERE vbelv EQ nast-objky

AND vbtyp_v EQ c_vbtyp_v_j

AND vbtyp_n EQ c_vbtyp_n_8.

CLEAR vttk.

SELECT SINGLE * FROM vttk WHERE tknum EQ vbfa-vbeln.

SELECT SINGLE * FROM ztotcemail WHERE tplst = vttk-tplst

AND lifnr = vttk-tdlnr.

IF SY-SUBRC EQ 0.

t_mailrec-receiver = ztotcemail-smtp_addr. .

t_mailrec-rec_type = 'U'.

APPEND t_mailrec.

ENDIF.

**-- Sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = wa_maildata

put_in_outbox = 'X'

  • commit_work = 'X' " N-16

TABLES

packing_list = t_mailpack

object_header = t_mailhead

contents_bin = t_mailbin[]

contents_txt = t_mailtxt[]

receivers = t_mailrec

EXCEPTIONS

too_many_receivers = 1

document_not_sent = 2

operation_no_authorization = 4

OTHERS = 99.

w_email_subrc = sy-subrc.

IF sy-subrc EQ 0.

MESSAGE s000(zotc) WITH 'Email output sent successfully'.

ELSE.

MESSAGE s000(zotc) WITH 'Can not send email output'.

ENDIF.

endform. " SEND_EMAIL

Regards,

Kittu

Former Member
0 Kudos

Hmm.. so this is not possible? I would have to re-do the entire logic and use SEND_API1 FMs?

Thanks,

Kim

Former Member
0 Kudos

Hi kim,

Personally i feel doing the same using the FM" SO_NEW_DOCUMENT_ATT_SEND_API1 " only and did the same it was successfull..

Regards,

Aditya