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: 

FM to SEND an email to SAP USER

Former Member
0 Kudos

Hi Gurus,

Pls let me know the FM if any to send a email to SAP USER (eg. DANYGG) so that it will go to SAP INBOX of the user in T.code So01.

Promise to reward.

Regards

Mac

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

This should help.

&----


*& Report Z_SEND_MAIL *

*& *

&----


*& *

*& *

&----


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

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

wa_docdata-obj_descr = 'Test for HTML Code'.

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

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 = 'USER123'

sender_address_type = 'B'

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

3 REPLIES 3

Former Member
0 Kudos

Try SO_NEW_DOCUMENT_SEND_API1.

Former Member
0 Kudos

Hi,

This should help.

&----


*& Report Z_SEND_MAIL *

*& *

&----


*& *

*& *

&----


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

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

wa_docdata-obj_descr = 'Test for HTML Code'.

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

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 = 'USER123'

sender_address_type = 'B'

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

Former Member
0 Kudos

hi,

check with this code, and reward if u find useful..

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

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

    • Table Declarations

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

TABLES: SOLI.

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

    • Data Declarations

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

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS: SAPID RADIOBUTTON GROUP ADDR,

EMAIL_ID RADIOBUTTON GROUP ADDR.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

SELECT-OPTIONS: ID FOR SOLI-LINE NO INTERVALS.

SELECT-OPTIONS: CC FOR SOLI-LINE NO INTERVALS.

SELECT-OPTIONS: BCC FOR SOLI-LINE NO INTERVALS.

*PARAMETERS: SENDER LIKE SOUD-USRNAM.

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-009.

PARAMETERS: SUB_LINE(60) TYPE C.

SELECTION-SCREEN END OF BLOCK B3.

SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-008.

SELECT-OPTIONS: TEXT1 FOR SOLI-LINE NO INTERVALS.

SELECTION-SCREEN END OF BLOCK B4.

SELECTION-SCREEN BEGIN OF BLOCK B5 WITH FRAME TITLE TEXT-009.

SELECTION-SCREEN BEGIN OF LINE.

parameters: P_ATTACH as checkbox.

selection-screen comment 3(30) text-010.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B5.

DATA: MAIL_CONTENT LIKE SOLI OCCURS 0 WITH HEADER LINE,

SUBJECT_LINE LIKE SOOD1-OBJDES.

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

    • Start of program processing

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

START-OF-SELECTION.

    • Get the Body of the Message from the selection screen or from

    • calling program

LOOP AT TEXT1.

MOVE TEXT1-LOW TO MAIL_CONTENT-LINE.

APPEND MAIL_CONTENT.

ENDLOOP.

    • Subject of the Message

MOVE SUB_LINE TO SUBJECT_LINE.

    • call a routine to send the workflow message

PERFORM SEND_EMAIL

TABLES MAIL_CONTENT

USING SUBJECT_LINE.

&----


*& Form SEND_EMAIL

&----


  • Send Workflow message

----


FORM SEND_EMAIL TABLES OBJCONT STRUCTURE MAIL_CONTENT

USING TITLE LIKE SOOD-OBJDES.

DATA: RECEIVERS LIKE SOOS1 OCCURS 0 WITH HEADER LINE,

TSOOD1 LIKE SOOD1,

PACKING_LIST LIKE SOXPL OCCURS 0 WITH HEADER LINE,

OBJCONT1 LIKE MAIL_CONTENT OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF AT_HEADER OCCURS 1.

INCLUDE STRUCTURE SOLI.

DATA: END OF AT_HEADER.

CLEAR: TSOOD1,

RECEIVERS.

REFRESH RECEIVERS.

MOVE: SY-LANGU TO TSOOD1-OBJLA,

'Email Notice' TO TSOOD1-OBJNAM,

'C' TO TSOOD1-OBJSNS,

TITLE TO TSOOD1-OBJDES.

  • 'SCHIAVONIR' TO TSOOD1-OWNNAM.

    • loop through each ID and move them to recipient table

LOOP AT ID.

TRANSLATE ID-LOW TO UPPER CASE.

IF SAPID = 'X'.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

' ' TO RECEIVERS-RECESC,

ID-LOW TO RECEIVERS-RECNAM,

'X' TO RECEIVERS-SNDEX.

ELSE.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

'U' TO RECEIVERS-RECESC,

'U-' TO RECEIVERS-RECNAM,

ID-LOW TO RECEIVERS-RECEXTNAM.

ENDIF.

APPEND RECEIVERS.

CLEAR RECEIVERS.

ENDLOOP.

    • loop through each CC and move them to recipient table

LOOP AT CC.

TRANSLATE CC-LOW TO UPPER CASE.

IF SAPID = 'X'.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

' ' TO RECEIVERS-RECESC,

CC-LOW TO RECEIVERS-RECNAM,

'X' TO RECEIVERS-SNDEX,

'X' TO RECEIVERS-SNDCP.

ELSE.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

'U' TO RECEIVERS-RECESC,

'U-' TO RECEIVERS-RECNAM,

CC-LOW TO RECEIVERS-RECEXTNAM,

'X' TO RECEIVERS-SNDCP.

ENDIF.

APPEND RECEIVERS.

CLEAR RECEIVERS.

ENDLOOP.

    • loop through each BCC and move them to recipient table

LOOP AT BCC.

TRANSLATE BCC-LOW TO UPPER CASE.

IF SAPID = 'X'.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

' ' TO RECEIVERS-RECESC,

BCC-LOW TO RECEIVERS-RECNAM,

'X' TO RECEIVERS-SNDEX,

'X' TO RECEIVERS-SNDBC.

ELSE.

MOVE: SY-DATUM TO RECEIVERS-RCDAT,

SY-UZEIT TO RECEIVERS-RCTIM,

'U' TO RECEIVERS-RECESC,

'U-' TO RECEIVERS-RECNAM,

BCC-LOW TO RECEIVERS-RECEXTNAM,

'X' TO RECEIVERS-SNDBC.

ENDIF.

APPEND RECEIVERS.

CLEAR RECEIVERS.

ENDLOOP.

AT_HEADER = SY-DATUM.

APPEND AT_HEADER.

AT_HEADER = SY-UZEIT.

APPEND AT_HEADER.

  • IF SENDER EQ SPACE.

  • SENDER = SY-UNAME.

  • ENDIF.

IF P_ATTACH EQ 'X'.

PACKING_LIST-HEAD_START = 1.

PACKING_LIST-HEAD_NUM = 2.

PACKING_LIST-BODY_START = 1.

PACKING_LIST-BODY_NUM = 9999.

PACKING_LIST-FILE_EXT = 'TXT'.

APPEND PACKING_LIST.

CLEAR PACKING_LIST.

APPEND LINES OF OBJCONT TO OBJCONT1.

REFRESH OBJCONT.

ENDIF.

CALL FUNCTION 'SO_OBJECT_SEND'

EXPORTING

OBJECT_HD_CHANGE = TSOOD1

OBJECT_TYPE = 'RAW'

TABLES

OBJCONT = OBJCONT

RECEIVERS = RECEIVERS

ATT_HEAD = AT_HEADER

ATT_CONT = OBJCONT1

PACKING_LIST = PACKING_LIST

EXCEPTIONS

ACTIVE_USER_NOT_EXIST = 1

COMMUNICATION_FAILURE = 2

COMPONENT_NOT_AVAILABLE = 3

FOLDER_NOT_EXIST = 4

FOLDER_NO_AUTHORIZATION = 5

FORWARDER_NOT_EXIST = 6

NOTE_NOT_EXIST = 7

OBJECT_NOT_EXIST = 8

OBJECT_NOT_SENT = 9

OBJECT_NO_AUTHORIZATION = 10

OBJECT_TYPE_NOT_EXIST = 11

OPERATION_NO_AUTHORIZATION = 12

OWNER_NOT_EXIST = 13

PARAMETER_ERROR = 14

SUBSTITUTE_NOT_ACTIVE = 15

SUBSTITUTE_NOT_DEFINED = 16

SYSTEM_FAILURE = 17

TOO_MUCH_RECEIVERS = 18

USER_NOT_EXIST = 19

X_ERROR = 20

OTHERS = 21.

ENDFORM. " SEND_EMAIL

regards

dinesh