Saber Si Un Smartform Se Imprime o Visualiza

6
Cuando nosotros ejecutamos un smartform permitiendole al usuario que eliga entre imprimir o visualizar el documento y tras ello realizar una actualización con lo impreso (por ejemplo registrar en una tabla un flag que me indique que el documento ha sido impreso) ¿Cómo podemos reconocer que el usuario ha indicado imprimir y no visualizar?. Para ello emplearemos el parámetro de importación JOB_OUTPUT_OPTIONS, el cual nos indicara la acción realizada por el usuario. Para entender mejor lo antes mencionado se coloca el siguiente ejemplo: Se busca que tras imprimir un smartform, en una tabla Z se actualice un campo que me permita reconocer que el documento ya fue impreso. Para ello colocamos nuestro código de nuestro smartform, pero la parte que nos interesa es la inclusión del parámetro de importación JOB_OUTPUT_OPTIONS como se muestra a continuación: *Primero declaramos las variables empleadas: DATA: ls_ctrlparameter TYPE ssfctrlop, ls_outoptions TYPE ssfcompop, G_IMPRESION TYPE TABLE OF SSFCRESOP WITH HEADER LINE, g_bet2 TYPE SSFCRESC, ls_fmname TYPE rs38l_fnam. *Seguido lanzamos la ejecución de nuestro Smartform CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’ EXPORTING formname = ‘Z_NOMBRE’ IMPORTING fm_name = ls_fmname EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. CALL FUNCTION ls_fmname EXPORTING control_parameters = ls_ctrlparameter output_options = ls_outoptions user_settings = ‘ ‘ bukrs = p_bukrs “Parámetro de selección IMPORTING JOB_OUTPUT_INFO = g_bet2 JOB_OUTPUT_OPTIONS = G_IMPRESION

description

SAP ABAP

Transcript of Saber Si Un Smartform Se Imprime o Visualiza

Cuando nosotros ejecutamos un smartform permitiendole al usuario que eliga entre imprimir o visualizar el documento y tras ello realizar una actualizacin con lo impreso (por ejemplo registrar en una tabla un flag que me indique que el documento ha sido impreso) Cmo podemos reconocer que el usuario ha indicado imprimir y no visualizar?. Para ello emplearemos el parmetro de importacin JOB_OUTPUT_OPTIONS, el cual nos indicara la accin realizada por el usuario.Para entender mejor lo antes mencionado se coloca el siguiente ejemplo:Se busca que tras imprimir un smartform, en una tabla Z se actualice un campo que me permita reconocer que el documento ya fue impreso. Para ello colocamos nuestro cdigo de nuestro smartform, pero la parte que nos interesa es la inclusin del parmetro de importacin JOB_OUTPUT_OPTIONS como se muestra a continuacin:*Primero declaramos las variables empleadas:DATA:ls_ctrlparameterTYPEssfctrlop, ls_outoptionsTYPEssfcompop, G_IMPRESIONTYPE TABLE OFSSFCRESOPWITH HEADER LINE,g_bet2TYPE SSFCRESC, ls_fmnameTYPErs38l_fnam.*Seguido lanzamos la ejecucin de nuestro SmartformCALL FUNCTIONSSF_FUNCTION_MODULE_NAME EXPORTING formname =Z_NOMBRE IMPORTING fm_name = ls_fmname EXCEPTIONS no_form =1 no_function_module =2OTHERS =3.CALL FUNCTIONls_fmname EXPORTING control_parameters = ls_ctrlparameter output_options = ls_outoptions user_settings = bukrs = p_bukrsParmetro de seleccin IMPORTING JOB_OUTPUT_INFO = g_bet2 JOB_OUTPUT_OPTIONS = G_IMPRESIONEXCEPTIONS formatting_error =1 internal_error =2 send_error =3 user_canceled =4OTHERS =5.*Tras la ejecucin del smartform empleamos la lgica para saber si*se visualizo o imprimio y guardarlo en una tabla. IFsy-subrc 0.MESSAGENo se puede imprimir el formularioTYPEE. ELSE.IFG_IMPRESION-TDPREVIEWEQSPACEORG_BET2-OUTPUTDONEEQX.LOOP ATGTD_ACTUALIZAINTOWA_ACTUALIZA. WA_ACTUALIZA-STATUS =P.UPDATEZTABLAFROMWA_ACTUALIZA.ENDLOOP. ENDIF. ENDIF.Al ejecutar el cdigo al usuario le aparecer la siguiente ventana:

En esta ventana el usuario puede elegir el imprimir el documento o solo visualizarlo, en el primer caso haremos que seleccione la visualizacin tal como se muestra:

Para reconocer lo obtenido tras la visualizacin se hizo un debug despus de la ejecucin de la funcin que hemos colocado al inicio y verificamos el campo G_IMPRESION, en donde notaremos que el valor TDPREVIEW tiene una X, con lo cual podemos saber que la ejecucin antes realizada solo fue para previsualizar.

Ahora realizamos un caso mandando a imprimir el documento por medio de una orden spool, e igual que el caso anterior hacemos un debug tras la ejecucin del smartform y comprobamos los valores que se han importado en G_IMPRESION, en este caso notaremos que el campo TDPREVIEW se encuentra vacio y que en cambio el campo TDNEWID si presenta una X indicandonos que se ha creado una orden spool.

Con lo antes visto y sumado a la lgica necesaria segn el requerimiento esperado, se realiza la codificacin teniendo en cuenta el valor de TDPREVIEW, si tiene una X quiere decir que el documento solo fue previsualizado, caso contrario este en blanco nos indica que se ha lanzado a impresin.OJO:No obstante el usuario podra colocar visualizacin pero imprimir dentro

Tras apretar el botn de impresin nos devuelve la orden spool creada:

Para reconocer si ha hecho una impresin desde la visualizacin emplearemos la tabla G_BET2, en la cual se alojan los datos de la orden SPOOL, notando que el campo OUTPUTDONE tiene X

Y si quisieramos obtener el nmero de spool, lo veremos en la estructura contenida en SPOOLIDS