‎2007 Jan 19 2:29 PM
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
‎2007 Jan 19 3:13 PM