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: 

avoid print dialog in smartforms

Former Member
0 Kudos

Folks,

I am trying to avoid print dialog which comes up in smartforms. But my code is not working. Please help.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname                 = gv_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.
ENDIF.

gv_control-no_dialog = 'X'.
gv_control-preview   = 'X'.
gv_control-no_open   = 'X'.
gv_control-no_close  = 'X'.
*gv_control-device    = 'LOCL'.

gv_output-tddest = 'LOCL'.

CALL FUNCTION 'SSF_OPEN'
  EXPORTING
*     ARCHIVE_PARAMETERS       =
*     USER_SETTINGS            = 'X'
*     MAIL_SENDER              =
*     MAIL_RECIPIENT           =
*     MAIL_APPL_OBJ            =
    output_options           = gv_output
    control_parameters       = gv_control
*   IMPORTING
*     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.

LOOP AT gt_distributors INTO gs_distributors.

  CALL FUNCTION fm_name
    EXPORTING
*   ARCHIVE_INDEX              =
*   ARCHIVE_INDEX_TAB          =
*   ARCHIVE_PARAMETERS         =
   control_parameters         = gv_control
*   MAIL_APPL_OBJ              =
*   MAIL_RECIPIENT             =
*   MAIL_SENDER                =
   output_options             = gv_output
   user_settings              = space
   gv_agmt                    = p_agr
   gv_dist                    = gs_distributors-kunnr
* 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
            .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDLOOP.

CALL FUNCTION 'SSF_CLOSE'
*   IMPORTING
*     JOB_OUTPUT_INFO        =
  EXCEPTIONS
    formatting_error       = 1
    internal_error         = 2
    send_error             = 3
    OTHERS                 = 4.

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.

* analyse internal error table of Smart Forms
CALL FUNCTION 'SSF_READ_ERRORS'
  IMPORTING
    errortab = gv_errtab.
IF NOT gv_errtab IS INITIAL.
*   add your handling
ENDIF.

A message is coming at the bottom saying...please main output device in the user master data. How do I maintain?

Message was edited by: Naren Somen

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Naren,

You can maintain the Printer defaults for a user in SU01 transaction.

You can call the GET_PRINT_PARAMETERS function to get the defaults for the user and populate them in the SMART Form.

Regards,

Ravi

Note :Please mark the helpful answers

4 REPLIES 4

Former Member
0 Kudos

Naren,

You can maintain the Printer defaults for a user in SU01 transaction.

You can call the GET_PRINT_PARAMETERS function to get the defaults for the user and populate them in the SMART Form.

Regards,

Ravi

Note :Please mark the helpful answers

venkat_o
Active Contributor
0 Kudos

Hello Naren,

<b>1</b>.You need to remove SSF_OPEN and SSF_CLOSE.

<b>2</b>.Define 2 variables

DATA:

num_1 TYPE i,

num_2 TYPE sy-tabix.

DESCRIBE TABLE it_table LINES num_1.

LOOP AT it_table.

num_2 = sy-tabix.

CASE num_2.

WHEN 1.

control_parameters-no_open = ' '.

control_parameters-no_close = 'X'.

WHEN num_1.

control_parameters-no_open = 'X'.

control_parameters-no_close = space.

WHEN OTHERS.

control_parameters-no_open = 'X'.

control_parameters-no_close = 'X'.

ENDCASE.

IF num_1 = 1.

CLEAR: control_parameters.

ENDIF.

control_parameters-langu = sy-langu.

control_parameters-no_dialog = 'X'.

control_parameters-preview = 'X'.<b>with print priview

or</b>

control_parameters-preview = 'X'.<b>Without print priview.This is direct printing</b>

CALL FUNCTION fm_name

<b> EXPORTING</b>

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

control_parameters = control_parameters

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

output_options = gv_output

user_settings = space

gv_agmt = p_agr

gv_dist = gs_distributors-kunnr

  • IMPORTING

  • DOCUMENT_OUTPUT_INFO =

  • JOB_OUTPUT_INFO =

  • JOB_OUTPUT_OPTIONS =

<b> EXCEPTIONS</b>

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5

ENDLOOP.

<b>3</b>. You dont need to call GET_PRINT_PARAMETERS for setting printer pararmeters .U can set those in control_parameters structure .

It solves ur problem.

Let me know ,if u have any problem.

<b>Thanks.

Venkat.O</b>

Former Member
0 Kudos

Hi Naren,

It is easy...

data: ctrl_param type ssfctrlop,

out_option type ssfcompop,

fm_name type rs38l_fnam.

<b>ctrl_param-preview = 'X'.

out_option-tddest = 'LP01'. " in your case it is LOCL

ctrl_param-no_dialog = 'X'.</b>

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = gv_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.

ENDIF.

call function fm_name

exporting

<b>control_parameters = ctrl_param

output_options = out_option

user_settings = space</b>

tables

itab = itab[]

exceptions

.

.

.

This will work.

Regards,

SP.

0 Kudos

Hello all,

Thanks for the replies. They are really helpful. Actually my code is working fine in one client and in other client it is not working. The reason being user01-spld is empty. My code looks like this:

REPORT  zagreement                              .

TYPES: BEGIN OF ty_distributors,
         kunnr TYPE kunnr_v,
       END OF ty_distributors.

DATA: gt_distributors TYPE TABLE OF ty_distributors WITH HEADER LINE.
DATA: fm_name TYPE rs38l_fnam,
      gs_distributors TYPE ty_distributors.

DATA: gv_control TYPE ssfctrlop,
      gv_errtab  TYPE tsferror.

DATA: gv_form TYPE tdsfname VALUE 'ZAGREEMENT'.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME.
PARAMETER:  p_agr TYPE knuma_ag.
SELECTION-SCREEN: END OF BLOCK b1.

***distributors
PERFORM  get_distributors.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname           = gv_form
  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.
ENDIF.

gv_control-no_dialog = 'X'.
gv_control-preview   = 'X'.
gv_control-no_open   = 'X'.
gv_control-no_close  = 'X'.

CALL FUNCTION 'SSF_OPEN'
  EXPORTING
    control_parameters = gv_control
  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.

LOOP AT gt_distributors INTO gs_distributors.
  CALL FUNCTION fm_name
    EXPORTING
      control_parameters = gv_control
      gv_agmt            = p_agr
      gv_dist            = gs_distributors-kunnr
    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.
ENDLOOP.

CALL FUNCTION 'SSF_CLOSE'
  EXCEPTIONS
    formatting_error = 1
    internal_error   = 2
    send_error       = 3
    OTHERS           = 4.

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.

* analyse internal error table of Smart Forms
CALL FUNCTION 'SSF_READ_ERRORS'
  IMPORTING
    errortab = gv_errtab.
IF NOT gv_errtab IS INITIAL.
*   add your handling
ENDIF.

*&---------------------------------------------------------------------*
*&      Form  get_distributors
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_distributors .

***distributors
  SELECT  kunnr
    FROM  a941
    INTO  TABLE gt_distributors
   WHERE  knuma_ag EQ p_agr.

  IF sy-subrc <> 0.
***no distributors found for this agreement
  ENDIF.

ENDFORM.                    " get_distributors

Your answers are really helpful and I am awarding points to all of them.

Thanks,