08-20-2009 7:35 AM
Help~~~~~~~~~~~~~~~
I want to develop a ABAP program that can open a PDF file.
how to solve this problem? Can anyone help me ?
thanks!!!
08-20-2009 7:41 AM
08-20-2009 7:41 AM
08-20-2009 10:27 AM
hi:
when I run this program, it has the error like this:
Dynpro does not exist.
how to solve it?
thanks
08-20-2009 7:43 AM
hii,
you can display any kind of document like PDF,DOC,TIF etc.
by using the function module:
CALL FUNCTION 'ARCHIVOBJECT_DISPLAY'.
regards,
Shweta
08-20-2009 8:29 AM
08-20-2009 9:02 AM
Hi,
Please find the below code and create a screen number 100. Add a custom container. it will solve the problem.
REPORT ZSAP_PDF_VIEWER.
DATA: LT_PDF TYPE TABLE OF TLINE,
LS_PDF LIKE LINE OF LT_PDF,
LV_URL TYPE CHAR255,
PDF_FSIZE TYPE I,
LV_CONTENT TYPE XSTRING,
LT_DATA TYPE STANDARD TABLE OF X255.
DATA : L_JOB_OUTPUT_INFO TYPE SSFCRESCL.
DATA : LS_CONTROL_PARAM TYPE SSFCTRLOP.
DATA : G_HTML_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
G_HTML_CONTROL TYPE REF TO CL_GUI_HTML_VIEWER.
DATA : P_VBELN TYPE VBELN_VL.
FIELD-SYMBOLS <FS_X> TYPE X.
INITIALIZATION.
LS_CONTROL_PARAM-GETOTF = 'X'.
LS_CONTROL_PARAM-NO_DIALOG = 'X'.
START-OF-SELECTION.
CALL FUNCTION '/1BCDWB/SF00000034'
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = LS_CONTROL_PARAM
P_VBELN = P_VBELN
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
IMPORTING
* DOCUMENT_OUTPUT_INFO = L_DOCUMENT_OUTPUT_INFO
JOB_OUTPUT_INFO = L_JOB_OUTPUT_INFO
* JOB_OUTPUT_OPTIONS = L_JOB_ OUTPUT_OPTIONS
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = PDF_FSIZE
TABLES
OTF = L_JOB_OUTPUT_INFO-OTFDATA
LINES = LT_PDF
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.
* convert pdf to xstring string
LOOP AT LT_PDF INTO LS_PDF.
ASSIGN LS_PDF TO <FS_X> CASTING.
CONCATENATE LV_CONTENT <FS_X> INTO LV_CONTENT IN BYTE MODE.
ENDLOOP.
CALL SCREEN 100.
MODULE STATUS_0100 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
CREATE OBJECT G_HTML_CONTAINER
EXPORTING
CONTAINER_NAME = 'PDF'.
CREATE OBJECT G_HTML_CONTROL
EXPORTING
PARENT = G_HTML_CONTAINER.
* Convert xstring to binary table to pass to the LOAD_DATA method
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = LV_CONTENT
TABLES
BINARY_TAB = LT_DATA.
* Load the HTML
CALL METHOD G_HTML_CONTROL->LOAD_DATA(
EXPORTING
TYPE = 'application'
SUBTYPE = 'pdf'
IMPORTING
ASSIGNED_URL = LV_URL
CHANGING
DATA_TABLE = LT_DATA
EXCEPTIONS
DP_INVALID_PARAMETER = 1
DP_ERROR_GENERAL = 2
CNTL_ERROR = 3
OTHERS = 4 ).
* Show it
CALL METHOD G_HTML_CONTROL->SHOW_URL( URL = LV_URL
IN_PLACE = 'X' ).
ENDMODULE. " STATUS_0100 OUTPUT
MODULE USER_COMMAND_0100 INPUT.
ENDMODULE. " USER_COMMAND_0100 INPUT
08-20-2009 10:41 AM
try this..
copy a pdf file named 'abc.pdf' on c drive.
and wtrite this code..
data flpath type string.
CALL METHOD cl_gui_frontend_services=>execute
EXPORTING
document = 'c:\abc.pdf'.
*minimized = 'X'.Regards,
Sumit
08-21-2009 8:56 AM
I write a program as follow, but it doesn' t work .
The error is " Dynpro does not exit ! "
Do you know how to modify it?
many thanks!!!
REPORT ZCJ052.
data: container type ref to cl_gui_custom_container,
pdf type ref to cl_gui_pdfviewer.
*ATA: ITAB TYPE TABLE OF ZSHAIL_T1 WITH HEADER LINE.
*ELECT * FROM ZSHAIL_T1 INTO TABLE ITAB.
call screen 100.
module STATUS_0100 output.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
if container is initial.
CREATE OBJECT container
EXPORTING
PARENT =
container_name = 'PDF'
STYLE =
LIFETIME = lifetime_default
REPID =
DYNNR =
NO_AUTODEF_PROGID_DYNNR =
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
others = 6
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT pdf
EXPORTING
parent = container
LIFETIME =
SHELLSTYLE =
AUTOALIGN =
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
others = 5
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD pdf->open_document
EXPORTING
url = 'file://D:\SP\shail''s files\my docs\ab4query.pdf'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
others = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endif.
endmodule. " STATUS_0100 OUTPUT
module USER_COMMAND_0100 input.
case sy-ucomm.
when 'EXIT'.
leave program.
endcase.
endmodule. " USER_COMMAND_0100 INPUT
10-30-2009 9:54 AM
hi, did you create a custom container in an CALL SCREEN statement???
Use :
CALL SCREEN 9001.
double click and it opens up screen painter.
create a custom container by selecting custom control name as 'PDF'.
then activate.
it should work now.
ags.
10-30-2009 9:33 AM
Hi Kbtomato,
From where you want to open file from application server or local pc.
option 1:
If local pc use:
Data: t_path type string.
t_path = ' D:\temp\xxxx.pdf'
CALL METHOD cl_gui_frontend_services=>execute
EXPORTING
document = T_PATH "Your File name
Option:2.
If it from server use
DATA : BEGIN OF GT_LINES OCCURS 0,
LINE TYPE X,
END OF GT_LINES.
open data set path for path input in binary mode
if sy-subrc = 0.
do.
Read dataset path into gt_lines.
if sy-subrc = 0.
append gt_lines
else.
exit.
endif.
enddo.
endif.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = T_PATH
FILETYPE = 'BIN'
TABLES
DATA_TAB = gt_lines[].
Now you get file to locl drive.
than now execute option 1.
Anything do simple.
Thanks,
Hari