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.