06-01-2006 11:27 PM
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
06-02-2006 2:03 AM
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
06-02-2006 2:03 AM
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
06-02-2006 4:18 AM
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>
06-02-2006 5:06 AM
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.
06-02-2006 4:30 PM
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,