Para esto, se utiliza la estructura de control del tipo de componente: SSFCTRLOP.
Esta estructura tiene distintos atributos que podremos ver en:
Pero en este caso, los parámetros que nos importan son: NO_OPEN y NO_CLOSE.
Llamamos al smartform enviándole el parámetro NO_CLOSE con el valor X .
Esto va a permitir que la solicitud de impresión no se cierre despues de ejecutar el Smartform permitiendo la inclusión de más. También se tiene que dejar vacío el otro parámetro: NO_OPEN.
NO_OPEN = ''.
NO_CLOSE = 'X'.
Para las demás llamadas a Smartforms que se piensan incluir (sin cerrar aun la solicitud de impresión), se tienen que enviar los parámetros:
NO_OPEN = 'X'.
NO_CLOSE = 'X'.
Y para cerrar la solicitud de impresión, lo único que tenemos que hacer es:
NO_OPEN = 'X'.
NO_CLOSE = ''.
Ahora un pequeño EJEMPLO muy básico:
Tenemos 2 smartforms con parámetros de diferentes nombres (que pueden ser iguales o distintos en el tipo, en este caso son char10 un parámetro para c/u ).
REPORT ZZZZZZ001.
types: begin of y_head,
ejemplo(10) type c,
end of y_head.
data t_head type standard table of y_head.
field-symbols <fs_head> type y_head.
data: w_output type ssfcompop,
w_contrl type ssfctrlop.
************************************************
do 4 times.
insert initial line into table t_head assigning <fs_head>.
<fs_head>-ejemplo = sy-index.
enddo.
unassign <fs_head>.
loop at t_head assigning <fs_head>.
w_contrl-no_open = 'X'.
w_contrl-no_close = 'X'.
at first.
w_contrl-no_open = ''.
w_contrl-no_close = 'X'.
endat.
at last.
w_contrl-no_open = 'X'.
w_contrl-no_close = ''.
endat.
condense <fs_head>-ejemplo no-gaps.
if <fs_head>-ejemplo eq '1'
or <fs_head>-ejemplo eq '3'.
call function '/1BCDWB/SF00000089'
exporting
control_parameters = w_contrl
output_options = w_output
user_settings = ' '
i_ejemplo = <fs_head>-ejemplo
exceptions
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
others = 5.
elseif <fs_head>-ejemplo eq '2'
or <fs_head>-ejemplo eq '4'.
call function '/1BCDWB/SF00000090'
exporting
control_parameters = w_contrl
output_options = w_output
user_settings = ' '
i_ejemplo02 = <fs_head>-ejemplo
exceptions
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
others = 5.
endif.
endloop.
No hay comentarios:
Publicar un comentario