✒️ABAP La construcción del programa impresor
ABAP La construcción del programa impresor
CONSTRUCCION DEL PROGRAMA IMPRESOR DE UN FORMULARIO SMARTFORM
Objetivos principales:
La seleccion de los datos que se mostraran en el formulario.
La invocacion o ejecucion del formulario.
Si bien se pueden agragar sentencias de codigo y selecciones de datos, es sumamente conveniente minimizar codigo debido a una cuestion de performance y facilidad de mantenimiento de estos objetos.
--------------------------
SELECCION DE LOS DATOS
creamos el prgrama ABAP ZPRUEBA_SMARTFORMS y dentro de este la subrutina SELECCION_DATOS para modularizar la seleccion de los datos. Utilizamos la tabla base de datos ZTABLA_USUARIOS.
Los datos los almacenamos en la tabla interna TI_USUARIOS, que tiene la misma estructura que la tabla base de datos ZTABLA_USUARIOS pero sin el csmpo mandante.
------------------------------------
INVOCACION DEL FORMULARIO
Creamos el formulario ZFORMULARIO_PRUEBA ingresando a la transaccion SMARTFORMS y presionado el boton crear.
En el programa impresor ZPRUEBA_SMARTFORMS, vamos a utilizar dos modulos de funcion para ejecutarlo. Priemro la funcion SSF_FUNCTION_MODULE_NAME para averiguar el nombre de la funcion SAP que ejecuta el formulario.
El nombre de esta funcion lo almacenamos en la variable V_NOMBRE_FORM
En la tabla base de datos standar STXFADMI podemos encontrar los formularios smartforms existentes en el sistema SAP y de cada uno de ellos podemos ver el numero del modulo de funciones generado para la ejecucion del formulario en el campo FMNUMB.
Luego ejecutaremos la funcion cuyo nombre contiene la variable V_NOMBRE_FORM pasandole como paramtero de entrada/salida la tabla interna de usuarios TI_USUARIOS que obtuvimos de la tabla base dedatos ZTABLA_USUARIOS en la subrutina SELECCION_DATOS.
En las secciones EXPORTING y TABLES de la funcion contenida en la variable V_NOMBRE_FORM es donde se especifican todos los parametros que enviaremos al formulario.
*&---------------------------------------------------------------------* *& Report ZPRUEBA_SMARTFORMS *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zprueba_smartforms. * Nombre del modulo de funciones del formulario. DATA: v_nombre_form(30) TYPE c. DATA: ti_usuarios TYPE STANDARD TABLE OF ZUSUARIOS. *Previamente creamos en el Diccionario de datos la estructura ZUSUARIOS *con los mismos campos de ZTABLA_USUARIOS a excepción del Mandante * ---------------------------------------------------------------------* START-OF-SELECTION. * ---------------------------------------------------------------------* * Seleccionamos los datos de la tabla de usuarios PERFORM cargar_datos. * Llamada al formulario Smartform PERFORM invocar_smartform. *&---------------------------------------------------------------------* *& Form CARGAR_DATOS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM cargar_datos . CLEAR ti_usuarios. REFRESH ti_usuarios. SELECT dni nombre_ape estado_usu direccion codigo_postal f_nacimiento estado_civil FROM ztabla_usuarios INTO CORRESPONDING FIELDS OF TABLE ti_usuarios. ENDFORM. " CARGAR_DATOS *&---------------------------------------------------------------------* *& Form INVOCAR_SMARTFORM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM invocar_smartform . IF NOT ti_usuarios[] 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_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. ENDIF. ENDFORM. " INVOCAR_SMARTFORM
Solución al Ejercicio de Práctica: Creamos el formulario ZFORMULARIO_PRUEBA en la transacción SMARTFORMS.
Creamos el programa ZPRUEBA_SMARTFORMS.
Para eliminar el diálogo con el usuario debemos seguir los siguientes pasos:
1-Declaramos las estructuras que completaremos con la configuración de la salida del formulario
2-Completamos las estructuras con los parámetros correspondientes
3-Finalmente utilizamos dichas estructuras como parametros de entrada al momento de llamar a la función que ejecuta el smartform
 
 
 
Sobre el autor
Publicación académica de Oscar Guillermo Rodriguez Villate, en su ámbito de estudios para la Carrera Consultor ABAP.
Oscar Guillermo Rodriguez Villate
Profesión: Ingeniero de Sistemas - Colombia - Legajo: WM49P
✒️Autor de: 103 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Oscar Rodriguez