Saturday, 19 April 2014

Convert Smartform into PDF

Here I’m trying to explain how to convert a smartform into a PDF and download.
All the below steps contains only sample codes and are self explanatory, so I’m not going into details of every step.

Prerequisites: You need to know how to call the smartform FM from ur driver program and all. Although you can find the same from the step 1.

If u r running out of time then u can go through the step 3 only.

Step 1.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    
EXPORTING
      formname           
= 'Z_SMARTFORM_NAME'   
    IMPORTING
      fm_name            
= v_fm_name
    
EXCEPTIONS
      no_form            
= 1
      no_function_module 
= 2
      
OTHERS             = 3.

Step 2.

  CALL FUNCTION lc_fm_name
    
EXPORTING
      control_parameters 
= s_control_par
    .
    .
    IMPORTING
      job_output_info    
= s_job_output
    
TABLES
    .
    .
    EXCEPTIONS
      formatting_error   
= 1
      internal_error     
= 2
      send_error         
= 3
      user_canceled      
= 4
      
OTHERS             = 5.

Step 3.

Use the s_job_output-otfdata[] from the previous step into the OTF table parameter in the FM 'CONVERT_OTF_2_PDF'.

    CALL FUNCTION 'CONVERT_OTF_2_PDF'
      
IMPORTING
        bin_filesize           
= bin_filesize
      
TABLES
        otf                    
= s_job_output-otfdata[]
        doctab_archive         
= doctab_archive
        
lines                  = t_file_pdf
      
EXCEPTIONS
        err_conv_not_possible  
= 1
        err_otf_mc_noendmarker 
= 2
        
OTHERS                 = 3.

Step 4.

      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        
EXPORTING
          window_title            
= 'Open file'
          default_extension       
= '*.pdf'
        
CHANGING
          file_table              
= file_table[]
          rc                      
= rc
          user_action             
= user_action
        
EXCEPTIONS
          file_open_dialog_failed 
= 1
          cntl_error              
= 2
          error_no_gui            
= 3
          
OTHERS                  = 4.


Step 5.

      IF user_action = 9. EXIT. ENDIF.
      
IF rc = 1.
        
READ TABLE file_table INDEX 1.
      
ENDIF.

     MOVE file_table-filename TO filename.

      CALL METHOD cl_gui_frontend_services=>gui_download
        
EXPORTING
          bin_filesize            
= bin_filesize
          filename                
= filename
          filetype                
= 'BIN'
        
CHANGING
          data_tab                
= t_file_pdf
        
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.

1 comment: