Application Development and Automation 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: 
Read only

smartform issue

Former Member
0 Likes
1,133

Hello experts,

I am developing smartform in 4.6C version. Now i want to do a mass printing. On entering single personnel # it will print 2 pages. on entering 2 personnel # it will print 4 pages. so for one entry 2 pages will get print.

I am using ssf_open, SSF_FUNCTION_MODULE_NAME, ssf_close function modules. But still i am not able to print preview or able to print the multiple forms. How do i do that?

do i need to change the code?

also sometime i am getting error message like "Previous Output request not finished".

How to resolve the issue?

code:

CONTROL1-DIALOG = 'X'.

CONTROL1-TDGETOTF = 'X'.

CONTROL1-TDPREVIEW = 'X'.

CALL FUNCTION 'SSF_OPEN'

EXPORTING

INPUT = CONTROL1

  • IMPORTING

  • RESULT =

EXCEPTIONS

ERROR = 1

OTHERS = 2 .

LOOP AT T_PA0000.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZSMARTFORM'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

FM_NAME = V_FM

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 '/1BCDWB/SF00000018'

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

  • CONTROL_PARAMETERS = control

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

I_PERNR = t_pa0000-pernr

  • 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

  • RESULT =

EXCEPTIONS

ERROR = 1

OTHERS = 2 .

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
882

check this and change accordingly

&----


*& Form print_smartform2x4

&----


  • text

----


  • -->P_WA_SMART text

  • -->P_IT_SMART text

----


FORM print_smartform1x3.

DATA : fm_name TYPE rs38l_fnam,

control_parameters TYPE ssfctrlop,

wa_job_output_info TYPE ssfcrescl,

ssfcompin TYPE ssfcompin,

ssfcompop TYPE ssfcompop.

ssfcompin-dialog = 'X'.

CALL FUNCTION 'SSF_OPEN'

  • EXPORTING

  • ARCHIVE_PARAMETERS =

  • USER_SETTINGS = 'X'

  • MAIL_SENDER =

  • MAIL_RECIPIENT =

  • MAIL_APPL_OBJ =

  • OUTPUT_OPTIONS =

  • control_parameters = control_parameters

  • IMPORTING

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

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = 'ZMM_IM_001'

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.

control_parameters-no_open = 'X'.

control_parameters-no_close = 'X'.

LOOP AT it_smart INTO wa_smart.

IF wa_smart-no_cop IS NOT INITIAL.

MOVE wa_smart-no_cop TO gv_count.

ENDIF.

DO gv_count TIMES.

CALL FUNCTION fm_name

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

control_parameters = control_parameters

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

output_options = ssfcompop

  • USER_SETTINGS = 'X'

wa_display = wa_smart

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

ENDDO.

CLEAR gv_count.

CLEAR : wa_smart.

ENDLOOP.

CALL FUNCTION 'SSF_CLOSE'

IMPORTING

job_output_info = wa_job_output_info

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 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.

ENDFORM. " print_smartform2x4

CONTROL1-DIALOG = 'X'.

CONTROL1-TDGETOTF = 'X'.

CONTROL1-TDPREVIEW = 'X'.

CALL FUNCTION 'SSF_OPEN'

EXPORTING

INPUT = CONTROL1

  • IMPORTING

  • RESULT =

EXCEPTIONS

ERROR = 1

OTHERS = 2 .

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZSMARTFORM'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

FM_NAME = V_FM

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.

control-no_open = 'X'.

control-no_close = 'X'

LOOP AT T_PA0000.

CALL FUNCTION V_FM

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

CONTROL_PARAMETERS = control

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

I_PERNR = t_pa0000-pernr

  • 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

  • RESULT =

EXCEPTIONS

ERROR = 1

OTHERS = 2 .

change as above and check

Edited by: mohammed abdul hai on Apr 7, 2009 9:07 AM

5 REPLIES 5
Read only

Former Member
0 Likes
882

Hi Saurab ,

check this code



CALL FUNCTION 'CONVERSION_EXIT_SPDEV_OUTPUT'
      EXPORTING
      input  = 'LOCL'
      IMPORTING
        output = w_name.
    SELECT SINGLE patype INTO  tsp03d-patype FROM tsp03d
                         WHERE name EQ w_name.
 

  r_options-tddest    = 'LOCL'.           "Spool: Output device
    r_options-tdimmed   = 'X'.               "Print Immediately
    r_options-tddelete  = space.             "Delete After Printing
    r_options-tdnewid   = 'X'.               "New Spool Request
    r_control-device    = 'PRINTER'.
    r_control-no_dialog = 'X'.
    r_control-langu     = sy-langu.
*----------------------------------------------------------------------*
* PRINTER COPIES IN CASE PF Home AND Export
*----------------------------------------------------------------------*
    IF zeivr_x = 'H'.
      r_options-tdcopies = '1'.                                    " this is the potion for multiple forms.
    ELSEIF zeivr_x = 'E'.
      r_options-tdcopies = '3'.
    ENDIF.

*----------------------------------------------------------------------*
* CALLING SMARTFORM FUNCTION MODULE
*---------------------------------------------------------------------*

    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
      EXPORTING
        formname           = 'ZTBARCODE_XXX'        
      IMPORTING
        fm_name            = w_function
      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 w_function
      EXPORTING
        control_parameters = r_control
        output_options     = r_options
        user_settings      = ' '
        porder             = plnum
        weight             = weightx
        line               = mdv01
        material_number    = matnr
        maktx1             = maktx1
        maktx2             = maktx2
        docutype           = zeiar
        seq                = seq
        barcode            = barcode.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

thanks & regards,

kat

Read only

Former Member
0 Likes
882

Hi

Refer to my post in this thread,

Regards,

Sravanthi

Read only

Former Member
0 Likes
883

check this and change accordingly

&----


*& Form print_smartform2x4

&----


  • text

----


  • -->P_WA_SMART text

  • -->P_IT_SMART text

----


FORM print_smartform1x3.

DATA : fm_name TYPE rs38l_fnam,

control_parameters TYPE ssfctrlop,

wa_job_output_info TYPE ssfcrescl,

ssfcompin TYPE ssfcompin,

ssfcompop TYPE ssfcompop.

ssfcompin-dialog = 'X'.

CALL FUNCTION 'SSF_OPEN'

  • EXPORTING

  • ARCHIVE_PARAMETERS =

  • USER_SETTINGS = 'X'

  • MAIL_SENDER =

  • MAIL_RECIPIENT =

  • MAIL_APPL_OBJ =

  • OUTPUT_OPTIONS =

  • control_parameters = control_parameters

  • IMPORTING

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

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = 'ZMM_IM_001'

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.

control_parameters-no_open = 'X'.

control_parameters-no_close = 'X'.

LOOP AT it_smart INTO wa_smart.

IF wa_smart-no_cop IS NOT INITIAL.

MOVE wa_smart-no_cop TO gv_count.

ENDIF.

DO gv_count TIMES.

CALL FUNCTION fm_name

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

control_parameters = control_parameters

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

output_options = ssfcompop

  • USER_SETTINGS = 'X'

wa_display = wa_smart

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

ENDDO.

CLEAR gv_count.

CLEAR : wa_smart.

ENDLOOP.

CALL FUNCTION 'SSF_CLOSE'

IMPORTING

job_output_info = wa_job_output_info

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 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.

ENDFORM. " print_smartform2x4

CONTROL1-DIALOG = 'X'.

CONTROL1-TDGETOTF = 'X'.

CONTROL1-TDPREVIEW = 'X'.

CALL FUNCTION 'SSF_OPEN'

EXPORTING

INPUT = CONTROL1

  • IMPORTING

  • RESULT =

EXCEPTIONS

ERROR = 1

OTHERS = 2 .

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = 'ZSMARTFORM'

  • VARIANT = ' '

  • DIRECT_CALL = ' '

IMPORTING

FM_NAME = V_FM

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.

control-no_open = 'X'.

control-no_close = 'X'

LOOP AT T_PA0000.

CALL FUNCTION V_FM

EXPORTING

  • ARCHIVE_INDEX =

  • ARCHIVE_INDEX_TAB =

  • ARCHIVE_PARAMETERS =

CONTROL_PARAMETERS = control

  • MAIL_APPL_OBJ =

  • MAIL_RECIPIENT =

  • MAIL_SENDER =

  • OUTPUT_OPTIONS =

  • USER_SETTINGS = 'X'

I_PERNR = t_pa0000-pernr

  • 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

  • RESULT =

EXCEPTIONS

ERROR = 1

OTHERS = 2 .

change as above and check

Edited by: mohammed abdul hai on Apr 7, 2009 9:07 AM

Read only

0 Likes
882

I tried this code but it is not working for me. I have a similar requirement of printing all the payslips in a single print preview...

Read only

robert_altenstraer
Active Participant
0 Likes
882

hi

> you get the FM_NAME = V_FM

but you use this CALL FUNCTION '/1BCDWB/SF00000018'

After transporting into your production system or test system the smartform FUB has a different name....

thats the reason for getting the fub name...

try that:

CALL FUNCTION V_FM

robert