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 : SO_OBJECT_SEND not working

Former Member
0 Kudos

Hi i am modifing a standard sap script wherein sap has used FM SO_OBJECT_SEND to send the mails.

I am getting the subrc = 0 but mail is not going.

I have used following parameters

X_RECEIVERS-RECESC = 'U'.

X_RECEIVERS-SNDART = 'MAIL'

Can any one suggest?

10 REPLIES 10

Former Member
0 Kudos

Hi,

Check this code it will work.

DATA: T_DOC TYPE TYPE_T_SODOCCHGI1, "#EC NEEDED

T_CONTENT TYPE TYPE_T_SOLISTI1,

T_PACK TYPE TYPE_T_SOPCKLSTI1,

T_REC TYPE TYPE_T_SOMLRECI1.

CONSTANTS :C_SEN TYPE SO_OBJ_SNS VALUE 'F',

C_REC TYPE SO_ESCAPE VALUE 'U',

C_TYPE TYPE SO_OBJ_TP VALUE 'RAW',

C_COMTYPE TYPE SO_RECNAME VALUE 'INT'.

DATA: S_DOC TYPE SODOCCHGI1,

S_REC TYPE SOMLRECI1,

S_CONTENT TYPE SOLISTI1,

S_PACK TYPE SOPCKLSTI1,

S_FILE TYPE STRING.

DATA : V_STRING TYPE STRING.

IF RB_PRES = 'X'.

MOVE RP_PERFILE TO S_FILE.

ELSE.

MOVE RP_AERFILE TO S_FILE.

ENDIF.

*Get the Object name and Subject Description of the Mail

  • Fill the document data and get size of attachment

CLEAR S_DOC.

S_DOC-OBJ_LANGU = SY-LANGU.

S_DOC-OBJ_NAME = 'PTS_INT306'(022).

CONCATENATE SY-SYSID'List of error rec.'(021)

INTO S_DOC-OBJ_DESCR SEPARATED BY SPACE.

S_DOC-SENSITIVTY = C_SEN.

APPEND S_DOC TO T_DOC.

CLEAR S_DOC.

*Build the Receivers List

S_REC-REC_TYPE = C_REC.

S_REC-RECEIVER = RP_DLIST.

S_REC-COM_TYPE = C_COMTYPE.

APPEND S_REC TO T_REC.

CLEAR S_REC.

*Build Contents of the mail (Body)

CONCATENATE 'File'(019) S_FILE 'downloaded with error records:'(018)

INTO V_STRING.

S_CONTENT-LINE = V_STRING.

APPEND S_CONTENT TO T_CONTENT.

CLEAR S_CONTENT.

S_CONTENT-LINE = V_ERROR_REC.

APPEND S_CONTENT TO T_CONTENT.

CLEAR S_CONTENT.

*Send contents as BODY

S_PACK-HEAD_START = 1.

S_PACK-HEAD_NUM = 1.

S_PACK-BODY_START = 1.

DESCRIBE TABLE T_CONTENT LINES S_PACK-BODY_NUM.

S_PACK-DOC_SIZE = S_PACK-BODY_NUM * 255.

S_PACK-DOC_TYPE = C_TYPE.

APPEND S_PACK TO T_PACK.

CLEAR S_PACK.

*FM for sending mail to the External E-Mail Address

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = S_DOC

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

TABLES

PACKING_LIST = T_PACK

CONTENTS_TXT = T_CONTENT

RECEIVERS = T_REC

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 NE 0.

WRITE: /'Email Failed .'(020).

ELSE.

SKIP 2.

WRITE : 'Error List Send to'(026),RP_DLIST.

ENDIF.

Reward points if it works.

Regards,

Suresh

former_member188685
Active Contributor
0 Kudos

Hi,

is sap connect is configured if not ask your basis to do that, for config check this link..

http://www.sapgenie.com/interfaces/sapconnect.htm

if already configured then..

and also check that might be in queue , go to transaction SCOT and try to send it manually via Start Send Process (Ctrl+F7).

Regards

vijay

former_member188685
Active Contributor
0 Kudos

Hi osk,

check this example also..

http://www.sap-img.com/fu016.htm

Regards

vijay

Former Member
0 Kudos

chk this report

RSCONN04

vinod_gunaware2
Active Contributor
0 Kudos

Check <b>SCOT</b> transaction.

If there is pennding mail . Excute transaction.

This is accessed via transaction 'SCOT' and allows various functionality in-order to manage the

transmitting of external email messages.

Manage suported file formats

• Execute transaction SCOT. Expand INT node and select client node i.e. 'DEV500'

Check the internet check box and click the ‘SET’ button

To allow all file types to be sent, insert a '*' in the first line of address area

regards

vinod

Former Member
0 Kudos

Hai Osk Osk

Try with the following Links

http://www.sapgenie.com/abap/code/abap25.htm

http://www.sapgenie.com/abap/code/abap15.htm

Try with the following Code

REPORT ZRICH_0003.

DATA: ITCPO LIKE ITCPO,

TAB_LINES LIKE SY-TABIX.

  • Variables for EMAIL functionality

DATA: MAILDATA LIKE SODOCCHGI1.

DATA: MAILPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

DATA: MAILHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.

DATA: MAILBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: MAILTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: MAILREC LIKE SOMLREC90 OCCURS 0 WITH HEADER LINE.

DATA: SOLISTI1 LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.

PERFORM SEND_FORM_VIA_EMAIL.

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

  • FORM SEND_FORM_VIA_EMAIL *

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

FORM SEND_FORM_VIA_EMAIL.

CLEAR: MAILDATA, MAILTXT, MAILBIN, MAILPACK, MAILHEAD, MAILREC.

REFRESH: MAILTXT, MAILBIN, MAILPACK, MAILHEAD, MAILREC.

  • Creation of the document to be sent File Name

MAILDATA-OBJ_NAME = 'TEST'.

  • Mail Subject

MAILDATA-OBJ_DESCR = 'Subject'.

  • Mail Contents

MAILTXT-LINE = 'Here is your file'.

APPEND MAILTXT.

  • Prepare Packing List

PERFORM PREPARE_PACKING_LIST.

  • Set recipient - email address here!!!

MAILREC-RECEIVER = 'itsme@whatever.com'.

MAILREC-REC_TYPE = 'U'.

APPEND MAILREC.

  • Sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = MAILDATA

PUT_IN_OUTBOX = ' '

TABLES

PACKING_LIST = MAILPACK

OBJECT_HEADER = MAILHEAD

CONTENTS_BIN = MAILBIN

CONTENTS_TXT = MAILTXT

RECEIVERS = MAILREC

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

ENDFORM.

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

  • Form PREPARE_PACKING_LIST

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

FORM PREPARE_PACKING_LIST.

CLEAR: MAILPACK, MAILBIN, MAILHEAD.

REFRESH: MAILPACK, MAILBIN, MAILHEAD.

DESCRIBE TABLE MAILTXT LINES TAB_LINES.

READ TABLE MAILTXT INDEX TAB_LINES.

MAILDATA-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( MAILTXT ).

  • Creation of the entry for the compressed document

CLEAR MAILPACK-TRANSF_BIN.

MAILPACK-HEAD_START = 1.

MAILPACK-HEAD_NUM = 0.

MAILPACK-BODY_START = 1.

MAILPACK-BODY_NUM = TAB_LINES.

MAILPACK-DOC_TYPE = 'RAW'.

APPEND MAILPACK.

  • Creation of the document attachment

  • This form gets the OTF code from the SAPscript form.

  • If you already have your OTF code, I believe that you may

  • be able to skip this form. just do the following code, looping thru

  • your SOLISTI1 and updating MAILBIN.

PERFORM GET_OTF_CODE.

LOOP AT SOLISTI1.

MOVE-CORRESPONDING SOLISTI1 TO MAILBIN.

APPEND MAILBIN.

ENDLOOP.

DESCRIBE TABLE MAILBIN LINES TAB_LINES.

MAILHEAD = 'TEST.OTF'.

APPEND MAILHEAD.

    • Creation of the entry for the compressed attachment

MAILPACK-TRANSF_BIN = 'X'.

MAILPACK-HEAD_START = 1.

MAILPACK-HEAD_NUM = 1.

MAILPACK-BODY_START = 1.

MAILPACK-BODY_NUM = TAB_LINES.

MAILPACK-DOC_TYPE = 'OTF'.

MAILPACK-OBJ_NAME = 'TEST'.

MAILPACK-OBJ_DESCR = 'Subject'.

MAILPACK-DOC_SIZE = TAB_LINES * 255.

APPEND MAILPACK.

ENDFORM.

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

  • Form GET_OTF_CODE

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

FORM GET_OTF_CODE.

DATA: BEGIN OF OTF OCCURS 0.

INCLUDE STRUCTURE ITCOO .

DATA: END OF OTF.

DATA: ITCPO LIKE ITCPO.

DATA: ITCPP LIKE ITCPP.

CLEAR ITCPO.

ITCPO-TDGETOTF = 'X'.

  • Start writing OTF code

CALL FUNCTION 'OPEN_FORM'

EXPORTING

FORM = 'ZTEST_FORM'

LANGUAGE = SY-LANGU

OPTIONS = ITCPO

DIALOG = ' '

EXCEPTIONS

OTHERS = 1.

CALL FUNCTION 'START_FORM'

EXCEPTIONS

ERROR_MESSAGE = 01

OTHERS = 02.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

WINDOW = 'MAIN'

EXCEPTIONS

ERROR_MESSAGE = 01

OTHERS = 02.

  • Close up Form and get OTF code

CALL FUNCTION 'END_FORM'

EXCEPTIONS

ERROR_MESSAGE = 01

OTHERS = 02.

MOVE-CORRESPONDING ITCPO TO ITCPP.

CALL FUNCTION 'CLOSE_FORM'

IMPORTING

RESULT = ITCPP

TABLES

OTFDATA = OTF

EXCEPTIONS

OTHERS = 1.

  • Move OTF code to structure SOLI form email

CLEAR SOLISTI1. REFRESH SOLISTI1.

LOOP AT OTF.

SOLISTI1-LINE = OTF.

APPEND SOLISTI1.

ENDLOOP.

ENDFORM.

Thanks & regards

Sreenivasulu P

suresh_datti
Active Contributor
0 Kudos

HI Osk,

What version are you on ? You will have to put an explicit COMMIT WORK immediately after the function call.

Regards,

Suresh Datti

Former Member
0 Kudos

Hai Osk Osk

Try with the following Links

http://www.sapgenie.com/abap/code/abap25.htm

http://www.sapgenie.com/abap/code/abap15.htm

Thanks & regards

Sreenivasulu P

former_member184619
Active Contributor
0 Kudos

Hi osk,

the problem might me 1 of these as under:-

1. In the exporting parameters of..FM use

commit_work = 'X'.

2. Check for Sy-subrc of FM..

if sy-subrc = 0.

SUBMIT rsconn01

WITH mode EQ 'INT'

AND RETURN.

      • this report program is used to automatically send the e-mails that are pending in the job queue.

ELSE

3. U may have some SMTP Config. problem.

If so u can ask me for details.

Else send ur code what u r using.

Regards

-


Sachin Dhingra

0 Kudos

Hi Sachin.

This is the code I am using.Please suggest

FORM EMAIL.

IF NOT ITCPO-TDPREVIEW IS INITIAL.

ITCPP-TDNOPRINT = 'X'.

CALL FUNCTION 'DISPLAY_OTF'

EXPORTING

CONTROL = ITCPP

IMPORTING

RESULT = ITCPP

TABLES

OTF = HOTFDATA

EXCEPTIONS

OTHERS = 1.

CALL FUNCTION 'CORRESPONDENCE_POPUP_EMAIL'

EXPORTING

I_INTAD = FINAA-INTAD

IMPORTING

E_ANSWER = HANSWER

E_INTAD = FINAA-INTAD

EXCEPTIONS

OTHERS = 1.

ENDIF.

IF HANSWER = SPACE

OR HANSWER = 'J'.

HFORMAT = FINAA-TEXTF.

IF HFORMAT IS INITIAL.

HFORMAT = 'PDF'. "PDF als Default

ENDIF.

CLEAR HTLINE.

REFRESH HTLINE.

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = HFORMAT

  • MAX_LINEWIDTH = 132

IMPORTING

BIN_FILESIZE = DOC_SIZE

TABLES

OTF = HOTFDATA

LINES = HTLINE

EXCEPTIONS

ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

OTHERS = 4.

IF HFORMAT = 'PDF'.

PERFORM TABLE_SHIFT.

ELSE.

CLEAR X_OBJCONT.

REFRESH X_OBJCONT.

LOOP AT HTLINE.

X_OBJCONT = HTLINE.

APPEND X_OBJCONT.

ENDLOOP.

ENDIF.

CLEAR X_OBJECT_HD_CHANGE.

X_OBJECT_HD_CHANGE-OBJNAM = 'EMAIL'.

HKORA = TEXT-204.

X_OBJECT_HD_CHANGE-OBJDES = HKORA.

X_OBJECT_HD_CHANGE-OBJLA = LANGUAGE.

X_OBJECT_HD_CHANGE-OBJSNS = 'O'.

X_OBJECT_HD_CHANGE-OBJLEN = DOC_SIZE.

IF HFORMAT = 'PDF'.

X_OBJECT_HD_CHANGE-FILE_EXT = 'PDF'. "<-

ENDIF.

CLEAR X_RECEIVERS.

REFRESH X_RECEIVERS.

  • X_RECEIVERS-RECNAM = FINAA-INTAD. "<-

X_RECEIVERS-RECEXTNAM = FINAA-INTAD. "<-

X_RECEIVERS-RECESC = 'U'. "<-

  • X_RECEIVERS-RECESC = 'E'. "<-

X_RECEIVERS-SNDART = 'INT'. "<-

APPEND X_RECEIVERS.

DESCRIBE TABLE X_OBJCONT LINES LINECNT.

CLEAR X_OBJHEAD.

REFRESH X_OBJHEAD.

IF HFORMAT = 'PDF'.

DOCUMENT_TYPE = 'EXT'. "<-

ELSE.

DOCUMENT_TYPE = 'RAW'.

X_OBJHEAD = LINECNT.

APPEND X_OBJHEAD.

ENDIF.

CALL FUNCTION 'SO_OBJECT_SEND'

EXPORTING

  • EXTERN_ADDRESS = ' '

  • FOLDER_ID = ' '

  • FORWARDER = ' '

  • OBJECT_FL_CHANGE = ' '

OBJECT_HD_CHANGE = X_OBJECT_HD_CHANGE

  • OBJECT_ID = ' '

OBJECT_TYPE = DOCUMENT_TYPE

  • OUTBOX_FLAG = ' '

OWNER = FSABE-USRNAM

  • STORE_FLAG = ' '

  • DELETE_FLAG = ' '

SENDER = FSABE-USRNAM

  • CHECK_ALREADY_SENT = ' '

IMPORTING

  • OBJECT_ID_NEW =

SENT_TO_ALL = X_SENT_TO_ALL

TABLES

OBJCONT = X_OBJCONT

OBJHEAD = X_OBJHEAD

  • OBJPARA =

  • OBJPARB =

RECEIVERS = X_RECEIVERS

  • PACKING_LIST =

  • ATT_CONT =

  • ATT_HEAD =

  • NOTE_TEXT =

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.

IF sy-subrc = 0.

SUBMIT rsconn01

WITH mode EQ 'INT'

AND RETURN.

ENDIF.

IF SY-SUBRC = 0

AND NOT FINAA-INTAD IS INITIAL.

CLEAR PROT_AUSGABE.

PROT_AUSGABE-BUKRS = SAVE_BUKRS.

PROT_AUSGABE-EVENT = SAVE_EVENT.

PROT_AUSGABE-REPID = SAVE_REPID.

PROT_AUSGABE-INTAD = FINAA-INTAD.

PROT_AUSGABE-COUNTP = COUNTP.

COLLECT PROT_AUSGABE.

-Hilfskonstrukt damit BKORM fortgeschrieben wird----


ITCPP-TDSPOOLID = '1'.

ENDIF.

ENDIF.

ENDFORM.