cancel
Showing results for 
Search instead for 
Did you mean: 

unable to print directly from vf03 txn after converting smartform into PDF

Former Member
0 Kudos

Dear All,

I have converted ond smartform into pdf.now when i am trying to print one document using vf03 transaction whatever button i click(ex-print preview/print) it is asking to save the pdf as local file. but i want to print that document as pdf directly from vf03 without saving it into local file.

I am giving you the code below:-

(all modification done by me are in BOLD)

----


  • Print of a invoice by SAPscript SMART FORMS *

----


REPORT zrlb_invoice5.

  • declaration of data

INCLUDE zrlb_invoice_data_declare5.

*INCLUDE ZRLB_INVOICE_DATA_DECLARE.

*INCLUDE rlb_invoice_data_declare.

  • definition of forms

INCLUDE zrlb_invoice_form015.

*INCLUDE ZRLB_INVOICE_FORM01.

*INCLUDE rlb_invoice_form01.

INCLUDE zrlb_print_forms5.

*INCLUDE ZRLB_PRINT_FORMS.

*INCLUDE rlb_print_forms.

START-OF-SELECTION.

----


  • FORM ENTRY

----


FORM entry USING return_code us_screen.

DATA: lf_retcode TYPE sy-subrc.

CLEAR retcode.

xscreen = us_screen.

PERFORM processing USING us_screen

CHANGING lf_retcode.

IF lf_retcode NE 0.

return_code = 1.

ELSE.

return_code = 0.

ENDIF.

ENDFORM. "ENTRY

----


  • FORM PROCESSING *

----


FORM processing USING proc_screen

CHANGING cf_retcode.

DATA: lv_medium LIKE tnapr-nacha.

DATA: lwa_print_data_to_read TYPE lbbil_print_data_to_read.

DATA: lwa_bil_invoice TYPE lbbil_invoice.

DATA: lf_fm_name TYPE rs38l_fnam.

DATA: lwa_control_param TYPE ssfctrlop.

DATA: lwa_composer_param TYPE ssfcompop.

DATA: lwa_recipient TYPE swotobjid.

DATA: lwa_sender TYPE swotobjid.

DATA: lf_formname TYPE tdsfname.

DATA: lwa_addr_key LIKE addr_key.

DATA: ls_dlv-land LIKE vbrk-land1.

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

DATA:lv_job_output_info TYPE ssfcrescl,

lv_document_output_info TYPE ssfcrespd,

lv_job_output_options TYPE ssfcresop,

lv_bin_filesize TYPE i,

gt_docs TYPE STANDARD TABLE OF docs,

gt_lines TYPE STANDARD TABLE OF tline,

gt_otf TYPE TABLE OF itcoo, " OTF Structure

lv_name TYPE string VALUE 'INVOICE',

lv_guiobj TYPE REF TO cl_gui_frontend_services,

lv_path TYPE string VALUE 'D:\',

lv_fullpath TYPE string VALUE 'D:\INVOICE',

lv_filter TYPE string,

lv_uact TYPE i,

lv_filename TYPE string,

++lv_fm_name TYPE rs38l_fnam. +*****************************************

SmartForm from customizing table TNAPR

lf_formname = tnapr-sform.

lv_medium = tnapr-nacha.

  • determine print data

PERFORM set_print_data_to_read USING lf_formname

CHANGING lwa_print_data_to_read

cf_retcode.

IF cf_retcode EQ 0.

  • select print data

PERFORM get_data USING lwa_print_data_to_read

CHANGING lwa_addr_key

ls_dlv-land

lwa_bil_invoice

cf_retcode.

ENDIF.

IF cf_retcode EQ 0.

PERFORM set_print_param USING lwa_addr_key

ls_dlv-land

CHANGING lwa_control_param

lwa_composer_param

lwa_recipient

lwa_sender

cf_retcode.

ENDIF.

IF cf_retcode EQ 0.

  • determine smartform function module for invoice

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING formname = lf_formname

  • variant = ' '

  • direct_call = ' '

IMPORTING fm_name = lf_fm_name

EXCEPTIONS no_form = 1

no_function_module = 2

OTHERS = 3.

IF sy-subrc NE 0.

  • error handling

cf_retcode = sy-subrc.

PERFORM protocol_update.

ENDIF.

ENDIF.

IF cf_retcode EQ 0.

PERFORM check_repeat.

IF lwa_composer_param-tdcopies EQ 0.

nast_anzal = 1.

ELSE.

nast_anzal = lwa_composer_param-tdcopies.

ENDIF.

lwa_composer_param-tdcopies = 1.

DO nast_anzal TIMES.

  • In case of repetition only one time archiving

IF sy-index GT 1 AND nast-tdarmod EQ 3.

nast_tdarmod = nast-tdarmod.

nast-tdarmod = 1.

lwa_composer_param-tdarmod = 1.

ENDIF.

IF sy-index NE 1 AND repeat IS INITIAL.

repeat = 'X'.

ENDIF.

  • call smartform invoice

  • CALL FUNCTION lf_fm_name

  • EXPORTING

  • archive_index = toa_dara

  • archive_parameters = arc_params

  • control_parameters = ls_control_param

    • mail_appl_obj =

  • mail_recipient = ls_recipient

  • mail_sender = ls_sender

  • output_options = ls_composer_param

  • user_settings = space

  • is_bil_invoice = ls_bil_invoice

  • is_nast = nast

  • is_repeat = repeat

    • importing document_output_info =

    • job_output_info =

    • job_output_options =

  • EXCEPTIONS formatting_error = 1

  • internal_error = 2

  • send_error = 3

  • user_canceled = 4

  • OTHERS = 5.

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

lwa_control_param-getotf = 'X'.

lwa_control_param-no_dialog = 'X'.

lwa_control_param-device = 'PRINTER'.

CALL FUNCTION lf_fm_name

EXPORTING

archive_index = toa_dara

    • Begin of Changes 24/10/2007*

    • ARCHIVE_INDEX_TAB =*

    • ARCHIVE_PARAMETERS = arc_params*

control_parameters = lwa_control_param

    • MAIL_APPL_OBJ =*

    • MAIL_RECIPIENT = lwa_recipient*

    • MAIL_SENDER = lwa_sender*

*End of changes 04/12/2007

output_options = lwa_composer_param

user_settings = 'X'

is_bil_invoice = lwa_bil_invoice

is_nast = nast

is_repeat = repeat

iv_medium = lv_medium

    • Begin OF Changes 04/12/2007*

IMPORTING

document_output_info = lv_document_output_info

job_output_info = lv_job_output_info

*job_output_options = lv_job_output_options *

    • End Of Changes 04/12/2007*

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5.

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

*

  • CALL FUNCTION lf_fm_name

  • EXPORTING

  • ARCHIVE_INDEX = toa_dara

    • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS = arc_params

  • CONTROL_PARAMETERS = lWA_control_param

    • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT = lwa_recipient

  • MAIL_SENDER = lwa_sender

  • OUTPUT_OPTIONS = lwa_composer_param

  • USER_SETTINGS = space

  • IS_BIL_INVOICE = LWA_BIL_INVOICE

  • IS_NAST = nast

  • IS_REPEAT = repeat

  • IV_MEDIUM = lv_medium

    • IMPORTING

    • DOCUMENT_OUTPUT_INFO =

    • JOB_OUTPUT_INFO =

    • JOB_OUTPUT_OPTIONS =

    • EXCEPTIONS

    • FORMATTING_ERROR = 1

    • INTERNAL_ERROR = 2

    • SEND_ERROR = 3

    • USER_CANCELED = 4

    • OTHERS = 5

  • .

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

gt_otf[] = lv_job_output_info-otfdata[].

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = 'PDF'

MAX_LINEWIDTH = 132

    • ARCHIVE_INDEX = ' '*

    • COPYNUMBER = 0*

    • ASCII_BIDI_VIS2LOG = ' '*

IMPORTING

BIN_FILESIZE = lv_bin_filesize

    • BIN_FILE =*

TABLES

otf = gt_otf

lines = gt_lines

    • 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.

*.......................GET THE FILE NAME TO STORE.........

CONCATENATE 'smrt' '.pdf' INTO lv_name.

CREATE OBJECT lv_guiobj.

CALL METHOD lv_guiobj->file_save_dialog

EXPORTING

default_extension = 'pdf'

default_file_name = lv_name

file_filter = lv_filter

CHANGING

filename = lv_name

path = lv_path

fullpath = lv_fullpath.

    • user_action = lv_uact.*

IF lv_uact = lv_guiobj->action_cancel.

EXIT.

ENDIF.*

  • MOVE lv_fullpath TO lv_filename.

*

  • CALL METHOD cl_gui_frontend_services=>gui_download

  • EXPORTING

  • BIN_FILESIZE = lv_bin_filesize

  • filename = lv_fullpath

  • FILETYPE = 'BIN'

      • APPEND = SPACE

      • WRITE_FIELD_SEPARATOR = SPACE

      • HEADER = '00'

      • TRUNC_TRAILING_BLANKS = SPACE

      • WRITE_LF = 'X'

      • COL_SELECT = SPACE

      • COL_SELECT_MASK = SPACE

      • DAT_MODE = SPACE

      • CONFIRM_OVERWRITE = SPACE

      • NO_AUTH_CHECK = SPACE

      • CODEPAGE = SPACE

      • IGNORE_CERR = ABAP_TRUE

      • REPLACEMENT = '#'

      • WRITE_BOM = SPACE

      • TRUNC_TRAILING_BLANKS_EOL = 'X'

      • IMPORTING

      • FILELENGTH =

  • changing

  • data_tab = gt_lines.

**

      • 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

      • NOT_SUPPORTED_BY_GUI = 22

      • ERROR_NO_GUI = 23

      • others = 24

  • .

IF sy-subrc <> 0.

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

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

ENDIF.

Else.

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

    • IF sy-subrc NE 0.*

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

  • error handling

cf_retcode = sy-subrc.

PERFORM protocol_update.

  • get SmartForm protocoll and store it in the NAST protocoll

PERFORM add_smfrm_prot.

ENDIF.

ENDDO.

lwa_composer_param-tdcopies = nast_anzal.

IF NOT nast_tdarmod IS INITIAL.

nast-tdarmod = nast_tdarmod.

CLEAR nast_tdarmod.

ENDIF.

ENDIF.

  • get SmartForm protocoll and store it in the NAST protocoll

  • PERFORM ADD_SMFRM_PROT.

ENDFORM. "PROCESSING

kindly give me a sloution.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

Check for the print mode in the print options and set it as 3- print and archive .

Regards,

Ram