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: 

Print a PDF document from ABAP

gajendra_bhakuni
Active Participant
0 Kudos

Hello colleague,

Could you pls. help me with the following requirement:

We need to print a PDF document on the local desktop to the local (default) printer:

On executing the program the document should open, get printed and get closed.

There are some OLE commands (for instantiating the OLE object and printing). We have got the code for word document:

CREATE OBJECT h_word 'WORD.BASIC'.

call method of h_word 'AppShow'.

call method of h_word 'FILEOPEN' exporting #1 = e_filename1.

call method of h_word 'FILEPRINT'.

call method of h_word 'FILECLOSE'.

call method of h_word 'FILEEXIT'.

free object h_word.

The above code print the word document. We need similar code for PDF document.

For this the PDF document needs to be registered in SOLE transaction. What should be the entry in SOLE transaction to register the PDF document?

Any inputs in this regard will help us a lot.

Thanks.

Best Regards,

Gajendra.

5 REPLIES 5

Former Member
0 Kudos

hai,

we have standard report RSTXPDFT4 to convert to pdf use this and download it .

shan.

Former Member
0 Kudos

Hi

Have a look at the code.. i think this will fit most of ur requirenent.

Focus on the Bold parts of code... it would be easey to understand..

REPORT ZUPLOAD MESSAGE-ID ZDLD.

DATA : ANSWER(1) TYPE C.

DATA : BEGIN OF T_FILES OCCURS 0,

PATH(50) TYPE C,

FILENAME(50) TYPE C,

END OF T_FILES.

DATA : FNAME TYPE STRING.

DATA : FNAME_EXEC(30) TYPE C.

DATA : FNAME_DEL TYPE LOCALFILE.

DATA : BEGIN OF T_TEXT OCCURS 0,

TEXTLINE(999) TYPE C,

END OF T_TEXT.

DATA: BEGIN OF SEARCHPOINTS OCCURS 10,

DIRNAME TYPE DIRNAME_AL11, " name of directory.

SP_NAME TYPE FILENAME_AL11," name of entry. (may end with *)

SP_CS(10) TYPE C, " ContainsString pattern for name

END OF SEARCHPOINTS.

DATA: BEGIN OF FILE,

DIRNAME TYPE DIRNAME_AL11, " name of directory

NAME TYPE FILENAME_AL11," name of entry

TYPE(10) TYPE C, " type of entry.

LEN(8) TYPE P, " length in bytes.

OWNER(8) TYPE C, " owner of the entry.

MTIME(6) TYPE P, " last mod.date, sec since 1970

MODE(9) TYPE C, " like "rwx-r-x--x": prot. mode

USEABLE(1) TYPE C,

SUBRC(4) TYPE C,

ERRNO(3) TYPE C,

ERRMSG(40) TYPE C,

MOD_DATE TYPE D,

MOD_TIME(8) TYPE C, " hh:mm:ss

SEEN(1) TYPE C,

CHANGED(1) TYPE C,

END OF FILE.

DATA: BEGIN OF FILE_LIST OCCURS 100,

DIRNAME TYPE DIRNAME_AL11, " name of directory

NAME TYPE FILENAME_AL11," name of entry

TYPE(10) TYPE C, " type of entry.

LEN(8) TYPE P, " length in bytes.

OWNER(8) TYPE C, " owner of the entry.

MTIME(6) TYPE P, " last mod. date, sec since 1970

MODE(9) TYPE C, " like "rwx-r-x--x": prot. mode

USEABLE(1) TYPE C,

SUBRC(4) TYPE C,

ERRNO(3) TYPE C,

ERRMSG(40) TYPE C,

MOD_DATE TYPE D,

MOD_TIME(8) TYPE C, " hh:mm:ss

SEEN(1) TYPE C,

CHANGED(1) TYPE C,

END OF FILE_LIST.

DATA : A_DIR_NAME LIKE SEARCHPOINTS-DIRNAME,

A_GENERIC_NAME TYPE FILENAME_AL11.

CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'DIR_SAPUSERS'

ID 'VALUE' FIELD SEARCHPOINTS-DIRNAME.

A_DIR_NAME = SEARCHPOINTS-DIRNAME.

*A_GENERIC_NAME = searchpoints-SP_NAME.

A_GENERIC_NAME = '*'.

CALL 'C_DIR_READ_START' ID 'DIR' FIELD A_DIR_NAME

ID 'FILE' FIELD A_GENERIC_NAME

ID 'ERRNO' FIELD FILE-ERRNO

ID 'ERRMSG' FIELD FILE-ERRMSG.

DO.

CALL 'C_DIR_READ_NEXT'

ID 'TYPE' FIELD FILE-TYPE

ID 'NAME' FIELD FILE-NAME

ID 'LEN' FIELD FILE-LEN

ID 'OWNER' FIELD FILE-OWNER

ID 'MTIME' FIELD FILE-MTIME

ID 'MODE' FIELD FILE-MODE

ID 'ERRNO' FIELD FILE-ERRNO

ID 'ERRMSG' FIELD FILE-ERRMSG.

IF SY-SUBRC >= 2.

EXIT.

ENDIF.

IF SY-SUBRC = 0.

CLEAR T_FILES.

  • CONCATENATE A_DIR_NAME '/' FILE-NAME INTO FNAME.

MOVE FILE-NAME TO T_FILES-FILENAME.

MOVE A_DIR_NAME TO T_FILES-PATH.

APPEND T_FILES.

WRITE 😕 T_FILES-PATH , T_FILES-FILENAME .

HIDE : T_FILES-FILENAME , T_FILES-PATH.

ENDIF.

ENDDO.

CALL 'C_DIR_READ_FINISH'

ID 'ERRNO' FIELD FILE_LIST-ERRNO

ID 'ERRMSG' FIELD FILE_LIST-ERRMSG.

AT LINE-SELECTION.

  • WRITE : T_FILES-FILENAME.

OPEN DATASET T_FILES-FILENAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.

IF SY-SUBRC <> 0.

EXIT.

ENDIF.

DO.

READ DATASET T_FILES-FILENAME INTO T_TEXT-TEXTLINE.

APPEND T_TEXT-TEXTLINE TO T_TEXT. IF SY-SUBRC <> 0.

EXIT.

ENDIF.

ENDDO.

CLOSE DATASET T_FILES-FILENAME.

if T_FILES-FILENAME cp '*.txt'.

CONCATENATE 'c:/drl/SAVED/SAVED' sy-uzeit '.txt' inTO FNAME.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

  • BIN_FILESIZE =

FILENAME = FNAME

FILETYPE = 'ASC'

  • APPEND = ' '

  • WRITE_FIELD_SEPARATOR = ' '

  • HEADER = '00'

TRUNC_TRAILING_BLANKS = 'x'

  • WRITE_LF = 'X'

  • COL_SELECT = ' '

  • COL_SELECT_MASK = ' '

  • DAT_MODE = ' '

  • CONFIRM_OVERWRITE = ' '

  • NO_AUTH_CHECK = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • WRITE_BOM = ' '

  • TRUNC_TRAILING_BLANKS_EOL = 'X'

  • WK1_N_FORMAT = ' '

  • WK1_N_SIZE = ' '

  • WK1_T_FORMAT = ' '

  • WK1_T_SIZE = ' '

  • WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE

  • SHOW_TRANSFER_STATUS = ABAP_TRUE

  • IMPORTING

  • FILELENGTH =

TABLES

DATA_TAB = T_TEXT

  • FIELDNAMES =

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 ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

MOVE FNAME TO FNAME_EXEC.

MOVE FNAME TO FNAME_DEL.

CALL FUNCTION 'GUI_EXEC'

EXPORTING

COMMAND = 'NOTEPAD'

PARAMETER = FNAME_EXEC

    • IMPORTING*

    • RETURNCODE =* .

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

EXPORTING

DEFAULTOPTION = 'Y'

TEXTLINE1 = 'WANT TO SAVE FILE?'

    • TEXTLINE2 = ' '*

TITEL = 'SAVE'

    • START_COLUMN = 25*

    • START_ROW = 6*

    • CANCEL_DISPLAY = 'X'*

IMPORTING

ANSWER = ANSWER .

IF ANSWER <> 'J'.

CALL FUNCTION 'GUI_DELETE_FILE'

EXPORTING

FILE_NAME = fname_DEL

EXCEPTIONS

FAILED = 1

OTHERS = 2.

IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ELSE.

MESSAGE : I000(ZDLD).

ENDIF.

else.

MESSAGE : I001(ZDLD).

endif.

if T_FILES-FILENAME cp '*.doc'.

else.

MESSAGE : I001(ZDLD).

endif.

0 Kudos

Hi,

Thanks for your inputs.

But my requirement is just to print the document on the local pc. We should not download it to SAP memory and create spool request to print it.

The document should be opened, get printed and get closed.

Best Regards,

Gajendra.

Former Member
0 Kudos

Hi Gajendra,

First see in transaction SOLE whether PDF OLE application is maintained.

You can have a look at OLE for demo for excel and word.

If you debug it then you will get the clear picture what to do.

Cheers,

KD

Edited by: Krutiman Das on Sep 26, 2008 11:35 AM

Former Member
0 Kudos

Hi Gajendra ,

can you please explain me how to print document.

I am also having same problem, i want to print document or pdf directly to local printer from the sap server in background

Is it possible?

As i found that with unix command in ABAP program can print how i do not know?

Please update me any boday knows unix program to print pdf or document in the server.

THanks,

hari