Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

emailing smartform.

Former Member
0 Likes
687

Is there any way for sending a smartform via E-Mail?

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
652

hi use this..,

&----


*& Report : ZPDF_FORMAT

*& Description : Conversion of Purchase Order into PDF format

*& used in the workflow (Do Not Change or Delete).

&----


REPORT zpdf .

&----


*& Tables used

&----


TABLES: nast, tsp01, t024, spop, lfa1, tnapr.

&----


*& Data declaration

&----


DATA: spoolno LIKE tsp01-rqident.

DATA: rcode LIKE sy-subrc.

*data: doc_auth like zoutput-ztag.

DATA: cancel.

DATA: pdf LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: numbytes TYPE i,

pdfspoolid LIKE tsp01-rqident,

jobname LIKE tbtcjob-jobname,

jobcount LIKE tbtcjob-jobcount,

is_otf.

DATA: client LIKE tst01-dclient,

name LIKE tst01-dname,

objtype LIKE rststype-type,

type LIKE rststype-type.

DATA: dir_loc(3).

DATA: t_docno LIKE vbak-vbeln..

DATA: spoolreq1 LIKE tsp01sys.

DATA: spoolreq LIKE rsporq OCCURS 0 WITH HEADER LINE.

DATA: t_frgke LIKE ekko-frgke.

DATA: okcode(10),

flag,

t_ekgrp LIKE ekko-ekgrp,

t_lifnr LIKE ekko-lifnr,

s_mail.

Data Declartion for mailing system - Start.

DATA: objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE.

DATA: objhead LIKE solisti1 OCCURS 0 WITH HEADER LINE.

DATA: objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE.

DATA: objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE.

DATA: reclist1 LIKE somlreci1 OCCURS 500 WITH HEADER LINE.

DATA: reclist LIKE somlreci1 OCCURS 500 WITH HEADER LINE.

DATA: itab LIKE somlreci1 OCCURS 50 WITH HEADER LINE."RKU 220802

DATA: doc_chng LIKE sodocchgi1.

DATA: BEGIN OF bdcdata OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA: END OF bdcdata.

DATA: tab_lines LIKE sy-tabix.

DATA: verkf LIKE ekko-verkf.

DATA: bemail(250), vemail(250).

&----


Data acceptance

&----


SELECTION-SCREEN BEGIN OF BLOCK blk0_input WITH FRAME .

PARAMETERS: docno LIKE ekko-ebeln OBLIGATORY LOWER CASE.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN END OF BLOCK blk0_input.

&----


Initialisation

&----


*initialization.

&----


Screen Parameters Validation

&----


*at selection-screen.

AT SELECTION-SCREEN.

SELECT SINGLE frgke INTO t_frgke FROM ekko

WHERE ebeln = docno

AND frgke = 'R'.

IF sy-subrc 0.

MESSAGE 'DOCUMENT NOT RELEASED' TYPE 'E'.

ENDIF.

&----


Execution Part

&----


START-OF-SELECTION.

For PO related operation

Dislay Buyer Group, Name and Email id

SELECT SINGLE

ekgrp

lifnr

verkf

INTO (t_ekgrp, t_lifnr, verkf)

FROM ekko

WHERE ekko~mandt = sy-mandt

AND ebeln = docno.

IF sy-subrc = 0.

SELECT SINGLE * FROM lfa1

WHERE lfa1~mandt = sy-mandt

AND lifnr = t_lifnr.

ENDIF.

Get message status from NAST or assign msg status NAST stru

Pass the message status and get spool data

PERFORM check_output_create_spool.

IF rcode NE 0.

IF rcode = 9.

message s185 with text-e04.

ELSE.

message s185 with text-e01.

ENDIF.

EXIT.

ENDIF.

find the spool

PERFORM find_spool_request_id.

IF sy-subrc 0.

message s185 with text-003.

EXIT.

ENDIF.

READ TABLE spoolreq

WITH KEY rq0name = nast-dsnam

rq1name = 'LP01'

rqclient = '800'

rq2name = sy-uname

rqowner = sy-uname.

IF sy-subrc 0.

CASE sy-subrc.

WHEN 1.

message s185 with text-e03.

WHEN OTHERS.

message s185 with text-e02.

ENDCASE.

EXIT.

ENDIF.

spoolno = spoolreq-rqident.

Convert SPOOL job to PDF

PERFORM convert_spool_to_pdf.

Send through mail

PERFORM assign_data_4_mail.

PERFORM send_mail_with_attachment.

Delete created spool request

spoolreq1-rqident = spoolno.

PERFORM delete_spool_job.

&----


*& Form check_output_create_spool

&----


text

-


--> p1 text

<-- p2 text

-


FORM check_output_create_spool.

SELECT SINGLE * FROM nast WHERE objky = docno

AND kappl = 'EF'

AND kschl = 'NEU'

AND aktiv = space

AND nacha = '1'.

IF sy-subrc EQ 0.

COUNT = COUNT + 1.

PERFORM mssage_status_field_value.

nast-vsztp = '4'.

PERFORM einzelnachricht_dialog(rsnast00) USING rcode.

ELSE.

CLEAR nast-uhrvr.

CLEAR nast-cmfpnr.

CLEAR nast-datvr.

PERFORM mssage_status_field_value.

nast-vsztp = '4'.

PERFORM einzelnachricht_dialog(rsnast00) USING rcode.

else.

rcode = 9.

ENDIF.

ENDFORM. " check_output_create_spool

&----


*& Form mssage_status_field_value

&----


text

-


--> p1 text

<-- p2 text

-


FORM mssage_status_field_value .

nast-mandt = '800'.

nast-kappl = 'EF'.

nast-kschl = 'NEU'.

nast-objky = docno.

nast-ldest = 'LP01'.

nast-anzal = 1.

nast-dimme = 'X'.

nast-delet = 'X'.

nast-nacha = '1'.

nast-vsztp = '2'.

nast-spras = 'E'.

nast-vstat = '0'.

nast-manue = 'X'.

nast-erdat = sy-datum.

nast-eruhr = sy-uzeit.

nast-usnam = sy-uname.

nast-tdreceiver = sy-uname.

concatenate sy-uzeit+2(4) 'PDF' into nast-dsnam.

ENDFORM. " mssage_status_field_value

&----


*& Form find_spool_request_id

&----


text

-


--> p1 text

<-- p2 text

-


FORM find_spool_request_id.

CALL FUNCTION 'RSPO_FIND_SPOOL_REQUESTS'

EXPORTING

allclients = '800'

authority = ' '

datatype = '*'

has_output_requests = '*'

rq0name = nast-dsnam "'*'

rq1name = '*'

rq2name = '*'

rqdest = 'LP01'

rqident = 0

rqowner = sy-uname

TABLES

spoolrequests = spoolreq

EXCEPTIONS

no_permission = 1

OTHERS = 2.

ENDFORM. " find_spool_request_id

&----


*& Form convert_spool_to_pdf

&----


text

-


--> p1 text

<-- p2 text

-


FORM convert_spool_to_pdf.

SELECT SINGLE * FROM tsp01 WHERE rqident = spoolno.

IF sy-subrc <> 0.

WRITE: / 'Spool order does not exist'

COLOR COL_NEGATIVE.

EXIT.

ENDIF.

client = tsp01-rqclient.

name = tsp01-rqo1name.

CALL FUNCTION 'RSTS_GET_ATTRIBUTES'

EXPORTING

authority = 'SP01'

client = client

name = name

part = 1

IMPORTING

type = type

objtype = objtype

EXCEPTIONS

fb_error = 1

fb_rsts_other = 2

no_object = 3

no_permission = 4.

IF objtype(3) = 'OTF'.

is_otf = 'X'.

ELSE.

is_otf = space.

ENDIF.

IF is_otf = 'X'.

CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'

EXPORTING

src_spoolid = spoolno

no_dialog = ' '

IMPORTING

pdf_bytecount = numbytes

pdf_spoolid = pdfspoolid

btc_jobname = jobname

btc_jobcount = jobcount

TABLES

pdf = pdf

EXCEPTIONS

err_no_otf_spooljob = 1

err_no_spooljob = 2

err_no_permission = 3

err_conv_not_possible = 4

err_bad_dstdevice = 5

user_cancelled = 6

err_spoolerror = 7

err_temseerror = 8

err_btcjob_open_failed = 9

err_btcjob_submit_failed = 10

err_btcjob_close_failed = 11.

if sy-subrc 0.

case sy-subrc.

when 1.

write: / text-001 color col_positive.

when 2.

write: / text-002 color col_negative.

exit.

when 3.

write: / text-003 color col_negative.

exit.

when 4.

write: / text-004 color col_negative.

exit.

when others.

write: / text-005 color col_negative.

exit.

endcase.

endif.

ELSE.

CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'

EXPORTING

src_spoolid = spoolno

no_dialog = ' '

DST_DEVICE =

PDF_DESTINATION =

IMPORTING

pdf_bytecount = numbytes

pdf_spoolid = pdfspoolid

LIST_PAGECOUNT =

btc_jobname = jobname

btc_jobcount = jobcount

TABLES

pdf = pdf

EXCEPTIONS

err_no_abap_spooljob = 1

err_no_spooljob = 2

err_no_permission = 3

err_conv_not_possible = 4

err_bad_destdevice = 5

user_cancelled = 6

err_spoolerror = 7

err_temseerror = 8

err_btcjob_open_failed = 9

err_btcjob_submit_failed = 10

err_btcjob_close_failed = 11.

case sy-subrc.

when 0.

*write: / 'Funktion CONVERT_ABAPSPOOLJOB_2_PDF erfolgreich

*(successful)'.

color col_positive.

when 1.

write: / text-001 color col_positive.

when 2.

write: / text-002 color col_negative.

exit.

when 3.

write: / text-003 color col_negative.

exit.

when 4.

write: / text-004 color col_negative.

exit.

when others.

write: / text-005 color col_negative.

exit.

endcase.

ENDIF.

ENDFORM. " convert_spool_to_pdf

&----


*& Form delete_spool_job

&----


text

-


--> p1 text

<-- p2 text

-


FORM delete_spool_job .

CALL FUNCTION 'RSPO_IDELETE_SPOOLREQ'

EXPORTING

spoolreq = spoolreq1

IMPORTING

RC =

STATUS =

EXCEPTIONS

error = 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. " delete_spool_job

*

&----


*& Form ASSIGN_DATA_4_MAIL

&----


text

-


--> p1 text

<-- p2 text

-


FORM assign_data_4_mail .

Text content of the mail

move 'Purchase order: ' to objtxt.

append objtxt.

move verkf to objtxt.

append objtxt.

move lfa1-name1 to objtxt.

append objtxt.

concatenate lfa1-ort01 lfa1-pstlz

into objtxt separated by space.

append objtxt.

clear: objtxt.

append objtxt.

append objtxt.

*

CLEAR objtxt.

CONCATENATE 'Purchase Order - ' docno

' has been released.'

INTO objtxt SEPARATED BY space.

APPEND objtxt.

clear: objtxt.

append objtxt.

append objtxt.

*

MOVE ' ' TO objtxt.

APPEND objtxt.

clear: objtxt.

append objtxt.

append objtxt.

concatenate 'Note:- This is an automatic mail sender.'

' Please do not reply to this mail ID.'

into objtxt.

append objtxt.

concatenate

' Any query, please send the mail to the respective buyer'''

's mail id.' into objtxt.

append objtxt.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = docno

IMPORTING

output = docno.

TLINE format will be coverted as 255 char foramt

CALL FUNCTION 'QCE1_CONVERT'

TABLES

t_source_tab = pdf

t_target_tab = objbin

EXCEPTIONS

convert_not_possible = 1

OTHERS = 2.

DESCRIBE TABLE objtxt LINES tab_lines.

creation of the entry for the compressed document

CLEAR objpack.

objpack-transf_bin = ''.

objpack-head_start = 1.

objpack-head_num = 0.

objpack-body_start = 1.

objpack-body_num = tab_lines.

objpack-doc_type = 'RAW'.

objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).

APPEND objpack.

creation of the entry for the Attachemnt

DESCRIBE TABLE objbin LINES tab_lines.

objpack-transf_bin = 'X'.

objpack-head_start = 1.

objpack-head_num = 1.

objpack-body_start = 1.

objpack-body_num = tab_lines.

objpack-doc_type = 'PDF'.

CONCATENATE docno '.PDF' INTO objpack-obj_name.

objpack-obj_descr = objpack-obj_name.

objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).

APPEND objpack.

For Object Header

CONCATENATE docno '.PDF' INTO objhead.

APPEND objhead.

doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).

CONCATENATE 'Purchase Order - ' docno ' has been released'

INTO doc_chng-obj_descr.

doc_chng-obj_prio = 1.

recipient Details

CLEAR reclist1.

CLEAR reclist.

REFRESH reclist1.

REFRESH reclist.

SELECT SINGLE * FROM t024

WHERE t024~mandt = sy-mandt

AND ekgrp = t_ekgrp.

reclist1-receiver = t024-smtp_addr.

reclist1-rec_type = 'U'.

reclist1-com_type = 'INT'.

reclist1-receiver = 'mukundhan.kn@lntinfotech.com'.

modify table reclist transporting rec_type receiver COM_TYPE .

where rec_type is initial.

APPEND reclist1 TO reclist.

ENDFORM. " ASSIGN_DATA_4_MAIL

&----


*& Form send_mail_with_attachment

&----


text

-


--> p1 text

<-- p2 text

-


FORM send_mail_with_attachment.

sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = doc_chng

put_in_outbox = 'X'

commit_work = 'X'

TABLES

packing_list = objpack

object_header = objhead

contents_bin = objbin

contents_txt = objtxt

receivers = reclist

EXCEPTIONS

too_many_receivers = 1

document_not_sent = 2

operation_no_authorization = 4

OTHERS = 99.

CASE sy-subrc.

WHEN 0.

PERFORM flush_mail.

message 'Mail sent successfully' type 'I'.

when 1.

message 'No authorization for sending to the specified number'

*type 'E'.

when 2.

message 'Document could not be sent to any recipient' type 'E'.

when 4.

message 'No send authorization' type 'E'.

when others.

message 'Error occurred while sending' type 'E'.

ENDCASE.

ENDFORM. " send_mail_with_attachment

-


Start new screen *

-


FORM bdc_dynpro USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM. "bdc_dynpro

-


Insert field *

-


FORM bdc_field USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. "bdc_field

&----


*& Form AUTOMATE

&----


text

-


--> p1 text

<-- p2 text

-


FORM flush_mail .

PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=PDIA'.

PERFORM bdc_dynpro USING 'SAPLSPO4' '0300'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=FURT'.

PERFORM bdc_field USING 'BDC_CURSOR'

'SVALD-VALUE(01)'.

PERFORM bdc_field USING 'SVALD-VALUE(01)'

'int'.

PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BACK'.

PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BACK'.

CALL TRANSACTION 'SCOT' USING bdcdata

MODE 'N'

UPDATE 'S'.

ENDFORM. " AUTOMATE

regards,

venkat.

5 REPLIES 5
Read only

Former Member
0 Likes
653

hi use this..,

&----


*& Report : ZPDF_FORMAT

*& Description : Conversion of Purchase Order into PDF format

*& used in the workflow (Do Not Change or Delete).

&----


REPORT zpdf .

&----


*& Tables used

&----


TABLES: nast, tsp01, t024, spop, lfa1, tnapr.

&----


*& Data declaration

&----


DATA: spoolno LIKE tsp01-rqident.

DATA: rcode LIKE sy-subrc.

*data: doc_auth like zoutput-ztag.

DATA: cancel.

DATA: pdf LIKE tline OCCURS 0 WITH HEADER LINE.

DATA: numbytes TYPE i,

pdfspoolid LIKE tsp01-rqident,

jobname LIKE tbtcjob-jobname,

jobcount LIKE tbtcjob-jobcount,

is_otf.

DATA: client LIKE tst01-dclient,

name LIKE tst01-dname,

objtype LIKE rststype-type,

type LIKE rststype-type.

DATA: dir_loc(3).

DATA: t_docno LIKE vbak-vbeln..

DATA: spoolreq1 LIKE tsp01sys.

DATA: spoolreq LIKE rsporq OCCURS 0 WITH HEADER LINE.

DATA: t_frgke LIKE ekko-frgke.

DATA: okcode(10),

flag,

t_ekgrp LIKE ekko-ekgrp,

t_lifnr LIKE ekko-lifnr,

s_mail.

Data Declartion for mailing system - Start.

DATA: objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE.

DATA: objhead LIKE solisti1 OCCURS 0 WITH HEADER LINE.

DATA: objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE.

DATA: objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE.

DATA: reclist1 LIKE somlreci1 OCCURS 500 WITH HEADER LINE.

DATA: reclist LIKE somlreci1 OCCURS 500 WITH HEADER LINE.

DATA: itab LIKE somlreci1 OCCURS 50 WITH HEADER LINE."RKU 220802

DATA: doc_chng LIKE sodocchgi1.

DATA: BEGIN OF bdcdata OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA: END OF bdcdata.

DATA: tab_lines LIKE sy-tabix.

DATA: verkf LIKE ekko-verkf.

DATA: bemail(250), vemail(250).

&----


Data acceptance

&----


SELECTION-SCREEN BEGIN OF BLOCK blk0_input WITH FRAME .

PARAMETERS: docno LIKE ekko-ebeln OBLIGATORY LOWER CASE.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN END OF BLOCK blk0_input.

&----


Initialisation

&----


*initialization.

&----


Screen Parameters Validation

&----


*at selection-screen.

AT SELECTION-SCREEN.

SELECT SINGLE frgke INTO t_frgke FROM ekko

WHERE ebeln = docno

AND frgke = 'R'.

IF sy-subrc 0.

MESSAGE 'DOCUMENT NOT RELEASED' TYPE 'E'.

ENDIF.

&----


Execution Part

&----


START-OF-SELECTION.

For PO related operation

Dislay Buyer Group, Name and Email id

SELECT SINGLE

ekgrp

lifnr

verkf

INTO (t_ekgrp, t_lifnr, verkf)

FROM ekko

WHERE ekko~mandt = sy-mandt

AND ebeln = docno.

IF sy-subrc = 0.

SELECT SINGLE * FROM lfa1

WHERE lfa1~mandt = sy-mandt

AND lifnr = t_lifnr.

ENDIF.

Get message status from NAST or assign msg status NAST stru

Pass the message status and get spool data

PERFORM check_output_create_spool.

IF rcode NE 0.

IF rcode = 9.

message s185 with text-e04.

ELSE.

message s185 with text-e01.

ENDIF.

EXIT.

ENDIF.

find the spool

PERFORM find_spool_request_id.

IF sy-subrc 0.

message s185 with text-003.

EXIT.

ENDIF.

READ TABLE spoolreq

WITH KEY rq0name = nast-dsnam

rq1name = 'LP01'

rqclient = '800'

rq2name = sy-uname

rqowner = sy-uname.

IF sy-subrc 0.

CASE sy-subrc.

WHEN 1.

message s185 with text-e03.

WHEN OTHERS.

message s185 with text-e02.

ENDCASE.

EXIT.

ENDIF.

spoolno = spoolreq-rqident.

Convert SPOOL job to PDF

PERFORM convert_spool_to_pdf.

Send through mail

PERFORM assign_data_4_mail.

PERFORM send_mail_with_attachment.

Delete created spool request

spoolreq1-rqident = spoolno.

PERFORM delete_spool_job.

&----


*& Form check_output_create_spool

&----


text

-


--> p1 text

<-- p2 text

-


FORM check_output_create_spool.

SELECT SINGLE * FROM nast WHERE objky = docno

AND kappl = 'EF'

AND kschl = 'NEU'

AND aktiv = space

AND nacha = '1'.

IF sy-subrc EQ 0.

COUNT = COUNT + 1.

PERFORM mssage_status_field_value.

nast-vsztp = '4'.

PERFORM einzelnachricht_dialog(rsnast00) USING rcode.

ELSE.

CLEAR nast-uhrvr.

CLEAR nast-cmfpnr.

CLEAR nast-datvr.

PERFORM mssage_status_field_value.

nast-vsztp = '4'.

PERFORM einzelnachricht_dialog(rsnast00) USING rcode.

else.

rcode = 9.

ENDIF.

ENDFORM. " check_output_create_spool

&----


*& Form mssage_status_field_value

&----


text

-


--> p1 text

<-- p2 text

-


FORM mssage_status_field_value .

nast-mandt = '800'.

nast-kappl = 'EF'.

nast-kschl = 'NEU'.

nast-objky = docno.

nast-ldest = 'LP01'.

nast-anzal = 1.

nast-dimme = 'X'.

nast-delet = 'X'.

nast-nacha = '1'.

nast-vsztp = '2'.

nast-spras = 'E'.

nast-vstat = '0'.

nast-manue = 'X'.

nast-erdat = sy-datum.

nast-eruhr = sy-uzeit.

nast-usnam = sy-uname.

nast-tdreceiver = sy-uname.

concatenate sy-uzeit+2(4) 'PDF' into nast-dsnam.

ENDFORM. " mssage_status_field_value

&----


*& Form find_spool_request_id

&----


text

-


--> p1 text

<-- p2 text

-


FORM find_spool_request_id.

CALL FUNCTION 'RSPO_FIND_SPOOL_REQUESTS'

EXPORTING

allclients = '800'

authority = ' '

datatype = '*'

has_output_requests = '*'

rq0name = nast-dsnam "'*'

rq1name = '*'

rq2name = '*'

rqdest = 'LP01'

rqident = 0

rqowner = sy-uname

TABLES

spoolrequests = spoolreq

EXCEPTIONS

no_permission = 1

OTHERS = 2.

ENDFORM. " find_spool_request_id

&----


*& Form convert_spool_to_pdf

&----


text

-


--> p1 text

<-- p2 text

-


FORM convert_spool_to_pdf.

SELECT SINGLE * FROM tsp01 WHERE rqident = spoolno.

IF sy-subrc <> 0.

WRITE: / 'Spool order does not exist'

COLOR COL_NEGATIVE.

EXIT.

ENDIF.

client = tsp01-rqclient.

name = tsp01-rqo1name.

CALL FUNCTION 'RSTS_GET_ATTRIBUTES'

EXPORTING

authority = 'SP01'

client = client

name = name

part = 1

IMPORTING

type = type

objtype = objtype

EXCEPTIONS

fb_error = 1

fb_rsts_other = 2

no_object = 3

no_permission = 4.

IF objtype(3) = 'OTF'.

is_otf = 'X'.

ELSE.

is_otf = space.

ENDIF.

IF is_otf = 'X'.

CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'

EXPORTING

src_spoolid = spoolno

no_dialog = ' '

IMPORTING

pdf_bytecount = numbytes

pdf_spoolid = pdfspoolid

btc_jobname = jobname

btc_jobcount = jobcount

TABLES

pdf = pdf

EXCEPTIONS

err_no_otf_spooljob = 1

err_no_spooljob = 2

err_no_permission = 3

err_conv_not_possible = 4

err_bad_dstdevice = 5

user_cancelled = 6

err_spoolerror = 7

err_temseerror = 8

err_btcjob_open_failed = 9

err_btcjob_submit_failed = 10

err_btcjob_close_failed = 11.

if sy-subrc 0.

case sy-subrc.

when 1.

write: / text-001 color col_positive.

when 2.

write: / text-002 color col_negative.

exit.

when 3.

write: / text-003 color col_negative.

exit.

when 4.

write: / text-004 color col_negative.

exit.

when others.

write: / text-005 color col_negative.

exit.

endcase.

endif.

ELSE.

CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'

EXPORTING

src_spoolid = spoolno

no_dialog = ' '

DST_DEVICE =

PDF_DESTINATION =

IMPORTING

pdf_bytecount = numbytes

pdf_spoolid = pdfspoolid

LIST_PAGECOUNT =

btc_jobname = jobname

btc_jobcount = jobcount

TABLES

pdf = pdf

EXCEPTIONS

err_no_abap_spooljob = 1

err_no_spooljob = 2

err_no_permission = 3

err_conv_not_possible = 4

err_bad_destdevice = 5

user_cancelled = 6

err_spoolerror = 7

err_temseerror = 8

err_btcjob_open_failed = 9

err_btcjob_submit_failed = 10

err_btcjob_close_failed = 11.

case sy-subrc.

when 0.

*write: / 'Funktion CONVERT_ABAPSPOOLJOB_2_PDF erfolgreich

*(successful)'.

color col_positive.

when 1.

write: / text-001 color col_positive.

when 2.

write: / text-002 color col_negative.

exit.

when 3.

write: / text-003 color col_negative.

exit.

when 4.

write: / text-004 color col_negative.

exit.

when others.

write: / text-005 color col_negative.

exit.

endcase.

ENDIF.

ENDFORM. " convert_spool_to_pdf

&----


*& Form delete_spool_job

&----


text

-


--> p1 text

<-- p2 text

-


FORM delete_spool_job .

CALL FUNCTION 'RSPO_IDELETE_SPOOLREQ'

EXPORTING

spoolreq = spoolreq1

IMPORTING

RC =

STATUS =

EXCEPTIONS

error = 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. " delete_spool_job

*

&----


*& Form ASSIGN_DATA_4_MAIL

&----


text

-


--> p1 text

<-- p2 text

-


FORM assign_data_4_mail .

Text content of the mail

move 'Purchase order: ' to objtxt.

append objtxt.

move verkf to objtxt.

append objtxt.

move lfa1-name1 to objtxt.

append objtxt.

concatenate lfa1-ort01 lfa1-pstlz

into objtxt separated by space.

append objtxt.

clear: objtxt.

append objtxt.

append objtxt.

*

CLEAR objtxt.

CONCATENATE 'Purchase Order - ' docno

' has been released.'

INTO objtxt SEPARATED BY space.

APPEND objtxt.

clear: objtxt.

append objtxt.

append objtxt.

*

MOVE ' ' TO objtxt.

APPEND objtxt.

clear: objtxt.

append objtxt.

append objtxt.

concatenate 'Note:- This is an automatic mail sender.'

' Please do not reply to this mail ID.'

into objtxt.

append objtxt.

concatenate

' Any query, please send the mail to the respective buyer'''

's mail id.' into objtxt.

append objtxt.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = docno

IMPORTING

output = docno.

TLINE format will be coverted as 255 char foramt

CALL FUNCTION 'QCE1_CONVERT'

TABLES

t_source_tab = pdf

t_target_tab = objbin

EXCEPTIONS

convert_not_possible = 1

OTHERS = 2.

DESCRIBE TABLE objtxt LINES tab_lines.

creation of the entry for the compressed document

CLEAR objpack.

objpack-transf_bin = ''.

objpack-head_start = 1.

objpack-head_num = 0.

objpack-body_start = 1.

objpack-body_num = tab_lines.

objpack-doc_type = 'RAW'.

objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).

APPEND objpack.

creation of the entry for the Attachemnt

DESCRIBE TABLE objbin LINES tab_lines.

objpack-transf_bin = 'X'.

objpack-head_start = 1.

objpack-head_num = 1.

objpack-body_start = 1.

objpack-body_num = tab_lines.

objpack-doc_type = 'PDF'.

CONCATENATE docno '.PDF' INTO objpack-obj_name.

objpack-obj_descr = objpack-obj_name.

objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).

APPEND objpack.

For Object Header

CONCATENATE docno '.PDF' INTO objhead.

APPEND objhead.

doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).

CONCATENATE 'Purchase Order - ' docno ' has been released'

INTO doc_chng-obj_descr.

doc_chng-obj_prio = 1.

recipient Details

CLEAR reclist1.

CLEAR reclist.

REFRESH reclist1.

REFRESH reclist.

SELECT SINGLE * FROM t024

WHERE t024~mandt = sy-mandt

AND ekgrp = t_ekgrp.

reclist1-receiver = t024-smtp_addr.

reclist1-rec_type = 'U'.

reclist1-com_type = 'INT'.

reclist1-receiver = 'mukundhan.kn@lntinfotech.com'.

modify table reclist transporting rec_type receiver COM_TYPE .

where rec_type is initial.

APPEND reclist1 TO reclist.

ENDFORM. " ASSIGN_DATA_4_MAIL

&----


*& Form send_mail_with_attachment

&----


text

-


--> p1 text

<-- p2 text

-


FORM send_mail_with_attachment.

sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = doc_chng

put_in_outbox = 'X'

commit_work = 'X'

TABLES

packing_list = objpack

object_header = objhead

contents_bin = objbin

contents_txt = objtxt

receivers = reclist

EXCEPTIONS

too_many_receivers = 1

document_not_sent = 2

operation_no_authorization = 4

OTHERS = 99.

CASE sy-subrc.

WHEN 0.

PERFORM flush_mail.

message 'Mail sent successfully' type 'I'.

when 1.

message 'No authorization for sending to the specified number'

*type 'E'.

when 2.

message 'Document could not be sent to any recipient' type 'E'.

when 4.

message 'No send authorization' type 'E'.

when others.

message 'Error occurred while sending' type 'E'.

ENDCASE.

ENDFORM. " send_mail_with_attachment

-


Start new screen *

-


FORM bdc_dynpro USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM. "bdc_dynpro

-


Insert field *

-


FORM bdc_field USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. "bdc_field

&----


*& Form AUTOMATE

&----


text

-


--> p1 text

<-- p2 text

-


FORM flush_mail .

PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=PDIA'.

PERFORM bdc_dynpro USING 'SAPLSPO4' '0300'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=FURT'.

PERFORM bdc_field USING 'BDC_CURSOR'

'SVALD-VALUE(01)'.

PERFORM bdc_field USING 'SVALD-VALUE(01)'

'int'.

PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BACK'.

PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BACK'.

CALL TRANSACTION 'SCOT' USING bdcdata

MODE 'N'

UPDATE 'S'.

ENDFORM. " AUTOMATE

regards,

venkat.

Read only

Former Member
0 Likes
652

Hi

This is sample program which gives u some idea

Code

REPORT zzz_test3 .

  • Internal Table declarations

DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,

i_tline TYPE TABLE OF tline WITH HEADER LINE,

i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,

i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,

  • Objects to send mail.

i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,

i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,

i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

  • Work Area declarations

w_objhead TYPE soli_tab,

w_ctrlop TYPE ssfctrlop,

w_compop TYPE ssfcompop,

w_return TYPE ssfcrescl,

w_doc_chng typE sodocchgi1,

w_data TYPE sodocchgi1,

w_buffer TYPE string,"To convert from 132 to 255

  • Variables declarations

v_form_name TYPE rs38l_fnam,

v_len_in LIKE sood-objlen,

v_len_out LIKE sood-objlen,

v_len_outn TYPE i,

v_lines_txt TYPE i,

v_lines_bin TYPE i.

call function 'SSF_FUNCTION_MODULE_NAME'

exporting

formname = 'ZZZ_TEST2'

importing

fm_name = v_form_name

exceptions

no_form = 1

no_function_module = 2

others = 3.

IF sy-subrc <> 0.

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

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

ENDIF.

w_ctrlop-getotf = 'X'.

w_ctrlop-no_dialog = 'X'.

w_compop-tdnoprev = 'X'.

CALL FUNCTION v_form_name

EXPORTING

control_parameters = w_ctrlop

output_options = w_compop

user_settings = 'X'

IMPORTING

job_output_info = w_return

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[].

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = 'PDF'

max_linewidth = 132

IMPORTING

bin_filesize = v_len_in

TABLES

otf = i_otf

lines = i_tline

EXCEPTIONS

err_max_linewidth = 1

err_format = 2

err_conv_not_possible = 3

OTHERS = 4.

IF sy-subrc <> 0.

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

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

ENDIF.

  • Convert PDF from 132 to 255.

LOOP AT i_tline.

  • Replacing space by ~

TRANSLATE i_tline USING ' ~'.

CONCATENATE w_buffer i_tline INTO w_buffer.

ENDLOOP.

  • Replacing ~ by space

TRANSLATE w_buffer USING '~ '.

DO.

i_record = w_buffer.

  • Appending 255 characters as a record

APPEND i_record.

SHIFT w_buffer LEFT BY 255 PLACES.

IF w_buffer IS INITIAL.

EXIT.

ENDIF.

ENDDO.

Refresh: i_reclist,

i_objtxt,

i_objbin,

i_objpack.

clear w_objhead.

  • Object with PDF.

i_objbin[] = i_record[].

DESCRIBE TABLE i_objbin LINES v_lines_bin.

  • Object with main text of the mail.

i_objtxt = 'Find attached the output of the smart form.'.

APPEND i_objtxt.

i_objtxt = 'Regards,'.

APPEND i_objtxt.

i_objtxt = 'J.Jayanthi'.

APPEND i_objtxt.

DESCRIBE TABLE i_objtxt LINES v_lines_txt.

  • Document information.

w_doc_chng-obj_name = 'Smartform'.

w_doc_chng-expiry_dat = sy-datum + 10.

w_doc_chng-obj_descr = 'Smart form output'.

w_doc_chng-sensitivty = 'F'. "Functional object

w_doc_chng-doc_size = v_lines_txt * 255.

  • Pack to main body as RAW.

  • Obj. to be transported not in binary form

CLEAR i_objpack-transf_bin.

  • Start line of object header in transport packet

i_objpack-head_start = 1.

  • Number of lines of an object header in object packet

i_objpack-head_num = 0.

  • Start line of object contents in an object packet

i_objpack-body_start = 1.

  • Number of lines of the object contents in an object packet

i_objpack-body_num = v_lines_txt.

  • Code for document class

i_objpack-doc_type = 'RAW'.

APPEND i_objpack.

  • Packing as PDF.

i_objpack-transf_bin = 'X'.

i_objpack-head_start = 1.

i_objpack-head_num = 1.

i_objpack-body_start = 1.

i_objpack-body_num = v_lines_bin.

i_objpack-doc_type = 'PDF'.

i_objpack-obj_name = 'Smartform'.

CONCATENATE 'Smartform_output' '.pdf'

INTO i_objpack-obj_descr.

i_objpack-doc_size = v_lines_bin * 255.

APPEND i_objpack.

  • Document information.

CLEAR i_reclist.

  • e-mail receivers.

i_reclist-receiver = 'jthi.gayhri@gmail.com'.

i_reclist-express = 'X'.

i_reclist-rec_type = 'U'. "Internet address

APPEND i_reclist.

  • Sending mail.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = w_doc_chng

put_in_outbox = 'X'

TABLES

packing_list = i_objpack

object_header = w_objhead

contents_hex = i_objbin

contents_txt = i_objtxt

receivers = i_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.

ENDIF.

Regards

Read only

Former Member
0 Likes
652

Hi,

Have a look on the following code,

You can send smartform output to email as pdf attachment.

You can send to either sap inbox or any other mails.

This is to send the PDF attachment email.

REPORT ZCS_SF_TEST1.

  • Internal Table declarations

DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,

i_tline TYPE TABLE OF tline WITH HEADER LINE,

i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,

i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,

  • Objects to send mail.

i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,

i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,

i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,

i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

  • Work Area declarations

w_objhead TYPE soli_tab,

w_ctrlop TYPE ssfctrlop,

w_compop TYPE ssfcompop,

w_return TYPE ssfcrescl,

w_doc_chng typE sodocchgi1,

w_data TYPE sodocchgi1,

w_buffer TYPE string,"To convert from 132 to 255

  • Variables declarations

v_form_name TYPE rs38l_fnam,

v_len_in LIKE sood-objlen,

v_len_out LIKE sood-objlen,

v_len_outn TYPE i,

v_lines_txt TYPE i,

v_lines_bin TYPE i.

call function 'SSF_FUNCTION_MODULE_NAME'

exporting

formname = 'ZCS_FORM6'

importing

fm_name = v_form_name

exceptions

no_form = 1

no_function_module = 2

others = 3.

IF sy-subrc <> 0.

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

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

ENDIF.

w_ctrlop-getotf = 'X'.

w_ctrlop-no_dialog = 'X'.

w_compop-tdnoprev = 'X'.

CALL FUNCTION v_form_name

EXPORTING

control_parameters = w_ctrlop

output_options = w_compop

user_settings = 'X'

IMPORTING

job_output_info = w_return

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[].

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = 'PDF'

max_linewidth = 132

IMPORTING

bin_filesize = v_len_in

TABLES

otf = i_otf

lines = i_tline

EXCEPTIONS

err_max_linewidth = 1

err_format = 2

err_conv_not_possible = 3

OTHERS = 4.

IF sy-subrc <> 0.

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

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

ENDIF.

  • Convert PDF from 132 to 255.

LOOP AT i_tline.

  • Replacing space by ~

TRANSLATE i_tline USING '~'.

CONCATENATE w_buffer i_tline INTO w_buffer.

ENDLOOP.

  • Replacing ~ by space

TRANSLATE w_buffer USING '~'.

DO.

i_record = w_buffer.

  • Appending 255 characters as a record

APPEND i_record.

SHIFT w_buffer LEFT BY 255 PLACES.

IF w_buffer IS INITIAL.

EXIT.

ENDIF.

ENDDO.

Refresh: i_reclist,

i_objtxt,

i_objbin,

i_objpack.

clear w_objhead.

  • Object with PDF.

i_objbin[] = i_record[].

DESCRIBE TABLE i_objbin LINES v_lines_bin.

  • Object with main text of the mail.

i_objtxt = 'Find attached the output of the smart form.'.

APPEND i_objtxt.

i_objtxt = 'Regards,'.

APPEND i_objtxt.

i_objtxt = 'Chandu Valluri'.

APPEND i_objtxt.

DESCRIBE TABLE i_objtxt LINES v_lines_txt.

  • Document information.

w_doc_chng-obj_name = 'Smartform'.

w_doc_chng-expiry_dat = sy-datum + 10.

w_doc_chng-obj_descr = 'Smart form output'.

w_doc_chng-sensitivty = 'F'. "Functional object

w_doc_chng-doc_size = v_lines_txt * 255.

  • Pack to main body as RAW.

  • Obj. to be transported not in binary form

CLEAR i_objpack-transf_bin.

  • Start line of object header in transport packet

i_objpack-head_start = 1.

  • Number of lines of an object header in object packet

i_objpack-head_num = 0.

  • Start line of object contents in an object packet

i_objpack-body_start = 1.

  • Number of lines of the object contents in an object packet

i_objpack-body_num = v_lines_txt.

  • Code for document class

i_objpack-doc_type = 'RAW'.

APPEND i_objpack.

  • Packing as PDF.

i_objpack-transf_bin = 'X'.

i_objpack-head_start = 1.

i_objpack-head_num = 1.

i_objpack-body_start = 1.

i_objpack-body_num = v_lines_bin.

i_objpack-doc_type = 'PDF'.

i_objpack-obj_name = 'Smartform'.

CONCATENATE 'Smartform_output' '.pdf'

INTO i_objpack-obj_descr.

i_objpack-doc_size = v_lines_bin * 255.

APPEND i_objpack.

  • Document information.

CLEAR i_reclist.

  • e-mail receivers.

i_reclist-receiver = sy-uname.

i_reclist-express = 'X'.

i_reclist-rec_type = 'B'. "SAP User

*U = INTERNET ADDRESS,

*B = SAP USER,

*P = PRIVATE DISTRIBUTION LIST,

*O = SAPOFFICE USER,

*R = SAP user in another SAP System

*X = X400 ADDRESS

*C = SHARED DISTRIBUTION LIST

APPEND i_reclist.

  • Sending mail.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = w_doc_chng

put_in_outbox = 'X'

TABLES

packing_list = i_objpack

object_header = w_objhead

contents_bin = i_objbin

contents_txt = i_objtxt

receivers = i_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.

write:/ 'This is successful'.

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

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

ENDIF.

Reward,if it is useful.

Thanks,

Chandu

Read only

Former Member
0 Likes
652

Hai.

check the below examples.

Mailing with Attachment by ABAP Coding

Refer this link:

FORM send_list_to_basis .

DATA: w_path LIKE rlgrap OCCURS 0 WITH HEADER LINE,

lt_index TYPE sy-tabix,

doc_type(3) TYPE c,

descr LIKE it_objpack_basis-obj_descr,

temp_data LIKE w_path,

temp1 TYPE string,

tab_lines TYPE i,

langu(15) TYPE c,

expirydate TYPE so_obj_edt,

L_FILE1(100).

CONCATENATE 'C:' sy-repid '_' sy-datum '.XLS' INTO L_FILE1.

W_PATH-FILENAME = L_FILE1.

APPEND w_path.

CLEAR w_path.

wa_doc_chng-obj_descr = 'User List not logged on for 180 days'.

wa_doc_chng-obj_langu = 'E'.

wa_doc_chng-obj_expdat = sy-datum.

CLEAR w_subject.

CONCATENATE 'Please find attached document with list of users'

'not logged on for 180 days for client' sy-mandt

INTO w_subject SEPARATED BY space.

it_objtxt_basis-line = w_subject.

APPEND it_objtxt_basis.

CLEAR it_objtxt_basis.

it_objtxt_basis-line = text-004.

APPEND it_objtxt_basis.

CLEAR it_objtxt_basis.

CLEAR w_tab_line.

DESCRIBE TABLE it_objtxt_basis LINES w_tab_line.

READ TABLE it_objtxt_basis INDEX w_tab_line INTO l_cline.

wa_doc_chng-doc_size =

( w_tab_line - 1 ) * 255 + STRLEN( l_cline ).

CLEAR it_objpack_basis-transf_bin.

it_objpack_basis-head_start = 1.

it_objpack_basis-head_num = 0.

it_objpack_basis-body_start = 1.

it_objpack_basis-body_num = w_tab_line.

it_objpack_basis-doc_type = 'RAW'.

APPEND it_objpack_basis.

CLEAR it_objpack_basis.

LOOP AT w_path.

temp1 = w_path.

descr = w_path.

CALL FUNCTION 'STRING_REVERSE'

EXPORTING

string = descr

lang = 'E'

IMPORTING

rstring = descr.

CALL FUNCTION 'STRING_SPLIT'

EXPORTING

delimiter = ''

string = descr

IMPORTING

head = descr

tail = temp_data.

CALL FUNCTION 'STRING_REVERSE'

EXPORTING

string = descr

lang = 'E'

IMPORTING

rstring = descr.

CALL FUNCTION 'STRING_SPLIT'

EXPORTING

delimiter = '.'

string = descr

IMPORTING

head = temp_data

tail = doc_type.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = temp1

filetype = 'BIN'

header_length = 0

read_by_line = 'X'

replacement = '#'

TABLES

data_tab = it_upload.

DESCRIBE TABLE it_upload LINES tab_lines.

DESCRIBE TABLE it_objbin_basis LINES lt_index.

lt_index = lt_index + 1.

LOOP AT it_upload.

wa_objbin_basis-line = it_upload-line.

APPEND wa_objbin_basis TO it_objbin_basis.

CLEAR wa_objbin_basis.

ENDLOOP.

it_objpack_basis-transf_bin = 'X'.

it_objpack_basis-head_start = 0.

it_objpack_basis-head_num = 0.

it_objpack_basis-body_start = lt_index.

it_objpack_basis-body_num = tab_lines.

it_objpack_basis-doc_type = doc_type.

it_objpack_basis-obj_descr = descr.

it_objpack_basis-doc_size = tab_lines * 255.

APPEND it_objpack_basis.

CLEAR it_objpack_basis.

ENDLOOP.

it_reclist_basis-receiver = 'XXX@.com'.

it_reclist_basis-rec_type = 'U'.

APPEND it_reclist_basis.

CLEAR it_reclist_basis.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = wa_doc_chng

put_in_outbox = 'X'

commit_work = 'X'

TABLES

packing_list = it_objpack_basis

contents_txt = it_objtxt_basis

contents_bin = it_objbin_basis

receivers = it_reclist_basis

EXCEPTIONS

too_many_receivers = 1

document_not_sent = 2

operation_no_authorization = 4

OTHERS = 99.

IF sy-subrc EQ 0.

SUBMIT rsconn01 WITH mode = 'INT' AND RETURN.

ENDIF.

ENDFORM. " send_list_to_basis

-

-


FORM send_mail_2 USING msgid msgno msgv1.

  • mailuser oder Gruppe like sy-uname default 'Ruckerk'.

DATA: express_hold_time LIKE sovaltime.

DATA: text LIKE sotxtinfo.

DATA: receiver LIKE somlreci1 OCCURS 0 WITH HEADER LINE.

  • MESSAGE ZF100 (FTP an UDB fehlgeschlagen)

text-msgid = msgid.

text-msgno = msgno.

text-msgv1 = msgv1.

text-msgv2 = ' '.

text-msgv3 = ' '.

text-msgv4 = ' '.

  • express_hold_time

express_hold_time-days = 01.

express_hold_time-h_min_sec = 240000.

  • receiver

receiver-receiver = mreceivr.

  • Gruppe von Empfängern

receiver-rec_type = 'C'.

  • und Expressmeldung ausgeben

receiver-express = 'X'.

APPEND receiver.

CALL FUNCTION 'MESSAGE_SEND_AS_MAIL'

EXPORTING

msgid = text-msgid

msgno = text-msgno

msgv1 = text-msgv1

msgv2 = text-msgv2

msgv3 = text-msgv3

TABLES

receivers = receiver.

IF sy-subrc <> 0.

WRITE:/ 'hat nicht geklappt', 'SY-SUBRC =', sy-subrc.

ENDIF.

PERFORM print_error_report.

  • Fehlermeldung zum Abbrechen des Report's ausgeben.

MESSAGE e398 WITH 'Jobabbruch' msgv1.

ENDFORM. " SEND_MAIL_2

Another Program:

*& Report ZSENDEMAIL *

*& *

*&----


*

*& Example of sending external email via SAPCONNECT *

*& *

*&----


*

REPORT zsendemail .

PARAMETERS: psubject(40) type c default 'Hello',

p_email(40) type c default 'test@sapdev.co.uk' .

data: it_packing_list like sopcklsti1 occurs 0 with header line,

it_contents like solisti1 occurs 0 with header line,

it_receivers like somlreci1 occurs 0 with header line,

it_attachment like solisti1 occurs 0 with header line,

gd_cnt type i,

gd_sent_all(1) type c,

gd_doc_data like sodocchgi1,

gd_error type sy-subrc.

data: it_message type standard table of SOLISTI1 initial size 0

with header line.

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

*START-OF-SELECTION.

START-OF-SELECTION.

Perform populate_message_table.

*Send email message, although is not sent from SAP until mail send

*program has been executed(rsconn01)

PERFORM send_email_message.

*Instructs mail send program for SAPCONNECT to send email(rsconn01)

perform initiate_mail_execute_program.

*&----


*

*& Form POPULATE_MESSAGE_TABLE

*&----


*

  • Adds text to email text table

*----


*

form populate_message_table.

Append 'Email line 1' to it_message.

Append 'Email line 2' to it_message.

Append 'Email line 3' to it_message.

Append 'Email line 4' to it_message.

endform. " POPULATE_MESSAGE_TABLE

*&----


*

*& Form SEND_EMAIL_MESSAGE

*&----


*

  • Send email message

*----


*

form send_email_message.

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

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

  • Add the recipients email address

clear it_receivers.

refresh it_receivers.

it_receivers-receiver = p_email.

it_receivers-rec_type = 'U'.

it_receivers-com_type = 'INT'.

it_receivers-notif_del = 'X'.

it_receivers-notif_ndel = 'X'.

append it_receivers.

  • Call the FM to post the message to SAPMAIL

call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'

exporting

document_data = gd_doc_data

put_in_outbox = 'X'

importing

sent_to_all = gd_sent_all

tables

packing_list = it_packing_list

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.

  • Store function module return code

gd_error = sy-subrc.

  • Get it_receivers return code

loop at it_receivers.

endloop.

endform. " SEND_EMAIL_MESSAGE

*&----


*

*& Form INITIATE_MAIL_EXECUTE_PROGRAM

*&----


*

  • Instructs mail send program for SAPCONNECT to send email.

*----


*

form initiate_mail_execute_program.

wait up to 2 seconds.

if gd_error eq 0.

submit rsconn01 with mode = 'INT'

with output = 'X'

and return.

endif.

endform. " INITIATE_MAIL_EXECUTE_PROGRAM

Please check out the follwing links.

http://www.sapdevelopment.co.uk/reporting/email/email_mbody.htm

http://www.sapdevelopment.co.uk/reporting/email/attach_xlsmod.htm

regards.

sowjanya.b

Read only

Former Member
0 Likes
652

Hi,

Try This Code



REPORT zzz_test3 .
* Internal Table declarations
DATA: i_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,

i_tline TYPE TABLE OF tline WITH HEADER LINE,
i_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,
i_record LIKE solisti1 OCCURS 0 WITH HEADER LINE,
* Objects to send mail.
i_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
i_objtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_objbin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE,

* Work Area declarations
w_objhead TYPE soli_tab,
w_ctrlop TYPE ssfctrlop,
w_compop TYPE ssfcompop,
w_return TYPE ssfcrescl,
w_doc_chng typE sodocchgi1,
w_data TYPE sodocchgi1,
w_buffer TYPE string,"To convert from 132 to 255
* Variables declarations
v_form_name TYPE rs38l_fnam,
v_len_in LIKE sood-objlen,
v_len_out LIKE sood-objlen,
v_len_outn TYPE i,
v_lines_txt TYPE i,
v_lines_bin TYPE i.
call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = 'ZZZ_TEST2'
importing
fm_name = v_form_name
exceptions
no_form = 1
no_function_module = 2
others = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
w_ctrlop-getotf = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
CALL FUNCTION v_form_name
EXPORTING
control_parameters = w_ctrlop
output_options = w_compop
user_settings = 'X'
IMPORTING
job_output_info = w_return
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[].
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = v_len_in
TABLES
otf = i_otf
lines = i_tline
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Convert PDF from 132 to 255.
LOOP AT i_tline.
* Replacing space by ~
TRANSLATE i_tline USING ' ~'.
CONCATENATE w_buffer i_tline INTO w_buffer.
ENDLOOP.
* Replacing ~ by space
TRANSLATE w_buffer USING '~ '.
DO.
i_record = w_buffer.
* Appending 255 characters as a record
APPEND i_record.
SHIFT w_buffer LEFT BY 255 PLACES.
IF w_buffer IS INITIAL.
EXIT.
ENDIF.
ENDDO.
Refresh: i_reclist,
i_objtxt,
i_objbin,
i_objpack.
clear w_objhead.
* Object with PDF.
i_objbin[] = i_record[].
DESCRIBE TABLE i_objbin LINES v_lines_bin.
* Object with main text of the mail.
i_objtxt = 'Find attached the output of the smart form.'.
APPEND i_objtxt.
i_objtxt = 'Regards,'.
APPEND i_objtxt.
i_objtxt = 'J.Jayanthi'.
APPEND i_objtxt.
DESCRIBE TABLE i_objtxt LINES v_lines_txt.
* Document information.
w_doc_chng-obj_name = 'Smartform'.
w_doc_chng-expiry_dat = sy-datum + 10.
w_doc_chng-obj_descr = 'Smart form output'.
w_doc_chng-sensitivty = 'F'. "Functional object
w_doc_chng-doc_size = v_lines_txt * 255.
* Pack to main body as RAW.
* Obj. to be transported not in binary form
CLEAR i_objpack-transf_bin.
* Start line of object header in transport packet
i_objpack-head_start = 1.
* Number of lines of an object header in object packet
i_objpack-head_num = 0.
* Start line of object contents in an object packet
i_objpack-body_start = 1.
* Number of lines of the object contents in an object packet
i_objpack-body_num = v_lines_txt.
* Code for document class
i_objpack-doc_type = 'RAW'.
APPEND i_objpack.
* Packing as PDF.
i_objpack-transf_bin = 'X'.
i_objpack-head_start = 1.
i_objpack-head_num = 1.
i_objpack-body_start = 1.
i_objpack-body_num = v_lines_bin.
i_objpack-doc_type = 'PDF'.
i_objpack-obj_name = 'Smartform'.
CONCATENATE 'Smartform_output' '.pdf'
INTO i_objpack-obj_descr.
i_objpack-doc_size = v_lines_bin * 255.
APPEND i_objpack.
* Document information.
CLEAR i_reclist.
* e-mail receivers.
i_reclist-receiver = 'sandipan.ghosh@capgemini.com'.
i_reclist-express = 'X'.
i_reclist-rec_type = 'U'. "Internet address
APPEND i_reclist.
* Sending mail.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_chng
put_in_outbox = 'X'
TABLES
packing_list = i_objpack
object_header = w_objhead
contents_hex = i_objbin
contents_txt = i_objtxt
receivers = i_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.
ENDIF.

Regards

Sandipan