Skip to Content
0
Former Member
Dec 10, 2008 at 10:46 AM

smartform sending pdf file as a mail

67 Views

i have done a mailing a pdf as mail i am able to down load a file in to the systam which is perfect but i am not able to send the mail can any one tell me whats the problem in this and guide me if there is any problem.

CALL FUNCTION 'GUI_FILE_SAVE_DIALOG'

EXPORTING

WINDOW_TITLE = 'Save as'

DEFAULT_EXTENSION = 'PDF'

DEFAULT_FILE_NAME = W_FNAME

  • WITH_ENCODING =

  • FILE_FILTER =

  • INITIAL_DIRECTORY =

  • DEFAULT_ENCODING =

IMPORTING

FILENAME = W_FNAME

  • PATH =

  • FULLPATH =

USER_ACTION = v_action

  • FILE_ENCODING =

.

if v_action = '9'.

exit.

endif.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

BIN_FILESIZE = W_BIN_SIZE

FILENAME = W_FNAME

FILETYPE = 'BIN' "'ASC'

IMPORTING

FILELENGTH = V_FILESIZE

TABLES

DATA_TAB = T_PDF_TAB

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

OTHERS = 22 .

IF SY-SUBRC <> 0.

MESSAGE 'File not downloaded succesfully' TYPE 'E'.

ELSE.

CONCATENATE 'File : ' W_FNAME 'downloaded succesfully ' INTO MSG1.

MESSAGE MSG1 TYPE 'I'.

ENDIF.

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

data : GD_DOC_DATA type SODOCCHGI1.

data : LT_MAILPACK type standard table of SOPCKLSTI1.

data : LA_MAILPACK type SOPCKLSTI1.

data : LT_OBJTXT type STANDARD TABLE OF SOMLRECI1 WITH HEADER LINE.

DATA:LF_LINES TYPE I.

DATA LV_OUTPUT TYPE SDOKCNTBINS WITH HEADER LINE.

*DATA LV_OUTPUT TYPE standard table of SOLISTI1 .

data pdf_file type XSTRING.

DATA: IT_RECEIVERS TYPE STANDARD TABLE OF SOMLRECI1 WITH HEADER

LINE.

data iv_mailid type AD_SMTPADR.

move W_FNAME to pdf_file.

Data : w_buffer TYPE string.

*data : i_record LIKE solisti1 OCCURS 0

*WITH HEADER LINE.

data : i_record LIKE solisti1 OCCURS 0

WITH HEADER LINE.

data : s_record LIKE solisti1 OCCURS 0

WITH HEADER LINE.

*

  • CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'

  • EXPORTING

  • BUFFER = pdf_file "PDF file from function module

  • TABLES

  • BINARY_TAB = LV_OUTPUT.

*

  • DESCRIBE TABLE LV_OUTPUT LINES LF_LINES.

loop at T_PDF_TAB.

*TRANSLATE T_PDF_TAB USING '~'.

CONCATENATE w_buffer T_PDF_TAB INTO w_buffer.

endloop.

*TRANSLATE w_buffer USING '~ '.

DO.

i_record = w_buffer.

APPEND i_record.

SHIFT w_buffer LEFT BY 255 PLACES.

IF w_buffer IS INITIAL.

EXIT.

ENDIF.

ENDDO.

s_record[] = i_record[].

*DESCRIBE TABLE T_PDF_TAB LINES LF_LINES.

select single SMTP_ADDR from ADR6 into iv_mailid where ADDRNUMBER =

IV_ADDNR_VENDOR.

  • DATA:LT_OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

MOVE 'Email sent to you from SAP' TO LT_OBJTXT.

APPEND LT_OBJTXT.

GD_DOC_DATA-OBJ_DESCR = 'PDF'.

GD_DOC_DATA-OBJ_NAME = 'PDFMail'.

GD_DOC_DATA-OBJ_DESCR = 'PDF'.

GD_DOC_DATA-SENSITIVTY = 'O'.

  • GD_DOC_DATA-EXPIRY_DAT = SY-DATUM + 15.

GD_DOC_DATA-DOC_SIZE = STRLEN( LT_OBJTXT ).

CLEAR LA_MAILPACK.

LA_MAILPACK-HEAD_START = 1.

LA_MAILPACK-HEAD_NUM = 0.

LA_MAILPACK-BODY_START = 1.

LA_MAILPACK-BODY_NUM = 1.

  • LA_MAILPACK-DOC_TYPE = 'RAW'.

LA_MAILPACK-DOC_SIZE = STRLEN( LT_OBJTXT ).

APPEND LA_MAILPACK TO LT_MAILPACK.

CLEAR LA_MAILPACK.

LA_MAILPACK-TRANSF_BIN = ''.

LA_MAILPACK-HEAD_START = 1.

LA_MAILPACK-HEAD_NUM = 1.

LA_MAILPACK-BODY_START = 1.

LA_MAILPACK-DOC_TYPE = 'PDF'.

LA_MAILPACK-BODY_NUM = LF_LINES.

LA_MAILPACK-DOC_SIZE = LF_LINES * 255.

LA_MAILPACK-OBJ_DESCR = 'Open'.

LA_MAILPACK-OBJ_NAME = 'MAIL'.

APPEND LA_MAILPACK TO LT_MAILPACK.

IT_RECEIVERS-RECEIVER = iv_mailid.

IT_RECEIVERS-REC_TYPE = 'U'.

APPEND IT_RECEIVERS.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = GD_DOC_DATA

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

  • IMPORTING

  • SENT_TO_ALL =

  • NEW_OBJECT_ID =

TABLES

PACKING_LIST = LT_MAILPACK

  • OBJECT_HEADER =

CONTENTS_BIN = s_record

CONTENTS_TXT = LT_OBJTXT

  • CONTENTS_HEX = LV_OUTPUT

  • CONTENTS_HEX = s_record

  • OBJECT_PARA =

  • OBJECT_PARB =

RECEIVERS = IT_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

.

IF SY-SUBRC <> 0.

MESSAGE 'Mail was not sent' type 'E'.

else.

MESSAGE 'Mail was sent Succesfully' type 'S'.

ENDIF.

thanks and regards ,

venkat.