MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Salto de Pagina (Write) (foro/showthread.php?t=36220)

mitosap 16/04/10 00:23:58

Salto de Pagina (Write)
 
Hola amigos.

Tengo un reporte z, donde muestro varias entregas a escuelitas. Quisiera que por cada una de ellas (escuelas) me salte una pagina con su encabezado respectivo. Por ahora con el TOP-OF-PAGE se hace una sola vez.

Parte del código (donde genero la impresion) :

**///////////////////////////////////
FORM IMPRIMIR .

DATA: w_cantidad(9),
w_saldo_fe (9),
w_entreg_d(9),
w_dias_sal (7).


If prn eq 'X'.
FORMAT COLOR 1 INTENSIFIED OFF.
Endif.

SORT it_alv by vtext ascending
escuela ascending.

Loop at it_alv.
At new escuela.
r_flag01 = 1.
Endat.

If r_flag01 = 1.
r_flag01 = 0.
perform TOP-OF-PAGE-PRN.
Endif.

write it_alv-cantidad to w_cantidad.
write it_alv-saldo_fe to w_saldo_fe.
write it_alv-entreg_d to w_entreg_d.
write it_alv-dias_sal to w_dias_sal.

Write:/001 it_alv-vbeln,
010 it_alv-wadat,
020 it_alv-material+12(6),
027 it_alv-material+19(35),
064 w_cantidad,
073 w_saldo_fe,
082 w_entreg_d,
091 w_dias_sal.
*
skip.
*
At end of escuela.
ULINE at (88).
Sum.

write it_alv-cantidad to w_cantidad.
write it_alv-saldo_fe to w_saldo_fe.
write it_alv-entreg_d to w_entreg_d.
write it_alv-dias_sal to w_dias_sal.

Write:/01 ' Total Entrega por Escuela ',
064 w_cantidad,
073 w_saldo_fe,
082 w_entreg_d,
091 w_dias_sal.
*
ULINE at /(88).
skip 1.
Endat.
AT LAST.
ULINE at (88).
Sum.
write it_alv-cantidad to w_cantidad.
write it_alv-saldo_fe to w_saldo_fe.
write it_alv-entreg_d to w_entreg_d.
write it_alv-dias_sal to w_dias_sal.

Write:/01 ' T o t a l F i n a l',
064 w_cantidad,
073 w_saldo_fe,
082 w_entreg_d,
091 w_dias_sal.
*
ULINE at /(88).
ENDAT.
****>>>>>>>>>>>>>>>>>>>>>
Endloop.
ENDFORM.
**//////////////////////////////////
** FORM PARA IMPRESION DE ENCABEZADOS (INICIALMENTE ESTABA COMO
** UN EVENTO, PERO SOLO LO HACE UNA VEZ, POR TAL RAZON LO INCLUI
** COMO UN FORM, PERO IGUAL NO ME FUINCIONA, ME HACE LOS **ENCABEZADOS POR CADA ESCUELA PERO CORRIDO, NECESITO SALTAR **ANTES DE IMPRIMIR ENCABEZADOS.
**/////////////////////////////////
*TOP-OF-PAGE.
FORM TOP-OF-PAGE-PRN.
*SELECT SINGLE * FROM t001w WHERE werks eq w_werks.
If prn eq 'X'.
FORMAT COLOR 1 INTENSIFIED OFF.
Endif.
ULINE at (88).
WRITE:/001 w_texto,
055 'Fecha de Emisión:', 73 SY-DATUM.
WRITE:/001 'Distrito Escolar: ',
019 it_alv-vtext,
055 'Hora de Emision :', 73 SY-UZEIT.

WRITE:/001 'Escuela Destino :',
019 it_alv-escuela+0(50),
73 SY-pagno.

WRITE:/001 'Fecha Entrega ', w_fecha_larga.


WRITE:/001 ' ', 55 'USUARIO: ', SY-SYSID, 72 '-', 73 SY-UNAME.

*
ULINE at /(88).

ENDFORM.
**//////////////////////////////////
Gracias de antemano por su ayuda.

temaljose 16/04/10 15:13:22

Hola amigo, tu codigo deberia quedar asi:
**///////////////////////////////////
FORM IMPRIMIR .

DATA: w_cantidad(9),
w_saldo_fe (9),
w_entreg_d(9),
w_dias_sal (7).


If prn eq 'X'.
FORMAT COLOR 1 INTENSIFIED OFF.
Endif.

SORT it_alv by escuela ascending vtext ascending.
Loop at it_alv.
At new escuela.
new-page.
Endat.

write it_alv-cantidad to w_cantidad.
write it_alv-saldo_fe to w_saldo_fe.
write it_alv-entreg_d to w_entreg_d.
write it_alv-dias_sal to w_dias_sal.

Write:/001 it_alv-vbeln,
010 it_alv-wadat,
020 it_alv-material+12(6),
027 it_alv-material+19(35),
064 w_cantidad,
073 w_saldo_fe,
082 w_entreg_d,
091 w_dias_sal.
*
skip.
*
At end of escuela.
ULINE at (88).
Sum.

write it_alv-cantidad to w_cantidad.
write it_alv-saldo_fe to w_saldo_fe.
write it_alv-entreg_d to w_entreg_d.
write it_alv-dias_sal to w_dias_sal.

Write:/01 ' Total Entrega por Escuela ',
064 w_cantidad,
073 w_saldo_fe,
082 w_entreg_d,
091 w_dias_sal.
*
ULINE at /(88).
skip 1.
Endat.
AT LAST.
ULINE at (88).
Sum.
write it_alv-cantidad to w_cantidad.
write it_alv-saldo_fe to w_saldo_fe.
write it_alv-entreg_d to w_entreg_d.
write it_alv-dias_sal to w_dias_sal.

Write:/01 ' T o t a l F i n a l',
064 w_cantidad,
073 w_saldo_fe,
082 w_entreg_d,
091 w_dias_sal.
*
ULINE at /(88).
ENDAT.
****>>>>>>>>>>>>>>>>>>>>>
Endloop.
ENDFORM.
**//////////////////////////////////
** FORM PARA IMPRESION DE ENCABEZADOS (INICIALMENTE ESTABA COMO
** UN EVENTO, PERO SOLO LO HACE UNA VEZ, POR TAL RAZON LO INCLUI
** COMO UN FORM, PERO IGUAL NO ME FUINCIONA, ME HACE LOS **ENCABEZADOS POR CADA ESCUELA PERO CORRIDO, NECESITO SALTAR **ANTES DE IMPRIMIR ENCABEZADOS.
**/////////////////////////////////
FORM TOP-OF-PAGE.
*SELECT SINGLE * FROM t001w WHERE werks eq w_werks.
If prn eq 'X'.
FORMAT COLOR 1 INTENSIFIED OFF.
Endif.
ULINE at (88).
WRITE:/001 w_texto,
055 'Fecha de Emisión:', 73 SY-DATUM.
WRITE:/001 'Distrito Escolar: ',
019 it_alv-vtext,
055 'Hora de Emision :', 73 SY-UZEIT.

WRITE:/001 'Escuela Destino :',
019 it_alv-escuela+0(50),
73 SY-pagno.

WRITE:/001 'Fecha Entrega ', w_fecha_larga.


WRITE:/001 ' ', 55 'USUARIO: ', SY-SYSID, 72 '-', 73 SY-UNAME.

*
ULINE at /(88).

ENDFORM.

saludos y espero te ayude

zonanet 16/04/10 15:18:51

te recomiendo que no uses el top of page, en su lugar usa las cabeceras de lista, es igual que el top-of-page, sólo que aquí cuentas únicamente con 4 renglones para tu encabezado, así cada vez que saltas a una página nueva se imprime la cabecera, la forma de llegar a las cabeceras de lista es:

Menu PASAR A ----> ELEMENTOS DE TEXTO----> CABECERAS DE LISTA

tienes que "acomodar" como quieres que se imprima en pantalla pero eso a prueba y error.


cualquier cosa que no me haya explicado bien, lo haces saber.

Saludos

mitosap 17/04/10 12:43:54

Excelente amigos, justo lo que buscaba. En cuanto a la cabecera lo tendré presente para cuando no requiera tantas filas de encabezados, por ahora lo manejaré en el evento top_op_page.

Que estén muy bien.


Husos Horarios son GMT. La hora en este momento es 03:39:43.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web