PDA

Ver la Versión Completa : smartforms


chelisse
04/10/07, 17:24:46
Hola chavales, la cuestión sobre SMARTFORMS es esta: quiero recorrer una tabla y para cada entrada, después de los correspondientes cálculos, hay que sacar la información, PERO!!! CADA UNA EN UNA PÁGINA DISTINTA.

Si tengo dos entradas en la tabla de entrada, pues saldrán dos páginas y además de la información también tiene que tener su correspondiente cabecera de datos, es decir una página completa con el mismo formato que la primera pero con información distinta. Creo que esto se hace con COMANDOS, pero no los he utilizado nunca.No se si todo tiene que estar en una sola ventana o no hace falta y al comenzar una nueva página se pinta todo otra vez.

¿Alguna idea?,gracias.

azua14
05/10/07, 15:46:41
si..bueno...yo prefiero usar los comandos solo para cosas muy especificas..todo el manejo de datos prefiero hacerlo en el reporte que corresponda..en tu caso, recorrer una tabla y para cada entrada, después de los cálculos, guardar la información en una tabla interna...y hacer un loop a esa tabla y por cada loop llamar al smartform.

chelisse
08/10/07, 11:05:15
gracias por tu respuesta, pero si hago los cálculos fuera del smartforms, me obliga a pulsar la tecla de imprimir para cada llamada al formulario. Yo quiero que me imprima todo sin pausas.

Que os parece?? Se podría hacer como propone Azua14 sin que se detenga la impresión a cada llamada al formulario??

ppchico
08/10/07, 14:16:08
Es posible imprimir directamente, sin la obligacion de pulsar el boton de imprimir. Mediante la estructura SSFCTRLOP, puedes indicarle que no muerstre la pantalla de previsualizacion, y que lo imprima directamente, mediante los campos:
ls_control_param-no_dialog = 'X'. Con eso evitas el tener que pulsar el boton de imprimir, y si le haces un clear al campo preview, entonces creo que imprime directamente, o si no, muestra el formulario directamente en caso de ponerlo a X.

Una vez rellena esa estructura, llamas a la Funcion :

SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; } CALL FUNCTION 'WFMC_PREPARE_SMART_FORM'
EXPORTING
PI_NAST = NAST
PI_COUNTRY = IS_DLV-LAND
PI_ADDR_KEY = IS_ADDR_KEY
PI_REPID = LF_REPID
PI_SCREEN = XSCREEN
IMPORTING
PE_RETURNCODE = CF_RETCODE
PE_ITCPO = LS_ITCPO
PE_DEVICE = LF_DEVICE
PE_RECIPIENT = CS_RECIPIENT
PE_SENDER = CS_SENDER.

Esto te devuelve las estructuras para luego pasarselas a la llamada del smartforms.

Por ultimo haces la llamada al smartforms, usando las estructuras devueltas () Asegurandote de que la estructura del control param, tenga los campos anteriores con los valores deseados. Y debería de imprimirlo de manera directa.

SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L0S31 { font-style: italic; color: #808080; } .L0S32 { color: #3399FF; } .L0S52 { color: #0000FF; } CALL FUNCTION lf_fm_name
EXPORTING
archive_index = toa_dara
archive_parameters = arc_params
control_parameters = ls_control_param
mail_recipient = ls_recipient
mail_sender = ls_sender
output_options = ls_composer_param
user_settings = space
is_nast = nast
is_repeat = repeat
* Parametro a pasar
s_fini = s_fini-low
s_ffin = s_ffin-low
TABLES
ITAB_datos = itab_datos

EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.

Espero que te haya sido de ayuda.

chelisse
08/10/07, 15:25:07
Gracias lo probaré y si no digo nada es que está bién, y creo que lo estará.