‎2007 Dec 19 7:33 AM
Hi,
We are able to successfully send the PDF attachment to external email id from SAP SCRIPT:
but when we are opening the PDF attachment we are getting the following error:
"Adobe Reader could not open because it is not either a supported file type or the file has been damaged ..etc.."
Is any logic need to write for the above or any parameters are missing .
Can any one help...
Thanks in advance.
‎2007 Dec 19 7:45 AM
hi
good
i dont think here you can do anything for this kind of problem , there must be some problem with your transporataion protocol so the file got damaged when it reaches to its destination point.
Contact your BASIS people, they can give you a better idea on this.
thanks
mrutyun^
‎2007 Dec 19 9:01 AM
when i am sending through sap business workplace...attachment is opening normally. only when executed through my program. attachment is not opening properly
‎2007 Dec 19 8:42 AM
hi,
Have you converted OTF format to PDF before sending it as attachment....If not then you have to convert the same....
After conversion it will work...
If it don't work please let me know?
If any other query, let me know..?
reward points...
Cheers,
Sagun Desai....
‎2007 Dec 19 9:02 AM
we are using CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' function module to convert otf to pdf...still its not wroking...
‎2007 Dec 22 11:40 AM
Hi Ramana,
Just try below given example code.....In which I have just different function Module to convert from OFT to PDF....
AT END OF VSTEL.
IF R_EMAIL = 'X'.
*--Opening Layout set for Printing
PERFORM CLOSE_FORM.
SELECT SINGLE SMTP_ADDR INTO V_EMAIL
FROM ADR6
WHERE ADDRNUMBER = T_ADRC-ADDRNUMBER.
CLEAR T_LIPS.
READ TABLE T_LIPS WITH KEY VBELN = T_LIKP-VBELN.
CLEAR T_VBAK.
READ TABLE T_VBAK WITH KEY VBELN = T_LIPS-VGBEL.
CLEAR V_ADRNR.
SELECT SINGLE ADRNR
INTO V_ADRNR
FROM T001
WHERE BUKRS = T_VBAK-BUKRS_VF.
REFRESH T_CC_EMAIL.
CLEAR T_CC_EMAIL.
SELECT SMTP_ADDR INTO TABLE T_CC_EMAIL
FROM ADR6
WHERE ADDRNUMBER = V_ADRNR.
SELECT SINGLE smtp_addr
INTO cc_email
FROM adr6
WHERE addrnumber = v_adrnr.
IF T_TO_EMAIL[] IS INITIAL.
CLEAR T_CC_EMAIL.
REFRESH T_CC_EMAIL.
ENDIF.
PERFORM BUILD_PDF_DATA_TABLE.
Populate message body text
PERFORM POPULATE_EMAIL_MESSAGE_BODY.
CONCATENATE T_LIKP-VSTEL '-' 'Warehouse Release' INTO V_SUBJECT SEPARATED BY SPACE.
Send file by email as .xls speadsheet
PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT
TABLES IT_MESSAGE
PT_CONTENTS_BIN "LINES "it_attach
USING V_EMAIL
V_SUBJECT
'PDF'
'Delivery'
'Deliveries'
' '
' '
CHANGING GD_ERROR
GD_RECIEVER.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
ENDIF.
ENDAT.
***---/End by sagun
ENDLOOP. "loop at t_likp.
***---/added by sagun 25.05.2007
IF R_EMAIL = 'X'.
WRITE /01 SY-ULINE(180).
WRITE :/55 'End of Report'.
ENDIF.
***---/end by sagun
ENDFORM. " PRINT_DELIVERY
&----
*& Form close_form
&----
text
----
--> p1 text
<-- p2 text
----
FORM CLOSE_FORM .
IF R_PRINT = 'X'. " added by sagun 24.05.2007
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT =
RDI_RESULT =
TABLES
OTFDATA =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
CODEPAGE = 5
OTHERS = 6
.
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. " added by sagun 24.05.2007
IF R_EMAIL = 'X'.
*otf_table like itcoo occurs 0 with header line
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT = .
TABLES
OTFDATA = HOTFDATA
EXCEPTIONS
UNOPENED = 3.
ENDIF.
ENDFORM. " close_form
&----
*& Form BUILD_PDF_DATA_TABLE
&----
text
----
--> p1 text
<-- p2 text
----
FORM BUILD_PDF_DATA_TABLE .
DATA : LC_FORMAT(3) TYPE C VALUE 'PDF'.
DATA: lt_tline TYPE tp_tline_standard_table,
DATA : L_BIN_FILESIZE TYPE I,
PC_CONTENTS_BIN_LINES TYPE I.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = LC_FORMAT
IMPORTING
BIN_FILESIZE = L_BIN_FILESIZE
TABLES
OTF = HOTFDATA
LINES = LINES
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.
IF SY-SUBRC = 0.
CALL FUNCTION 'QCE1_CONVERT'
TABLES
T_SOURCE_TAB = LINES
T_TARGET_TAB = PT_CONTENTS_BIN
EXCEPTIONS
CONVERT_NOT_POSSIBLE = 1
OTHERS = 2.
IF SY-SUBRC = 0.
DESCRIBE TABLE PT_CONTENTS_BIN LINES PC_CONTENTS_BIN_LINES.
ELSE.
... -->
ENDIF.
ELSE.
An OTF conversion error occured
-->
ENDIF.
ENDFORM. " BUILD_PDF_DATA_TABLE
&----
*& Form POPULATE_EMAIL_MESSAGE_BODY
&----
text
----
--> p1 text
<-- p2 text
----
FORM POPULATE_EMAIL_MESSAGE_BODY .
REFRESH IT_MESSAGE.
IT_MESSAGE = 'Please find enclosed here with our Warehouse Release Document(s)'.
APPEND IT_MESSAGE.
CLEAR IT_MESSAGE.
APPEND IT_MESSAGE.
APPEND IT_MESSAGE.
APPEND IT_MESSAGE.
APPEND IT_MESSAGE.
IT_MESSAGE = 'For United Phosphorous Inc.'.
APPEND IT_MESSAGE.
CLEAR IT_MESSAGE.
APPEND it_message.
APPEND it_message.
APPEND it_message.
IT_MESSAGE = 'TEST EMAIL from 520 clinet please ignore it'.
APPEND IT_MESSAGE.
ENDFORM. " POPULATE_EMAIL_MESSAGE_BODY
&----
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
&----
text
----
-->PIT_MESSAGE text
-->PIT_ATTACH text
-->P_EMAIL text
-->P_MTITLE text
-->P_FORMAT text
-->P_FILENAME text
-->P_ATTDESCRIPTION text
-->P_SENDER_ADDRESS text
-->P_SENDER_ADDRES_TYPE text
<--P_ERROR text
<--P_RECIEVER text
----
FORM SEND_FILE_AS_EMAIL_ATTACHMENT TABLES PIT_MESSAGE
PIT_ATTACH
USING P_EMAIL
P_MTITLE
P_FORMAT
P_FILENAME
P_ATTDESCRIPTION
P_SENDER_ADDRESS
P_SENDER_ADDRES_TYPE
CHANGING P_ERROR
P_RECIEVER.
DATA: LD_ERROR TYPE SY-SUBRC,
ld_reciever TYPE sy-subrc,...
LD_MTITLE LIKE SODOCCHGI1-OBJ_DESCR,
LD_EMAIL LIKE SOMLRECI1-RECEIVER,
LD_FORMAT TYPE SO_OBJ_TP ,
LD_ATTDESCRIPTION TYPE SO_OBJ_NAM ,
LD_ATTFILENAME TYPE SO_OBJ_DES ,
LD_SENDER_ADDRESS LIKE SOEXTRECI1-RECEIVER,
LD_SENDER_ADDRESS_TYPE LIKE SOEXTRECI1-ADR_TYP,
LD_RECEIVER LIKE SY-SUBRC.
p_filename = 'INVOICE'.
LD_EMAIL = P_EMAIL.
LD_MTITLE = P_MTITLE.
LD_FORMAT = P_FORMAT.
LD_ATTDESCRIPTION = P_ATTDESCRIPTION.
LD_ATTFILENAME = P_FILENAME.
LD_SENDER_ADDRESS = P_SENDER_ADDRESS.
LD_SENDER_ADDRESS_TYPE = P_SENDER_ADDRES_TYPE.
Fill the document data.
W_DOC_DATA-DOC_SIZE = 1.
Populate the subject/generic message attributes
W_DOC_DATA-OBJ_LANGU = SY-LANGU.
W_DOC_DATA-OBJ_NAME = 'SAPRPT'.
W_DOC_DATA-OBJ_DESCR = LD_MTITLE .
W_DOC_DATA-SENSITIVTY = 'F'.
Fill the document data and get size of attachment
CLEAR W_DOC_DATA.
READ TABLE PIT_ATTACH INDEX W_CNT.
W_DOC_DATA-DOC_SIZE =
( W_CNT - 1 ) * 255 + STRLEN( PIT_ATTACH ).
W_DOC_DATA-OBJ_LANGU = SY-LANGU.
W_DOC_DATA-OBJ_NAME = 'SAPRPT'.
W_DOC_DATA-OBJ_DESCR = LD_MTITLE.
W_DOC_DATA-SENSITIVTY = 'F'.
CLEAR T_ATTACHMENT.
REFRESH T_ATTACHMENT.
T_ATTACHMENT[] = PIT_ATTACH[].
Describe the body of the message
CLEAR T_PACKING_LIST.
REFRESH T_PACKING_LIST.
T_PACKING_LIST-TRANSF_BIN = SPACE.
T_PACKING_LIST-HEAD_START = 1.
T_PACKING_LIST-HEAD_NUM = 0.
T_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.
T_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND T_PACKING_LIST.
Create attachment notification
T_PACKING_LIST-TRANSF_BIN = 'X'.
T_PACKING_LIST-HEAD_START = 1.
T_PACKING_LIST-HEAD_NUM = 1.
T_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE T_ATTACHMENT LINES T_PACKING_LIST-BODY_NUM.
T_PACKING_LIST-DOC_TYPE = LD_FORMAT.
T_PACKING_LIST-OBJ_DESCR = LD_ATTDESCRIPTION.
T_PACKING_LIST-OBJ_NAME = LD_ATTFILENAME.
T_PACKING_LIST-DOC_SIZE = T_PACKING_LIST-BODY_NUM * 255.
APPEND T_PACKING_LIST.
Add the recipients email address
CLEAR T_RECEIVERS.
REFRESH T_RECEIVERS.
LOOP AT T_TO_EMAIL WHERE EMAIL <> SPACE.
CLEAR T_RECEIVERS.
T_RECEIVERS-RECEIVER = T_TO_EMAIL-EMAIL.
T_RECEIVERS-REC_TYPE = 'U'.
T_RECEIVERS-COM_TYPE = 'INT'.
T_RECEIVERS-NOTIF_DEL = 'X'.
T_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND T_RECEIVERS.
CLEAR T_RECEIVERS.
ENDLOOP.
copy email address
CLEAR T_RECEIVERS.
IF NOT T_RECEIVERS[] IS INITIAL.
LOOP AT T_CC_EMAIL.
T_RECEIVERS-RECEIVER = T_CC_EMAIL-EMAIL.
T_RECEIVERS-REC_TYPE = 'U'.
T_RECEIVERS-COM_TYPE = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
T_RECEIVERS-COPY = 'X'.
APPEND T_RECEIVERS.
CLEAR T_RECEIVERS.
ENDLOOP.
ENDIF.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = W_DOC_DATA
PUT_IN_OUTBOX = 'X'
SENDER_ADDRESS = LD_SENDER_ADDRESS
SENDER_ADDRESS_TYPE = LD_SENDER_ADDRESS_TYPE
COMMIT_WORK = 'X'
IMPORTING
SENT_TO_ALL = W_SENT_ALL
TABLES
PACKING_LIST = T_PACKING_LIST
CONTENTS_BIN = T_ATTACHMENT
CONTENTS_TXT = IT_MESSAGE
RECEIVERS = T_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.
Populate zerror return code
LD_ERROR = SY-SUBRC.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
IF SY-SUBRC = 0.
FORMAT COLOR COL_NORMAL ON.
LOOP AT T_LOG.
WRITE :/03 T_LOG-VBELN,
19 SY-VLINE,
20 T_LOG-KUNNR,
34 SY-VLINE,
35 T_LOG-NAME1,
76 SY-VLINE,
77 T_LOG-EMAIL,
110 SY-VLINE,
111 'Email Sent Successfuly',
180 SY-VLINE.
ENDLOOP . "t_log
FORMAT COLOR COL_NORMAL OFF.
CLEAR T_LOG.
REFRESH T_LOG.
ENDIF.
IF SY-SUBRC NE 0.
CASE LD_ERROR.
WHEN 1.
V_ERROR = 'too_many_receivers' .
WHEN 2.
V_ERROR = 'Email address not found in Customer Master' .
WHEN 3.
V_ERROR = 'document_type_not_exist'.
WHEN 4.
V_ERROR = 'operation_no_authorization'.
WHEN 5.
V_ERROR = 'Email address not found in Customer Master'.
WHEN 6.
V_ERROR = 'x_error'.
WHEN 7.
V_ERROR = 'enqueue_error'.
WHEN 8.
V_ERROR = 'Error in sending email' .
ENDCASE.
FORMAT COLOR COL_NEGATIVE ON.
LOOP AT T_LOG.
WRITE :/03 T_LOG-VBELN,
19 SY-VLINE,
20 T_LOG-KUNNR,
34 SY-VLINE,
35 T_LOG-NAME1,
76 SY-VLINE,
77 T_LOG-EMAIL,
110 SY-VLINE,
111 V_ERROR,
180 SY-VLINE.
ENDLOOP . "t_log
FORMAT COLOR COL_NEGATIVE OFF.
CLEAR T_LOG.
REFRESH T_LOG.
ENDIF.
ENDFORM. " SEND_FILE_AS_EMAIL_ATTACHMENT
&----
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
&----
text
----
--> p1 text
<-- p2 text
----
FORM INITIATE_MAIL_EXECUTE_PROGRAM .
WAIT UP TO 2 SECONDS.
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*_________________________________________________________________________________
Reward Point If it usefull....
Cheers,
Sagun Desai....
‎2011 Apr 06 4:20 AM