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

Mail using ABAP program

Former Member
0 Likes
662

Hi all,

see below it.

TABLES: ZST2.

DATA : BEGIN OF ITAB OCCURS 0,

EMPNO LIKE ZST2-EMPNO,

EMPNAME LIKE ZST2-EMPNAME,

END OF ITAB.

DATA: message_content LIKE soli OCCURS 10 WITH HEADER LINE,

receiver_list LIKE soos1 OCCURS 5 WITH HEADER LINE,

packing_list LIKE soxpl OCCURS 2 WITH HEADER LINE,

listobject LIKE abaplist OCCURS 10,

compressed_attachment LIKE soli OCCURS 100 WITH HEADER LINE,

w_object_hd_change LIKE sood1,

compressed_size LIKE sy-index.

START-OF-SELECTION.

SELECT EMPNO EMPNAME "PERNR ENAME

INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM ZST2."WHERE PERNR < 50.

LOOP AT ITAB.

WRITE :/02 SY-VLINE , ITAB-EMPNO, 15 SY-VLINE , ITAB-EMPNAME.

*SY-VLINE.

ENDLOOP.

  • Receivers

receiver_list-recextnam = 'ur@company'. "-->

  • EMAIL ADDRESS

RECEIVER_list-RECESC = 'E'. "<-

RECEIVER_list-SNDART = 'INT'."<-

RECEIVER_list-SNDPRI = '1'."<-

APPEND receiver_list.

  • General data

w_object_hd_change-objla = sy-langu.

w_object_hd_change-objnam = 'Object name'.

w_object_hd_change-objsns = 'P'.

  • Mail subject

w_object_hd_change-objdes = 'Message subject'.

  • Mail body

APPEND 'Message content' TO message_content.

  • Attachment

CALL FUNCTION 'SAVE_LIST'

EXPORTING

list_index = '0'

TABLES

listobject = listobject.

CALL FUNCTION 'TABLE_COMPRESS'

IMPORTING

compressed_size = compressed_size

TABLES

in = listobject

out = compressed_attachment.

DESCRIBE TABLE compressed_attachment.

CLEAR packing_list.

packing_list-transf_bin = 'X'.

packing_list-head_start = 0.

packing_list-head_num = 0.

packing_list-body_start = 1.

packing_list-body_num = sy-tfill.

packing_list-objtp = 'ALI'.

packing_list-objnam = 'Object name'.

packing_list-objdes = 'Attachment description'.

packing_list-objlen = compressed_size.

APPEND packing_list.

CALL FUNCTION 'SO_OBJECT_SEND'

EXPORTING

object_hd_change = w_object_hd_change

object_type = 'RAW'

owner = sy-uname

TABLES

objcont = message_content

receivers = receiver_list

packing_list = packing_list

att_cont = compressed_attachment.

how prepared it?

thx,

s.suresh

3 REPLIES 3
Read only

abapdeveloper20
Contributor
0 Likes
554

Hi ,

Whatz worng in the code?? Pls post your requirement clearly... Thanks

Read only

0 Likes
554

Hi lakshmiraj,

I want send data to email.

Read only

Former Member
0 Likes
554

hi,

chek this,,

TABLES :VARID. "Variant directory

DATA: GV_NAMES LIKE TSP01-RQ2NAME,

GD_BYTECOUNT LIKE TST01-DSIZE,

GD_BUFFER TYPE STRING,

PDF_LINES TYPE TLINE OCCURS 0 WITH HEADER LINE,

SEND_REQUEST TYPE REF TO CL_BCS,

L_SUBJECT LIKE SOOD-OBJDES,

DOCUMENT TYPE REF TO CL_DOCUMENT_BCS,

BCS_EXCEPTION TYPE REF TO CX_BCS,

V_CTR TYPE I VALUE 0,

IT_INPUT LIKE BDI_LINE OCCURS 0 WITH HEADER LINE,

IT_MESS_ATT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

IT_BINARY_CONT TYPE SOLIX_TAB,

LEN_OUT TYPE I,

T_SPONO LIKE TSP01SYS OCCURS 0 WITH HEADER LINE.

DATA :GV_RQCRETIME LIKE TSP01-RQCRETIME.

DATA IT_VALUE LIKE RSPARAMS OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF T_VARID OCCURS 0,

VARIANT LIKE VARID-VARIANT,

END OF T_VARID.

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

  • SELECTION SCREEN *

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

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

SELECT-OPTIONS: S_VAR FOR VARID-VARIANT.

SELECTION-SCREEN END OF BLOCK B1.

  • Select the varinat name from the table VARID

SELECT VARIANT INTO TABLE T_VARID

FROM VARID

WHERE REPORT EQ 'ZAMRP003'

AND VARIANT IN S_VAR.

SORT T_VARID.

CHECK NOT T_VARID[] IS INITIAL.

LOOP AT T_VARID.

SUBMIT ZAMRP003 USING SELECTION-SET T_VARID-VARIANT

TO SAP-SPOOL SAP COVER PAGE ' '

DESTINATION ' '

IMMEDIATELY 'X'

KEEP IN SPOOL 'X'

LINE-COUNT 60000

LINE-SIZE 134

LAYOUT 'X_58_170'

WITHOUT SPOOL DYNPRO AND RETURN.

COMMIT WORK AND WAIT.

CONCATENATE SY-DATUM '000000' INTO GV_RQCRETIME.

CONCATENATE 'ZAMRP003_' SY-UNAME+0(3) INTO GV_NAMES.

SELECT * FROM TSP01 INTO TABLE T_SPONO

WHERE RQCLIENT = SY-MANDT

AND RQ0NAME = 'LIST1S'

AND RQ2NAME = GV_NAMES

AND RQOWNER = SY-UNAME

AND RQCRETIME GE GV_RQCRETIME.

SORT T_SPONO BY RQIDENT DESCENDING.

CALL FUNCTION 'RS_VARIANT_CONTENTS'

EXPORTING

REPORT = 'ZAMRP003'

VARIANT = T_VARID-VARIANT

TABLES

VALUTAB = IT_VALUE

EXCEPTIONS

VARIANT_NON_EXISTENT = 1

VARIANT_OBSOLETE = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

MESSAGE E000(ZH) WITH 'Error in processing variant'.

ENDIF.

  • Create the email request

PERFORM CREATE_EMAIL .

SORT T_SPONO BY RQIDENT DESCENDING.

READ TABLE T_SPONO INDEX 1.

IF SY-SUBRC NE 0.

MESSAGE E000(ZH) WITH 'Error creating spool'

RAISING CONVERSION_ERROR.

ENDIF.

CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'

EXPORTING

SRC_SPOOLID = T_SPONO-RQIDENT

NO_DIALOG = ' '

IMPORTING

PDF_BYTECOUNT = GD_BYTECOUNT

TABLES

PDF = PDF_LINES

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.

IF SY-SUBRC <> 0.

MESSAGE E000(ZH) WITH 'Error converting spool to PDF'

RAISING CONVERSION_ERROR.

ENDIF.

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

LOOP AT PDF_LINES.

TRANSLATE PDF_LINES USING ' ~'.

CONCATENATE GD_BUFFER PDF_LINES 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.

  • Convert format of PDF data to that required for email

REFRESH IT_BINARY_CONT.

PERFORM CONVERT_134_TO_255_STR TABLES IT_MESS_ATT

IT_BINARY_CONT.

  • Now add it as an attachment

CONCATENATE 'ZAMRP003' '.pdf' INTO L_SUBJECT.

TRY.

CALL METHOD DOCUMENT->ADD_ATTACHMENT

EXPORTING

I_ATTACHMENT_TYPE = 'PDF'

I_ATTACHMENT_SUBJECT = L_SUBJECT

I_ATT_CONTENT_HEX = IT_BINARY_CONT.

  • Add document to send request

CALL METHOD SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).

CATCH CX_BCS INTO BCS_EXCEPTION.

  • Send the message that occurred and then exit

MESSAGE ID BCS_EXCEPTION->MSGID

TYPE BCS_EXCEPTION->MSGTY

NUMBER BCS_EXCEPTION->MSGNO

WITH BCS_EXCEPTION->MSGV1 BCS_EXCEPTION->MSGV2

BCS_EXCEPTION->MSGV3 BCS_EXCEPTION->MSGV4.

EXIT.

ENDTRY.

  • Send the email now

PERFORM SEND_THE_EMAIL CHANGING SEND_REQUEST.

COMMIT WORK.

ENDLOOP.

&----


*& Form convert_134_to_255_str

&----


  • text

----


FORM CONVERT_134_TO_255_STR TABLES PT_134

PT_255.

DATA: L_DSN(100).

L_DSN = 'c:\temp\text_workarea.txt'.

  • Output file in 134 byte blocks

OPEN DATASET L_DSN FOR OUTPUT IN BINARY MODE.

IF SY-SUBRC NE 0.

WRITE 😕 'Error in PDF Conversion'.

STOP.

ENDIF.

LOOP AT PT_134.

TRANSFER PT_134 TO L_DSN.

ENDLOOP.

CLOSE DATASET L_DSN.

  • Read file in 255 byte blocks

OPEN DATASET L_DSN FOR INPUT IN BINARY MODE.

IF SY-SUBRC NE 0.

WRITE 😕 'Error in PDF Conversion'.

STOP.

ENDIF.

READ DATASET L_DSN INTO PT_255.

WHILE SY-SUBRC = 0.

APPEND PT_255.

READ DATASET L_DSN INTO PT_255.

ENDWHILE.

APPEND PT_255.

CLOSE DATASET L_DSN.

  • Clear file

OPEN DATASET L_DSN FOR OUTPUT IN BINARY MODE.

CLOSE DATASET L_DSN.

ENDFORM. " convert_134_to_255_str

&----


*& Form send_the_email

&----


  • text

----


FORM SEND_THE_EMAIL CHANGING P_SEND_REQUEST TYPE REF TO CL_BCS.

DATA: L_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS,

L_SENT_TO_ALL TYPE OS_BOOLEAN,

LT_RECIP_ERROR TYPE BCSY_RE,

LT_ORIG_ERROR TYPE BCSY_ERCP,

LV_STR TYPE SZA5_D0700-SMTP_ADDR.

TRY.

  • Add recipients (e-mail address) ----------------------

LOOP AT IT_VALUE WHERE SELNAME = 'S_USER'.

  • Create recipient

LV_STR = IT_VALUE-LOW.

L_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(

LV_STR ).

  • Add recipient with its respective attributes to send request

SEND_REQUEST->ADD_RECIPIENT( L_RECIPIENT ).

ENDLOOP.

  • Send document ---------------------------------------

CALL METHOD SEND_REQUEST->SEND_WITHOUT_DIALOG(

IMPORTING

E_RECIPIENTS_WITH_ERROR = LT_RECIP_ERROR

E_ORIG_RECS_WITH_ERROR = LT_ORIG_ERROR

E_SENT_TO_ALL = L_SENT_TO_ALL ).

  • For internet addresses, this should always be OK. It is only later

  • that an express message is sent if it fails. Hence no need to do

  • much error processing here.

IF L_SENT_TO_ALL = 'X'.

MESSAGE I217(ZH). "Sent to all recipients.

ENDIF.

CATCH CX_BCS INTO BCS_EXCEPTION.

  • Send the message that occurred and then exit

MESSAGE ID BCS_EXCEPTION->MSGID

TYPE BCS_EXCEPTION->MSGTY

NUMBER BCS_EXCEPTION->MSGNO

WITH BCS_EXCEPTION->MSGV1 BCS_EXCEPTION->MSGV2

BCS_EXCEPTION->MSGV3 BCS_EXCEPTION->MSGV4.

EXIT.

ENDTRY.

ENDFORM. " send_the_email

&----


*& Form create_email

&----


FORM CREATE_EMAIL.

DATA: SUB TYPE SO_OBJ_DES,

WA_TEXT TYPE SOLI,

LT_TEXT TYPE SOLI_TAB.

TRY.

  • -------- create persistent send request ------------------------

SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).

SEND_REQUEST->SET_STATUS_ATTRIBUTES( 'E' ).

SEND_REQUEST->SEND_REQUEST->SET_LINK_TO_OUTBOX( 'X' ).

  • -------- create and set document with attachment ---------------

WA_TEXT = 'Dear Recipient,'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = ' '.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = ' '.

APPEND WA_TEXT TO LT_TEXT.

  • wa_text = 'We apologise for the inaccurate Fixed Asset '.

  • APPEND wa_text TO lt_text.

  • wa_text = 'Reports sent to you and any inconvenience caused by'.

  • APPEND wa_text TO lt_text.

  • wa_text = 'this error.'.

  • APPEND wa_text TO lt_text.

  • wa_text = ' '.

  • APPEND wa_text TO lt_text.

  • wa_text = 'The changing of the report from a manual to '.

  • APPEND wa_text TO lt_text.

  • wa_text = 'automatic process could not be fully tested in a test'

*.

  • APPEND wa_text TO lt_text.

  • wa_text = ' environment and this has led to the problems that'.

  • APPEND wa_text TO lt_text.

  • wa_text = ' you have seen. We have now corrected these errors '.

  • APPEND wa_text TO lt_text.

  • wa_text = 'and the automated process will continue from now on'.

  • APPEND wa_text TO lt_text.

*

  • wa_text = ''.

  • APPEND wa_text TO lt_text.

*

  • wa_text = 'Thank you for your patience during this time.'.

  • APPEND wa_text TO lt_text.

*

  • wa_text = ''.

  • APPEND wa_text TO lt_text.

  • wa_text = ''.

  • APPEND wa_text TO lt_text.

WA_TEXT = 'This is the monthly fixed asset report for your'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = 'cost centre(s) which shows assets'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = 'for the previous calendar month.'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = ' '.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = ' '.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = 'N.B. The asset locations shown on this report'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = 'may be long out-of-date and are offered for'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = 'guidance only.'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = 'Please note that it is your responsibility to'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = 'know: Where each asset is; What it is; and Why'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = 'it is needed?'.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = ' '.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = ' '.

APPEND WA_TEXT TO LT_TEXT.

WA_TEXT = 'For any queries regarding the email or report'.

APPEND WA_TEXT TO LT_TEXT.

*-- Start of changes by SPUSA (001)

  • wa_text = 'please contact abc@com'.

WA_TEXT = 'please contact abc@com'.com'.

*-- End of changes by SPUSA (001)

APPEND WA_TEXT TO LT_TEXT.

SUB = 'Asset Management'.

DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(

I_TYPE = 'RAW'

I_TEXT = LT_TEXT

I_LENGTH = '24'

I_SUBJECT = SUB ).

CATCH CX_BCS INTO BCS_EXCEPTION.

  • Send the message that occurred and then exit

MESSAGE ID BCS_EXCEPTION->MSGID

TYPE BCS_EXCEPTION->MSGTY

NUMBER BCS_EXCEPTION->MSGNO

WITH BCS_EXCEPTION->MSGV1 BCS_EXCEPTION->MSGV2

BCS_EXCEPTION->MSGV3 BCS_EXCEPTION->MSGV4.

EXIT.

ENDTRY.

ENDFORM. " create_email

reward if helpful,

N.Rekha