09-26-2008 7:57 AM
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.
09-26-2008 8:04 AM
hai,
we have standard report RSTXPDFT4 to convert to pdf use this and download it .
shan.
09-26-2008 8:05 AM
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.
09-26-2008 8:11 AM
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.
09-26-2008 11:04 AM
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
10-27-2009 1:31 AM
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