Foro de programación ABAP

SAP / ABAP => Formularios => Mensaje iniciado por: Bea1982 en 29 de Octubre de 2008, 09:47:03 am

Título: Imprimir 3 cheques en una misma hoja
Publicado por: Bea1982 en 29 de Octubre de 2008, 09:47:03 am
Hola chic@s!!

Mi pregunta es la siguiente. Alguién sabe como se puede imprimir tres cheques en una misma hoja??? El formulario es un sapscript.

Hay que modificar el programa de control RFFOUS_C?

Muchas gracias.
Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: ale12 en 29 de Octubre de 2008, 11:35:27 am
Hola Bea,

yo creo que lo mas sencillo sería copiarte la ventana que tienes para imprimir tu cheque otras dos veces...

Luego en le programa de impresión donde llame a esa ventana, tendrás que llamar a las otras dos nuevas que hayas creado.

Un saludo.
Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: Bea1982 en 29 de Octubre de 2008, 11:56:43 am
Hola Ale12!!

El programa de control de impresión de cheques es el RFFOUS_C, lo has tocado alguna vez??? Sabes donde hay que cambiarlo??

Un saludo y muchas gracias por contestar.
Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: ale12 en 29 de Octubre de 2008, 12:05:05 pm
He realizado una vez un formulario de cheques pero no me acuerdo el programa de impresión que utilizaba.

De todas formas para buscar que programa de impresión está utilizando tu formulario buscalo en esta tabla:  --> TNAPR

Y una vez localizado el programa dime cual es, e intentaré buscar en que parte del código se puede cambiar.
 ;)

Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: Bea1982 en 29 de Octubre de 2008, 12:23:48 pm
Hola!!

En la tabla TNAPR, que me has dicho no lo he encontrado.
El formulario estándar es el sapscript F110_ES_CHEQUE.
Yo creo que el programa es el que te he dicho anteriormente, el RFFOUS_C.

Un saludo y muchas gracias.
Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: ale12 en 29 de Octubre de 2008, 01:07:20 pm
Lo único que te puedo decir es que busques en el programa que tienes esto:

CALL FUNCTION 'WRITE_FORM'

Y luego buscas el nombre de ventana que tenga tu cheque. Por esa parte tendrás que meter tus otras dos ventanas.

***Una pregunta, ¿sabes que clase de mensaje estas utilizando para lanzar el cheque?
Si lo sabes, ponlo en la tabla que te comenté antes en el campo KSCHL y vuelve a buscar tu programa de impresión y formulario.

Luego me cuentas haber que tal ha ido.

Un saludo.


Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: Bea1982 en 29 de Octubre de 2008, 01:32:16 pm
Hola!!

No, no se cual es la clase de mensaje.

De todas formas el programa es el RFFOUS_C, porque cuando verificas el formulario sapscript, aperece dicho programa.

En cuanto a lo del WRITE_FORM, aparece un montón de veces. Y en cual de ellos debo poner mis otras ventanas.

Un saludo.
Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: ale12 en 29 de Octubre de 2008, 01:53:37 pm
¿Cuantas ventanas tienes en tu formulario para imprimir el cheque original? (Ojalá sea solo una)

Busca esos nombres y cuando la(s) encuentres pones debajo las nuevas que hayas creado.

Pero intenta ver como trabaja el programa, que igual con lo que te digo no es suficiente. Tendrás que debuggear un poco e ir mirando que hace. Mira que elementos de texto pinta, etc...

 ;)
Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: Bea1982 en 29 de Octubre de 2008, 02:05:58 pm
Hola!!

Tengo varias ventanas, es que tengo que imprimir solamente los datos, ya que se imprime sobre papel pre-impreso. Así que tengo varias ventanas para así poner cada una de ellas en las coordenadas exactas donde debo imprimir.

Y así no me repetirá lo mismo?? Al fin y al cabo al estar dentro del mismo bucle me estará cogiendo el mismo cheque, no??

Te refieres a mirar cada aparición de

CALL FUNCTION 'WRITE_FORM'
                 EXPORTING
                      window   = 'INFO'
                      element  = '505'
                      function = 'APPEND'
                 EXCEPTIONS
                      window   = 1
                      element  = 2.

para una determinada ventana, en este caso la ventana 'INFO'.

Y si me aperece varias veces???

Un saludo
Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: ale12 en 29 de Octubre de 2008, 03:36:09 pm
Haber... mas o menos voy viendo como es el formulario, el caso es que es difícil dar ideas tan concretas sin verlo en persona.

Si tu tienes una ventana INFO, te puedes crear (en tu caso otras dos ventanas INFO... por ejemplo INFO1 e INFO2), nunca pueden haber dos ventanas con el mismo nombre.

Luego otra cosa, dependiendo de como vayas a montar tus Cheques pues igual te sirven las mismas variables que tengas en tus ventanas si lo que vas hacer es un LOOP a las ventanas "INFO".

Todas estas cosas se pueden hacer de tantas maneras... que es difícil concretar algo. Por eso te comentaba que tienes que ver como trabaja el programa de impresión que tienes y el Sapscrit como este montado.

Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: Bea1982 en 29 de Octubre de 2008, 03:48:58 pm
Hola!!

Si, las ventanas INFO, INFO2 e INFO3 ya las he creado.

En cuanto al programa de control, tengo una copia Z hecha a partir del estándar RFFOUS_C.

Entonces solo es necesario duplicar en dicho programa de control Z, las llamadas a las ventanas cambiando el nombre. No deberíamos hacer un contador para que vaya escribiendo primero en INFO, luego en INFO2, luego en INFO3 y luego volver a INFO... y así sucesivamente???

Por otra parte tengo también en dicho programa de control, la llamada CALL FUNCTION 'START_FORM', está es para una nueva página, no? Con lo que deberíamos ponerla solamente cuando se llame a la ventana INFO y no a todas, no?

Un saludo y muchas gracias.

Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: ale12 en 29 de Octubre de 2008, 04:20:50 pm
Imaginemos que quieres imprimir 9 cheques, entonces si vas hacer un LOOP 9 veces si que sería bueno poner un contador para que vaya pasando cada vuelta a la INFO que le corresponda (no se si está así montado, solo es un ejemplo por lo que me comentas).

Respecto al 'START_FORM', creo que es lo mismo que cuando se pone 'OPEN_FORM', realmente es para iniciar el formulario. Puede que haya gente que lo utilice para hacer páginas nuevas, pero eso son soluciones que monta la gente, pero simplemente es una instrucción para empezar el formulario.

Para pasar a la página siguiente tendrás que crearla en el mismo formulario una página nueva (NEXT). El solito llamará a la siguiente página cuando tenga que pintar.

Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: Bea1982 en 04 de Noviembre de 2008, 09:39:13 am
Hola!!

He estado estos días probando y no he conseguido na de na.

Si por ejemplo tengo una ventan INFO en mi formulario, pues si he creado una INFO1 y otra INFO2. En el programa de control, cuando llamo a la ventana INFO debo tener en cuenta de llamar INFO1 cuando sea el segundo cheque de la página en INFO2 cuando sea el tercero.

Pero, resulta que he probadoa poner un break point, en la parte del programa donde están los WRITE_FORMS a las ventanas del formulario, es decir, en la parte que debería modificar. Pero el programa no para, con lo que deduzco que no debe pasar por allí...

Alguien puede ayudarme?

Un saludo y muchas gracias.
Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: Carlos en 04 de Noviembre de 2008, 11:08:17 am
Hola Bea,

Vamos a empezar por el principio.

¿Como imprimes los cheques? Me refiero a que transacción vas y que haces para imprimirlo.

¿Utilizas una clase de mensaje para imprimir?

A ver si de esta manera me doy cuenta de que programa de impresión estas utilizando.


Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: Bea1982 en 04 de Noviembre de 2008, 11:20:10 am
Hola Carlos,

Los imprimo a través de la transacción F110. El formulario  estándar es el F110_ES_CHEQUE y el programa de control estándar es el RFFOUS_C. En ambos casos he creado un Z, para poder modificarlos.

Un saludo y muchas gracias.
Título: Re: Imprimir 3 cheques en una misma hoja
Publicado por: Jorge Celedón en 11 de Noviembre de 2008, 06:05:01 pm
Hola Bea
Yo pase por lo que tu indicas, los tips son los siguientes,

- cada cheque es una pagina, por lo tanto debes definir una pagina del tamaño del cheque por la tx. spad
- debes crear formatos de edicion y de pagina ejemplo zcheque.
- debes configurar el tipo de dispositivo (ejem: lex4227p)/ formato de edicion Ejm: (zheque) con el  para controlar la cantidad de lineas por pagina en la incializacion de la impresora.
ejem:
para 17 lineas
# set page length 17 (=$16 hex) lines
\e\0x43\0x11

Inicializar impresora
# printer must be set to IBM emulation mode!
# print quality: draft
\e\0x5B\0x64\0x01\0x00\0x40
# cancel auto LF after CR
\e\0x35\0x00
# select codepage 850
\e\0x5B\0x54\0x04\0x00\0x00\0x00\0x03\0x52
# cancel skip perforation mode
\e\0x4F
# set 6 LPI = 12/72 inch and start this line spacing
\e\0x41\0x0C\e\0x32
## set 8 LPI = 9/72 inch and start this line spacing
#\e\0x41\0x09\e\0x32
# set page length 17 (=$16 hex) lines
\e\0x43\0x11
## set page length 22 (=$16 hex) lines
#\e\0x43\0x16
## set page length 23 (=$16 hex) lines
#\e\0x43\0x17
## set page length 66 (=$42 hex) lines
#\e\0x43\0x42
# set TOF at current position
\e\0x34
# cancel underlining
\e\0x2D\0x00
# cancel super/subscript
\e\0x54
# cancel proportional spacing
\e\0x50\0x00
# cancel overscoring
\e\0x5F\0x00

espero te ayude esto.
atte.
Jorge