Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COM
Manual de Smartforms
- Exequiel Lopez -
MANUALES Y TUTORIALES WWW.MUNDOSAP.COM
Introduccion
Los nuevos formularios SmartForms son una de las ultimas técnicas de SAP para la impresión y
envio via mail y fax de reportes e información tabulada y formateada.
A diferencia de la transaccion SE71 que se utiliza habitualmente para la creacion y edicion de los
forms estandar en SAP, en los nuevos formularios creados con Smartforms se debe trabajar con
dos transacciones nuevas:
• Una transaccion para definir el estilo del formulario llamada SMARTSTYLES en la cual se
definen tipo de paragrafos, tipo de caracteres, los fonts que se van a usar, el tamano que
tendran, los tabuladores, etc, etc.
Tambien cambiara la forma en que se escribe la logica del programa que controlara el formulario,
antes lo haciamos directamente desde SE38, ahora el sistema escribira automaticamente las
rutinas del control del formulario y nosotros podremos invocar al formulario a traves de un par de
funciones estandar de sistema dejando de lado la vieja manera del WRITE_FORM etc, etc.
Para esta guia de demostracion yo estoy logeado al sistema en ingles por lo que los nombres de
campos y demas estan en ingles.
Si se quiere ver un ejemplo complejo completo de Smartforms SAP estandar se puede revisar a
LB_BIL_INVOICE.
MANUALES Y TUTORIALES WWW.MUNDOSAP.COM
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.
SPRO
IMG
Funciones Basicas
Acciones
Acciones en la facturacion
Perfil de Accion
Definicion de Accion
Clase de Tratamiento
Formulario: BEA_CRMB_BILLING_SF
Por supuesto, cada tarea de impresión como remitos, cheques, etc, etc tiene su programa de
control estandar correspondiente y su formulario de impresión estandar correspondiente los cuales
pueden ser sustituidos o modificados según se desee a traves de las parametrizaciones
adecuadas.
MANUALES Y TUTORIALES WWW.MUNDOSAP.COM
Todo SmartForm utiliza estilos, existen algunos predefinidos en el sistema o podemos crearlos
nosotros mismos.
Transaccion SMARTSTYLES
Click en Crear
Darle un nombre, por ejemplo P0, este sera el paragrafo por defecto mas adelante.
En la parte derecha de la pantalla apareceran las solapas con todos los posibles atributos para
este tipo de paragrafo, como va a ser el estandar es mejor usar tipo de letra y tamano estandares
como por ejemplo HELVE y tamano 10.
Ahora podemos definir el resto de todos los paragrafos que queramos usar en el formulario,
habitualmente yo los numero sistematicamente, P1, P2, etc, etc.
Transaccion SMARTFORMS
Click en la opcion Form y darle el nombre del formulario, por ejemplo ZSMART1.
( Click en la opcion Style y darle el nombre del estilo, por ejemplo ZESTILO1. lo que
permite es editar el estilo sin ir a la transaccion SMARTSTYLES )
Click en Create.
Con el boton Form Painter se puede hacer aparecer o desaparecer el panel de diseno
grafico.
En el nodo Form Attributes se puede controlar los atributos basicos del formulario:
Para empezar a definir el formulario vamos a crear una primera pagina que tendra:
Ventana Main:
MANUALES Y TUTORIALES WWW.MUNDOSAP.COM
Por defecto el sistema nos crea una pagina llamada %PAGE1 en el arbol a la izquierda de la
pantalla debajo de Pages and Windows.
Renombrala como PAGINA1 y darle como descripcion "Primera pagina del formulario."
Si se hace Click sobre el boton Form Painter se vera como va quedano el formulario.
Para ver el aspecto que va teniendo el formulario podemos lanzar una impresion de prueba:
Aparece el nombre del programa que ha sido creado automaticamente, por el momento lo
usaremos tal cual esta.
Elegir la impresora.
Nos crea una ventana nueva llamada %WINDOW1, renombrarla como Titulo. "Titulo del
formulario."
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"
Si se hace click sobre el botoncito Txt Editor que esta a la izquierda del combo de texto
aparece el viejo editor de comandos de Forms ( Lo menciono solo como dato informativo
).
Nos crea una ventana nueva llamada %WINDOW2, renombrarla como CONTADOR
"Contador de paginas"
Hasta el momento solo hemos definido el "esqueleto" del formulario de prueba, ahora
vamos a colocar campos y otros datos.
El contador de paginas:
Campos que vienen de las tablas declaradas como parametros del SmartForm
Hay que utilizar el boton + (insertar campos) y poner el nombre del campo entre &&
Tipicamente tendremos un programa ABAP que sera el que invoque a el formulario SmartForm y
sera en ese programa donde recabaremos los datos que el formulario debera contener.
Para este ejemplo en una parte del codigo del programa ( programa que se estudiara completo en
detalle mas adelante ) se cargaran los datos en una tabla auxiliar llamada int_mkpf la cual sera
MANUALES Y TUTORIALES WWW.MUNDOSAP.COM
...
TABLES
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.
Form Interface
En la solapa TABLES
Global Data
AUX_GS_MKPF LIKE MKPF
En la solapa Data
MANUALES Y TUTORIALES WWW.MUNDOSAP.COM
ENDLOOP.
Style = ZESTILO1
Para que los cabezales de las columnas se impriman en todas las paginas deben ser
declarados en la seccion HEADER de la tabla GS_MKPF como un texto al que se le
pueden dar atributos en estilo tales como negrita y subrayado.
REPORT zsmart1.
* ----------------------------------------------------------------------
* Script : ZSMART1
* Fecha : 17/11/2004
* ----------------------------------------------------------------------
TABLES: mkpf.
* ----------------------------------------------------------------------
* ----------------------------------------------------------------------
* Programa principal
PERFORM cargar_datos_demo.
PERFORM invocar_smartform.
EXIT.
* ----------------------------------------------------------------------
FORM cargar_datos_demo.
CLEAR aux_mkpf.
REFRESH aux_mkpf.
SELECT * UP TO 10 ROWS
FROM mkpf.
MANUALES Y TUTORIALES WWW.MUNDOSAP.COM
APPEND aux_mkpf.
ENDSELECT.
ENDFORM.
* ----------------------------------------------------------------------
FORM invocar_smartform.
* Inicializar el formulario.
EXPORTING
formname = 'ZSMART1'
IMPORTING
fm_name = nombre_modulo_funcion
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
MANUALES Y TUTORIALES WWW.MUNDOSAP.COM
TYPE sy-msgty
NUMBER sy-msgno
ENDIF.
TABLES
gs_mkpf = aux_mkpf
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
ENDIF.
ENDFORM.
* ----------------------------------------------------------------------
*
MANUALES Y TUTORIALES WWW.MUNDOSAP.COM
Para agregar codigo ejecutable que pueda por ejemplo acceder a las tablas de SAP existen algunas
secciones donde puede ser incluido.
Inicializacion:
En el combo de texto que aparece abajo pueden agregarse comandos ABAP como por ejemplo:
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.
En el campo Name colocar el nombre de una imagen ya cargada en el sistema, por ejemplo
Z_LOGO_UTE_2.
Activar.