SAP Netweaver / ABAP                  Notas técnicas / Tips / Tutorials

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ño propiamente 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.

ABAP-Layout-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.

ABAP-Crear-Programa-Impresor-2

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 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:

 

ABAP-Codigo-Definicion-datos-3-1

 

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:

ABAP-Codigo-Seleccion-4-1

 

En el código 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 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

ABAP-Codigo-imprimir_formulario-5

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:

ABAP-Codigo-SSF_FUNCTION-6

 

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.:

ABAP-Codigo-l_funcion-7

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.

En el próximo tip se mostrará paso a paso cómo definir el smartform (diseñar el “layout”), para luego poder ejecutarlo, haciendo su invocación desde el programa impresor recientemente creado.


n_Diego-Perez Especialista ABAP

 

 

 

 


Copyright 2012 - Teknoda S.A.

IMPORTANTE:
“Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas SAP, envíe un mensaje desde esa direcciónsapping@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

SAP, Netweaver, R/3, Fiori,S4/HANA y ABAP son marcas registradas de SAP AG. SAP no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA

 


Copyright © 2024 Teknoda Tech Portal & Training. Todos los derechos reservados.
Joomla! es software libre, liberado bajo la GNU General Public License.