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

ALV-report

Former Member
0 Likes
1,299

How to send mails to outside e mail adress in ALV grid display

I am Not getting mail if i press MAIL icon in ALV GRID display

Whats the Transaction Code to see the outbox in SAP

Regards

How to send mails to outside e mail adress in ALV grid display

I am Not getting mail if i press MAIL icon in ALV GRID display

Whats the Transaction Code to see the outbox in SAP

Regards

8 REPLIES 8
Read only

Former Member
0 Likes
1,215

Hi!

You can check the mails in SAP using transaction SCOT.

Regards

Tamá

Read only

Former Member
0 Likes
1,215

Hi Rasheed,

SO01 SAPoffice: Inbox

SO03 SAPoffice: Private Folders

SO04 SAPoffice: Shared Folders

SO05 SAPoffice: Private Trash

Also See T-Code SBWP and SO02.

Read only

Former Member
0 Likes
1,215

The code below demonstrates how to retrieve a spool request and email it as a PDF document. Please note for the below program to process a spool request the program must be executed in background otherwise no spool request will be created. Once you have had a look at this there is an modified version of the program which works in both background and foreground. Also see transaction SCOT for SAPConnect administration.

&----


*& Report ZSPOOLTOPDF *

*& *

&----


*& Converts spool request into PDF document and emails it to *

*& recipicant. *

*& *

*& Execution *

*& -


*

*& This program must be run as a background job in-order for the write *

*& commands to create a Spool request rather than be displayed on *

*& screen *

&----


REPORT zspooltopdf.

PARAMETER: p_email1 LIKE somlreci1-receiver

DEFAULT '[email protected]',

p_sender LIKE somlreci1-receiver

DEFAULT '[email protected]',

p_delspl AS CHECKBOX.

*DATA DECLARATION

DATA: gd_recsize TYPE i.

  • Spool IDs

TYPES: BEGIN OF t_tbtcp.

INCLUDE STRUCTURE tbtcp.

TYPES: END OF t_tbtcp.

DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,

wa_tbtcp TYPE t_tbtcp.

  • Job Runtime Parameters

DATA: gd_eventid LIKE tbtcm-eventid,

gd_eventparm LIKE tbtcm-eventparm,

gd_external_program_active LIKE tbtcm-xpgactive,

gd_jobcount LIKE tbtcm-jobcount,

gd_jobname LIKE tbtcm-jobname,

gd_stepcount LIKE tbtcm-stepcount,

gd_error TYPE sy-subrc,

gd_reciever TYPE sy-subrc.

DATA: w_recsize TYPE i.

DATA: gd_subject LIKE sodocchgi1-obj_descr,

it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,

it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,

gd_sender_type LIKE soextreci1-adr_typ,

gd_attachment_desc TYPE so_obj_nam,

gd_attachment_name TYPE so_obj_des.

  • Spool to PDF conversions

DATA: gd_spool_nr LIKE tsp01-rqident,

gd_destination LIKE rlgrap-filename,

gd_bytecount LIKE tst01-dsize,

gd_buffer TYPE string.

  • Binary store for PDF

DATA: BEGIN OF it_pdf_output OCCURS 0.

INCLUDE STRUCTURE tline.

DATA: END OF it_pdf_output.

CONSTANTS: c_dev LIKE sy-sysid VALUE 'DEV',

c_no(1) TYPE c VALUE ' ',

c_device(4) TYPE c VALUE 'LOCL'.

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

*START-OF-SELECTION.

START-OF-SELECTION.

  • Write statement to represent report output. Spool request is created

  • if write statement is executed in background. This could also be an

  • ALV grid which would be converted to PDF without any extra effort

WRITE 'Hello World'.

new-page.

commit work.

new-page print off.

IF sy-batch EQ 'X'.

PERFORM get_job_details.

PERFORM obtain_spool_id.

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

      • Alternative way could be to submit another program and store spool

      • id into memory, will be stored in sy-spono.

*submit ZSPOOLTOPDF2

  • to sap-spool

  • spool parameters %_print

  • archive parameters %_print

  • without spool dynpro

  • and return.

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

  • Get spool id from program called above

  • IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.

PERFORM convert_spool_to_pdf.

PERFORM process_email.

if p_delspl EQ 'X'.

PERFORM delete_spool.

endif.

IF sy-sysid = c_dev.

wait up to 5 seconds.

SUBMIT rsconn01 WITH mode = 'INT'

WITH output = 'X'

AND RETURN.

ENDIF.

ELSE.

SKIP.

WRITE:/ 'Program must be executed in background in-order for spool',

'request to be created.'.

ENDIF.

----


  • FORM obtain_spool_id *

----


FORM obtain_spool_id.

CHECK NOT ( gd_jobname IS INITIAL ).

CHECK NOT ( gd_jobcount IS INITIAL ).

SELECT * FROM tbtcp

INTO TABLE it_tbtcp

WHERE jobname = gd_jobname

AND jobcount = gd_jobcount

AND stepcount = gd_stepcount

AND listident <> '0000000000'

ORDER BY jobname

jobcount

stepcount.

READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.

IF sy-subrc = 0.

message s004(zdd) with gd_spool_nr.

gd_spool_nr = wa_tbtcp-listident.

MESSAGE s004(zdd) WITH gd_spool_nr.

ELSE.

MESSAGE s005(zdd).

ENDIF.

ENDFORM.

----


  • FORM get_job_details *

----


FORM get_job_details.

  • Get current job details

CALL FUNCTION 'GET_JOB_RUNTIME_INFO'

IMPORTING

eventid = gd_eventid

eventparm = gd_eventparm

external_program_active = gd_external_program_active

jobcount = gd_jobcount

jobname = gd_jobname

stepcount = gd_stepcount

EXCEPTIONS

no_runtime_info = 1

OTHERS = 2.

ENDFORM.

----


  • FORM convert_spool_to_pdf *

----


FORM convert_spool_to_pdf.

CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'

EXPORTING

src_spoolid = gd_spool_nr

no_dialog = c_no

dst_device = c_device

IMPORTING

pdf_bytecount = gd_bytecount

TABLES

pdf = it_pdf_output

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

OTHERS = 12.

CHECK sy-subrc = 0.

  • Transfer the 132-long strings to 255-long strings

LOOP AT it_pdf_output.

TRANSLATE it_pdf_output USING ' ~'.

CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.

ENDLOOP.

TRANSLATE gd_buffer USING '~ '.

DO.

it_mess_att = gd_buffer.

APPEND it_mess_att.

SHIFT gd_buffer LEFT BY 255 PLACES.

IF gd_buffer IS INITIAL.

EXIT.

ENDIF.

ENDDO.

ENDFORM.

----


  • FORM process_email *

----


FORM process_email.

DESCRIBE TABLE it_mess_att LINES gd_recsize.

CHECK gd_recsize > 0.

PERFORM send_email USING p_email1.

  • perform send_email using p_email2.

ENDFORM.

----


  • FORM send_email *

----


  • --> p_email *

----


FORM send_email USING p_email.

CHECK NOT ( p_email IS INITIAL ).

REFRESH it_mess_bod.

  • Default subject matter

gd_subject = 'Subject'.

gd_attachment_desc = 'Attachname'.

  • CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.

it_mess_bod = 'Message Body text, line 1'.

APPEND it_mess_bod.

it_mess_bod = 'Message Body text, line 2...'.

APPEND it_mess_bod.

  • If no sender specified - default blank

IF p_sender EQ space.

gd_sender_type = space.

ELSE.

gd_sender_type = 'INT'.

ENDIF.

  • Send file by email as .xls speadsheet

PERFORM send_file_as_email_attachment

tables it_mess_bod

it_mess_att

using p_email

'Example .xls documnet attachment'

'PDF'

gd_attachment_name

gd_attachment_desc

p_sender

gd_sender_type

changing gd_error

gd_reciever.

ENDFORM.

----


  • FORM delete_spool *

----


FORM delete_spool.

DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.

ld_spool_nr = gd_spool_nr.

CHECK p_delspl <> c_no.

CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'

EXPORTING

spoolid = ld_spool_nr.

ENDFORM.

&----


*& Form SEND_FILE_AS_EMAIL_ATTACHMENT

&----


  • Send email

----


FORM send_file_as_email_attachment tables it_message

it_attach

using p_email

p_mtitle

p_format

p_filename

p_attdescription

p_sender_address

p_sender_addres_type

changing p_error

p_reciever.

DATA: ld_error TYPE sy-subrc,

ld_reciever TYPE sy-subrc,

ld_mtitle LIKE sodocchgi1-obj_descr,

ld_email LIKE somlreci1-receiver,

ld_format TYPE so_obj_tp ,

ld_attdescription TYPE so_obj_nam ,

ld_attfilename TYPE so_obj_des ,

ld_sender_address LIKE soextreci1-receiver,

ld_sender_address_type LIKE soextreci1-adr_typ,

ld_receiver LIKE sy-subrc.

data: t_packing_list like sopcklsti1 occurs 0 with header line,

t_contents like solisti1 occurs 0 with header line,

t_receivers like somlreci1 occurs 0 with header line,

t_attachment like solisti1 occurs 0 with header line,

t_object_header like solisti1 occurs 0 with header line,

w_cnt type i,

w_sent_all(1) type c,

w_doc_data like sodocchgi1.

ld_email = p_email.

ld_mtitle = p_mtitle.

ld_format = p_format.

ld_attdescription = p_attdescription.

ld_attfilename = p_filename.

ld_sender_address = p_sender_address.

ld_sender_address_type = p_sender_addres_type.

  • Fill the document data.

w_doc_data-doc_size = 1.

  • Populate the subject/generic message attributes

w_doc_data-obj_langu = sy-langu.

w_doc_data-obj_name = 'SAPRPT'.

w_doc_data-obj_descr = ld_mtitle .

w_doc_data-sensitivty = 'F'.

  • Fill the document data and get size of attachment

CLEAR w_doc_data.

READ TABLE it_attach INDEX w_cnt.

w_doc_data-doc_size =

( w_cnt - 1 ) * 255 + STRLEN( it_attach ).

w_doc_data-obj_langu = sy-langu.

w_doc_data-obj_name = 'SAPRPT'.

w_doc_data-obj_descr = ld_mtitle.

w_doc_data-sensitivty = 'F'.

CLEAR t_attachment.

REFRESH t_attachment.

t_attachment[] = it_attach[].

  • Describe the body of the message

CLEAR t_packing_list.

REFRESH t_packing_list.

t_packing_list-transf_bin = space.

t_packing_list-head_start = 1.

t_packing_list-head_num = 0.

t_packing_list-body_start = 1.

DESCRIBE TABLE it_message LINES t_packing_list-body_num.

t_packing_list-doc_type = 'RAW'.

APPEND t_packing_list.

  • Create attachment notification

t_packing_list-transf_bin = 'X'.

t_packing_list-head_start = 1.

t_packing_list-head_num = 1.

t_packing_list-body_start = 1.

DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.

t_packing_list-doc_type = ld_format.

t_packing_list-obj_descr = ld_attdescription.

t_packing_list-obj_name = ld_attfilename.

t_packing_list-doc_size = t_packing_list-body_num * 255.

APPEND t_packing_list.

  • Add the recipients email address

CLEAR t_receivers.

REFRESH t_receivers.

t_receivers-receiver = ld_email.

t_receivers-rec_type = 'U'.

t_receivers-com_type = 'INT'.

t_receivers-notif_del = 'X'.

t_receivers-notif_ndel = 'X'.

APPEND t_receivers.

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'

EXPORTING

document_data = w_doc_data

put_in_outbox = 'X'

sender_address = ld_sender_address

sender_address_type = ld_sender_address_type

commit_work = 'X'

IMPORTING

sent_to_all = w_sent_all

TABLES

packing_list = t_packing_list

contents_bin = t_attachment

contents_txt = it_message

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

  • Populate zerror return code

ld_error = sy-subrc.

  • Populate zreceiver return code

LOOP AT t_receivers.

ld_receiver = t_receivers-retrn_code.

ENDLOOP.

ENDFORM.

<b> rewards point for useful answer.....</b>

regards......

AbhaySingh.

Read only

Former Member
0 Likes
1,215

Try TCODE SCOT.

Read only

Former Member
0 Likes
1,215

T-CODE: SWBP or SOST.

Read only

Former Member
0 Likes
1,215

if you want to send mail with the same data as you display in ALV, you can use the same internal table,which you sent to ALV_LIST_DISPLAY function module.

take the email ids from the user on the selection-screen & use the below code to send mail to them.

call this FORM F_SEND_MAIL before you called the ALV function module.

FORM F_SEND_MAIL .

CLEAR WA_RECLIST.

REFRESH IT_RECLIST.

*-popualate email ids

*--Receipient 1

this receipient can be select-option from the selection screen. or can be hardcoded as below.

WA_RECLIST-RECEIVER = '[email protected]'.

WA_RECLIST-REC_TYPE = C_U.

WA_RECLIST-EXPRESS = C_X.

*--append receiver table

APPEND WA_RECLIST TO IT_RECLIST.

CLEAR : WA_RECLIST.

*--Receipient 2

WA_RECLIST-RECEIVER = '[email protected]'.

WA_RECLIST-REC_TYPE = C_U.

WA_RECLIST-EXPRESS = C_X.

*-append receiver table

APPEND WA_RECLIST TO IT_RECLIST.

CLEAR : WA_RECLIST.

*--populate document attributes

CLEAR: X_DOC_CHNG.

X_DOC_CHNG-OBJ_NAME = 'HEADING'.

CONCATENATE 'Japan BOL details for the delivery#'(003)

V_VBELN

INTO X_DOC_CHNG-OBJ_DESCR SEPARATED BY SPACE.

*-populate body text

  • CONCATENATE 'Japan BOL details for the Delivery#'(003)

CONCATENATE TEXT-003

V_VBELN

',is attached'

INTO WA_OBJTXT SEPARATED BY SPACE.

APPEND WA_OBJTXT TO IT_OBJTXT.

*---- Append Date and Time into Body of email.

MOVE 'File is generated on'(004) TO V_INFO.

V_TIME = SY-UZEIT.

  • WRITE : SY-UZEIT TO V_TIME USING EDIT MASK '__:__:__'.

CONCATENATE V_TIME+0(2)

V_TIME+2(2)

V_TIME+4(2)

INTO

V_TIME2 SEPARATED BY ':'.

  • WRITE : sy-datum MM/DD/YYYY TO lv_date .

CONCATENATE SY-DATUM+4(2)

'/'

SY-DATUM+6(2)

'/'

SY-DATUM+0(4)

INTO V_DATE.

CONCATENATE V_INFO

V_DATE

'At'

V_TIME2

INTO V_INFO

SEPARATED BY SPACE.

WA_OBJTXT = V_INFO.

APPEND WA_OBJTXT TO IT_OBJTXT.

*-document size

CLEAR : V_TABLE_LINES.

DESCRIBE TABLE IT_OBJTXT LINES V_TABLE_LINES.

READ TABLE IT_OBJTXT INTO WA_OBJTXT INDEX V_TABLE_LINES.

X_DOC_CHNG-DOC_SIZE =

( V_TABLE_LINES - 1 ) * 255 + STRLEN( WA_OBJTXT ).

*-populate packing list for body text

  • CLEAR IT_OBJPACK-TRANSF_BIN.

WA_OBJPACK-HEAD_START = 1.

WA_OBJPACK-HEAD_NUM = 0.

WA_OBJPACK-BODY_START = 1.

WA_OBJPACK-BODY_NUM = V_TABLE_LINES.

WA_OBJPACK-DOC_TYPE = 'RAW'.

APPEND WA_OBJPACK TO IT_OBJPACK.

CLEAR WA_OBJPACK.

*--for attachment

*--add Internal table lines here, as attachment.

*--IT_FINAL IS THE internal table which you used to display the result as ALV output

loop at IT_FINAL.

CONCATENATE IT_FINAL-FIELD1

IT_FINAL-FIELD2

*--AND SO ON

INTO WA_OBJBIN.

APPEND WA_OBJBIN TO IT_OBJBIN.

CLEAR WA_OBJBIN.

ENDLOOP.

*-get total no.of lines of Object table(attachment)

CLEAR : V_TABLE_LINES.

DESCRIBE TABLE IT_OBJBIN LINES V_TABLE_LINES.

*-populate object header

CONCATENATE 'Delivery#'(005)

V_VBELN

'-'

SY-DATUM

'-'

V_TIME

INTO

WA_OBJHEAD SEPARATED BY SPACE.

APPEND WA_OBJHEAD TO IT_OBJHEAD.

CLEAR WA_OBJHEAD.

*-packing list for attachment

WA_OBJPACK-TRANSF_BIN = C_X.

WA_OBJPACK-HEAD_START = 1.

WA_OBJPACK-HEAD_NUM = 1.

WA_OBJPACK-BODY_START = 1.

WA_OBJPACK-BODY_NUM = V_TABLE_LINES .

  • WA_OBJPACK-DOC_TYPE = 'CSV' .

WA_OBJPACK-DOC_TYPE = 'RAW' .

WA_OBJPACK-OBJ_NAME = 'POTR'.

  • CONCATENATE 'Delivery details for '(005)

CONCATENATE TEXT-005

V_VBELN

'-'

SY-DATUM

'-'

V_TIME

'.CSV'

INTO

WA_OBJPACK-OBJ_DESCR SEPARATED BY SPACE.

BREAK-POINT.

WA_OBJPACK-DOC_SIZE = V_TABLE_LINES * 255.

APPEND WA_OBJPACK TO IT_OBJPACK.

CLEAR WA_OBJPACK.

*-Sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = X_DOC_CHNG

PUT_IN_OUTBOX = C_X

COMMIT_WORK = C_X

TABLES

PACKING_LIST = IT_OBJPACK

OBJECT_HEADER = IT_OBJHEAD

CONTENTS_BIN = IT_OBJBIN

CONTENTS_TXT = IT_OBJTXT

RECEIVERS = IT_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.

ENDFORM. " F_SEND_MAIL

Regards

<b>rewards point for useful points.....</b>

regrds....

AbhaySingh

Read only

Former Member
0 Likes
1,215

Hi,

Use the transaction <b>sbwp</b> to view inbox and outbox.

<b>Please reward if found helpfull</b>

Regards,

Rakesh.

Read only

Former Member
0 Likes
1,215

Hi,

Check the below link..

http://www.geocities.com/mpioud/Abap_programs.html

Reward all helpful answers,

Regards,

Omkar.