Archivo

Archive for the ‘Formularios (Smartforms/Sapscript)’ Category

SE39 – Comparar SMARTFORMS y otros objetos

Caso: se desean comparar dos smartforms.

Solución: los smartforms, al grabarse, guardan sólo la última versión del mismo. A veces podemos tener dos como para comparar diferencias, es lo que veremos aquí:

1. Ingresamos a la transacción SMARTFORMS para traernos el nombre del módulo de funciones:

Hacemos lo mismo con el segundo SMARTFORM.

2. Ingresamos a la transacción SE39, en donde indicamos los objetos a comparar:

Screenshot_5

Si deseamos comparar entre sistemas, podemos indicarlo y abajo aparece el cuadro para indicar el sistema:

3. En la siguiente pantalla, presionamos el botón de comparar y con las flechas podemos desplazarnos a la siguiente/anterior diferencia:

Smartforms: No existe el mensaje 042 del área de trabajo SSFCOMPOSER

Caso: Se previsualiza un formulario smartforms y genera error C!002 “No existe el mensaje 042 del área de trabajo SSFCOMPOSER”.

Solución: El error puede surgir por:

1. El contenido no se ajusta a la ventana: un objeto es más largo que lo esperado en la ventana, o sea un texto, un logo es más grande que la ventana que la contiene

2. Tabla inconsistente: Hay columnas o filas que faltan en alguna tabla o éstas generan un texto muy largo o con caracteres especiales.

3. Hay una imagen que no existe en el mandante donde se está ejecutando el formulario (en la SE78) o se configuró mal dicha imagen.

Se debe revisar los puntos anteriores. Asimismo se puede crear el mensaje SSFCOMPOSER 042 por la SE91 para aclarar mejor el error.

En mi caso se generaba dinámicamente un logo de una firma, pero cuando se generaba un logo123.jpg y esta imagen no estaba subida en el sistema por la SE78, se generaba este error.

Ejemplo simple de Smartform

*&---------------------------------------------------------------------*
*& Report  Z_SMARTFORMS
*&---------------------------------------------------------------------*
REPORT  z_smartforms.
 
* Nombre del modulo de funciones del formulario.
DATA: v_nombre_form TYPE rs38l_fnam.
 
* Tabla interna para los datos.
DATA: ti_facturas TYPE TABLE OF vbrk,
 
* ---------------------------------------------------------------------*
start-of-selection.
* ---------------------------------------------------------------------*
 
* Seleccionamos los datos de la tabla de usuarios
PERFORM cargar_datos.
 
* Llamada al formulario Smartform
PERFORM llamar_smartform.
 
*&---------------------------------------------------------------------*
*&      Form  CARGAR_DATOS
*&---------------------------------------------------------------------*
FORM cargar_datos .
 
 CLEAR   ti_facturas.
 REFRESH ti_facturas.
 
 SELECT *
 FROM vbrk
 INTO TABLE ti_facturas.
 
ENDFORM.                    " CARGAR_DATOS
 
*&---------------------------------------------------------------------*
*&      Form  INVOCAR_SMARTFORM
*&---------------------------------------------------------------------*
FORM llamar_smartform .
 
 IF NOT ti_facturas[] IS INITIAL.
 
* Inicializar el formulario.
 CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
 EXPORTING
 formname           = 'ZFORMULARIO_PRUEBA'
 IMPORTING
 fm_name            = v_nombre_form
 EXCEPTIONS
 no_form            = 1
 no_function_module = 2
 OTHERS             = 3.
 
 IF sy-subrc NE 0.
 MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
 ENDIF.
 
* Enviar datos al formulario e imprimirlo
 CALL FUNCTION v_nombre_form
 TABLES
 ti_facturas      = ti_facturas
 EXCEPTIONS
 formatting_error = 1
 internal_error   = 2
 send_error       = 3
 user_canceled    = 4
 OTHERS           = 5.
 
 IF sy-subrc NE 0.
 MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
 ENDIF.
 
 ENDIF.
 
ENDFORM.                    " LLAMAR_SMARTFORM