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

pdf

Former Member
0 Likes
653

Hi to all ,

Can any body tell me how to transfer data from internal table to pdf file & excel file ?

Thanks a lot.

5 REPLIES 5
Read only

Former Member
0 Likes
631

Hi Rani,

use FM ALSM_EXCEL_TO_INTERNAL_TABLE to convert Internal Table to EXCEL.

Eg:

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = 'C:\sunil.xls'
i_begin_col = 1
i_begin_row = 1
i_end_col = 8
i_end_row = 65535
TABLES
intern = itab.

and to Convert to PDF

First Call FM CONVERT_OTF

and then Call FM GUI_DOWNLOAD.

Regards,

Sunil.

Read only

0 Likes
631

hi,

Thanks for reply.

can u send me sample program. what is OTF structure? I went to se11 & saw strut .but bit confused .

will appreciate if u send me sample code.

Thanks.

Read only

0 Likes
631

Hi Rani,

Please check this program

report ZPDFPRNT no standard page heading.
TABLES: TST05.

DATA: BEGIN OF ITAB OCCURS 0,
TLINE(255),
END OF ITAB.

DATA: BEGIN OF ITAB2 OCCURS 0,
TLINE(255),
END OF ITAB2.

DATA: BEGIN OF ITAB3 OCCURS 0,
TLINE(255),
END OF ITAB3.

DATA: BEGIN OF OTF_TAB OCCURS 0,
TLINE(255),
END OF OTF_TAB.

DATA: BEGIN OF OTF_TAB_DUMMY OCCURS 0,
TLINE(255),
END OF OTF_TAB_DUMMY.
DATA: LEN_OUT_DUMMY LIKE SOOD-OBJLEN.
DATA: BEGIN OF ITAB2_DUMMY OCCURS 0,
TLINE(255),
END OF ITAB2_DUMMY.
DATA: NUMBER_OF_PAGE TYPE I.

DATA: LEN_OUT LIKE SOOD-OBJLEN.

DATA: LEN_IN LIKE SOOD-OBJLEN.

DATA: BEGIN OF DATA_SET OCCURS 200,
DATA_LENGTH(5),
PRECOL(1),
DATA_LINE(1000),
END OF DATA_SET.

DATA: BEGIN OF OTF_PAGE OCCURS 200.
INCLUDE STRUCTURE ITCOO.
DATA: END OF OTF_PAGE,
OTF_PAGES TYPE P,
OTF_MAX_PAGES TYPE P VALUE 10.
DATA: BEGIN OF OTF_CONTROL.
INCLUDE STRUCTURE ITCPP.
DATA: END OF OTF_CONTROL,
FORCE_RAW_OTF VALUE ' ',
L100_EXCLUDE(4) VALUE 'OTFJ',
BEGIN OF OTF_PAGE_INDEX OCCURS 20,
LINE_NUM TYPE P,
END OF OTF_PAGE_INDEX,
CUR_OTF_PAGE VALUE 1.

DATA: DATA_SET_LINECOUNT TYPE P,
DATA_SET_MAX_LINES TYPE P VALUE 100000,
DATA_SET_VALID TYPE C VALUE ' ',
DATA_SET_IS_OTF TYPE C VALUE ' ',
DATA_SET_LENGTH(5) TYPE C,
LINE_SPECIAL LIKE DATA_SET-DATA_LINE,
NEED_LINE_SPECIAL TYPE C,
DSN_TYPE(8) TYPE C.

DATA: FCODE(4) TYPE C,
DATE TYPE D,
TIME TYPE T,
RC(10) TYPE C,
ERRMSG(100) TYPE C,
PRINTJOB_CREATED(1) TYPE C,
PRINTJOB_CLEARED(1) TYPE C,
PRINTJOB_LIST(1) TYPE C,
DISPLAY_MODE(1) TYPE C,
LINE_MAX TYPE P VALUE '100000',
NEW_SCREEN_300(1) TYPE C,
MULTI_PRINT_300(1) TYPE C,
PRINT_ALL_300(1) TYPE C,
PRINT_COUNT_300 TYPE I,
SHOW_USER_100 TYPE C VALUE ' ',
ERROR_DISPLAY_LEVEL TYPE C VALUE '9',
NEXT_ERROR_DISPLAY_LEVEL TYPE C,
PREV_ERROR_DISPLAY_LEVEL TYPE C,
START_300(5) TYPE C, END_300(5) TYPE C,
SEP LIKE SY-VLINE,
DEFAULT_PRI,
TSP01_BUF LIKE TSP01,
TSP01_CURLINE LIKE SY-STARO,
TSP01_CURCOL LIKE SY-CUCOL,
TSP01_CURROW LIKE SY-CUROW.

DATA: BEGIN OF DATA_SET_LINE,
DATA_LENGTH(5),
PRECOL(1),
DATA_LINE(1000),
END OF DATA_SET_LINE.

DATA: STATUS LIKE SY-SUBRC.
DATA: WGF_MESSAGE(80).
DATA: H_PATH(20) TYPE C.
DATA: H_MASK(20) TYPE C VALUE ',*.pdf ,*.pdf. '.
DATA: FILE_NAME(20).
DATA: FILENAME LIKE RLGRAP-FILENAME.
DATA: IMPORT(132).

PARAMETERS: IDENT(5) TYPE C.

PERFORM GET_OTF_TAB.

LOOP AT OTF_PAGE.
OTF_TAB-TLINE = OTF_PAGE.
APPEND OTF_TAB.
ENDLOOP.

CLEAR NUMBER_OF_PAGE.
LOOP AT OTF_TAB WHERE TLINE = '//'.
NUMBER_OF_PAGE = NUMBER_OF_PAGE + 1.
ENDLOOP.

DO NUMBER_OF_PAGE TIMES.
CLEAR LEN_OUT_DUMMY.
CLEAR OTF_TAB_DUMMY. REFRESH OTF_TAB_DUMMY.
CLEAR ITAB2_DUMMY. REFRESH ITAB2_DUMMY.

LOOP AT OTF_TAB.
OTF_TAB_DUMMY = OTF_TAB.
APPEND OTF_TAB_DUMMY.
IF OTF_TAB-TLINE = '//'.
EXIT.
ENDIF.
ENDLOOP.

LOOP AT OTF_TAB_DUMMY.
DELETE OTF_TAB INDEX SY-INDEX.
ENDLOOP.

CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF'
EXPORTING
FORMAT_SRC = 'OTF'
FORMAT_DST = 'PDF'
DEVTYPE = 'ZHPLJ4'
LEN_IN = LEN_IN
IMPORTING
LEN_OUT = LEN_OUT_DUMMY
TABLES
CONTENT_IN = OTF_TAB_DUMMY
CONTENT_OUT = ITAB2_DUMMY
EXCEPTIONS
ERR_CONV_FAILED = 1
OTHERS = 2.

LOOP AT ITAB2_DUMMY.
ITAB2 = ITAB2_DUMMY.
APPEND ITAB2.
ENDLOOP.

PERFORM GET_PATH USING 'PDF_FILE'.

CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FILENAME
FILETYPE = 'BIN'
BIN_FILESIZE = LEN_OUT_DUMMY
TABLES
DATA_TAB = ITAB2_DUMMY
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.

LEN_OUT = LEN_OUT + LEN_OUT_DUMMY.
ENDDO.

*PERFORM GET_PATH USING 'PDF_FILE'.
*
*CALL FUNCTION 'WS_DOWNLOAD'
* EXPORTING
* FILENAME = FILENAME
* FILETYPE = 'BIN'
* BIN_FILESIZE = LEN_OUT
* TABLES
* DATA_TAB = ITAB2
* 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_OTF_TAB
*&---------------------------------------------------------------------*
FORM GET_OTF_TAB.

DATA: PART(4) VALUE '0001',
BEGIN OF MSG,
A(40),
B(40),
C(40),
END OF MSG.

REFRESH DATA_SET.
DATA_SET_LINECOUNT = 0.
DATA_SET_IS_OTF = ' '.
OTF_PAGES = 0.
REFRESH OTF_PAGE_INDEX.
CALL 'RSPOACSD'.

SELECT * FROM TST05 WHERE DTHREAD = 'X'.

CALL 'RSPOAOSD'
ID 'ID' FIELD IDENT
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_VALID = 'X'.
DATA_SET_MAX_LINES = ( LINE_MAX * '1.1' ) + 100.
DO.
CLEAR: DATA_SET_LINE, DATA_SET_LENGTH.
CALL 'RSPOARSD'
ID 'BUFF' FIELD 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 IDENT
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 IDENT
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: DATA_SET_LINE, DATA_SET_LENGTH.
CALL 'RSPOARSD'
ID 'BUFF' FIELD 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.

DATA_SET = DATA_SET_LINE.
IF NOT ( DATA_SET_LENGTH IS INITIAL ).
DATA_SET-DATA_LENGTH = DATA_SET_LENGTH - 1.
ENDIF.
APPEND DATA_SET.
ADD 1 TO DATA_SET_LINECOUNT.
IF DATA_SET_IS_OTF = ' '.
IF DATA_SET_LINECOUNT >= DATA_SET_MAX_LINES.
CLEAR DATA_SET.
APPEND DATA_SET.
MOVE '----------' TO DATA_SET-DATA_LINE.
APPEND DATA_SET.
CLEAR DATA_SET.
APPEND 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.
DATA_SET-DATA_LINE = MSG.
APPEND DATA_SET.
EXIT.
ENDIF.
ELSE.
MOVE DATA_SET_LINE-DATA_LINE TO OTF_PAGE.
APPEND OTF_PAGE.
IF 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 OTF_PAGE(2) = 'OP'.
OTF_PAGE_INDEX-LINE_NUM = DATA_SET_LINECOUNT.
APPEND 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. " GET_OTF_TAB

*&---------------------------------------------------------------------*
*& 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

Please check this link

http://www.sapdevelopment.co.uk/reporting/rep_spooltopdf.htm

Hope this helps....

reward if helpful

raam

Read only

Former Member
0 Likes
631

Hi Rani,

You can have a look at this standard prog:

RSTXPDFT4.

not exactly but u will get some hint.

thanks

abdul

Read only

Former Member
0 Likes
631

Check this example....here we can transfer the file from file to itab and itab to file

report ztest.

data: begin of itab occurs 0,

field(256),

end of itab.

data: dsn(100) value '/usr/sap/xfr/FIS/testpdf',

length like sy-tabix,

lengthn like sy-tabix.

call function 'GUI_UPLOAD'

exporting

filename = 'c:\temp\test.pdf'

filetype = 'BIN'

importing

filelength = length

tables

data_tab = itab.

open dataset dsn for output in binary mode.

loop at itab.

transfer itab-field to dsn.

endloop.

close dataset dsn.

clear itab.

refresh itab.

To crosscheck if it went well

open dataset dsn for input in binary mode.

do.

read dataset dsn into itab-field.

if sy-subrc = 0.

append itab.

else.

exit.

endif.

enddo.

call function 'GUI_DOWNLOAD'

exporting

filename = 'c:\temp\testn.pdf'

filetype = 'BIN'

bin_filesize = length

importing

filelength = lengthn

tables

data_tab = itab.

regards,

venkat