Application Development 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: 

sending a text mail for different user in

Former Member
0 Kudos

Hi Abapers,

I am trying to use function module SO_NEW_DOCUMENT_ATT_SEND_API1 to send a Text mail like "Purchase order is pending" .But how i can send a text mail .

Here we are not attach any document only the text message we need to different mail id.Or is there any other FM to send text mail.

Please help me if u have any sample code to send a text mail.

Thanks

Nani

1 ACCEPTED SOLUTION

Former Member
0 Kudos

You can use the same func module : use table CONTENTS_TXT in this function module to pass your text.

5 REPLIES 5

Former Member
0 Kudos

You can use the same func module : use table CONTENTS_TXT in this function module to pass your text.

Former Member
0 Kudos

&----


*& Form SUB_FORMAT_MESSAGES

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_FORMAT_MESSAGES .

DATA : L_MSG1 LIKE S_MSG1 OCCURS 0 WITH HEADER LINE.

LOOP AT I_MESSTAB.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = I_MESSTAB-MSGID

LANG = I_MESSTAB-MSGSPRA

NO = I_MESSTAB-MSGNR

V1 = I_MESSTAB-MSGV1

V2 = I_MESSTAB-MSGV2

V3 = I_MESSTAB-MSGV3

V4 = I_MESSTAB-MSGV4

IMPORTING

MSG = L_MSG1

EXCEPTIONS

NOT_FOUND = 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.

MOVE L_MSG1 TO I_MSG1.

APPEND I_MSG1.

MOVE L_MSG1 TO I_MSG2.

APPEND I_MSG2.

CLEAR L_MSG1.

CLEAR I_MSG1.

ENDLOOP.

ENDFORM. " SUB_FORMAT_MESSAGES

&----


*& Form sub_send_messages

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_SEND_MESSAGES .

DATA: BEGIN OF EMAIL_DATA.

INCLUDE STRUCTURE SODOCCHGI1.

DATA: END OF EMAIL_DATA.

DATA: BEGIN OF EMAIL_SEND OCCURS 10.

INCLUDE STRUCTURE SOMLRECI1.

DATA: END OF EMAIL_SEND.

IF NOT I_MSG1[] IS INITIAL.

SELECT * FROM ZMMINT_USR INTO CORRESPONDING FIELDS OF TABLE IT_USR

WHERE WERKS = C_PLANT AND TX_ID = 'ZINC'.

IF SY-SUBRC = 0.

LOOP AT IT_USR.

EMAIL_DATA-OBJ_NAME = 'MESSAGE'.

EMAIL_DATA-OBJ_DESCR = 'PARK CUSTOM INVOICE'.

EMAIL_DATA-OBJ_LANGU = 'E'.

EMAIL_DATA-SENSITIVTY = 'P'.

EMAIL_DATA-OBJ_PRIO = '1'.

EMAIL_DATA-NO_CHANGE = 'X'.

EMAIL_DATA-PRIORITY = '1'.

EMAIL_SEND-RECEIVER = IT_USR-UNAME.

EMAIL_SEND-REC_TYPE = 'B'.

  • EMAIL_SEND-EXPRESS = 'X'.

  • EMAIL_SEND-REC_ID = sy-uname.

APPEND EMAIL_SEND.

ENDLOOP.

CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'

EXPORTING

DOCUMENT_DATA = EMAIL_DATA

DOCUMENT_TYPE = 'RAW'

PUT_IN_OUTBOX = 'X'

TABLES

OBJECT_CONTENT = I_MSG1

RECEIVERS = EMAIL_SEND.

ENDIF.

ENDIF.

ENDFORM. " sub_send_messages

Former Member
0 Kudos

Check if this helps.

REPORT z_send_mail .

  • Data Declaration

PARAMETER p_rec TYPE so_recname OBLIGATORY.

DATA: wa_docdata TYPE sodocchgi1,

wa_objpack TYPE sopcklsti1 ,

it_objpack TYPE TABLE OF sopcklsti1,

wa_objtxt TYPE solisti1,

it_objtxt TYPE TABLE OF solisti1,

wa_reclist TYPE somlreci1,

it_reclist TYPE TABLE OF somlreci1.

DATA: tab_lines TYPE i.

PERFORM fill_text.

PERFORM fill_object_details.

  • create receiver list

PERFORM create_receivers_list.

*send mail

PERFORM send_mail.

WRITE: / 'End of Program'.

&----


*& Form fill_text

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_text .

wa_objtxt =Test Program.

APPEND wa_objtxt TO it_objtxt.

wa_objtxt = This code is formatted using HTML.

APPEND wa_objtxt TO it_objtxt.

wa_objtxt = 'Have a nice day.'.

APPEND wa_objtxt TO it_objtxt.

ENDFORM. " fill_text

&----


*& Form fill_object_details

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_object_details .

DESCRIBE TABLE it_objtxt LINES tab_lines.

READ TABLE it_objtxt INTO wa_objtxt INDEX tab_lines.

wa_docdata-obj_name = 'TEST_MAIL'.

wa_docdata-obj_descr = 'Test for Mail'.

wa_docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( wa_objtxt ).

CLEAR wa_objpack-transf_bin.

wa_objpack-head_start = 1.

wa_objpack-head_num = 0.

wa_objpack-body_start = 1.

wa_objpack-body_num = tab_lines.

wa_objpack-doc_type = 'HTM'.

APPEND wa_objpack TO it_objpack.

ENDFORM. " fill_object_details

&----


*& Form create_receivers_list

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM create_receivers_list .

wa_reclist-receiver = p_rec.

wa_reclist-rec_type = 'U'.

APPEND wa_reclist TO it_reclist.

ENDFORM. " create_receivers_list

&----


*& Form send_mail

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM send_mail .

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'

EXPORTING

document_data = wa_docdata

  • PUT_IN_OUTBOX = ' '

sender_address = 'abcd@yahoo.com'

sender_address_type = 'INT'

commit_work = 'X'

  • IMPORTING

  • SENT_TO_ALL =

  • NEW_OBJECT_ID =

  • SENDER_ID =

TABLES

packing_list = it_objpack

  • OBJECT_HEADER =

  • CONTENTS_BIN =

contents_txt = it_objtxt

  • CONTENTS_HEX =

  • OBJECT_PARA =

  • OBJECT_PARB =

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 'SO' TYPE 'S' NUMBER '023'

WITH wa_docdata-obj_name.

ELSE.

WRITE : / 'Mail sent to', p_rec.

ENDIF.

ENDFORM. " send_mail

Regards,

Devendra

Former Member
0 Kudos

Hi

You can use the fun module

UWSP_SEND_MAIL_TO_WEB

see the sample program using both he fun modules for sending some mails

REPORT zm_reservation_alert

NO STANDARD PAGE HEADING

MESSAGE-ID zm_msg.

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

  • D A T A B A S E T A B L E S D E C L A R A T I O N

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

  • T Y P E S D E C L A R A T I O N S

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

  • Reservations Main Structure

TYPES: BEGIN OF s_res,

rsnum TYPE rsnum, " Reservation No

rspos TYPE rspos, " Item No

usnam TYPE usnam, " User Name

bwart TYPE bwart, " Movement Type

aufnr TYPE aufnr, " Order Number

rsart TYPE rsart, " Record Type

bdart TYPE bdart, " Reservation Type

matnr TYPE matnr, " Material No

bdter TYPE bdter, " Req Date

menge TYPE menge_d, " Quantity

kostl TYPE kostl, " Cost Center

usrid TYPE sysid, " User ID

END OF s_res.

  • Output Main Structure

TYPES: BEGIN OF s_rep,

usnam TYPE usnam, " User Name

rsnum TYPE rsnum, " Reservation No

rspos TYPE rspos, " Item No

matnr TYPE matnr, " Material No

bdter TYPE bdter, " Req Date

menge TYPE menge_d, " Quantity

kostl TYPE kostl, " Cost Center

aufnr TYPE aufnr, " Order Number

END OF s_rep.

  • User Dept Details

TYPES: BEGIN OF s_dept,

pernr TYPE persno, " Personal No

usrid TYPE sysid, " User ID

orgeh TYPE orgeh, " Orgn Unit

orgtx TYPE orgtx, " Dept Name

END OF s_dept.

  • For Send Mail Purpose

DATA : i_doc_data LIKE sodocchgi1.

DATA : BEGIN OF i_pack_list OCCURS 0.

INCLUDE STRUCTURE sopcklsti1.

DATA : END OF i_pack_list.

DATA : BEGIN OF i_receivers OCCURS 0.

INCLUDE STRUCTURE somlreci1.

DATA : END OF i_receivers.

DATA : BEGIN OF i_contents OCCURS 0.

INCLUDE STRUCTURE solisti1.

DATA : END OF i_contents.

DATA : BEGIN OF i_header OCCURS 0.

INCLUDE STRUCTURE solisti1.

DATA : END OF i_header.

DATA : BEGIN OF i_att OCCURS 0.

INCLUDE STRUCTURE solisti1.

DATA : END OF i_att.

  • Internal table for bdcdata

DATA : it_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.

  • Internal table to handle messages

DATA : it_messages LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

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

  • D A T A D E C L A R A T I O N S

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

DATA: gv_lines TYPE sy-index, " Total Lines int Table

gv_days TYPE i, " Difference Days

gv_date TYPE sy-datum, " Date

gv_date1 TYPE sy-datum, " Date

gv_date2 TYPE sy-datum, " Date

gv_text(85), " Text Field

gv_mesg(70), " Error Messages

gv_bdc, " BDC Flag

gv_flag TYPE i, " Flag

gv_ernam TYPE ernam. " User ID

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

  • C O N S T A N T S D E C L A R A T I O N S

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

CONSTANTS: c_x VALUE 'X', " Flag

c_endda TYPE endda VALUE '99991231'. " Date

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

  • I N T E R N A L T A B L E S D E C L A R A T I O N S

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

DATA: i_res TYPE STANDARD TABLE OF s_res WITH HEADER LINE, " Reservns

i_dept TYPE STANDARD TABLE OF s_dept WITH HEADER LINE, " Dept

i_rep TYPE STANDARD TABLE OF s_rep WITH HEADER LINE. " Output

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

  • S T A R T - O F - S E L E C T I O N *

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

START-OF-SELECTION.

  • Fetch main data

PERFORM fetch_data.

  • Process data

PERFORM process_data.

&----


*& Form fetch_data

&----


  • Fetching the Reservations related data from Database Tables

----


FORM fetch_data .

CLEAR: gv_date, gv_date1, gv_date2.

gv_date = sy-datum.

gv_date1 = sy-datum - 10.

gv_date2 = sy-datum + 10.

CLEAR i_res.

REFRESH i_res.

SELECT a~rsnum " Reservation No.

b~rspos " Reservation Item

a~usnam " User Name

a~bwart " Movement Type

a~aufnr " Order Number

b~rsart " Record Type

b~bdart " Reservation Type

b~matnr " Material No

b~bdter " Req Date

INTO TABLE i_res

FROM rkpf AS a JOIN resb AS b

ON arsnum = brsnum

WHERE ( b~bdter BETWEEN gv_date1 AND gv_date2 ) AND

b~xloek EQ ' '.

SORT i_res BY rsnum rspos.

DELETE ADJACENT DUPLICATES FROM i_res COMPARING matnr.

  • Add userid into the i_usr int table

LOOP AT i_res.

i_res-usrid = i_res-usnam.

MODIFY i_res INDEX sy-tabix.

ENDLOOP.

IF NOT i_res[] IS INITIAL.

  • Get the User Dept Name

CLEAR i_dept.

REFRESH i_dept.

SELECT a~pernr " Personal No

a~usrid " User ID

b~orgeh " Orgn Unit

c~orgtx " Dept Name

INTO TABLE i_dept

FROM pa0105 AS a JOIN pa0001 AS b

ON apernr = bpernr JOIN t527x AS c

ON borgeh = corgeh

FOR ALL ENTRIES IN i_res

WHERE a~usrid = i_res-usrid AND

a~endda EQ c_endda AND

b~endda EQ c_endda.

ENDIF.

SORT i_dept BY pernr.

DELETE ADJACENT DUPLICATES FROM i_dept COMPARING pernr.

  • Move the Creator of Reservation to a diff table

LOOP AT i_res.

MOVE-CORRESPONDING i_res TO i_rep.

APPEND i_rep.

CLEAR i_rep.

ENDLOOP.

SORT i_rep BY usnam rsnum rspos.

ENDFORM. " Fetch_Data

&----


*& Form process_data

&----


  • Process the Reservations related data for Expiry Date

----


FORM process_data .

DATA: lv_date1 LIKE sy-datum,

lv_date2 LIKE sy-datum,

lv_date3(10),

lv_menge(13),

lv_tabix LIKE sy-tabix.

LOOP AT i_rep.

CLEAR: gv_days, gv_text, lv_date1, lv_date2,lv_date3.

lv_tabix = sy-tabix.

AT NEW usnam.

  • Populate the Contents Table

CLEAR i_att.

REFRESH i_att.

i_att = 'Reservations Reminder'(014).

APPEND i_att.

i_att = '----


'.

APPEND i_att.

i_att-line = ' '.

APPEND i_att.

READ TABLE i_dept WITH KEY usrid = i_rep-usnam.

CONCATENATE 'Name:'(003) i_rep-usnam 'Dept:'(015) i_dept-orgtx

INTO i_att-line SEPARATED BY space.

APPEND i_att.

i_att-line = ' '.

APPEND i_att.

i_att = 'Please find the List of expiring Reservations'(004).

APPEND i_att.

i_att-line = ' '.

APPEND i_att.

CONCATENATE '--


' '
' '
--


'

'--


' '--


' INTO

i_att-line SEPARATED BY space.

APPEND i_att.

CONCATENATE 'Reservation #'(006) 'Material #'(007) ' Quantity'(002)

'Due Date'(008) 'Work Center/CC'(005) INTO

i_att-line SEPARATED BY space.

APPEND i_att.

CONCATENATE '--


' '
' '
--


'

'--


' '--


' INTO

i_att-line SEPARATED BY space.

APPEND i_att.

i_att-line = ' '.

APPEND i_att.

ENDAT.

gv_days = i_rep-bdter - gv_date.

lv_date1 = i_rep-bdter + 5.

lv_date2 = i_rep-bdter + 10.

MOVE i_rep-menge TO lv_menge.

WRITE i_rep-bdter TO lv_date3.

IF gv_days = 10.

IF i_rep-aufnr <> space.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-aufnr 'is due for 10 days. Please collect'(009)

INTO gv_text SEPARATED BY space.

ELSE.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-kostl 'is due for 10 days. Please collect'(009)

INTO gv_text SEPARATED BY space.

ENDIF.

i_att-line = gv_text.

APPEND i_att.

CLEAR i_att.

CLEAR gv_text.

ENDIF.

IF gv_days = 5.

IF i_rep-aufnr <> space.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-aufnr 'is due for 5 days. Please collect'(010)

INTO gv_text SEPARATED BY space.

ELSE.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-kostl 'is due for 5 days. Please collect'(010)

INTO gv_text SEPARATED BY space.

ENDIF.

i_att-line = gv_text.

APPEND i_att.

CLEAR i_att.

CLEAR gv_text.

ENDIF.

IF gv_date = lv_date1.

IF i_rep-aufnr <> space.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-aufnr 'is getting cancelled on'(011) lv_date2

INTO gv_text SEPARATED BY space.

ELSE.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-kostl 'is getting cancelled on'(011) lv_date2

INTO gv_text SEPARATED BY space.

ENDIF.

i_att-line = gv_text.

APPEND i_att.

CLEAR i_att.

CLEAR gv_text.

ENDIF.

IF gv_date = lv_date2.

IF i_rep-aufnr <> space.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-aufnr 'is being cancelled'(012)

INTO gv_text SEPARATED BY space.

ELSE.

CONCATENATE i_rep-rsnum i_rep-matnr lv_menge lv_date3

i_rep-kostl 'is being cancelled'(012)

INTO gv_text SEPARATED BY space.

ENDIF.

i_att-line = gv_text.

APPEND i_att.

CLEAR i_att.

CLEAR gv_text.

  • Mark the Reservation Item 'DELETED' using BDC.

  • UPDATE resb SET xloek = c_x.

PERFORM delete_item_resb.

ENDIF.

AT END OF usnam.

IF ( gv_days = 10 OR gv_days = 5 OR gv_date = lv_date1 OR

gv_date = lv_date2 ).

  • Read the User who creates the Reservn and send a mail alert to him

CLEAR : i_receivers,gv_ernam.

REFRESH: i_receivers.

READ TABLE i_rep INDEX lv_tabix.

gv_ernam = i_rep-usnam.

IF gv_ernam <> space.

  • Send mail Alert to PR Creator(SAP inbox)

PERFORM send_alert_data.

  • Send Mail to External Mail ID of the SAP USER

PERFORM send_mail_external.

ENDIF.

ENDIF.

ENDAT.

ENDLOOP.

ENDFORM. " Process_data

&----


*& Form delete_item_resb

&----


  • Set the Deletion Indicator for the Res. Item in RESB

----


FORM delete_item_resb.

gv_bdc = 'N'.

  • Perform to fill it_bdcdata.

PERFORM fill_it_bdcdata.

  • Call the Transaction MB22

CALL TRANSACTION 'MB22' USING it_bdcdata MODE 'A' UPDATE 'S'

MESSAGES INTO it_messages.

IF sy-subrc <> 0.

gv_flag = 1.

  • If error occurs in transaction mode run bdc session for that data

PERFORM bdc_process.

ENDIF.

  • Handles error messages

PERFORM error_messages.

CLEAR : it_bdcdata, it_messages.

REFRESH : it_bdcdata, it_messages.

IF gv_bdc = 'O'.

  • close bdc if it is open

PERFORM close_bdc.

ENDIF.

ENDFORM. "delete_item_resb

&----


*& Form FILL_IT_BDCDATA

&----


  • Filling Bdcdata structure with data

----


FORM fill_it_bdcdata.

PERFORM bdc_dynpro USING 'SAPMM07R' '0560'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM07M-RSPOS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RM07M-RSNUM'

i_rep-rsnum.

PERFORM bdc_field USING 'RM07M-RSPOS'

i_rep-rspos.

PERFORM bdc_dynpro USING 'SAPMM07R' '0510'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RESB-XLOEK'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RESB-XLOEK'

c_x.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR'

'COBL-KOSTL'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

PERFORM bdc_dynpro USING 'SAPMM07R' '0510'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RESB-ERFMG'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR'

'COBL-KOSTL'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

ENDFORM. " FILL_IT_BDCDATA

&----


*& Form BDC_DYNPRO

&----


  • Filling the it_bdcdata table with program name & screen number

----


FORM bdc_dynpro USING program LIKE bdcdata-program

dynpro LIKE bdcdata-dynpro.

it_bdcdata-program = program.

it_bdcdata-dynpro = dynpro.

it_bdcdata-dynbegin = 'X'.

APPEND it_bdcdata.

CLEAR it_bdcdata.

ENDFORM. " BDC_DYNPRO

&----


*& Form BDC_FIELD

&----


  • Filling it_bdcdata with field name and field value

----


FORM bdc_field USING fnam LIKE bdcdata-fnam

fval.

it_bdcdata-fnam = fnam.

it_bdcdata-fval = fval.

APPEND it_bdcdata.

CLEAR it_bdcdata.

ENDFORM. " BDC_FIELD

&----


*& Form ERROR_MESSAGES

&----


  • Displaying error messages

----


FORM error_messages.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = sy-msgid

lang = sy-langu

IMPORTING

msg = gv_mesg

EXCEPTIONS

not_found = 1

OTHERS = 2.

LOOP AT it_messages WHERE msgtyp = 'E'.

WRITE : / 'Message :'(001) ,gv_mesg.

CLEAR it_messages.

ENDLOOP.

ENDFORM. " ERROR_MESSAGES

&----


*& Form BDC_PROCESS

&----


  • Open bdc session if call transaction fails

----


FORM bdc_process.

IF gv_bdc = 'N'.

  • open bdc session

PERFORM open_bdc.

gv_bdc = 'O'.

ENDIF.

IF gv_bdc = 'O'.

  • insert data into bdc session

PERFORM insert_bdc.

ENDIF.

ENDFORM. " BDC_PROCESS

&----


*& Form OPEN_BDC

&----


  • Calling function module to open bdc session

----


FORM open_bdc.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = 'ZMM'

keep = 'X'

user = sy-uname

EXCEPTIONS

client_invalid = 1

destination_invalid = 2

group_invalid = 3

group_is_locked = 4

holddate_invalid = 5

internal_error = 6

queue_error = 7

running = 8

system_lock_error = 9

user_invalid = 10

OTHERS = 11.

ENDFORM. " OPEN_BDC

&----


*& Form INSERT_BDC

&----


  • Insert it_bdcdata into bdc by calling function module bdc_insert

----


FORM insert_bdc.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = 'MB22'

TABLES

dynprotab = it_bdcdata

EXCEPTIONS

internal_error = 1

not_open = 2

queue_error = 3

tcode_invalid = 4

printing_invalid = 5

posting_invalid = 6

OTHERS = 7.

ENDFORM. " INSERT_BDC

&----


*& Form CLOSE_BDC

&----


  • Closing bdc session

----


FORM close_bdc.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

not_open = 1

queue_error = 2

OTHERS = 3.

ENDFORM. " CLOSE_BDC

&----


*& Form send_alert_data

&----


  • Send Alert for the Expired Contract

----


FORM send_alert_data .

CLEAR: gv_lines,i_receivers, i_header, i_contents,i_doc_data.

REFRESH : i_receivers,i_header,i_contents.

DESCRIBE TABLE i_att LINES gv_lines.

i_receivers-receiver = gv_ernam.

  • i_receivers-receiver = 'SSHEIK'.

i_receivers-rec_type = 'B'.

  • i_receivers-rec_date = sy-datum.

  • i_receivers-express = 'X'.

  • i_receivers-com_type = 'INT'.

  • i_receivers-notif_del = 'X'.

APPEND i_receivers.

i_doc_data-obj_name = 'SAPoffice'(013).

i_doc_data-obj_descr = 'Reservations Reminder'(014).

i_doc_data-obj_langu = 'E'.

i_doc_data-no_change = c_x.

i_doc_data-obj_prio = 1.

i_doc_data-priority = 1.

i_doc_data-doc_size = ( gv_lines - 1 ) * 255 + 135.

i_pack_list-transf_bin = c_x.

i_pack_list-head_start = '1'.

i_pack_list-head_num = '1'.

i_pack_list-body_start = '1'.

i_pack_list-body_num = gv_lines.

i_pack_list-doc_type = 'DOC'.

i_pack_list-obj_name = 'SAPoffice'(013).

i_pack_list-obj_descr = 'Reservations Reminder'(014).

i_pack_list-obj_langu = 'E'.

i_pack_list-doc_size = ( gv_lines - 1 ) * 255 + 135.

APPEND i_pack_list.

  • i_header-line = 'Header'. APPEND i_header.

  • Data for contents

i_contents-line = 'Please find the Reservations Due List'(016).

APPEND i_contents.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

document_data = i_doc_data

  • PUT_IN_OUTBOX = 'X'

  • IMPORTING

  • SENT_TO_ALL =

  • NEW_OBJECT_ID =

TABLES

packing_list = i_pack_list

object_header = i_header

contents_bin = i_att

contents_txt = i_contents

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

IF sy-subrc = 0.

MESSAGE i000 WITH 'Mail Sucessfully sent'(017).

ELSE.

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

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

ENDIF.

ENDFORM. " send_alert_data

&----


*& Form send_mail_external

&----


  • Send mail to External MAIL ID of the PR Creator

----


FORM send_mail_external.

DATA : lv_str(24), lv_str1(40),

lv_pernr LIKE adr6-persnumber,

lv_adrnr LIKE adr6-addrnumber,

lv_usrid LIKE pa0105-usrid,

lv_mail LIKE adr6-smtp_addr,

lv_sendor TYPE syuname,

lv_receiver TYPE string,

lv_header TYPE string,

lv_body TYPE string.

CLEAR: lv_pernr, lv_usrid, lv_adrnr,

lv_mail, lv_sendor, lv_receiver,

lv_header, lv_body .

lv_usrid = gv_ernam.

SELECT SINGLE persnumber addrnumber FROM usr21

INTO (lv_pernr,lv_adrnr)

WHERE bname = lv_usrid.

IF sy-subrc = 0.

SELECT SINGLE smtp_addr INTO lv_mail FROM adr6

WHERE addrnumber = lv_adrnr AND

persnumber = lv_pernr.

IF sy-subrc <> 0.

CONCATENATE lv_usrid '@anc.com' INTO lv_mail.

lv_receiver = lv_mail.

ELSE.

lv_receiver = lv_mail.

ENDIF.

  • lv_receiver = 'avangala@anc.com'.

lv_sendor = 'JALKHATAM'.

lv_header = 'Reservations Reminder'(014).

lv_str = 'Pls check your SAP Inbox'(019).

lv_str1 = 'for the status of Reservations Due List'(020).

CONCATENATE lv_str lv_str1 INTO lv_body

SEPARATED BY space.

  • Call Function Module To send mail

CALL FUNCTION 'UWSP_SEND_MAIL_TO_WEB'

EXPORTING

id_header = lv_header

id_body = lv_body

id_receiver = lv_receiver

id_sender = lv_sendor

  • ID_HTML_MAIL =

id_commit_work = 'X'

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.

ENDIF.

ENDFORM. " send_mail_external

Reward points for useful Answers

Regards

Anji

Former Member
0 Kudos

HI.

refer this code.

REPORT ZTUNIXMAIL.

*

DATA : TO_ADDRESS LIKE SY_LISEL,

FROM_ADDRESS LIKE SY-LISEL,

SUBJECT LIKE SY-LISEL,

ATTACHMENT_NAME LIKE SY_LISEL,

DATA_FILE_PATH LIKE SXPGCOLIST-PARAMETERS,

BODY_FILE_PATH LIKE SXPGCOLIST-PARAMETERS.

DATA : BEGIN OF INT_EMAIL_ATTACH OCCURS 0,

TXTLINE CHAR(255),

END OF INT_EMAIL_ATTACH.

DATA : BEGIN OF INT_EMAIL_BODY OCCURS 0,

TXTLINE CHAR(255),

END OF INT_EMAIL_BODY.

CLEAR : INT_EXEC_PROTOCOL,INT_EMAIL_ATTACH,INT_EMAIL_BODY.

REFRESH : INT_EXEC_PROTOCOL,INT_EMAIL_ATTACH,INT_EMAIL_BODY.

*

INT_EMAIL_ATTACH-TXTLINE = 'Put all attachment text in this table'.

APPEND INT_EMAIL_ATTACH. CLEAR INT_EMAIL_ATTACH.

INT_EMAIL_BODY-TXTLINE = 'Put all attachment text in this table'.

APPEND INT_EMAIL_BODY. CLEAR INT_EMAIL_BODY.

*

CONCATENATE TO_ADDRESS

FROM_ADDRESS

SUBJECT

BODY_FILE_PATH

DATA_FILE_PATH

ATTACHMENT_NAME

INTO V_PARAMETERS.

*

IF NOT INT_EMAIL_ATTACH[] IS INITIAL.

OPEN DATASET DATA_FILE_PATH FOR OUTPUT IN TEXT MODE.

LOOP AT INT_EMAIL_ATTACH.

TRANSFER INT_EMAIL_ATTACH-TXTLINE TO DATA_FILE_PATH.

ENDLOOP.

CLOSE DATASET DATA_FILE_PATH.

ENDIF.

*

IF NOT INT_EMAIL_BODY[] IS INITIAL.

OPEN DATASET BODY_FILE_PATH FOR OUTPUT IN TEXT MODE.

LOOP AT INT_EMAIL_BODY.

TRANSFER INT_EMAIL_BODY-TXTLINE TO BODY_FILE_PATH.

ENDLOOP.

CLOSE DATASET BODY_FILE_PATH.

ENDIF.

*

CALL FUNCTION 'SXPG_CALL_SYSTEM'

EXPORTING

COMMANDNAME = 'Z_EMAIL' - Command calling unix script

PARAMETERS = V_PARAMETERS

  • importing

  • status = ''

TABLES

EXEC_PROTOCOL = INT_EXEC_PROTOCOL

EXCEPTIONS

NO_PERMISSION = 1

COMMAND_NOT_FOUND = 2

PARAMETERS_TOO_LONG = 3

SECURITY_RISK = 4

WRONG_CHECK_CALL_INTERFACE = 5

PROGRAM_START_ERROR = 6

PROGRAM_TERMINATION_ERROR = 7

X_ERROR = 8

PARAMETER_EXPECTED = 9

TOO_MANY_PARAMETERS = 10

ILLEGAL_COMMAND = 11

OTHERS = 12.

reward

regards.

Jay