programa control smartform

6
Cómo crear el programa impresor para la ejecución 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 algún 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 diseño del formulario (layout) y su invocación 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 lógica implementada en este programa podría estar incorporada en el propio diseño del smartform, es habitual en la mayoría de las implementaciones de Smartforms, contar con un programa impresor específico que contenga esa lógica, "separada" del diseño específico del formulario. El programa impresor o programa de control puede ser: desarrollado desde “cero” o adaptado de alguno existente. Este programa, además de encargarse de realizar la llamada al Smartform, puede contener la lógica necesaria para la obtención de la información 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 extraídos por el programa impresor se almacenarán en estructuras de datos (tabla interna, variables, etc.), y será enviada al Smartform para que éste pueda usar esa información. Sin embargo, como se mencionó en párrafos anteriores, el mismo diseño del Smartform podría contener esa lógica para la obtención de información que él mismo va a utilizar. En el presente tip se desarrollará paso a paso la creación de un programa impresor, explicando las principales sentencias de su código, ejemplificando la obtención de los datos a través de un programa impresor (no en el propio Smartform), que será generado desde cero. Proximamente, en otro tip se detallarán los pasos necesarios para la definición del diseñopropiamente dicho del formulario smartform. Consideraciones para el Ejemplo a desarrollar:

Upload: alexis-antonio-ramirez-lara

Post on 08-Dec-2015

218 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Programa Control Smartform

Cómo crear el programa impresor para la ejecución 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 algún 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 diseño del formulario (layout) y su invocación 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 lógica implementada en este programa podría estar incorporada en el propio diseño del smartform, es habitual en la mayoría de las implementaciones de Smartforms, contar con un programa impresor específico que contenga esa lógica, "separada" del diseño específico del formulario.

El programa impresor o programa de control puede ser: desarrollado desde “cero” o adaptado de alguno existente.

Este programa, además de encargarse de realizar la llamada al Smartform, puede contener la lógica necesaria para la obtención de la información 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 extraídos por el programa impresor se almacenarán en estructuras de datos (tabla interna, variables, etc.), y será enviada al Smartform para que éste pueda usar esa información.

Sin embargo, como se mencionó en párrafos anteriores, el mismo diseño del Smartform podría contener esa lógica para la obtención de información que él mismo va a utilizar.

En el presente tip se desarrollará paso a paso la creación de un programa impresor, explicando las principales sentencias de su código, ejemplificando la obtención de los datos a través de un programa impresor (no en el propio Smartform), que será generado desde cero.

Proximamente, en otro tip se detallarán los pasos necesarios para la definición del diseñopropiamente 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 diseño 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:

Compañía (campo carrid): Lufthansa (LH)

Connection Id (campo carrid): 0400

Fecha (campo fldate): 28 de Febrero de 1995.

Page 2: Programa Control Smartform

 

Pasos para la creación del programa Impresor:

1) Acceder a la transacción 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

Page 3: Programa Control Smartform

A continuación se detalla para a), b) y c) el código para realizar la acción correspondiente:

a) Definir las estructuras de datos:

Se detallan las siguientes sentencias dentro del programa impresor:

 

 

Donde se puede observar:

la creación 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, también mostrado, no va a contener ningún dato en particular, pero es donde el desarrollador puede escribir su nombre o algún texto que sea de su interés. 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 creación de una variable llamada l_funcion cuyo tipo es rs38l_fnam, contendrá  el nombre del módulo de función que ejecuta al Smartform.

La definición 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 código ejemplo.

b) Obtención de los datos:

 

En el código anterior se puede observar:

Page 4: Programa Control Smartform

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 Compañia y connection1 se corresponde con Connection ID

La sentencia SELECT  obtiene los datos que se almacenarán 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 (definición propia), que son necesarias para la invocación de cualquier Smartform. (Tener en cuenta que l_funcion puede llevar otro nombre).

Se detalla esta acción en el código siguiente:

 

Donde:

Para la función 1) SSF_FUNCTION_MODULE_NAME, se definen los parámetros necesarios:

el nombre del formulario (formname) – se introduce el nombre que se le dará al Smartform una vez que se lo cree. el parámetro 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 función.:

Page 5: Programa Control Smartform

Como se visualiza en el código anterior:

Inmediatamente debajo del llamado a la función, será necesario chequear que no haya habido errores (sy-subrc = 0) y en ese caso se hará un call function a l_funcion (se corresponde con el “IMPORTING” de la función 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 ejecución de un Smartform, pero no es suficiente, resta crear el smartform (definiendo el diseño), para que pueda ser invocado por el Programa impresor.

Si bien la lógica definida en el programa impresor puede estar incorporada al diseñar el smartform, es habitual crear su lógica en el programa impresor como se detalló en el tip presente.