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

Error when opening the PDF attachment

Former Member
0 Likes
1,874

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.

6 REPLIES 6
Read only

Former Member
0 Likes
947

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^

Read only

0 Likes
947

when i am sending through sap business workplace...attachment is opening normally. only when executed through my program. attachment is not opening properly

Read only

Former Member
0 Likes
947

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

Read only

0 Likes
947

we are using CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' function module to convert otf to pdf...still its not wroking...

Read only

0 Likes
947

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

Read only

Former Member
0 Likes
947

solved