cancel
Showing results for 
Search instead for 
Did you mean: 

Sending smartform through email as PDF attachment

Former Member
0 Kudos

Hi,

I want to send a smartform through email as pdf attachment.In the code I have hardcoded the receiver mail id.But I don't want this to be sent only to a particular receiver.I want this to be sent as many people as I can without hardcoding their mail id's in the program.How can I do that?

Regards,

Hema

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos
mahaboob_pathan
Contributor
0 Kudos

**Data Declarations

**Internal Table

DATA : BEGIN OF it_spfli OCCURS 0,

carrid LIKE spfli-carrid,

connid LIKE spfli-connid,

END OF it_spfli.

DATA: it_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

it_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,

    • storing receivers

it_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

**storing file attachment data

it_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE, gd_doc_data LIKE sodocchgi1,

gd_error TYPE sy-subrc,

l_gntxt LIKE t357g_t-gntxt,

lv_message(100) TYPE c.

DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0

WITH HEADER LINE. "storing mail body

DATA : psubject(30) TYPE c VALUE 'Sample Mail'. "subject of the mail

DATA : ld_format TYPE so_obj_tp , "file format

ld_attfilename TYPE so_obj_des, "file name

w_cnt TYPE i.

**Selecting the data

SELECT carrid connid INTO TABLE it_spfli FROM spfli WHERE carrid EQ 'AA'.

**Perform for populating mail body

PERFORM populate_message.

**Perform for populating file attachment

PERFORM populate_attachment.

**Perform for populating mail characteristic info

PERFORM populate_pack.

**Perform for populating receivers

PERFORM populate_receivers.

**Perform to send mail

PERFORM send_mail.

&----


*& Form populate_message

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM populate_message .

**Populating the body

lv_message = 'Sample mail for testing purpose.'.

APPEND lv_message TO it_message.

ENDFORM. " populate_message

&----


*& Form populate_attachment

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM populate_attachment .

**Populating the attachment file with the data from final intenal table

CONCATENATE 'CARRIER ID'

'CONNECTION ID'

INTO it_attachment SEPARATED BY

cl_abap_char_utilities=>horizontal_tab.

CONCATENATE cl_abap_char_utilities=>cr_lf it_attachment INTO

it_attachment.

APPEND it_attachment.

LOOP AT it_spfli.

CONCATENATE it_spfli-carrid it_spfli-connid INTO it_attachment SEPARATED BY

cl_abap_char_utilities=>horizontal_tab.

CONCATENATE cl_abap_char_utilities=>cr_lf it_attachment INTO

it_attachment.

APPEND it_attachment.

ENDLOOP.

ENDFORM. " populate_attachment

&----


*& Form populate_receivers

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM populate_receivers .

**Populating Mail Recepients

**If there are more than one mail recepient then loop and append them to it_receivers

it_receivers-receiver = 'gunda.ravi@wipro.com'.

it_receivers-rec_type = 'U'.

it_receivers-com_type = 'INT'.

it_receivers-notif_del = 'X'.

it_receivers-notif_ndel = 'X'.

it_receivers-express = 'X'.

APPEND it_receivers.

ENDFORM. " populate_receivers

&----


*& Form populate_pack

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM populate_pack .

**File Type

ld_format = 'XLS'.

**File Name

ld_attfilename = 'File1'.

  • Fill the document data.

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'.

  • Fill the document data and get size of attachment

CLEAR gd_doc_data.

  • Populate the subject/generic message attributes

gd_doc_data-obj_langu = sy-langu.

READ TABLE it_attachment INDEX w_cnt.

gd_doc_data-doc_size = ( w_cnt - 1 ) * 255 + STRLEN( it_attachment ).

gd_doc_data-obj_name = 'SAPRPT'.

gd_doc_data-obj_descr = psubject.

gd_doc_data-sensitivty = 'F'.

  • Describe the body of the message

CLEAR it_packing_list.

REFRESH it_packing_list.

it_packing_list-transf_bin = space.

it_packing_list-head_start = 1.

it_packing_list-head_num = 0.

it_packing_list-body_start = 1.

DESCRIBE TABLE it_message LINES it_packing_list-body_num.

it_packing_list-doc_type = 'RAW'.

APPEND it_packing_list.

**Describe the attachment info

it_packing_list-transf_bin = 'X'.

it_packing_list-head_start = 1.

it_packing_list-head_num = 1.

it_packing_list-body_start = 1.

DESCRIBE TABLE it_attachment LINES it_packing_list-body_num.

it_packing_list-doc_type = ld_format.

it_packing_list-obj_name = ld_attfilename.

it_packing_list-obj_descr = ld_attfilename.

it_packing_list-doc_size = it_packing_list-body_num * 255.

APPEND it_packing_list.

ENDFORM. " populate_pack

&----


*& Form send_mail

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM send_mail .

**Function Module to send mail

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

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.

ENDFORM. " send_mail