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

SEND MAIL

Former Member
0 Likes
354

hi experts,

i have a requirement to send mail to an external as well as sap user.

the mail goes to the sap user but for the external user the sy-subrc returned is 69.

i am using SO_DOCUMENT_SEND_API1 FM.

Please guide me.

i am using fm generated from smartform to get otfdata.

Thank you.

my code is as below:

&----


*& Report ZRND_RFKQST00_SMART_MAIL_SR

*&

&----


*&

*&

&----


REPORT ZSEND_CORRESPONDENCE.

&----


*& Parameter declarations

*&

&----


PARAMETERS: P_LIFNR TYPE LFA1-LIFNR.

&----


*& Declarations of structure

*&

&----


TYPES:BEGIN OF GS_LFA1,

PSTLZ TYPE LFA1-PSTLZ,

STRAS TYPE LFA1-STRAS,

ADRNR TYPE LFA1-ADRNR,

LIFNR TYPE LFA1-LIFNR,

END OF GS_LFA1.

&----


*& Declarations of internal table

*&

&----


DATA: GT_LFA1 TYPE TABLE OF GS_LFA1,

GS_LFA1 TYPE GS_LFA1.

&----


*& Declarations of variable

*&

&----


DATA:FILENAME TYPE RS38L_FNAM.

DATA: MY_CONTROL_PARS TYPE SSFCTRLOP. "For CONTROL_PARAMETERS

DATA: MY_OUTPUT_INFO TYPE SSFCRESCL. "For JOB_OUTPUT_INFO

DATA: PDFDATA TYPE TABLE OF TLINE.

DATA: DUP_PDFDATA TYPE TABLE OF TLINE.

DATA: WA_PDFDATA TYPE TLINE.

DATA : GD_BUFFER TYPE STRING.

&----


*& Start of selection

*&

&----


START-OF-SELECTION.

PERFORM 1000_SEL_LFA1.

PERFORM 2000_FUNCTIONMOD.

END-OF-SELECTION.

&----


*& Form 1000_SEL_LFA1

&----


  • Select vendor details from table LFA1

----


FORM 1000_SEL_LFA1 .

SELECT SINGLE PSTLZ

STRAS

ADRNR

LIFNR

FROM LFA1

INTO GS_LFA1

WHERE LIFNR = P_LIFNR.

ENDFORM. " 1000_SEL_LFA1

&----


*& Form 2000_FUNCTIONMOD

&----


  • Dynamic selection of function module name of the SMARTFORM

----


FORM 2000_FUNCTIONMOD .

DATA: T_DOCS TYPE TABLE OF DOCS,

PDFDATA TYPE TABLE OF TLINE,

F_SIZE TYPE I,

OTFDATA TYPE TABLE OF ITCOO,

GT_TLINE TYPE TABLE OF TLINE WITH HEADER LINE,

GS_TLINE TYPE TLINE,

GT_DOCS TYPE TABLE OF DOCS,

BIN_FILE TYPE I,

GS_DOCUMENT_DATA TYPE SODOCCHGI1,

GT_DOCUMENT_DATA TYPE TABLE OF SODOCCHGI1,

GT_OBJTEXT TYPE TABLE OF SOLISTI1,

GS_OBJTEXT TYPE SOLISTI1,

GS_RECEIVER TYPE SOMLRECI1,

GT_RECEIVER TYPE TABLE OF SOMLRECI1,

GS_OBJTXT TYPE SOLISTI1,

GS_PACKLIST TYPE SOPCKLSTI1,

GT_PACKLIST TYPE TABLE OF SOPCKLSTI1,

TAB_LINES TYPE I,

MAILBIN TYPE TABLE OF SOLISTI1 WITH HEADER LINE,

GT_OUTBIN TYPE TABLE OF SOLISTI1 WITH HEADER LINE,

MAILHEAD TYPE TABLE OF SOLISTI1 WITH HEADER LINE,

GD_BUFFER TYPE STRING.

MY_CONTROL_PARS-NO_DIALOG = 'X'.

MY_CONTROL_PARS-GETOTF = 'X'.

*CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

  • EXPORTING

  • FORMNAME = 'ZRND_RFKQST00_SMARTFORM'

    • VARIANT = ' '

    • DIRECT_CALL = ' '

  • IMPORTING

  • FM_NAME = FILENAME

    • EXCEPTIONS

    • NO_FORM = 1

    • NO_FUNCTION_MODULE = 2

    • OTHERS = 3

  • .

*IF SY-SUBRC <> 0.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

*ENDIF.

*

*

*CALL FUNCTION FILENAME

  • EXPORTING

  • WA_LFA1 = GS_LFA1.

CALL FUNCTION '/1BCDWB/SF00000226'

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

CONTROL_PARAMETERS = MY_CONTROL_PARS

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

WA_LFA1 = GS_LFA1

IMPORTING

  • DOCUMENT_OUTPUT_INFO =

JOB_OUTPUT_INFO = MY_OUTPUT_INFO " DATA IN OTFDATA

  • JOB_OUTPUT_OPTIONS =

  • EXCEPTIONS

  • FORMATTING_ERROR = 1

  • INTERNAL_ERROR = 2

  • SEND_ERROR = 3

  • USER_CANCELED = 4

  • OTHERS = 5

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'CONVERT_OTF_2_PDF'

  • EXPORTING

  • USE_OTF_MC_CMD = 'X'

  • ARCHIVE_INDEX =

  • IMPORTING

  • BIN_FILESIZE =

TABLES

OTF = MY_OUTPUT_INFO-OTFDATA

DOCTAB_ARCHIVE = T_DOCS

LINES = GT_TLINE

  • EXCEPTIONS

  • ERR_CONV_NOT_POSSIBLE = 1

  • ERR_OTF_MC_NOENDMARKER = 2

  • OTHERS = 3

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

&----


  • text in the body

&----


GS_OBJTEXT-LINE = 'correspondence'.

APPEND GS_OBJTEXT TO GT_OBJTEXT.

CLEAR GS_OBJTEXT.

DESCRIBE TABLE GT_OBJTEXT LINES TAB_LINES.

READ TABLE GT_OBJTEXT INDEX TAB_LINES INTO GS_OBJTEXT.

GS_DOCUMENT_DATA-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( GS_OBJTEXT ).

&----


  • receiver

&----


*gs_receiver-REC_TYPE = 'U'.

*gs_receiver-RECEIVER = 'srinivas.rao@t-systems.com'.

*append gs_receiver to gt_receiver.

*clear gs_receiver.

GS_RECEIVER-REC_TYPE = 'B'.

GS_RECEIVER-RECEIVER = SY-UNAME.

APPEND GS_RECEIVER TO GT_RECEIVER.

clear gs_receiver.

GS_RECEIVER-REC_TYPE = 'U'.

GS_RECEIVER-RECEIVER = 'SRINIVAS.RAO@T-SYSTEMS.COM'.

APPEND GS_RECEIVER TO GT_RECEIVER.

*

&----


  • document data

&----


GS_DOCUMENT_DATA-OBJ_NAME = 'correspondence'.

GS_DOCUMENT_DATA-OBJ_DESCR = 'Correspondence'.

APPEND GS_DOCUMENT_DATA TO GT_DOCUMENT_DATA.

&----


  • packing list

&----


DESCRIBE TABLE GT_OBJTEXT LINES TAB_LINES.

CLEAR GS_PACKLIST-TRANSF_BIN.

GS_PACKLIST-HEAD_START = 1.

GS_PACKLIST-HEAD_NUM = 0.

GS_PACKLIST-BODY_START = 1.

GS_PACKLIST-BODY_NUM = TAB_LINES.

GS_PACKLIST-DOC_TYPE = 'RAW'.

*gs_packlist-DOC_SIZE = TAB_LINES * 255.

APPEND GS_PACKLIST TO GT_PACKLIST.

LOOP AT GT_TLINE." INTO WA_PDFDATA.

TRANSLATE GT_TLINE USING ' ~'.

CONCATENATE GD_BUFFER GT_TLINE INTO GD_BUFFER.

ENDLOOP.

TRANSLATE GD_BUFFER USING '~ '.

DO.

GT_OUTBIN = GD_BUFFER.

APPEND GT_OUTBIN.

SHIFT GD_BUFFER LEFT BY 255 PLACES.

IF GD_BUFFER IS INITIAL.

EXIT.

ENDIF.

ENDDO.

DESCRIBE TABLE GT_OUTBIN LINES TAB_LINES.

GS_PACKLIST-TRANSF_BIN = 'X'.

GS_PACKLIST-HEAD_START = 1.

GS_PACKLIST-HEAD_NUM = 1.

GS_PACKLIST-BODY_START = 1.

GS_PACKLIST-BODY_NUM = TAB_LINES.

GS_PACKLIST-DOC_TYPE = 'PDF'.

GS_PACKLIST-OBJ_NAME = 'TEXT1'.

GS_PACKLIST-OBJ_DESCR = 'Subject'.

GS_PACKLIST-DOC_SIZE = TAB_LINES * 255.

APPEND GS_PACKLIST TO GT_PACKLIST.

*MAILHEAD-TXT = 'TEST.TXT'.

*APPEND MAILHEAD.

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'

EXPORTING

DOCUMENT_DATA = GS_DOCUMENT_DATA

  • PUT_IN_OUTBOX = 'X'

  • SENDER_ADDRESS = SY-UNAME

  • SENDER_ADDRESS_TYPE = 'B'

COMMIT_WORK = 'X'

  • IMPORTING

  • SENT_TO_ALL =

  • NEW_OBJECT_ID =

  • SENDER_ID =

TABLES

PACKING_LIST = GT_PACKLIST

  • OBJECT_HEADER = MAILHEAD

CONTENTS_BIN = GT_OUTBIN

CONTENTS_TXT = GT_OBJTEXT

  • CONTENTS_HEX =

  • OBJECT_PARA =

  • OBJECT_PARB =

RECEIVERS = GT_RECEIVER

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.

LOOP AT gt_receiver into gs_receiver.

IF gs_receiver-RETRN_CODE = 0.

WRITE 'sent successfully'.

ELSE.

WRITE 'not sent'.

ENDIF.

ENDLOOP.

ENDFORM. "2000_FUNCTIONMOD

1 REPLY 1
Read only

Former Member