cancel
Showing results for 
Search instead for 
Did you mean: 

problem regarding script to pdf conversion

Former Member
0 Kudos

Hi Experts ,

                  i am working on script , which i want to convert into pdf .

i am using the following coding.

*To specify Printername*

struct-tddest = 'LP'.

*To specify no Print Preview*

struct-tdnoprev = 'X'.

*To access the SAP Script output in OTF format*

struct-tdgetotf = 'X'.

PERFORM open_form .

*******************

CALL FUNCTION 'OPEN_FORM'

EXPORTING

*   APPLICATION                       = 'TX'

*   ARCHIVE_INDEX                     =

*   ARCHIVE_PARAMS                    =

   DEVICE                            = 'PRINTER'

   DIALOG                            = 'SPACE'

   FORM                              = 'ZEXCISEINVPRN'

   LANGUAGE                          = SY-LANGU

   OPTIONS                           = STRUCT

*   MAIL_SENDER                       =

*   MAIL_RECIPIENT                    =

*   MAIL_APPL_OBJECT                  =

*   RAW_DATA_INTERFACE                = '*'

*   SPONUMIV                          =

IMPORTING

   LANGUAGE                          = sy-langu

*   NEW_ARCHIVE_PARAMS                =

   RESULT                            = IT_CONT

EXCEPTIONS

********************

PERFORM close_form .

******************************

CALL FUNCTION 'CLOSE_FORM'

IMPORTING

*   RESULT                         =

*   RDI_RESULT                     =

TABLES

   OTFDATA                        = DATAB[]

********************************

PERFORM CONVERT_PDF.

******************************

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

   FORMAT                      = 'PDF'

**   MAX_LINEWIDTH               = 132

**   ARCHIVE_INDEX               = ' '

**   COPYNUMBER                  = 0

**   ASCII_BIDI_VIS2LOG          = ' '

**   PDF_DELETE_OTFTAB           = ' '

**   PDF_USERNAME                = ' '

* IMPORTING

   BIN_FILESIZE                = BINFILESIZE

**   BIN_FILE                    =

*  TABLES

    otf                         = DATAB[]

    lines                       = PDFTAB[]          ( chines like char , laguage pass to fm is "E" )

CALL METHOD cl_gui_frontend_services=>file_save_dialog

*  EXPORTING

*    window_title         =

*    default_extension    =

*    default_file_name    =

*    with_encoding        =

*    file_filter          =

*    initial_directory    =

*    prompt_on_overwrite  = 'X'

  CHANGING

    filename             =  FILE_NAME

    path                 =  FILE_PATH

    fullpath             =  FULL_PATH

*    user_action          =

*    file_encoding        =

  EXCEPTIONS

    cntl_error           = 1

    error_no_gui         = 2

    not_supported_by_gui = 3

    others               = 4

        .

IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

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

ENDIF.



concatenate FULL_PATH '.pdf' into full_path.



****DOWNLOAD



CALL FUNCTION 'GUI_DOWNLOAD'

  EXPORTING

    BIN_FILESIZE                    = BINFILESIZE

    filename                        =  FULL_PATH   "FILE_NAME  " 'D:\T1.pdf'

   FILETYPE                        = 'BIN'

*   APPEND                          = 'X'

*   WRITE_FIELD_SEPARATOR           = ' '

*   HEADER                          = '00'

*   TRUNC_TRAILING_BLANKS           = ' '

*   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                        = PDFTAB[]

*   FIELDNAMES                      =

EXCEPTIONS

**********************************

currently using ECC6

1. in debugger when we check the "convert_pdf " function module

the output table show chines like character in pdftab[].

2. The pdf format is generated but no values dispaly in the pdf file.

    only text which are defined in the script like " delivery no"  "date " etc.

shows but no data .

kindly help to solve the problem.

with thanks and regards,

vikas

Accepted Solutions (0)

Answers (2)

Answers (2)

former_member209120
Active Contributor
0 Kudos

Hi vikas sharma,

Refer this document to script to PDF

http://scn.sap.com/docs/DOC-10063

sivaganesh_krishnan
Contributor
0 Kudos

HI VIkas,

you have to include the FM WRITE_FORM , you must first pass the value using this method for getting the values in the output.

Make sure to Have the write_form function module. search out for how to implement it. there are lots of answers for it.

Refer:SAP script WRITE_FORM | SCN

Regards,

Sivaganesh

Former Member
0 Kudos

hi sivaganesh,

                          i am getting the output if i am not going to convert this into pdf.

and i have also used the WRITE_FORM FM   in my coding...

but on pdf i am not getting data.  and if i remove the pdf coding part i am getting the data.

so kindly help..

thanks

vikas

sivaganesh_krishnan
Contributor
0 Kudos

HI vikas,

I have worked on your requirement and its working fine for me. I have attached my sample program to download the sapscript to pdf . check the program out.

TABLES vbak.
TYPES:BEGIN OF ty_vbak,
  vbeln TYPE VBELN_VA,
  AUART TYPE AUART,
  VKORG TYPE VKORG,
  NETWR TYPE NETWR_AK,
  WAERK TYPE WAERK,
  END OF ty_vbak.
  TYPES:Begin of ty_vbap,
    POSNR TYPE POSNR_VA,
    MATNR TYPE MATNR,
    ARKTX TYPE ARKTX,
    KWMENG TYPE KWMENG,
    VRKME TYPE VRKME,
    END OF ty_vbap.
    DATA: x_vbak TYPE  ty_vbak,
          t_vbap TYPE TABLE OF ty_vbap,
          x_vbap TYPE ty_vbap.
DATA: struct TYPE ITCPO.
DATA: PDFTAB TYPE TABLE OF TLINE WITH HEADER LINE,
DATAB TYPE TABLE OF ITCOO WITH HEADER LINE.
DATA: BINFILESIZE TYPE I,
FILE_NAME TYPE STRING,
FILE_PATH TYPE STRING,
FULL_PATH TYPE STRING.

SELECTION-SCREEN BEGIN OF BLOCK b1.
  PARAMETERS p_vbeln TYPE VBELN_VA MATCHCODE OBJECT ZHELP.
  SELECTION-SCREEN end of BLOCK b1.
  START-OF-SELECTION.

  struct-tddest = 'LP01'.
*To specify no Print Preview*
struct-tdnoprev = 'X'.
*To access the SAP Script output in OTF format*
struct-tdgetotf = 'X'.
    PERFORM open.
  SELECT SINGLE vbeln
                auart
                vkorg
                netwr
                waerk FROM vbak INTO  x_vbak
                                WHERE vbeln EQ p_vbeln.

select     POSNR
           MATNR
           ARKTX
           KWMENG
           VRKME FROM vbap INTO TABLE t_vbap WHERE vbeln EQ p_vbeln.
PERFORM write USING space 'HEADER'  .
PERFORM write USING space 'TABLE'  .


PERFORM write USING 'MAIN' 'SALES'.
LOOP AT t_vbap INTO x_vbap.

PERFORM write USING 'MAIN' 'SALES ITEM'.

ENDLOOP.

PERFORM close.


*&---------------------------------------------------------------------*
*&      Form  OPEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form OPEN .
CALL FUNCTION 'OPEN_FORM'
EXPORTING
*   APPLICATION                       = 'TX'
*   ARCHIVE_INDEX                     =
*   ARCHIVE_PARAMS                    =
*   DEVICE                            = 'PRINTER'
   DIALOG                            = space
   FORM                              = 'Z02FORM'
*   LANGUAGE                          = SY-LANGU
   OPTIONS                           = struct
*   MAIL_SENDER                       =
*   MAIL_RECIPIENT                    =
*   MAIL_APPL_OBJECT                  =
*   RAW_DATA_INTERFACE                = '*'
*   SPONUMIV                          =
* IMPORTING
*   LANGUAGE                          =
*   NEW_ARCHIVE_PARAMS                =
*   RESULT                            =
EXCEPTIONS
   CANCELED                          = 1
   DEVICE                            = 2
   FORM                              = 3
   OPTIONS                           = 4
   UNCLOSED                          = 5
   MAIL_OPTIONS                      = 6
   ARCHIVE_ERROR                     = 7
   INVALID_FAX_NUMBER                = 8
   MORE_PARAMS_NEEDED_IN_BATCH       = 9
   SPOOL_ERROR                       = 10
   CODEPAGE                          = 11
   OTHERS                            = 12
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.


endform.                    " OPEN
*&---------------------------------------------------------------------*
*&      Form  WRITE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form WRITE USING VALUE(p_window)
      VALUE(p_element) .
CALL FUNCTION 'WRITE_FORM'
EXPORTING
   ELEMENT                        = p_element
*   FUNCTION                       = 'SET'
*   TYPE                           = 'BODY'
   WINDOW                         = p_window
* IMPORTING
*   PENDING_LINES                  =
EXCEPTIONS
   ELEMENT                        = 1
   FUNCTION                       = 2
   TYPE                           = 3
   UNOPENED                       = 4
   UNSTARTED                      = 5
   WINDOW                         = 6
   BAD_PAGEFORMAT_FOR_PRINT       = 7
   SPOOL_ERROR                    = 8
   CODEPAGE                       = 9
   OTHERS                         = 10
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.


endform.                    " WRITE
*&---------------------------------------------------------------------*
*&      Form  CLOSE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form CLOSE .
CALL FUNCTION 'CLOSE_FORM'
* IMPORTING
*   RESULT                         =
*   RDI_RESULT                     =
TABLES
   OTFDATA                        = DATAB[]
EXCEPTIONS
   UNOPENED                       = 1
   BAD_PAGEFORMAT_FOR_PRINT       = 2
   SEND_ERROR                     = 3
   SPOOL_ERROR                    = 4
   CODEPAGE                       = 5
   OTHERS                         = 6
          .

  CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
* MAX_LINEWIDTH = 132
* ARCHIVE_INDEX = ' '
*© 2006 SAP AG 9
* COPYNUMBER = 0
* ASCII_BIDI_VIS2LOG = ' '
* PDF_DELETE_OTFTAB = ' '
IMPORTING
BIN_FILESIZE = BINFILESIZE
* BIN_FILE =
TABLES
otf = DATAB[]
lines = PDFTAB[]
* EXCEPTIONS
* ERR_MAX_LINEWIDTH = 1
* ERR_FORMAT = 2
* ERR_CONV_NOT_POSSIBLE = 3
* ERR_BAD_OTF = 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.
*****************TAKING THE DOWNLOAD FILE PATH AS USER INPUT*************************
CALL METHOD cl_gui_frontend_services=>file_save_dialog
* EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILE_NAME =
* FILE_FILTER =
* INITIAL_DIRECTORY =
* WITH_ENCODING =
* PROMPT_ON_OVERWRITE = 'X'
CHANGING
*© 2006 SAP AG 10
filename = FILE_NAME
path = FILE_PATH
fullpath = FULL_PATH
* USER_ACTION =
* FILE_ENCODING =
* EXCEPTIONS
* CNTL_ERROR = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
* others = 4
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
****************************DOWNLOADING THE PDF DATA**********************************
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = binfilesize
FILENAME = full_path
FILETYPE = 'BIN'
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
*© 2006 SAP AG 11
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* IMPORTING
* FILELENGTH =
tables
data_tab = PDFTAB[]
* 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.
* Implement suitable error handling here


endform.                    " CLOSE

Hope this Helps

Regards,

Sivaganesh.

Former Member
0 Kudos

thanks siva.

problem solved....