0% encontró este documento útil (0 votos)
40 vistas13 páginas

Smartforms

Los SmartForms son formularios de SAP para impresión y envío de información. Se crean usando las transacciones SMARTSTYLES y SMARTFORMS. SMARTSTYLES define estilos y SMARTFORMS crea el formulario usando esos estilos. El documento explica cómo crear un SmartForm desde cero con diferentes ventanas y elementos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
40 vistas13 páginas

Smartforms

Los SmartForms son formularios de SAP para impresión y envío de información. Se crean usando las transacciones SMARTSTYLES y SMARTFORMS. SMARTSTYLES define estilos y SMARTFORMS crea el formulario usando esos estilos. El documento explica cómo crear un SmartForm desde cero con diferentes ventanas y elementos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

An Indra company

Sistema R / 3.
ABAP / 4.

Smartforms.

Enero de 2019
Índice

1. Introducción .......................................................................................................................................... 3
2. Diseño y Ejecución................................................................................................................................ 3

An Indra company 2
1. Introducción
Los formularios SmartForms son una de las últimas técnicas de SAP para la impresión y envío vía mail y fax
de reports e información tabulada y formateada.
A diferencia de la transacción SE71 que se utiliza habitualmente para la creación y edición de los forms
estándar en SAP, en los nuevos formularios creados con Smartforms se debe trabajar con dos transacciones
nuevas:
• Una transacción para definir el estilo del formulario llamada SMARTSTYLES en la cual se definen
tipo de párrafos, tipo de caracteres, los fonts que se van a usar, el tamaño que tendrán, los
tabuladores, etc, etc.
• Otra transacción para crear el formulario en si mismo llamada SMARTFORMS en la cual se definen
las ventanas y su contenido y que utiliza al estilo creado con SMARTSTYLES.
También cambiara la forma en que se escribe la lógica del programa que controlara el formulario, antes lo
hacíamos directamente desde SE38, ahora el sistema escribirá automáticamente las rutinas del control del
formulario y nosotros podremos invocar al formulario a través de un par de funciones estándar de sistema
dejando de lado la vieja manera del WRITE_FORM etc, etc.
Para esta guía de demostración se ha entrado al sistema en ingles por lo que los nombres de campos y demás
están en ingles.
Si se quiere ver un ejemplo complejo completo de Smartforms SAP estándar se puede revisar el formulario
LB_BIL_INVOICE.

2. Diseño y Ejecución
Parametrización del programa de control y del formulario

Al igual que sucede con los forms convencionales de SAP R3, todavía siguen existiendo las parametrizaciones
que establecen cual es el programa de control y cual es el SmartForm seleccionado para hacer la impresión.
He aquí un ejemplo especifico con el cual he trabajado anteriormente: si se quiere imprimir facturas en SAP
CRM versión 6.40 se debe invocar a la transacción /BEA/CRMB11 “Tratar documentos de facturación” y para
que se pueda imprimir la factura se debe establecer el programa de control de impresión y el formulario de la
siguiente manera:
SPRO
IMG
Customer Relationships Management
Funciones Básicas
Acciones
Acciones en la facturación
Definir perfiles de acción y acciones
Perfil de acción es CRMB_BILLING
Perfil de Acción
Definición de Acción
Clase de Tratamiento
Formulario es Impres.Smart Form
Click en botón largo "Parametrización de Proceso"
Formulario: BEA_CRMB_BILLING_SF

An Indra company 3
En este caso BEA_CRMB_BILLING_SF es el SmartForms estándar para la impresión de facturas en
SAP CRM.
Entonces de esta manera hemos elegido al formulario SmartForms BEA_CRMB_BILLING_SF para
hacer las impresiones de facturas, y si así lo deseamos podemos copiarlo como
ZBEA_CRMB_BILLING_SF y modificarlo a nuestro gusto.
Por supuesto, cada tarea de impresión como cheques, etc, tiene su programa de control estándar
correspondiente y su formulario de impresión estándar correspondiente los cuales pueden ser
sustituidos o modificados según se desee a través de las parametrizaciones adecuadas.

Definición de los estilos de los SmartForms

Todo SmartForm utiliza estilos. Existen algunos predefinidos en el sistema o podemos crearlos nosotros
mismos.
Comenzaremos creando un estilo para nuestro uso desde el comienzo:
Transacción SMARTSTYLES
Darle el nombre del estilo, por ejemplo ZESTILO1
Click en Crear
Doble click en Paragraph Formats
Botón derecho, Create Node
Darle un nombre, por ejemplo P0, este será el párrafo por defecto mas adelante.
En la parte derecha de la pantalla aparecerán las solapas con todos los posibles atributos para este tipo de
párrafo, como va a ser el estándar es mejor usar tipo de letra y tamaño estándares como por ejemplo HELVE
y tamaño 10.
En Description darle una descripción: "Este es el párrafo por defecto"
En la solapa Indent and Spacing dejarlo Left-aligned y no tocarle nada más.
En la solapa Font en el campo Font Family elegir HELVE.
en el campo Font Size elegir 10 pt.
en el campo Font Style dejarlo en blanco.
En la solapa Tabs se pueden establecer los tabuladores.
Por ejemplo 1, 5, 10, 15, unidad es CM, alineación LEFT.
Lo mismo se repite para cada tipo de párrafo que queramos definir.
Ahora doble click en Header Data.
Darle P0 como Standar Paragraph.
Ahora podemos definir el resto de todos los párrafos que queramos usar en el formulario, habitualmente yo
los numero sistemáticamente, P1, P2, etc, etc.
No olvidar dar click sobre Save y Activate.

Definición del Formulario en si mismo

Comenzaremos creando un SmartForm de ejemplo completamente desde cero:


Transacción SMARTFORMS
Click en la opción Form y darle el nombre del formulario, por ejemplo ZSMART1.
(Click en la opción Style y darle el nombre del estilo, por ejemplo ZESTILO1. Lo que permite es editar el estilo
sin ir a la transacción SMARTSTYLES )

An Indra company 4
Click en Create.
Con el botón Form Painter se puede hacer aparecer o desaparecer el panel de diseño grafico.
Si se hace doble click en el árbol a la izquierda:
En el nodo Form Attributes se puede controlar los atributos básicos del formulario:
• En el campo Description una descripción del formulario, por ejemplo "Formulario de prueba".
• En la solapa General Attributes se puede controlar básicamente traducción a otros lenguajes.
• En la solapa Output Options se puede controlar principalmente:
Page Format es decir el tipo de hoja que se va a usar, habitualmente DINA4.
Style, el estilo que vamos a usar, en este caso ZESTILO1.
Para empezar a definir el formulario vamos a crear una primera página que tendrá:
• Titulo principal del formulario
• Parte Main para desplegar datos en Loop.
• Un Contador de páginas al final de la hoja.

Ventana Main:

Por defecto el sistema nos crea una pagina llamada %PAGE1 en el árbol a la izquierda de la pantalla debajo
de Pages and Windows.
Hacer doble click sobre %PAGE1 .
Renómbrala como PAGINA1 y darle como descripción "Primera pagina del formulario."
Por ahora le dejaremos el Nextpage en PAGINA1.
Hacer click sobre el símbolo + para expandirla.
Aparecerá la ventana MAIN que el sistema pone por defecto.
Hacer doble click sobre MAIN.
En la solapa General Attributes le dejamos Windows Tape como Main Windows.
En la solapa Output Options le daremos el tamaño y otras opciones.
En Left Margin le damos 1 CM. - Controla el margen izquierdo
En Upper Margin le damos 4 CM. - Controla el margen desde arriba
En Width le damos 18 CM. - Controla el ancho de la ventana.
En Height le damos 20 CM. - Controla el alto de la ventana.
Click sobre Lines With. - Controla parámetros de línea
Click sobre Always Draw Box and Shadings. - Dibuja el recuadro.
Esto define el tamaño de la pagina Main y nos permite dibujar un recuadro.
Si se hace Click sobre el botón Form Painter se vera como va quedando el formulario.

Probar lo que se tiene hasta ahora:

Para ver el aspecto que va teniendo el formulario podemos lanzar una impresión de prueba:
Click en el icono Test (F8)
Aparece el nombre del programa que ha sido creado automáticamente, por el momento lo usaremos tal cual
esta.

An Indra company 5
Click de nuevo en Single Test (F8)
Click en Execute (F8)
Elegir la impresora.
Darle click en imprimir o en previsualización.
Darle BACK cuatro veces hasta volver al editor de SmartForms.

Salvar a disco local el Smartform

/ Utilities / Donwload form


Todo el SmartForm es salvado en modo XML.
No es muy fiable al volverlo a cargar.
El salvado a XML al menos en versión 4.7 de SAP funciona MUY MAL.

Ventana de título:

Doble click sobre PAGINA1.


Botón derecho, Create, elegir Windows.
Nos crea una ventana nueva llamada %WINDOW1, renombrarla como Titulo. "Titulo del formulario."
En la solapa General Attributes le dejamos Windows Type como Secondary Window
En la solapa Output Options le daremos el tamaño y otras opciones.
En Left Margin le damos 1 CM. - Controla el margen izquierdo
En Upper Margin le damos 1 CM. - Controla el margen desde arriba
En Width le damos 18 CM. - Controla el ancho de la ventana.
En Height le damos 2 CM. - Controla el alto de la ventana.
Click sobre Lines With. - Controla parámetros del de línea
Click sobre Always Draw Box and Shadings. - Dibuja el recuadro.
Doble click sobre la ventana Titulo otra vez.
Botón derecho, Create, Text.
Nos crea un texto llamado %TEXT1, renombrarlo a TEXTOTITULO, darle un comentario descriptivo como "El
texto del titulo."
En la solapa General Attributes aparecera abajo del todo un cuadro en blanco donde pondremos el titulo en
si mismo del formulario, por ejemplo "Formulario de Prueba"
Lo pintamos con el cursor y le aplicamos el formato de párrafo ( opciones Paragraph Formats ) P1 - Titulo del
formulario que anteriormente creamos en el estilo.
Si se hace click sobre el botoncito Txt Editor que está a la izquierda del combo de texto aparece el viejo editor
de comandos de Forms ( Lo menciono solo como dato informativo ).

Ventana del contador de páginas

Doble click sobre PAGINA1.


Botón derecho, Create, elegir Windows.
Nos crea una ventana nueva llamada %WINDOW2, renombrarla como CONTADOR "Contador de paginas"

An Indra company 6
En la solapa General Attributes le dejamos Windows Type como Secondary Window
En la solapa Output Options le daremos el tamaño y otras opciones.
En Left Margin le damos 1 CM. - Controla el margen izquierdo
En Upper Margin le damos 27 CM. - Controla el margen desde arriba
En Width le damos 18 CM. - Controla el ancho de la ventana.
En Height le damos 2 CM. - Controla el alto de la ventana.
Click sobre Lines With. - Controla parámetros del de línea
Click sobre Always Draw Box and Shadings. - Dibuja el recuadro.

Campos y otros datos:

Hasta el momento solo hemos definido el "esqueleto" del formulario de prueba, ahora vamos a colocar campos
y otros datos.

El contador de páginas:

Doble click sobre la ventana CONTADOR.


Botón derecho, Create, elegir Text.
Renómbralo como TEXTOCONTADOR.
Click en el botón Txt Editor.
Agregar el siguiente texto:
,,,,,,La pagina actual es &SFSY-PAGE& de &SFSY-FORMPAGES(Z4.0)&
El resultado al probar el formulario será "La pagina actual es 1 de 1"

Campos que vienen de las tablas declaradas como parámetros del SmartForm

Hay que utilizar el botón + (insertar campos) y poner el nombre del campo entre &&
Por ejemplo &BDH-DOC_CURRENCY&

Desplegar datos en la ventana Main

Típicamente tendremos un programa ABAP que será el que invoque a el formulario SmartForm y será en ese
programa donde recabaremos los datos que el formulario deberá contener.
Para este ejemplo usaremos la tabla MKPF como demostración.
Para este ejemplo en una parte del código del programa ( programa que se estudiara completo en detalle mas
adelante ) se cargaran los datos en una tabla auxiliar llamada int_mkpf la cual será pasada como parámetro
a la función fm_name que es la función encargada de llamar al formulario, la tabla es recibida por el formulario
con el nombre gs_mkpf tal cual aparece en este fragmento de código:
.
.
.
CALL FUNCTION fm_name
TABLES

An Indra company 7
gs_mkpf = int_mkpf
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS
.
.
.
Por lo tanto el SmartForm debe ser informado de los datos que va a recibir y de cómo posicionarlos en el
formulario.

Declarar la tabla de entrada de datos al formulario:

Doble click en Global Settings


Form Interface
En la solapa TABLES
GS_MKPF LIKE MKPF

Declarar el registro auxiliar para hacer el LOOP . . . INTO . . .

Doble click en Global Definintions


Global Data AUX_GS_MKPF LIKE MKPF

Posicionar el registro en la ventana main

Doble click en la ventana Main


Botón derecho, Create / Table / GS_MKPF
En la solapa Data
Operand = GS_MKPF into AUX_GS_MKPF,
Esto tiene el efecto de generar el código :
LOOP AT GS_MKPF INTO AUX_GS_MKPF.
ENDLOOP.
En la solapa TABLE, click en botón Details
Line Type = %LINE1 rebautizar a LINEA
En la solapa Output Options
Style = ZESTILO1
Doble click en Main Área de GS_MKPF
Botón derecho, Create / Table Line
Cambiarle el nombre a LINEA_DATOS

An Indra company 8
Asignarle Line Type = LINEA
Doble click en CELL1, renombrar a COLUMNA1
Botón derecho, Create / Text
Solapa General Attributes
Click en el botón Txt Editor y en el texto agregar:
,,Este es un texto ,,&AUX_GS_MKPF-MBLNR& ,,y ,,&AUX_GS_MKPF-CPUTM&
Los tabuladores funcionan tal cual fueron definidos en el estilo seleccionado.
Esto despliega el valor del campo MBLNR y de CPUTM.
Para que los cabezales de las columnas se impriman en todas las páginas deben ser declarados en la sección
HEADER de la tabla GS_MKPF como un texto al que se le pueden dar atributos en estilo tales como negrita
y subrayado.

El programa de control del formulario:

Básicamente el programa de control de ejemplo hace dos cosas:


• Reúne algunos datos de prueba de la tabla MKPF.
• Invoca al formulario ZSMART1 creado más arriba de este documento.

Las sentencias OPEN_FORM, WRITE_FORM, etc, etc ya no son utilizadas.


En su lugar se invoca a la función que el editor de SmartForms crea automáticamente al generar el formulario.
En este programa se utilizan dos funciones:
SSF_FUNCTION_MODULE_NAME - Obtiene el nombre del modulo de función asociado a este formulario,
es decir el programa autogenerado al crear el SmartForm y lo deposita en la variable nombre_modulo_funcion.
CALL FUNCTION nombre_modulo_funcion - Llama al modulo autogenerado.
REPORT zsmart1.
* ----------------------------------------------------------------------
* Sistema : SAP R/3
* Nombre : Modelo del programa de invocación de un SmartForm.
* Script : ZSMART1
* Autor : Exequiel López Ramón.
* Fecha : 17/11/2004
* ----------------------------------------------------------------------
TABLES: mkpf.
* ----------------------------------------------------------------------
* Nombre del modulo de funciones del formulario.
DATA: nombre_modulo_funcion TYPE rs38l_fnam.
* Tabla auxiliar para los datos.
DATA: BEGIN OF aux_mkpf OCCURS 0.
INCLUDE STRUCTURE mkpf.
DATA: END OF aux_mkpf.

An Indra company 9
* ----------------------------------------------------------------------
* Programa principal
PERFORM cargar_datos_demo.
PERFORM invocar_smartform.
EXIT.
* ----------------------------------------------------------------------
FORM cargar_datos_demo.
* Limpiar las tablas auxiliares antes de usarlas.
CLEAR aux_mkpf.
REFRESH aux_mkpf.
* Cargar los 10 primeros registros para probar.
SELECT * UP TO 10 ROWS
FROM mkpf.
MOVE-CORRESPONDING mkpf TO aux_mkpf.
APPEND aux_mkpf.
ENDSELECT.
ENDFORM.
* ----------------------------------------------------------------------
FORM invocar_smartform.
* Inicializar el formulario.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSMART1'
IMPORTING
fm_name = nombre_modulo_funcion
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
* Si hubo errores, desplegar mensaje y terminar, si se continua se
* produce un error de run time.
IF sy-subrc <> 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 nombre_modulo_funcion

An Indra company 10
TABLES
gs_mkpf = aux_mkpf
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
* Si se produce un error, reportarlo.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
* ----------------------------------------------------------------------
*
Agregar código ejecutable en un SmartForm

Para agregar código ejecutable que pueda por ejemplo acceder a las tablas de SAP existen algunas secciones
donde puede ser incluido.

Inicialización:

Tareas que se realizan en cuanto se carga el formulario:


Doble click en Global Definitions.
Click en la solapa Global Data
Declarar esta variable: AUX_LS_LFA1 LIKE LFA1
Click en la solapa Initialization.
Declarar en Output Parameter: AUX_LS_LFA1
En el combo de texto que aparece abajo pueden agregarse comandos ABAP como por ejemplo:
DATA: AUX_LFA1 LIKE LFA1.
SELECT SINGLE * FROM LFA1 INTO AUX_LFA1.
MOVE-CORRESPONDING AUX_LFA1 TO AUX_LS_LFA1.
Ahora la variable global AUX_LS_LFA1 contiene lo cargado por la sentencia SELECT y se puede utilizar en
todo el formulario.
Por ejemplo se la puede usar como &AUX_LS_LFA1-NAME1& en cualquier lugar del formulario.

Agregar una imagen de fondo a una pagina:

Doble click sobre PAGINA1.

An Indra company 11
Click en solapa Fondo.
En el campo Name colocar el nombre de una imagen ya cargada en el sistema, por ejemplo Z_LOGO_UTE_2.
En el campo Objeto colocar GRAPHICS.
En el campo ID colocar BMAP.
Seleccionar el tipo de imagen, monocroma o color.
En resolución indicar 75 DPI.
En modo de salida indicar Visualización de impresión e impresión.
Darle la posición deseada en la hoja.
Activar.

An Indra company 12
An Indra company

Persona de contacto
[email protected]

Pedro García Parra


Senior Consultant
Sistemas de Gestión Empresarial

Avda. de la Innovación, Edificio Renta Sevilla 5ª Planta


41020 Sevilla, España
Tel. Directo: (+34) 954369742
Tel. Centralita: (+34) 954998610 Extensión 242742

También podría gustarte