cancel
Showing results for 
Search instead for 
Did you mean: 

REGARDING Sending email from smartform

Former Member
0 Kudos

Hi Experts,

I get to know about how to send an email of smartform output from sdn. Its working fine. but now my requirement is the sender address should be different from the sender. I have used sender option in SO_NEW_DOCUMENT_SEND_API1.

currently my system is not configured. so each and every messages will stored in SOST transaction.

When iam executing without sender's option, the mail is appearing in SOST transaction.but when i exeecuting with sender as exporting parameter to the FM, mail is not appearing in SOST transaction.

can anybody help me please in this issue.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

Check this Program,

In email Adress location maintain email adress.

hope it will help u

REPORT zmm_vendor_reminder_mail.

TABLES : ekko,ekpo,eket,makt,adrc,adr6,lfa1.

DATA: fm_name TYPE rs38l_fnam.

DATA: BEGIN OF itab1 OCCURS 0.

INCLUDE STRUCTURE lfa1.

DATA: END OF itab1.

DATA : BEGIN OF itab OCCURS 0.

INCLUDE STRUCTURE zmm_podetails.

DATA: END OF itab.

DATA : BEGIN OF it_pos OCCURS 0 ,

bukrs LIKE ekpo-bukrs,

werks LIKE ekpo-werks,

ebeln LIKE eket-ebeln,

ebelp LIKE eket-ebelp,

etenr LIKE eket-etenr,

bedat LIKE eket-bedat,

matnr LIKE ekpo-matnr,

meins LIKE ekpo-meins,

menge LIKE eket-menge,

wemng LIKE eket-wemng,

eindt LIKE eket-eindt,

lifnr LIKE ekko-lifnr,

END OF it_pos.

DATA : BEGIN OF it_vendor OCCURS 0 ,

lifnr LIKE lfa1-lifnr,

name1 LIKE adrc-name1,

street LIKE adrc-street,

str_suppl1 LIKE adrc-str_suppl1,

str_suppl2 LIKE adrc-str_suppl2,

city1 LIKE adrc-city1,

post_code1 LIKE adrc-post_code1,

smtp_addr LIKE adr6-smtp_addr,

adrnr LIKE lfa1-adrnr,

telf1 LIKE lfa1-telf1,

telf2 LIKE lfa1-telf2,

END OF it_vendor.

*RAMESH **********

tables: soud.

data: control_parameters TYPE ssfctrlop,

output_options TYPE ssfcompop,

EMail_Subject(50) TYPE c value 'abc'.

DATA: email_recipient TYPE SWOTOBJID,

email_sender TYPE SWOTOBJID,

g_mail_app_obj type SWOTOBJID.

*concatenate text-004 '400000124' into EMail_Subject.

control_parameters-device = 'MAIL'.

control_parameters-no_dialog = 'X'.

control_parameters-preview = space.

output_options-tdnewid = 'X'.

output_options-tdtitle = EMail_Subject.

SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS : s_bukrs FOR ekpo-bukrs,

s_werks FOR ekpo-werks,

s_ekgrp FOR ekko-ekgrp,

s_lifnr FOR ekko-lifnr,

s_ebeln FOR ekko-ebeln,

s_eindt FOR eket-eindt,

s_mtart FOR ekpo-mtart,

s_matkl FOR ekpo-matkl,

s_matnr FOR ekpo-matnr.

SELECTION-SCREEN : END OF BLOCK b1.

PERFORM mail_recipient_object.

PERFORM mail_sender_object.

PERFORM mail_appl_object changing g_mail_app_obj.

*******************************SELECTION-SCREEN************

AT SELECTION-SCREEN.

  • Validate test for Plant in selections

LOOP AT s_werks.

IF NOT s_werks-high IS INITIAL.

SELECT SINGLE * FROM ekpo

WHERE werks = s_werks-high.

IF sy-subrc NE 0.

MESSAGE e600(fr) WITH 'This Plant'

s_werks-high ' does not exist.'

.

ENDIF.

ENDIF.

IF NOT s_werks-low IS INITIAL.

SELECT SINGLE * FROM ekpo

WHERE werks = s_werks-low.

IF sy-subrc NE 0.

MESSAGE e600(fr) WITH 'This Plant'

s_werks-low ' does not exist.'

.

ENDIF.

ENDIF.

ENDLOOP.

START-OF-SELECTION.

PERFORM get_data.

*----


CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = 'ZMM_VENDOR_REMINDER_MAIL'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

fm_name = fm_name

EXCEPTIONS

no_form = 1

no_function_module = 2

OTHERS = 3.

IF sy-subrc <> 0.

WRITE: / 'ERROR 1'.

ENDIF.

CALL FUNCTION fm_name

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

CONTROL_PARAMETERS = control_parameters

MAIL_APPL_OBJ = g_mail_app_obj

MAIL_RECIPIENT = email_recipient

MAIL_SENDER = email_sender

OUTPUT_OPTIONS = output_options

USER_SETTINGS = 'X'

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

TABLES

itab1 = itab1

itab = itab

  • EXCEPTIONS

  • FORMATTING_ERROR = 1

  • INTERNAL_ERROR = 2

  • SEND_ERROR = 3

  • USER_CANCELED = 4

  • OTHERS = 5

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

&----


*& Form get_data

&----


  • text

----


FORM get_data.

SELECT a~bukrs a~werks a~ebeln a~ebelp

b~bedat a~matnr a~meins b~menge

b~wemng b~eindt c~lifnr b~etenr

FROM ekpo AS a

INNER JOIN eket AS b

ON a~ebeln = b~ebeln AND

a~ebelp = b~ebelp

INNER JOIN ekko AS c

ON a~ebeln = c~ebeln AND

a~bukrs = c~bukrs

INTO CORRESPONDING FIELDS OF TABLE it_pos

WHERE a~bukrs IN s_bukrs

AND a~werks IN s_werks

AND b~eindt IN s_eindt

AND c~lifnr IN s_lifnr

AND c~ekgrp IN s_ekgrp

AND c~ebeln IN s_ebeln

AND a~mtart IN s_mtart

AND a~matkl IN s_matkl

AND a~matnr IN s_matnr

AND c~bstyp EQ 'F'

AND c~loekz EQ space

AND a~loekz EQ space

AND b~menge > b~wemng.

SELECT DISTINCT a~lifnr b~name1 b~street b~str_suppl1 b~str_suppl2

b~city1 b~post_code1 a~adrnr a~telf1 a~telf2

FROM lfa1 AS a

INNER JOIN adrc AS b

ON a~adrnr = b~addrnumber

INTO CORRESPONDING FIELDS OF TABLE it_vendor

FOR ALL ENTRIES IN it_pos

WHERE a~lifnr = it_pos-lifnr.

LOOP AT it_vendor.

SELECT SINGLE * FROM adr6

WHERE addrnumber = it_vendor-adrnr

AND persnumber EQ space.

IF sy-subrc = 0.

it_vendor-smtp_addr = adr6-smtp_addr.

ENDIF.

MODIFY it_vendor.

SELECT SINGLE * FROM lfa1

WHERE lifnr = it_vendor-lifnr.

IF sy-subrc EQ 0.

MOVE-CORRESPONDING lfa1 TO itab1.

APPEND itab1.

ENDIF.

ENDLOOP.

LOOP AT it_pos.

itab-bukrs = it_pos-bukrs.

itab-ebeln = it_pos-ebeln.

itab-ebelp = it_pos-ebelp.

itab-matnr = it_pos-matnr.

itab-bedat = it_pos-bedat.

itab-meins = it_pos-meins.

itab-eindt = it_pos-eindt.

itab-lifnr = it_pos-lifnr.

itab-etenr = it_pos-etenr.

APPEND itab.

CLEAR itab.

ENDLOOP.

ENDFORM. "get_data

&----


*& Form mail_recipient_object

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form mail_recipient_object .

data: email_address TYPE SO_NAME.

email_address = ' '.

CALL FUNCTION 'CREATE_RECIPIENT_OBJ_PPF'

EXPORTING

  • IP_COUNTRY =

  • IP_FAXNO =

IP_MAILADDR = email_address

IP_TYPE_ID = 'U'

IMPORTING

EP_RECIPIENT_ID = email_recipient

  • EP_ADDRESS =

  • ET_RECIPIENT =

EXCEPTIONS

INVALID_RECIPIENT = 1

OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

endform. " mail_recipient_object

&----


*& Form mail_sender_object

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form mail_sender_object .

CALL FUNCTION 'CREATE_SENDER_OBJECT_PPF'

EXPORTING

IP_SENDER = sy-uname

IMPORTING

EP_SENDER_ID = email_sender

EXCEPTIONS

INVALID_SENDER = 1

OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

endform. " mail_sender_object

&----


*& Form mail_appl_object

&----


  • text

----


  • <--P_G_MAIL_APP_OBJ text

----


form mail_appl_object changing p_g_mail_app_obj.

include <cntn01>.

DATA: FOLDER TYPE swc_object,

BEGIN OF SOFMFOL_KEY,

FOLDERTYPE LIKE SOFM-FOLTP,

FOLDERYEAR LIKE SOFM-FOLYR,

FOLDERNUMBER LIKE SOFM-FOLNO,

TYPE LIKE SOFM-DOCTP,

YEAR LIKE SOFM-DOCYR,

NUMBER LIKE SOFM-DOCNO,

FORWARDER LIKE SOUB-USRNAM,

END OF SOFMFOL_KEY,

BOR_KEY LIKE SWOTOBJID-OBJKEY.

SELECT single * FROM soud WHERE sapnam LIKE sy-uname AND deleted = ' '.

IF sy-subrc NE 0.

CALL FUNCTION 'SO_USER_AUTOMATIC_INSERT'

EXPORTING

SAPNAME = SY-UNAME

  • SO_KEY = ' '

  • SEND_MAIL_IF_NO_ADDRESS = 'X'

  • IMPORTING

  • USRADR =

EXCEPTIONS

NO_INSERT = 1

SAP_NAME_EXIST = 2

X_ERROR = 3

SAP_NAME_NOT_EXIST = 4

OTHERS = 5

.

*IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

clear sofmfol_key.

sofmfol_key-type = 'FOL'.

sofmfol_key-year = soud-inbyr.

sofmfol_key-number = soud-inbno.

bor_key = sofmfol_key.

IF not bor_key is initial.

swc_create_object folder 'SOFMFOL' bor_key.

IF sy-subrc = 0.

swc_object_to_persistent folder g_mail_app_obj.

IF sy-subrc ne 0.

clear g_mail_app_obj.

ENDIF.

ENDIF.

ELSE.

clear g_mail_app_obj.

ENDIF.

endform. " mail_appl_object

with Regards,

Kiran.G

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Venkat,

For send the email with PDF attachement , here is the an exampel try out this if useful.

where the user selects the medium as email

w_ctrlop-getotf = 'X'.

w_ctrlop-no_dialog = 'X'.

w_compop-tdnoprev = 'X'.

CALL FUNCTION fnam

EXPORTING

control_parameters = w_ctrlop

output_options = w_compop

user_settings = ' '

IMPORTING

job_output_info = w_return

TABLES

it_likp = it_likp[]

it_t001k = it_t001k[]

it_kna1 = it_kna1[]

it_ekpo = it_ekpo[]

it_adrc = it_adrc[]

it_lips = it_lips[]

it_t005 = it_t005[]

it_t001 = it_t001[]

it_t005t = it_t005t[]

it_t001l = it_t001l

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

i_otf[] = w_return-otfdata[].

*Converting the OFT format data to PDf format

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = 'PDF'

max_linewidth = 132

IMPORTING

bin_filesize = v_len_in

TABLES

otf = i_otf

lines = i_tline.

LOOP AT i_tline.

TRANSLATE i_tline USING '~'.

CONCATENATE wa_buffer i_tline INTO wa_buffer.

ENDLOOP.

TRANSLATE wa_buffer USING '~'.

DO.

i_record = wa_buffer.

APPEND i_record.

SHIFT wa_buffer LEFT BY 255 PLACES.

IF wa_buffer IS INITIAL.

EXIT.

ENDIF.

ENDDO.

  • Attachment

REFRESH:

i_reclist,

i_objtxt,

i_objbin,

i_objpack.

CLEAR wa_objhead.

i_objbin[] = i_record[].

              • Create Message Body

        • Title and Description

i_objtxt = 'DELIVERY NOTE'.

APPEND i_objtxt.

DESCRIBE TABLE i_objtxt LINES v_lines_txt.

READ TABLE i_objtxt INDEX v_lines_txt.

wa_doc_chng-obj_name = 'DELIVERY NOTE'.

wa_doc_chng-expiry_dat = sy-datum + 10.

wa_doc_chng-obj_descr = 'DELIVERY NOTE'.

wa_doc_chng-sensitivty = 'F'.

wa_doc_chng-doc_size = v_lines_txt * 255.

CLEAR i_objpack-transf_bin.

i_objpack-head_start = 1.

i_objpack-head_num = 0.

i_objpack-body_start = 1.

i_objpack-body_num = v_lines_txt.

i_objpack-doc_type = 'RAW'.

APPEND i_objpack.

        • Attachment

  • (pdf-Attachment)

i_objpack-transf_bin = 'X'.

i_objpack-head_start = 1.

i_objpack-head_num = 0.

i_objpack-body_start = 1.

DESCRIBE TABLE i_objbin LINES v_lines_bin.

READ TABLE i_objbin INDEX v_lines_bin.

i_objpack-doc_size = v_lines_bin * 255 .

i_objpack-body_num = v_lines_bin.

i_objpack-doc_type = 'PDF'.

i_objpack-obj_name = 'DELIVERY NOTE'.

i_objpack-obj_descr = 'DELIVERY NOTE'.

APPEND i_objpack.

IF it_adr6[] IS NOT INITIAL.

LOOP AT it_adr6 INTO wa_adr6.

CLEAR i_reclist.

i_reclist-receiver = wa_adr6-smtp_addr.

i_reclist-rec_type = 'U'.

i_reclist-com_type = 'INT'.

APPEND i_reclist.

ENDLOOP.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = wa_doc_chng

put_in_outbox = 'X'

TABLES

packing_list = i_objpack

object_header = wa_objhead

contents_bin = i_objbin

contents_txt = i_objtxt

receivers = i_reclist.

ENDIF.

Former Member
0 Kudos

Hi,

By the above example, we can only send a message. but how to send an attachment. Please anybody reply with full answer.

I already observed so_object_send,So_document_send_Api1,so_new_document_att_send_api1.

I need to send an email along with an attachment and the sender address should be different from the sender.

Thanks in Advance for your valuable suggestion.