viernes, 29 de junio de 2012

Repetir etiquetas o impresión en un Smartform.


En un par de clientes he tenido que imprimir etiquetas y que se repitiesen varias. Si uso el campo para copias del smartform lo envía varias veces y si estamos usando la impresora de Windows es un rollo porque le pedirá varias veces la confirmación al usuario, tantas veces como copias.
Al final lo he resuelto con un loop dentro de la ventana main, con una estructura con el tamaño de la etiqueta. Para hacer el loop me he creado una tabla por que no he sabido hacer un loop sin tabla, igual otro me dice como hacerlo, pero yo lo he resuelto así:

1     Atributos formulario.

En salida ponemos DINA3 aunque usemos etiquetas más pequeñas, parece que si no hace el salto de página y va rescribiendo encima.

2     Interfase formulario.

COPIAS                  TYPE   TDSFCOPIES, con valor propuesta 1.

3     Definiciones Globales.

3.1   Tipos


TYPES: BEGIN OF ty_copia,
       num TYPE tdsfcopies,
END OF ty_copia.

TYPES: ty_tabla_copia TYPE TABLE OF ty_copia.

3.2   Datos Glob.

WA_T_BULTOS         TYPE   TY_BULTO

3.3   Rutinas Form.

FORM copias_t_set TABLES pt_copias TYPE ty_tabla_copia
                  USING p_copias TYPE ty_copia-num.

  DATA: w_contador TYPE ty_copia-num,
      wa_copias LIKE LINE OF pt_copias.

  WHILE w_contador < p_copias.
    w_contador = w_contador + 1.
    wa_copias-num = w_contador.
    APPEND wa_copias TO pt_copias.
  ENDWHILE.
*BREAK-POINT.
ENDFORM.

3.4   Inicialización.

* Tabla copias.
perform copias_t_set
                  tables g_t_copias
                     using copias.

4     Páginas y ventanas.

Definimos la ventana, y dentro hacemos el loop a la tabla g_t_copias. Dentro definimos la estructura de la etiqueta. 

5 comentarios:

  1. en tu programa impresor que definiste

    ResponderEliminar
  2. ¿Has conseguido hacer una impresión? Todo lo hice dentro del smartform.

    ResponderEliminar
    Respuestas
    1. no, lo que quiero es que me imprima el numero de pagina así 1/5 2/5...5/5, de acuerdo a la acantidad que el usuario haya ingresado, la variable del sistema no puedo usar porque quiero imprimir etiquetas que es una ventana chica

      Eliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar