Smartforms – Imprimir varios formularios pidiendo los datos de impresión una sola vez

Si necesitamos imprimir varios formularios cada vez que llamemos al Smartforms nos saltará la ventana de dialogo preguntándonos con que dispositivo deseamos imprimir.

Si queremos evitar esto para que salga una vez y luego utilizar las mismas opciones para el resto de las impresiones debemos hacer lo siguiente:

Suponiendo que cada loop imprime un formulario.

DATA:ssfctrlop    TYPE ssfctrlop.

 

* Llamada Smartform
  CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
    EXPORTING
      formname = ‘ZPP_RITMO_MAQ’
    IMPORTING
      FM_NAME = fm_name
    EXCEPTIONS
      NO_FORM = 1
      NO_FUNCTION_MODULE = 2
      OTHERS = 3.

LOOP AT ITAB.

* Para que aparezca un solo dialogo determino si es el primero o no con el flag g_flag.
    IF g_flag IS INITIAL.
      ssfctrlop-no_open = space.
      ssfctrlop-no_close = ‘X’.
      g_flag = ‘X’.
    ELSE.
      ssfctrlop-no_open = ‘X’.
      ssfctrlop-no_close = ‘X’.
    ENDIF.

* Llamada al Smartform
    CALL FUNCTION fm_name
      EXPORTING
        CONTROL_PARAMETERS = ssfctrlop

        WA_NOTIF = NOTIF_PRINT
        ARBPL = l_ARBPL
        KTEXT = l_KTEXT
        FECHA_INI = g_fecha_ini
        FECHA_FIN = g_fecha_fin
        PROMEDIO = l_prom
        PROMEDIO_PLANTA = l_prom_planta
      EXCEPTIONS
        FORMATTING_ERROR = 1
        INTERNAL_ERROR = 2
        SEND_ERROR = 3
        USER_CANCELED = 4
        OTHERS = 5.

      AT LAST.
* En el último registro cheque si es un solo puesto o no para setear Smartforms
        IF g_flag IS NOT INITIAL.
          ssfctrlop-no_open = ‘X’.
          ssfctrlop-no_close = space.
        ENDIF.

* Llamada al Smartform
        CALL FUNCTION fm_name
          EXPORTING
            CONTROL_PARAMETERS = ssfctrlop

            WA_NOTIF = NOTIF_PRINT
            ARBPL = l_ARBPL
            KTEXT = l_KTEXT
            FECHA_INI = g_fecha_ini
            FECHA_FIN = g_fecha_fin
            PROMEDIO = l_prom
            PROMEDIO_PLANTA = l_prom_planta
          EXCEPTIONS
            FORMATTING_ERROR = 1
            INTERNAL_ERROR = 2
            SEND_ERROR = 3
            USER_CANCELED = 4
            OTHERS = 5.

            EXIT.
      ENDAT.

ENDLOOP.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: