PDA

Ver la Versión Completa : Como Cambio Un Valor En El Top-of-page Cuando Hago Un Quiebre


ibecerra
07/08/07, 22:08:45
Q tal compañeros tengo un inconveniente con un reporte resulta que tengo un reporte que hace un quiebre por cuentas es decir.
como hago para que el top cambie dependiendo de la cuenta en que se encuentre el listado.. es decir debe hacer un quiebre por cuenta y a la vez debera de imprimir en el top la nueva cuenta
ejemplo

ruc:xxxxxx listado xxxxxxxxxx pag: 1
Cuenta: 11111 xxxxxxxxx folio: 1
----------------------------------------------------------------------------
campo 1 campo2 campo 3
xxxxxx1 xxxxxx 1.00
xxxxxx1 xxxxxx 1.00
xxxxxx1 xxxxxx 1.00
total cuenta 3.00

ruc:xxxxxx listado xxxxxxxxxx pag: 2
Cuenta: 22222 xxxxxxxxx folio: 2
----------------------------------------------------------------------------
campo 1 campo2 campo 3
xxxxxx2 xxxxxx 1.00
xxxxxx2 xxxxxx 1.00
xxxxxx2 xxxxxx 4.00
total cuenta 6.00

ruc:xxxxxx listado xxxxxxxxxx pag: 2
Cuenta: 33333 xxxxxxxxx folio: 2
----------------------------------------------------------------------------
campo 1 campo2 campo 3
xxxxxx3 xxxxxx 1.00
xxxxxx3 xxxxxx 2.00
xxxxxx3 xxxxxx 4.00
total cuenta 7.00
gracias de antemano por su apoyo

nenuke
08/08/07, 07:45:45
Hola,

yo lo haría de la siguiente manera:

1-Ordenar la tabla interna que vas a recorrer por número de cuenta.
2-Controlaría el cambio de numero de cuenta con AT NEW cuenta y con la sentencia NEW-PAGE forzaría el evento TOP-OF-PAGE.
3-En el TOP-OF-PAGE puedes ir escribiendo la cuenta que corresponda
write: itab-cuenta. y la demás información de cabecera.

Espero que te sirva de ayuda.

Un saludo.

Garces
08/08/07, 21:06:07
Agregando a lo que dice Nenuke...

Tal vez ni siquiera necesites forzar el evento TOP-OF-PAGE....
En el quiebre puedes llamar a un FORM que te imprima la cabecera que necesitas, pasando como parámetros los campos de cuenta y los demás que vayas a necesitar...

Saludos...

ibecerra
09/08/07, 19:54:21
Gracias con el apoyo de un compañero se pudo hacer lo siguiente para dar solucion a este problema
CONSTANTS:

gc_formname_before_line_output TYPE slis_formname
VALUE 'BEFORE_LINE_OUTPUT',
C_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'BEFORE_OUTPUT',
donde

*---------------------------------------------------------------------*
* FORM before_output *
*---------------------------------------------------------------------*
FORM BEFORE_OUTPUT.
IF SY-PLIST NE SPACE.
READ TABLE TI_DATA INDEX W_COUNT.
CONCATENATE TI_DATA-KTOGR TI_DATA-KTGRTX
INTO wclase SEPARATED BY SPACE.
CONCATENATE TI_DATA-KTANSW TI_DATA-TXT50C
INTO wcuenta SEPARATED BY SPACE.
ENDIF.
perform TOP_OF_PAGE1.

*
ENDFORM.

* --------------------------------------------------------------------
* ---------------------------------------------------- ALV END OF PAGE
FORM before_line_output USING rs_lineinfo TYPE slis_lineinfo.
CHECK rs_lineinfo-TABNAME = 'TI_DATA'.
READ TABLE TI_DATA INDEX rs_lineinfo-tabindex.
IF SY-PLIST NE SPACE AND W_FLAG EQ SPACE.
CONCATENATE TI_DATA-KTOGR TI_DATA-KTGRTX
INTO wclaseaux SEPARATED BY SPACE.

W_FLAG = 'X'.
ENDIF.

CONCATENATE TI_DATA-KTOGR TI_DATA-KTGRTX
INTO wclase SEPARATED BY SPACE.
IF wclase <> wclaseaux.
IF wclaseaux NE SPACE.
IF SY-PLIST NE SPACE.
W_COUNT = rs_lineinfo-TABINDEX.
ENDIF.
NEW-PAGE.
ENDIF.
wclaseaux = wclase.
wclase = wclase.
CONCATENATE TI_DATA-KTANSW TI_DATA-TXT50C
INTO wcuenta SEPARATED BY SPACE.
ENDIF.
ENDFORM.

FORM TOP_OF_PAGE1.
DATA: XCONT(4) TYPE C,
WDESC(50) TYPE C,
XDESC(50) TYPE C,
xcu(2) type c,
wsubt(20) type c,
wlon type i,
wpos type i.
data l_folio like p_folio.
READ TABLE TI_T001 INDEX 1.
l_folio = sy-pagno + p_folio.
READ TABLE TI_T001 INDEX 1.
write: 1
'Registro de Activos Fijos - Detalle de los Activos Fijos'.
skip.
write: 1 'Sociedad: ', 11 g_name1,
160 'Registro de Activos Fijos' ,
240 'Folio:',
247 l_folio .
skip.
write: 01 'Ruc:', g_ruc,
160 'Ejercicio ' ,
170 P_GJAHR,
240 'Pagina:',
247 sy-pagno.
skip.
write: 01 'Clase Activo Fijo: ', wclase .
skip.
write: 01 'Cuenta Contable : ', WCUENTA.



ENDFORM. " TOP_OF_PAGE