Difference between revisions of "SAP ABAP SMARTFORMS"
From SapWiki
| Line 172: | Line 172: | ||
CHANGING p_subrc. | CHANGING p_subrc. | ||
| − | DATA: lt_errortab TYPE tsferror, | + | DATA: lt_errortab TYPE tsferror, |
| − | + | ls_control_param TYPE ssfctrlop, | |
| − | + | ls_composer_param TYPE ssfcompop, | |
| − | + | ls_job_info TYPE ssfcrescl, | |
| − | l_formname | + | l_formname TYPE tdsfname VALUE 'ZHCMSF_MYSMARTFORM', |
| − | l_fm_name | + | l_fm_name TYPE rs38l_fnam. |
p_subrc = 0. | p_subrc = 0. | ||
| Line 190: | Line 190: | ||
EXPORTING | EXPORTING | ||
formname = l_formname | formname = l_formname | ||
| + | * variant = ' ' | ||
| + | * direct_call = ' ' | ||
IMPORTING | IMPORTING | ||
fm_name = l_fm_name | fm_name = l_fm_name | ||
| Line 204: | Line 206: | ||
ENDIF. | ENDIF. | ||
| − | + | ls_control_param-no_dialog = p_nodialog. | |
| − | + | ls_control_param-langu = sy-langu. | |
| − | + | ls_control_param-no_open = 'X'. | |
| − | + | ls_control_param-no_close = 'X'. | |
| − | + | ls_composer_param-tdimmed = 'X'. | |
| − | + | ls_composer_param-tddelete = 'X'. | |
| − | + | ls_composer_param-tdlifetime = '0'. | |
| − | + | ls_composer_param-tdreceiver = sy-uname. | |
| − | + | ls_composer_param-tdcopies = '001'. | |
| − | + | ls_composer_param-tdarmod = '1'. | |
IF p_nodialog = 'X'. | IF p_nodialog = 'X'. | ||
| − | + | ls_control_param-no_dialog = space. | |
| − | + | ls_composer_param-tdnewid = 'X'. | |
ELSE. | ELSE. | ||
| − | + | ls_composer_param-tddest = 'LOCL'. | |
| − | + | ls_composer_param-tdnewid = 'X'. | |
| − | + | ls_control_param-getotf = 'X'. | |
| − | + | ls_control_param-preview = 'X'. | |
| − | + | ls_control_param-no_dialog = 'X'. | |
ENDIF. | ENDIF. | ||
| Line 233: | Line 235: | ||
EXPORTING | EXPORTING | ||
user_settings = ' ' | user_settings = ' ' | ||
| − | control_parameters = | + | control_parameters = ls_control_param |
| − | output_options = | + | output_options = ls_composer_param |
EXCEPTIONS | EXCEPTIONS | ||
formatting_error = 1 | formatting_error = 1 | ||
| Line 253: | Line 255: | ||
CALL FUNCTION l_fm_name | CALL FUNCTION l_fm_name | ||
EXPORTING | EXPORTING | ||
| − | control_parameters = | + | control_parameters = ls_control_param |
| − | output_options = | + | output_options = ls_composer_param |
user_settings = space | user_settings = space | ||
i_data = wa_data | i_data = wa_data | ||
IMPORTING | IMPORTING | ||
| − | job_output_info = | + | job_output_info = ls_job_info |
EXCEPTIONS | EXCEPTIONS | ||
formatting_error = 1 | formatting_error = 1 | ||
| Line 284: | Line 286: | ||
CALL FUNCTION 'SSF_CLOSE' | CALL FUNCTION 'SSF_CLOSE' | ||
IMPORTING | IMPORTING | ||
| − | job_output_info = | + | job_output_info = ls_job_info |
EXCEPTIONS | EXCEPTIONS | ||
formatting_error = 1 | formatting_error = 1 | ||
| Line 296: | Line 298: | ||
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno | MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno | ||
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'. | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'. | ||
| − | + | RETURN. | |
ENDIF. | ENDIF. | ||
ENDIF. | ENDIF. | ||
| Line 304: | Line 306: | ||
CALL FUNCTION 'SSFCOMP_PDF_PREVIEW' | CALL FUNCTION 'SSFCOMP_PDF_PREVIEW' | ||
EXPORTING | EXPORTING | ||
| − | i_otf = | + | i_otf = ls_job_info-otfdata |
EXCEPTIONS ##FM_SUBRC_OK | EXCEPTIONS ##FM_SUBRC_OK | ||
convert_otf_to_pdf_error = 1 | convert_otf_to_pdf_error = 1 | ||
Revision as of 16:04, 27 March 2020
Contents
- 1 Ejemplo de función que retorna smartform en BASE 64 con preview para pruebas en la trn. SE37
- 2 Problema de generación de smartform despues de un transporte
- 3 Incluir un texto estandard(sapscript) en un formulario smartform
- 4 Fondo gris en imagenes (logos)
- 5 Activar/desactivar editor microsoft Office
- 6 Activar trace smartform
- 7 Traducción de SMARTFORMS
- 8 Printing Several Forms in One Print Request
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.
Problema de generación de smartform despues de un transporte
Ver Nota: SAP Note 630105 - Generating Smart Forms after transport
Solution
If you want to generate the transported Smart Forms before the first call in the target system, create report RSTXGALL in the system. You can then run RSTXGALL after a transport if required.
report rstxgall.
data: form type tdsfname,
forms type table of tdsfname.
select formname from stxfadm into table forms
where formtype = space.
loop at forms into form.
call function 'SSF_FUNCTION_MODULE_NAME'
exporting
formname = form
exceptions
others = 1.
endloop.
Incluir un texto estandard(sapscript) en un formulario smartform
Si se desea utilizar un texto estandard(SO10) como un texto include, y este posee un estilo X(SE72), este estilo X debe crearse como smartstyle con los mismos parrafos y caracteres.
Fondo gris en imagenes (logos)
Si al cargar una imagen en la SE78 y en vez de verse el color blanco original se ve un gris leve, esto es porque sap admite imágenes de hasta 256 colores, entonces una solución es grabar la imagen como BMP de 256 colores con el PAINT de Windows u otro editor de imágenes, aunque pierde resolución (ver nota SAP 205837)
Activar/desactivar editor microsoft Office
ver reporte RSCPSETEDITOR
Activar trace smartform
transaccion SFTRACE
Traducción de SMARTFORMS
Ir a SE63, Translation-->R/3 Enterprise-->Other Long Texts, seleccionar FS Forms and Styles->SSF SAP Smart Form, ingresar nombre de smartform en Object Name, y seleccionar Source & Target language.
Printing Several Forms in One Print Request
ejemplo programa: SF_EXAMPLE_03 ver nota SAP Note 85318 - Appending documents to existing spool
ejemplo
FORM print_and_release USING p_nodialog "si p_dialog = space => ver pdf, sino, imprimir
p_data TYPE vbrk_t "tabla de vbrk
CHANGING p_subrc.
DATA: lt_errortab TYPE tsferror,
ls_control_param TYPE ssfctrlop,
ls_composer_param TYPE ssfcompop,
ls_job_info TYPE ssfcrescl,
l_formname TYPE tdsfname VALUE 'ZHCMSF_MYSMARTFORM',
l_fm_name TYPE rs38l_fnam.
p_subrc = 0.
DATA(l_lines) = lines( p_data ).
IF l_lines = 0.
RETURN.
ENDIF.
* determine smartform function module for invoice
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = l_formname
* variant = ' '
* direct_call = ' '
IMPORTING
fm_name = l_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
* error handling
p_subrc = sy-subrc.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
RETURN.
ENDIF.
ls_control_param-no_dialog = p_nodialog.
ls_control_param-langu = sy-langu.
ls_control_param-no_open = 'X'.
ls_control_param-no_close = 'X'.
ls_composer_param-tdimmed = 'X'.
ls_composer_param-tddelete = 'X'.
ls_composer_param-tdlifetime = '0'.
ls_composer_param-tdreceiver = sy-uname.
ls_composer_param-tdcopies = '001'.
ls_composer_param-tdarmod = '1'.
IF p_nodialog = 'X'.
ls_control_param-no_dialog = space.
ls_composer_param-tdnewid = 'X'.
ELSE.
ls_composer_param-tddest = 'LOCL'.
ls_composer_param-tdnewid = 'X'.
ls_control_param-getotf = 'X'.
ls_control_param-preview = 'X'.
ls_control_param-no_dialog = 'X'.
ENDIF.
LOOP AT p_data INTO DATA(wa_data).
DATA(l_tabix) = sy-tabix.
IF l_tabix = 1.
CALL FUNCTION 'SSF_OPEN'
EXPORTING
user_settings = ' '
control_parameters = ls_control_param
output_options = ls_composer_param
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
* error handling
p_subrc = sy-subrc.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
RETURN.
ENDIF.
ENDIF.
CALL FUNCTION l_fm_name
EXPORTING
control_parameters = ls_control_param
output_options = ls_composer_param
user_settings = space
i_data = wa_data
IMPORTING
job_output_info = ls_job_info
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
* error handling
* Transfer SF errors to internal table
CALL FUNCTION 'SSF_READ_ERRORS'
IMPORTING
errortab = lt_errortab.
LOOP AT lt_errortab INTO DATA(wa).
MESSAGE ID wa-msgid TYPE 'I' NUMBER wa-msgno
WITH wa-msgv1 wa-msgv2 wa-msgv3 wa-msgv4 DISPLAY LIKE 'E'.
EXIT.
ENDLOOP.
p_subrc = 4.
RETURN.
ENDIF.
IF l_tabix = l_lines.
CALL FUNCTION 'SSF_CLOSE'
IMPORTING
job_output_info = ls_job_info
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
* error handling
p_subrc = sy-subrc.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'.
RETURN.
ENDIF.
ENDIF.
IF p_nodialog = space.
* Preview PDF, OJO visualiza despues de Cerrar el smartform
CALL FUNCTION 'SSFCOMP_PDF_PREVIEW'
EXPORTING
i_otf = ls_job_info-otfdata
EXCEPTIONS ##FM_SUBRC_OK
convert_otf_to_pdf_error = 1
cntl_error = 2
OTHERS = 3.
ENDIF.
ENDLOOP.
ENDFORM.