Difference between revisions of "SAP ABAP SMARTFORMS"
From SapWiki
Line 107: | Line 107: | ||
output = p_filebase64. | output = p_filebase64. | ||
− | + | IF sy-tcode = 'SE37'. | |
− | * Preview PDF. | + | * Preview PDF. |
− | + | CALL FUNCTION 'SSFCOMP_PDF_PREVIEW' | |
− | + | EXPORTING | |
− | + | i_otf = ltd_otf[] | |
− | + | EXCEPTIONS ##fm_subrc_ok | |
− | + | convert_otf_to_pdf_error = 1 | |
− | + | cntl_error = 2 | |
− | + | OTHERS = 3. | |
− | + | ENDIF. | |
ENDFUNCTION. | ENDFUNCTION. |
Revision as of 13:19, 27 March 2020
ejemplo de función que retorna smartform en BASE 64 con preview para pruebas en la trn. SE37
FUNCTION zhr_get_pdf. *"---------------------------------------------------------------------- *"*"Interfase local *" IMPORTING *" VALUE(P_PERNR) TYPE PERNR_D OPTIONAL *" VALUE(P_IDDOCUMENTO) TYPE TIM_REQ_ID OPTIONAL *" EXPORTING *" VALUE(P_BINFILE) TYPE XSTRING *" VALUE(P_FILEBASE64) TYPE STRING *" VALUE(P_ERRMSG) TYPE STRING *"---------------------------------------------------------------------- DATA: l_formname TYPE tdsfname VALUE 'ZSF_MY_SMARTFORM', lf_fm_name TYPE rs38l_fnam, ls_control_param TYPE ssfctrlop, ls_composer_param TYPE ssfcompop, ga_job_output_info TYPE ssfcrescl. *insert some logic here * *--------------------------------------------------------------------* * call Smartform *--------------------------------------------------------------------* CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = l_formname IMPORTING fm_name = lf_fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO p_errmsg. RETURN. ENDIF. ls_control_param-device = 'PRINTER'. ls_control_param-no_dialog = 'X'. ls_control_param-preview = . ls_control_param-no_open = . ls_composer_param-tdcover = ' '. ls_control_param-getotf = 'X'. ls_composer_param-tdimmed = 'X'. ls_composer_param-tdcopies = 1. CALL FUNCTION lf_fm_name EXPORTING control_parameters = ls_control_param output_options = ls_composer_param i_data = wa_data IMPORTING job_output_info = ga_job_output_info * TABLES * detalle = it_ccnom1 EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. * Implement suitable error handling here * Transfer SF errors to internal table DATA lt_errortab TYPE tsferror. CALL FUNCTION 'SSF_READ_ERRORS' IMPORTING errortab = lt_errortab. LOOP AT lt_errortab INTO DATA(wa). MESSAGE ID wa-msgid TYPE wa-msgty NUMBER wa-msgno WITH wa-msgv1 wa-msgv2 wa-msgv3 wa-msgv4 INTO p_errmsg. EXIT. ENDLOOP. RETURN. ENDIF. ltd_otf[] = ga_job_output_info-otfdata[]. CALL FUNCTION 'CONVERT_OTF' EXPORTING format = 'PDF' * max_linewidth = 800 IMPORTING bin_filesize = lv_bytes bin_file = bin_file TABLES otf = ltd_otf lines = gt_pdfdata EXCEPTIONS ##FM_SUBRC_OK err_max_linewidth = 1 err_format = 2 err_conv_not_possible = 3 OTHERS = 4. IF NOT bin_file IS INITIAL. p_binfile = bin_file. ENDIF. CALL FUNCTION 'SCMS_BASE64_ENCODE_STR' EXPORTING input = p_binfile IMPORTING output = p_filebase64. IF sy-tcode = 'SE37'. * Preview PDF. CALL FUNCTION 'SSFCOMP_PDF_PREVIEW' EXPORTING i_otf = ltd_otf[] EXCEPTIONS ##fm_subrc_ok convert_otf_to_pdf_error = 1 cntl_error = 2 OTHERS = 3. ENDIF. ENDFUNCTION.