Application Development 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: 

sending mail after converting from otf to pdf

Former Member
0 Kudos

Hi all,

i have an requirement of converting script output i.e., otf to pdf converting and i want send that account statement to the mail id which is maintatined in XD03 t.code,based on different customers differnt account statement should post ,

please suggest me ASAP.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hello,

Check the documentation for the func module SO_NEW_DOCUMENT_ATT_SEND_API1

Ull find the sample code for attaching and sending thru mail.

Neeraj

6 REPLIES 6

Former Member
0 Kudos

Hello,

Check the documentation for the func module SO_NEW_DOCUMENT_ATT_SEND_API1

Ull find the sample code for attaching and sending thru mail.

Neeraj

Former Member
0 Kudos

use the function module

CONVERT to pdf

SX_OBJECT_CONVERT_OTF_PDF

- Email the PDF data using

SO_NEW_DOCUMENT_ATT_SEND_API1

examples

Option 1.

- converting OTF data returned from CLOSE_FORM (requested in OPEN_FORM) to PDF format using SX_OBJECT_CONVERT_OTF_PDF

- Email the PDF data using SO_NEW_DOCUMENT_ATT_SEND_API1

Result

>> Everything works fine except that the output cannot be sent to spool and previewed (due the request of OTF table in OPEN_FORM)

>> The PDF attachment can be downloaded and view directly.

Option 2.

- converting spool to PDF format using CONVERT_OTFSPOOLJOB_2_PDF

- Email the PDF data using

SO_NEW_DOCUMENT_ATT_SEND_API1

Result

>> The output can be previewed and sent to spool. No error returned from sending mail.

>> However, the attachment of PDF file cannot be downloaded (from SBWP Business Workspace). An error message "Database error for <GET DATA FROM KPRO>" was displayed when I try to download the PDF file

You can try something like this

IF SY-UCOMM = 'VIEW'.

CLEAR ITCPO-TDGETOTF.

ENDIF.

***OPEN_FORM

*etc

***CLOSE_FORM

IF NOT SY-UCOMM = 'VIEW'.

**SEND MAIL

ENDIF.

example code

REPORT ZSENDPDF NO STANDARD PAGE HEADING.

TABLES: TST05,

TSP01,

NAST,

T685B,

USR01.

DATA: BEGIN OF TAB_PDF OCCURS 0,

TLINE(255).

DATA : END OF TAB_PDF.

DATA: BEGIN OF TAB_OTF OCCURS 0,

TLINE(255).

DATA : END OF TAB_OTF.

DATA: BEGIN OF TAB_DATA_SET OCCURS 0,

DATA_LENGTH(5),

PRECOL(1),

DATA_LINE(1000).

DATA : END OF TAB_DATA_SET.

DATA: BEGIN OF TAB_OTF_PAGE OCCURS 0.

INCLUDE STRUCTURE ITCOO.

DATA: END OF TAB_OTF_PAGE.

DATA : BEGIN OF TAB_OTF_PAGE_INDEX OCCURS 0,

LINE_NUM TYPE P.

DATA : END OF TAB_OTF_PAGE_INDEX.

DATA: BEGIN OF TAB_DATA_SET_LINE,

DATA_LENGTH(5),

PRECOL(1),

DATA_LINE(1000).

DATA : END OF TAB_DATA_SET_LINE.

DATA : BEGIN OF TAB_TSP01 OCCURS 0,

RQIDENT LIKE TSP01-RQIDENT,

RQCOPIES LIKE TSP01-RQCOPIES.

DATA : END OF TAB_TSP01.

DATA :

LEN_OUT LIKE SOOD-OBJLEN,

LEN_IN LIKE SOOD-OBJLEN,

OTF_PAGES TYPE P,

*otf_max_pages type p value 100,

OTF_MAX_PAGES TYPE P VALUE 1000,

DATA_SET_LINECOUNT TYPE P,

*data_set_max_lines type p value 1000000,

DATA_SET_MAX_LINES TYPE P VALUE 100000,

DATA_SET_IS_OTF TYPE C VALUE ' ',

DATA_SET_LENGTH(5) TYPE C,

DSN_TYPE( TYPE C,

RC(10) TYPE C,

ERRMSG(100) TYPE C,

LINE_MAX TYPE P VALUE '100000',

STATUS LIKE SY-SUBRC,

H_PATH(20) TYPE C,

H_MASK(20) TYPE C VALUE ',.pdf ,.pdf. ',

FILE_NAME(20),

FILENAME LIKE RLGRAP-FILENAME,

C_PAGE_BREAK TYPE I,

K_PAGE_BREAK TYPE I.

PARAMETER : P_RQID(5) TYPE C.

START-OF-SELECTION.

END-OF-SELECTION.

PERFORM GET_TAB_OTF.

CLEAR K_PAGE_BREAK.

LOOP AT TAB_OTF_PAGE WHERE TDPRINTCOM = 'EP'.

ADD 1 TO K_PAGE_BREAK.

ENDLOOP.

CLEAR C_PAGE_BREAK.

LOOP AT TAB_OTF_PAGE.

IF TAB_OTF_PAGE-TDPRINTCOM EQ 'EP'.

ADD 1 TO C_PAGE_BREAK.

IF C_PAGE_BREAK GE 3 AND C_PAGE_BREAK LT K_PAGE_BREAK.

TAB_OTF-TLINE = 'EP'.

APPEND TAB_OTF.

ENDIF.

ENDIF.

TAB_OTF-TLINE = TAB_OTF_PAGE.

APPEND TAB_OTF.

ENDLOOP.

CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'

EXPORTING

FORMAT_SRC = 'OTF'

FORMAT_DST = 'PDF'

DEVTYPE = 'ASCIIPRI'

LEN_IN = LEN_IN

IMPORTING

LEN_OUT = LEN_OUT

TABLES

CONTENT_IN = TAB_OTF

CONTENT_OUT = TAB_PDF

EXCEPTIONS

ERR_CONV_FAILED = 1

OTHERS = 2.

PERFORM GET_PATH USING 'PDF_FILE'.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = FILENAME

FILETYPE = 'BIN'

BIN_FILESIZE = LEN_OUT

TABLES

DATA_TAB = TAB_PDF

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

INVALID_FILESIZE = 3

INVALID_TABLE_WIDTH = 4

INVALID_TYPE = 5

NO_BATCH = 6

UNKNOWN_ERROR = 7

OTHERS = 8.

&----


*& Form GET_tab_otf

&----


FORM GET_TAB_OTF.

DATA: PART(4) VALUE '0001',

BEGIN OF MSG,

A(40),

B(40),

C(40),

END OF MSG.

REFRESH TAB_DATA_SET.

DATA_SET_LINECOUNT = 0.

DATA_SET_IS_OTF = ' '.

OTF_PAGES = 0.

REFRESH TAB_OTF_PAGE_INDEX.

CALL 'RSPOACSD'.

SELECT * FROM TST05 WHERE DTHREAD = 'X'.

CALL 'RSPOAOSD'

ID 'ID' FIELD P_RQID

ID 'TYPE' FIELD TST05-DTYPE

ID 'RECTYP' FIELD 'VYL----'

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

STATUS = SY-SUBRC.

IF STATUS = 0.

DSN_TYPE = TST05-DTYPE.

IF DSN_TYPE(3) = 'OTF'.

DATA_SET_IS_OTF = 'X'.

ENDIF.

ENDIF.

IF STATUS <> 24. EXIT. ENDIF.

ENDSELECT.

DATA_SET_MAX_LINES = ( LINE_MAX * '1.1' ) + 100.

DO.

CLEAR: TAB_DATA_SET_LINE, DATA_SET_LENGTH.

CALL 'RSPOARSD'

ID 'BUFF' FIELD TAB_DATA_SET_LINE+5

ID 'DATALEN' FIELD DATA_SET_LENGTH

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

STATUS = SY-SUBRC.

IF STATUS = 36.

WHILE STATUS = 36.

CALL 'RSPOACSD'

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

ADD 1 TO PART.

IF DATA_SET_IS_OTF = ' '.

CALL 'RSPOAOSD'

ID 'ID' FIELD P_RQID

ID 'TYPE' FIELD DSN_TYPE

ID 'PART' FIELD PART

ID 'RECTYP' FIELD 'VYL----'

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

ELSE.

CALL 'RSPOAOSD'

ID 'ID' FIELD P_RQID

ID 'PART' FIELD PART

ID 'TYPE' FIELD DSN_TYPE

ID 'RECTYP' FIELD 'VYL----'

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

ENDIF.

IF SY-SUBRC NE 0. EXIT. ENDIF.

CLEAR: TAB_DATA_SET_LINE, DATA_SET_LENGTH.

CALL 'RSPOARSD'

ID 'BUFF' FIELD TAB_DATA_SET_LINE+5

ID 'DATALEN' FIELD DATA_SET_LENGTH

ID 'RC' FIELD RC

ID 'ERRMSG' FIELD ERRMSG.

STATUS = SY-SUBRC.

ENDWHILE.

ENDIF.

IF STATUS <> 0 AND STATUS <> 40. EXIT. ENDIF.

TAB_DATA_SET = TAB_DATA_SET_LINE.

IF NOT ( DATA_SET_LENGTH IS INITIAL ).

TAB_DATA_SET-DATA_LENGTH = DATA_SET_LENGTH - 1.

ENDIF.

APPEND TAB_DATA_SET.

ADD 1 TO DATA_SET_LINECOUNT.

IF DATA_SET_IS_OTF = ' '.

IF DATA_SET_LINECOUNT >= DATA_SET_MAX_LINES.

CLEAR TAB_DATA_SET.

APPEND TAB_DATA_SET.

MOVE '----


' TO TAB_DATA_SET-DATA_LINE.

APPEND TAB_DATA_SET.

CLEAR TAB_DATA_SET.

APPEND TAB_DATA_SET.

WRITE: 'Abbruch nach'(029) TO MSG-A.

WRITE: DATA_SET_MAX_LINES TO MSG-B.

WRITE: 'Zeilen.'(030) TO MSG-C.

CONDENSE MSG.

TAB_DATA_SET-DATA_LINE = MSG.

APPEND TAB_DATA_SET.

EXIT.

ENDIF.

ELSE.

MOVE TAB_DATA_SET_LINE-DATA_LINE TO TAB_OTF_PAGE.

APPEND TAB_OTF_PAGE.

IF TAB_OTF_PAGE(2) = 'EP'.

ADD 1 TO OTF_PAGES.

IF OTF_PAGES >= OTF_MAX_PAGES.

MESSAGE S229(PO) WITH OTF_MAX_PAGES.

EXIT.

ENDIF.

ELSEIF TAB_OTF_PAGE(2) = 'OP'.

TAB_OTF_PAGE_INDEX-LINE_NUM = DATA_SET_LINECOUNT.

APPEND TAB_OTF_PAGE_INDEX.

ENDIF.

ENDIF.

ENDDO.

IF STATUS <> 0 AND STATUS <> 12.

CALL 'RSPOACSD'.

MESSAGE E112(PO) WITH STATUS RC ERRMSG.

ENDIF.

CALL 'RSPOACSD'.

STATUS = SY-SUBRC.

IF STATUS <> 0.

MESSAGE E112(PO) WITH STATUS RC ERRMSG.

ENDIF.

ENDFORM.

&----


*& Form GET_PATH

&----


FORM GET_PATH USING P_FILENAME.

CLEAR: H_PATH, FILE_NAME.

FILE_NAME = P_FILENAME.

CALL FUNCTION 'WS_QUERY'

EXPORTING

QUERY = 'CD' "// Current Directory

IMPORTING

RETURN = H_PATH.

CONCATENATE FILE_NAME '.pdf' INTO FILE_NAME.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

DEF_FILENAME = FILE_NAME

DEF_PATH = H_PATH

MASK = H_MASK

MODE = 'O'

IMPORTING

FILENAME = FILENAME"dbname

EXCEPTIONS

INV_WINSYS = 1

NO_BATCH = 2

SELECTION_CANCEL = 3

SELECTION_ERROR = 4

OTHERS = 5.

ENDFORM. " GET_PATH

<REMOVED BY MODERATOR>

Edited by: Alvaro Tejada Galindo on Mar 5, 2008 9:50 AM

0 Kudos

dear sharad,

can you please tell me what is the reason for geting the error like "data base error" unable to read from kpro" even i am getting the same error

Former Member
0 Kudos

answered

Former Member
0 Kudos

dear sharad,

can you please tell me why is that data base error occurs?like unable to pick up from the database,unable to read from KPRO.because even i am facing this problem

Former Member
0 Kudos

answered