Tutorial para Crear patrón de código fuente dinámico
-Categorías: Tutoriales
En este tutorial les voy a mostrar cómo crear un patrón de código que se alimente de forma dinámica, por ejemplo para registrar usuario, fecha y hora, al momento de estar desarrollando nuestros programas. Es muy importante el nombre que le daremos al patrón, ya que de este se desprenderá el módulo de función a crear. SAP relaciona automáticamente el nombre del patrón con su función asociada.
Sin más preámbulos, comencemos.
Consideraciones previas
Debemos tener autorización para acceder a las transacciones SE37 y SE38.
Implementación
El nombre del patrón elegido es ZUSER_DATE_TIME, y mostrará justamente nombre de usuario, fecha y hora, como comentario dentro del programa. Los pasos para implementarlo son los siguientes:
Paso 1: Crear patrón. Estando posicionados dentro de un programa (SE38), vamos al menú Utilidades > Más Utilidades > Tratar patrón > Crear patrón.
Paso 2: Designar nombre al patrón.
Paso 3: Editar y guardar patrón. Al ingresar a la pantalla de edición de patrón, veremos que está vacía, debemos acceder al menú en la opción Modelo > Patrón dinámico. Aquí debemos reemplazar el código que aparece por defecto "*$&$EXIT" con "*$&$MUSTER" (sin las comillas). De esta manera, el sistema al momento de seleccionar el patrón, buscará su módulo de funciones asociado (que veremos a continuación).
Paso 4: Crear función asociada. Ahora que tenemos el patrón, debemos crear la función que generara el código dinámicamente. El nombre de la función debe ser <nombre_patrón> + "_editor_exit" (sin comillas). En nuestro ejemplo, la función a crear es ZUSER_DATE_TIME_EDITOR_EXIT. Con esto, todas las líneas que escribamos en la tabla de parámetro dentro de la función, aparecerá en el código fuente al invocar nuestro patrón.
Paso 5: Definir parámetro de salida de la función. La función debe contener un parámetro "Tabla", con nombre BUFFER, de tipo RSWSOURCET. Esta tabla es de tipo string, y todas las líneas que se agreguen en ella serán las que muestre el patrón en nuestro programa destino al invocarlo.
Paso 6: Codificación de la funcionalidad (la parte dinámica). Como ya les dije, se imprime el nombre de usuario, la fecha y la hora, con caracteres decorativos y como comentario. El código de ejemplo es el siguiente:
FUNCTION zuser_date_time_editor_exit.
*"----------------------------------------------------------------------
*"*"Interfase local
*" TABLES
*" BUFFER TYPE RSWSOURCET
*"----------------------------------------------------------------------
DATA: ld_date(10) TYPE c,
ld_time(8) TYPE c.
WRITE sy-datlo TO ld_date.
WRITE sy-uzeit TO ld_time.
REFRESH: buffer.
CLEAR: buffer.
buffer = '*----------------------'.
APPEND buffer.
CLEAR: buffer.
CONCATENATE '* Usuario: ' sy-uname INTO buffer RESPECTING BLANKS.
APPEND buffer.
CLEAR: buffer.
CONCATENATE '* Fecha : ' ld_date INTO buffer RESPECTING BLANKS.
APPEND buffer.
CLEAR: buffer.
CONCATENATE '* Hora : ' ld_time INTO buffer RESPECTING BLANKS.
APPEND buffer.
CLEAR: buffer.
buffer = '*----------------------'.
APPEND buffer.
CLEAR: buffer.
ENDFUNCTION.
Grabamos y activamos la función (método abreviado Ctrl+F3). Con esto queda terminado el patrón dinámico, para poder probarlo vamos a nuestro programa, y con el botón "Modelo" seleccionamos la opción "Otro" e ingresamos el nombre definido (ZUSER_DATE_TIME).
Finalmente, una consideración importante es que la función debería ser creada como objeto local (paquete $TMP), ya que por norma nunca desarrollamos en otros ambientes, con lo cual no necesitamos este patrón y menos su función asociada.
Espero les sea útil, ya que ayuda a agilizar el trabajo.
Hasta la próxima!






Excelente! Gracias!