![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP La construcción del programa impresor
ABAP La construcción del programa impresor
![ABAP La construcción del programa impresor ABAP La construcción del programa impresor](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/162.jpg)
Construcción del programa impresor.
1.- Construcción del programa impresor de un formulario SmartForm.
Los objetivos principales del programa impresor de un formulario SmartForm son:
· La selección de los datos que se mostraran en el formulario.
· La invocación o ejecución del formulario.
NOTA: Si bien dentro de un formulario SmartForm podremos agregar sentencias de código y selecciones de datos, es sumamente conveniente minimizar el código que se coloca en los formularios debido a una cuestión de performance y facilidad de mantenimiento futuro de estos objetos.
2.- Selección de datos.
Crearemos el programa de ejemplo, ZPRUEBA_SMARTFORMS, y dentro de este la subrutina para la selección de datos. Se usara la tabla ZUSUARIOS.
DATA: ti_usuarios TYPE STANDARD TABLE OF ZUSUARIOS.
FORM cargar_datos .
CLEAR ti_usuarios.
REFRESH ti_usuarios.
SELECT dni nombre_ape estado_usu direccion codigo_postal
fecha_nac estado_civil
FROM ZUSERS_ESTXQ15K
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios.
ENDFORM.
2.- Invocación del formulario.
Crearemos el formulario SmartForm ZFORMULARIO_PRUEBA desde la transacción SMARTFORMS y presionando Crear.
Volviendo al programa ZPRUEBA_SMARFORMS utilizaremos dos módulos de función para ejecutarlo. Primero la función SSF_FUNCTION_MODULE_NAME para averiguar el nombre de la función SAP que ejecuta el formulario.
Inicializar el formulario.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'Z_FORM_PRUEBA_ESTXQ15K'
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.
Ahora ejecutamos la función cuyo nombre contiene la variable V_NOMBRE_FORM pasándole como parámetro de entrada/salida la tabla interna de usuarios TI_USUARIOS que obtuvimos en la tabla base de datos ZTABLA_USUARIOS en la subrutina SELECCIÓN_DATOS.
Enviar datos al formulario e imprimirlo
CALL FUNCTION v_nombre_form
TABLES
ti_usuarios = ti_usuarios
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.
NOTA: En las secciones EXPORTING y TABLES de la función contenida en la variable V_NOMBRE_FORM es donde se especifican todos los parámetros que enviaremos al formulario.
NOTA: En la tabla base de datos STXFADMI podemos encontrar los formularios SmartForms existentes en SAP, y de cada uno de ellos podemos ver el numero del módulo de funciones generado para la ejecución del formulario en el campo FMNUMB
 
 
 
Sobre el autor
Publicación académica de Juan Hernández, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Hernández
Profesión: Programador Informático - España - Legajo: XQ15K
✒️Autor de: 125 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: PartTime