You are on page 1of 5

Cmo crear el programa impresor para la ejecucin de un Smartform en SAP

Aprenda paso a paso a crear el programa impresor para ejecutar un Smartform en SAP.
La herramienta Smartforms provista por SAP est enfocada en el desarrollo de formularios, por ejemplo el de una
factura, que posteriormente ser impresa de algn modo. Como medio de salida, los Smartforms soportan una
impresora, un fax, e-mail o Internet (usando la salida XML).
Existen otras herramientas de SAP que posibilitan lo mismo, como Sapscript y Adobe Forms.
Para poder desarrollar un Smartform, es necesario previamente conocer algunos conceptos importantes:
El desarrollo de un Smartform consta de dos fases:

el diseo del formulario (layout)


y su invocacin desde un programa ABAP. A este programa se lo denomina Programa
Impresor o Programa de control. Es necesario tener creado este programa antes de poder utilizar el Smartform.
Si bien la lgica implementada en este programa podra estar incorporada en el propio diseo del smartform, es
habitual en la mayora de las implementaciones de Smartforms, contar con un programa impresor especfico que
contenga esa lgica, "separada" del diseo especfico del formulario.
El programa impresor o programa de control puede ser: desarrollado desde cero o adaptado de alguno
existente.
Este programa, adems de encargarse de realizar la llamada al Smartform, puede contener la lgica necesaria
para la obtencin de la informacin que el Smartform va a utilizar (por ejemplo, puede realizar consultas a la base
de datos para extraer los datos a mostrarse en el Smartform). Los datos extrados por el programa impresor se
almacenarn en estructuras de datos (tabla interna, variables, etc.), y ser enviada al Smartform para que ste
pueda usar esa informacin.
Sin embargo, como se mencion en prrafos anteriores, el mismo diseo del Smartform podra contener esa lgica
para la obtencin de informacin que l mismo va a utilizar.
En el presente tip se desarrollar paso a paso la creacin de un programa impresor, explicando las principales
sentencias de su cdigo, ejemplificando la obtencin de los datos a travs de un programa impresor (no en el propio
Smartform), que ser generado desde cero.
Proximamente, en otro tip se detallarn los pasos necesarios para la definicin del diseopropiamente dicho del
formulario smartform.

Consideraciones para el Ejemplo a desarrollar:


Se trabaja con la tabla SBOOK del entorno de pruebas y se requiere que el diseo del formulario smartform a
desarrollar respete el siguiente layout, y deber recuperar los datos necesarios para listar las reservas
correspondientes a los vuelos con los siguientes datos:
Compaa (campo carrid): Lufthansa (LH)
Connection Id (campo carrid): 0400
Fecha (campo fldate): 28 de Febrero de 1995.

Pasos para la creacin del programa Impresor:


1) Acceder a la transaccin SE80 para crear un programa, denominado, por ejemplo, ZIMPRESOR, que ser el
programa Impresor del Smartform.

2) En este paso, una vez creado el programa impresor, ser necesario en l realizar lo siguiente::
a) Definir las estructuras de datos, donde almacenar los datos obtenidos.
b) Obtener los datos (con consultas a la base de datos).
c) Especificar las funciones que llaman al Smartform

A continuacin se detalla para a), b) y c) el cdigo para realizar la accin correspondiente:


a) Definir las estructuras de datos:
Se detallan las siguientes sentencias dentro del programa impresor:

Donde se puede observar:

la creacin de 3 variables (date1, carrier1 y connection1) para almacenar los datos nicos que se van a
mostrar en el formulario. En la imagen del layout de salida mostrada anteriormente, se corresponde con los
campos: Field 1, Field 2 y Field 3. El Field 7, tambin mostrado, no va a contener ningn dato en particular, pero es
donde el desarrollador puede escribir su nombre o algn texto que sea de su inters. Este campo se incluye
nicamente debido a que contribuir luego, cuando se defina la estructura del Smartform, a detallar una de sus
partes (por ejemplo, el footer).

La creacin de una variable llamada l_funcion cuyo tipo es rs38l_fnam, contendr el nombre del mdulo
de funcin que ejecuta al Smartform.

La definicin de un tipo de datos que coincide con la estructura de la tabla SBOOK (se usa de esta manera
para simplificar el ejemplo).

Se declara una tabla interna del tipo definido en el cdigo ejemplo.


b) Obtencin de los datos:

En el cdigo anterior se puede observar:

Se asigna a cada una de las variables creadas en el paso a) los valores que se solicitaron en el
requerimiento ejemplo.

date1 se corresponde con la fecha, currier1 se corresponde con Compaia y connection1 se corresponde
con Connection ID

La sentencia SELECT obtiene los datos que se almacenarn en la tabla interna.


c) Especificar las funciones que llaman al Smartform

La sentencia PERFORM imprimir_formulario es la que invoca a las funciones: 1)


SSF_FUNCTION_MODULE_NAME (standard de SAP) y 2) l_funcion (definicin propia), que son necesarias para
la invocacin de cualquier Smartform. (Tener en cuenta que l_funcion puede llevar otro nombre).
Se detalla esta accin en el cdigo siguiente:

Donde:
Para la funcin 1) SSF_FUNCTION_MODULE_NAME, se definen los parmetros necesarios:

el nombre del formulario (formname) se introduce el nombre que se le dar al Smartform una vez que se
lo cree.

el parmetro fm_name, que en este ejemplo en particular se definir como l_funcion, como fue declarada
anteriormente de tipo s38l_fnam.

Por ltimo se declara el manejo de excepciones para la funcin.:

Como se visualiza en el cdigo anterior:

Inmediatamente debajo del llamado a la funcin, ser necesario chequear que no haya habido errores (sysubrc = 0) y en ese caso se har un call function a l_funcion (se corresponde con el IMPORTING de la funcin
anterior).
En EXPORTING se detallan los campos que se desean enviar al Smartform.
En TABLES la tabla interna anteriormente definida, y como es habitual, el manejo de las excepciones
correspondientes.
De esta manera el programa impresor est listo para ser utilizado para ejecutar un smartform.

Para tener en cuenta ...

El programa impresor es necesario para la ejecucin de un Smartform, pero no es suficiente, resta crear
el smartform (definiendo el diseo), para que pueda ser invocado por el Programa impresor.

Si bien la lgica definida en el programa impresor puede estar incorporada al disear el smartform, es
habitual crear su lgica en el programa impresor como se detall en el tip presente.

You might also like