En las siguientes lÃneas vamos a poder hacerlo.
*Declaración de variables lf_formname TYPE tdsfname VALUE 'ZFIF_FORMATO_LIQER'. *Función que devuelve el modulo de función del SmartForm CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING *Nombre del formulario SmartForm formname = lf_formname IMPORTING fm_name = lf_fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. *Traemos los valores del programa a las variables del smartforms que va imprimir el PDF DATA: ls_ssfctrlop TYPE ssfctrlop. " Control Parameters DATA: ls_output_options TYPE ssfcompop. " Output Options DATA: ls_job_output_info TYPE ssfcrescl. " Job Output Info DATA: ls_job_output_options TYPE ssfcresop. " Job Output Options *Llama al modulo de función del SF ls_ssfctrlop-no_dialog = 'X'. ls_ssfctrlop-getotf = 'X'. ls_ssfctrlop-preview = 'X'. *No funciona, se debe asignar una impresora x default al usuario ls_output_options-tddest = 'ZLOCAL'. ls_output_options-tdnoprev = 'X'. ls_output_options-tdtitle = sy-title. ls_output_options-tdnewid = 'X'. CALL FUNCTION lf_fm_name EXPORTING ip_vuser = lv_vuser "Aprobador ip_aprob = lv_aprob "Aprobador ip_feapr = lv_feapr "Fecha de Aprob. Liq. ip_feren = lv_feren "Fecha de Liquidación ip_name1 = lv_name1 "Nombre de Personal ip_kostl = lv_kostl "Centro de Costo ip_bktxt = lv_bktxt "Motivo de Solicitud ip_fefin = lv_fefin "Duración Solicitud - Fec.Fin ip_feini = lv_feini "Duración Solicitud - Fec.Inicio ip_lifnr = lv_lifnr "Código de Personal ip_stcd1 = lv_stcd1 "Identificación ip_importe = lv_importe ""Importe de Solicitud ip_wrbtr = lv_wrbtr "Importe de Solicitud ip_dmbtr = lv_dmbtr "Importe de Solicitud ip_mon_local = lv_mon_local "En Mon. Local ip_mon_sgiro = lv_mon_sgiro "Monto sobregiro ip_sociedad = lv_sociedad "Sociedad ip_sobregiro = lv_sobregiro "Sobregiro ip_statu_solicitud = lv_statu_txt "Estado de la solicitud ip_belnr = lv_belnr "Nro de Solicitud ip_aufnr = lv_aufnr "Orden Interna ip_ttotal = lv_ttotal "Total - importe total ip_tsoles = lv_tsoles "Total - importe soles ip_tdolar = lv_tdolar "Total - importe dolar control_parameters = ls_ssfctrlop output_options = ls_output_options *user_settings = ' ' IMPORTING fm_name = lf_fm_name job_output_info = ls_job_output_info job_output_options = ls_job_output_options TABLES t_detail = lt_detail. IF sy-subrc = 0. DATA: lv_bytecount TYPE i. DATA: lt_lines TYPE TABLE OF tline. DATA: ls_line TYPE tline. *Convierte a PDF CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' IMPORTING bin_filesize = lv_bytecount TABLES otf = ls_job_output_info-otfdata lines = lt_lines. IF sy-subrc = 0. DATA l_pdfstring TYPE xstring. DATA lv_string TYPE string. DATA lv_buffer TYPE xstring. DATA l_xline TYPE xstring. LOOP AT lt_lines INTO ls_line. "into l_line. lv_string = ls_line. EXPORT my_data = lv_string TO DATA BUFFER lv_buffer. IMPORT my_data TO l_xline FROM DATA BUFFER lv_buffer IN CHAR-TO-HEX MODE. CONCATENATE l_pdfstring l_xline INTO l_pdfstring IN BYTE MODE. ENDLOOP. DATA lv_filename TYPE string. *Creo nombre a mi archivo PDF para este ejemplo colocamos 'er' CONCATENATE 'formato_' 'er' '.pdf' INTO lv_filename. *Genero a la impresión cl_wd_runtime_services=>attach_file_to_response( i_filename = lv_filename "'OC.pdf' i_content = l_pdfstring i_mime_type = 'application/pdf' i_in_new_window = abap_false i_inplace = abap_false ). ENDIF. ENDIF.Listo con este ejemplo puedes imprimir los datos de tu smartforms a PDF
Hola. Tengo una salida de smartforms en un LOOP para obtener el OTF (cuenta por cobrar) pero la primera salida se pega con la siguiente ¿como puedo independizar cada salida ¿limpiar la memoria del SMARTFORMS para la siguiente?
ResponderBorrarExacto!! porque se queda en memoria los datos anteriores. Me avisas sino te paso un ejemplo
BorrarEstimado Luis. Gracias por la pronta respuesta, como te comente no he logrado solucionar el problema, entonces si tienes una ejemplo te lo agradecerÃa.
BorrarEstimado Luis. Gracias por la pronta respuesta, como te comente no he logrado solucionar el problema, entonces si tienes una ejemplo te lo agradecerÃa.
ResponderBorrar