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: 

how to open PDF file by ABAP

Former Member
0 Kudos

Help~~~~~~~~~~~~~~~

I want to develop a ABAP program that can open a PDF file.

how to solve this problem? Can anyone help me ?

thanks!!!

1 ACCEPTED SOLUTION

former_member188827
Active Contributor
0 Kudos

check deo program:SAP_PDF_VIEWER_DEMO

9 REPLIES 9

former_member188827
Active Contributor
0 Kudos

check deo program:SAP_PDF_VIEWER_DEMO

0 Kudos

hi:

when I run this program, it has the error like this:

Dynpro does not exist.

how to solve it?

thanks

Former Member
0 Kudos

hii,

you can display any kind of document like PDF,DOC,TIF etc.

by using the function module:

CALL FUNCTION 'ARCHIVOBJECT_DISPLAY'.

regards,

Shweta

Former Member
0 Kudos

Hi,

Try this link, I hope it will help you.

Regards,

Nidhi Kothiyal

Former Member
0 Kudos

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 


Former Member
0 Kudos

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

0 Kudos

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

0 Kudos

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.

Former Member
0 Kudos

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