cancel
Showing results for 
Search instead for 
Did you mean: 

how to Convert spool which is for smartform output to PDF?

Former Member
0 Kudos

how to Convert spool which is for smartform output to PDF?

CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF' is not working for smartform output,

if i use this there will be error spool not contain list output?

than whats the function module or way to convert spool contain smartform output to pdg?

regards,

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

<b>Procedure</b>

When we activate the Smartform the system generates a Function Module. The function module name we can get from Smartfrom screen from menubar

“Environment => Function Module_Name” . In a report we can get this Function module name by calling a Function Module standard SSF_FUNCTION_MODULE_NAME. This function module at runtime calls the FM generated by smartform, which in turn is then used to pass data from the report to Smartform. In the report given below the FM generated is “ /1BCDWB/SF00000152 ”. In this FM we can see CONTROL_PARAMETERS in import tab. This is of type SSFCTRLOP. We need to set the GETOTF of this to be ‘X’. Setting this field will activate the OTF field in smartform.

In export tab of the FM generated by smartform we can see a parameter JOB_OUTPUT_INFO which is of type SSFCRESCL. The SSFCRESCL is a structure of having one of fields as OTFDATA. OTFDATA in turn is a table of type ITCOO. ITCOO has two fields TDPRINTCOM and TDPRINTPAR. TDPRINTCOM represents command line of OTF format data and TDPRINTPAR contains command parameters of OTF format data.

In every Smartform output in OTF format, TDPRINTCOM begins and ends with ‘//’. ‘EP’ represents the end-of-page value for TDPRINTCOM field.

In addition we need to set few fields at the place where we call this FM(generated by smartform) in our program. While calling this FM we should set control_parameters, output_options, user_settings and job_putput_info fields as shown in program.

Once these settings are done we can call Function Module CONVERT_OTF to convert the OTF data of smartfrom output to PDF data format. Once these are done we can call method “cl_gui_fronted_services=>file_save_dialog” to specify the directory path where we want to save the output PDF file. After this we can call Function Module GUI_DOWNLOAD to download the PDF file on our local system.

<b>Here is a sample code of program to perform the function.</b>

SAMPLE CODE

[code]*&---------------------------------------------------------------------*
*& Report  ZAMIT_SMART_FORM_PDF                                        *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZAMIT_SMART_FORM_PDF                    .

data: carr_id type sbook-carrid,
      cparam type ssfctrlop,
      outop type ssfcompop,
      fm_name type rs38l_fnam.

DATA: tab_otf_data TYPE ssfcrescl,
      pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE,
      tab_otf_final TYPE itcoo OCCURS 0 WITH HEADER LINE,
      file_size TYPE i,
      bin_filesize TYPE i,
      FILE_NAME type string,
      File_path type string,
      FULL_PATH type string.

parameter:      p_custid type scustom-id default 1.
select-options: s_carrid for carr_id     default 'LH' to 'LH'.
parameter:      p_form   type tdsfname   default 'ZAMIT_SMART_FORM'.

data: customer    type scustom,
      bookings    type ty_bookings,
      connections type ty_connections.

start-of-selection.

***************** suppressing the dialog box for print preview****************************
outop-tddest = 'LP01'.
cparam-no_dialog = 'X'.
cparam-preview = SPACE.
cparam-getotf = 'X'.

  select single * from scustom into customer where id = p_custid.
  check sy-subrc = 0.


  select * from sbook   into table bookings
           where customid = p_custid
           and   carrid in s_carrid
           order by primary key.


  select * from spfli into table connections
           for all entries in bookings
           where carrid = bookings-carrid
           and   connid = bookings-connid
           order by primary key.



  call function 'SSF_FUNCTION_MODULE_NAME'
       exporting  formname           = p_form
*                 variant            = ' '
*                 direct_call        = ' '
       importing  fm_name            = fm_name
       exceptions no_form            = 1
                  no_function_module = 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.
    exit.
  endif.



* calling the generated function module
  call function fm_name
       exporting
*                 archive_index        =
*                 archive_parameters   =
                 control_parameters   = cparam
*                 mail_appl_obj        =
*                 mail_recipient       =
*                 mail_sender          =
                 output_options       =  outop
                 user_settings        = SPACE
                 bookings             = bookings
                  customer             = customer
                  connections          = connections
      importing
*                 document_output_info =
                 job_output_info      = tab_otf_data
*                 job_output_options   =
       exceptions formatting_error     = 1
                  internal_error       = 2
                  send_error           = 3
                  user_canceled        = 4
                  others               = 5.

  if sy-subrc <> 0.
*   error handling
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.


  tab_otf_final[] = tab_otf_data-otfdata[].



  CALL FUNCTION 'CONVERT_OTF'
 EXPORTING
   format                      = 'PDF'
   max_linewidth               = 132
*   ARCHIVE_INDEX               = ' '
*   COPYNUMBER                  = 0
*   ASCII_BIDI_VIS2LOG          = ' '
 IMPORTING
   bin_filesize                = bin_filesize
*   BIN_FILE                    =
  TABLES
    otf                         = tab_otf_final
    lines                       = pdf_tab
 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.




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
    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 converted PDF data to your local PC********

CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
   bin_filesize                    = bin_filesize
   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                        = ' '
*   IGNORE_CERR                     = ABAP_TRUE
*   REPLACEMENT                     = '#'
*   WRITE_BOM                       = ' '
*   TRUNC_TRAILING_BLANKS_EOL       = 'X'
 IMPORTING
   filelength                      = file_size
  TABLES
    data_tab                        = pdf_tab
*   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.

ENDIF.

[/code]

Thanks and Regards,

Pavankumar

Former Member
0 Kudos

hi

the both the way will works for you(as pavan and me told) , but if you want it to be done automatically, you hve to pass the file name in the program, witout calling the CALL METHOD cl_gui_frontend_services=>file_save_dialog.

you r problem will be solved

ferry_lianto
Active Contributor
0 Kudos

Hi,

SmartForms Output to PDF:

There is a way to download smartform in PDF format.

Please do the following:

1. Print the smartform to the spool.

2. Note the spool number.

3. Download a PDF file (Acrobat Reader) version of the spool by running Program RSTXPDFT4 and entering the noted spool number.

Regards,

Ferry Lianto

Former Member
0 Kudos

i know that but i want atomatic with program only after displying smartform output,

regards,

Former Member
0 Kudos

use the program RSTXPDFT4.

use this statement in your program instead of

CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF' wite as follows.

data P_SPOOL LIKE TSP01-RQIDENT

P_SPOOL = spoool number you have

  SUBMIT RSTXPDFT4 with SPOOLNO eq P_SPOOL.

Please Close this thread.. when u r problem is solved

Reward if Helpful

Regards

Naresh Reddy K