UNIDAD 2: DECLARACION Y PROCESAMIENTO DE DATOS
LECCIÓN 1: CARACTERISTICAS DE LOS PROGRAMAS ABAP
1) Aplicaciones ABAP
Dentro del mundo ABAP se pueden crear distintos tipos de objetos. Los más comunes de ellos son:
• Reporte, Reporte interactivo y Reporte ALV
• Programa de Dialogo.
• Formularios.
• Batch Input.
• User exits
• Field exits.
• Funciones y RFC
REPORTE: Es un programa que consiste en una serie de instrucciones y palabras clave cuyo objetivo es procesar datos de entrada o datos que se obtienen de las tablas del sistema y mostrar los resultados del procesamiento por pantalla.
Existen cuatro tipos de palabras claves:
• Declarativas: se utilizan para declarar datos que vamos a usar dentro del programa. Ej.: DATA, TABLES y CONSTANT.
• Eventos: que ocurren en el programa. Ej.: START-OF-SELECTION, TOP-OF-PAGE, etc.
• Control: sentencias de control de flujo de programa. Ej.: IF, WHILE, DO, etc.
• Operativas: realizan funciones según la palabra clave. Ej.: WRITE, MOVE, etc
Generalmente la estructura de un reporte va a ser de la siguiente manera:
REPORT<Nombre> Nombre del programa
TABLES: Acá se definen las tablas del diccionario de datos.
DATA: Acá definimos las variables internas.
EVENTOS: Se detallan los eventos y el código correspondiente a cada uno.
SUBRUTINAS: Se crean para modularizar los programas y ayudar al mantenimiento.
Existen dos formas de utilizar los comentarios en un programa ABAP.
• Con un asterisco en la primera columna de la fila.
• Con comillas dobles en cualquier posición de la línea.
AUDIO: En ABAP como desarrolladores tenemos la posibilidad de elegir trabajar con el entorno de programación viejo o el nuevo. Esto lo podemos configurar en el menú:
Utilidades/Opciones/Editor ABAP/Editor/Opción nuevo
En este editor están presentes algunas de las características de los editores de software más reconocidos en la actualidad, tales como el autocompletado y muchas otras funciones más.
2) Eventos de un programa ABAP.
La programación ABAP es orientada a eventos.
Evento de un programa ABAP: Es una etiqueta que identifica una sección de código dentro de un programa.
La sección de código asociada con un evento, comienza con un nombre de evento y termina cuando el siguiente nombre de evento se encuentra.
Los nombres de eventos son palabras reservadas. No podemos crear nuevos eventos, solamente podemos usar los que ya existen.
Los principales eventos que pueden ocurrir dentro de un programa son:
• INITIALIZATION: Es el primer evento que se ejecuta. Nos permite inicializar los campos de la pantalla de selección (conjunto de campos de entrada y selecciones, que se muestran al ejecutar un reporte y que sirven para filtrar datos en tablas del sistema) de un programa o cualquier otra variable.
• AT SELECTION-SCREEN: Este evento se utiliza para validar los datos introducidos en los parámetros que conforman a la pantalla de selección.
• START-OF SELECTION: Este evento se lanza cuando se procesa la instrucción REPORT. En ese momento se empieza a ejecutar el código que se encuentra entre REPORT y la palabra reservada START-OF-SELECTION. Inmediatamente después se procesa el bloque contenido dentro de este evento. El evento START-OF-SELECTION se utiliza para realizar el procesamiento central del programa, tal como puede ser realizar la selección de los datos, procesar un archivo, realizar operaciones aritméticas, etc. Es el evento por defecto, es decir si escribimos sentencias ejecutables sin etiqueta de evento, estas se adjudican por defecto a START-OF-SELECTION.
• END-OF-SELECTION: El código de este evento se procesa cuando se termina el procesamiento central del programa, es decir luego del evento START-OF-SELECTION.
Contiene las últimas sentencias que se ejecutarán en el programa.
En general se lo utiliza para realizar la impresión de listados.
• AT LINE-SELECTION: Permite al usuario seleccionar una línea de un listado y realizar alguna acción. Se utiliza en los llamados reportes interactivos (es un tipo de reporte ABAP donde se muestra un primer listado por pantalla con cierta información y luego clikeando una línea determinada del primer listado, se accede a otros datos relativos a esa línea y así sucesivamente por cuantos niveles tenga el listado)
• AT USER-COMMAND: Se ejecuta cuando el usuario presiona un botón del menú en un reporte.
• TOP-OF-PAGE: Este evento se procesa antes de que el primer dato aparezca en cada página. Se suele utilizar para colocar títulos o cabeceras.
• END-OF-PAGE: Este evento se lanza cuando se crea automáticamente una nueva página. Esto ocurrirá cuando el número de líneas procesado sobrepase el número de líneas fijado para la página en la sentencia REPORT.
Veamos un ejemplo de cómo usaríamos los eventos en un programa ABAP. Para ello, nos logueamos a SAP, ingresamos a la transacción SE38 y creamos el programa Z_PRUEBA_EVENTOS que lo grabamos como programa ejecutable y como objeto local con el siguiente código:
AUDIO: Declaramos 3 variables v_campo1, v_campo2, v_suma todas de tipo entero.
Luego dentro del evento INITIALIZATION borramos el contenido de la variable v_suma, esto lo hacemos con la sentencia CLEAR. También asignamos a la variable v_campo1 el valor 10 y a la variable v_campo2 el valor 20.
Dentro del evento START-OF-SELECTION sumamos las variables v_campo1, v_campo2 y asignamos el resultado de la suma a v_suma.
Utilizamos el evento TOP-OF_PAGE para imprimir en pantalla el título “Resultado de las cuentas” y dentro del evento END-OF-SELECTION imprimimos en pantalla el resultado de la suma almacena de la variable v_suma.
Si ejecutamos este programa produciríamos la siguiente salida:
Resultados de las cuentas
30
NOTA: No importa el orden en el que se escriban los eventos dentro de un programa.
3) Utilizando el debugger
Es muy importante saber utilizar el debugger (es la herramienta que nos proporciona SAP para identificar y corregir errores de programación) o depurador ya que en programación las cosas solo funcionan si y solo si son perfectas, es decir sin errores.
Algunos errores se detectan a simple vista pero para resolver otros vamos a necesitar ejecutar nuestro programa y saber exactamente cuáles son los valores que van tomando las variables internas del mismo. Para esto existe el debugger.
Veamos como debaguear el programa Z_PRUEBA_EVENTOS que acabamos de crear. Para ello, visualizamos el programa a través de la transacción SE38 y colocamos un breakpoint luego de la declaración de las variables presionando el botón STOP para breakpoints de sesión que durarán mientras la sesión está abierta o STOP para breakpoints externos.
AUDIO: Existen 2 tipos de breakpoints:
• Estáticos: se deben escribir en el código ABAP break-point, el programa siempre detendrá su ejecución en el punto donde escribamos un breakpoint estático y pasara inmediatamente en modo debugger, estos breakpoints funcionan independiente del usuario que ejecuta el programa.
• Dinámicos: existen 3 tipos:
o Breakpoint de debugger que son creados en el debugg y se borran cuando se cierra el debugger.
o Breakpoint de sesión que son creados en el editor ABAP y son válidos mientras dure la sesión del usuario, para todos los modos externos existentes, para la sesión de logon.
o Breakpoint externos que son válidos para todas las sesiones de todos los usuarios en el servidos y su valides es de 2 horas.
Luego ejecutaremos el programa y veremos en debugger en acción.
Presionando el botón Single step o la tecla F5, ejecutaremos paso a paso es decir sentencia a sentencia.
Presionando el botón Execute o la tecla F6, ejecutaremos subrutina a subrutina sin entrar en el contenido de cada una.
Presionando el botón Return o la tecla F7, retornaremos a la rutina de nivel superior de la rutina actual en ejecución.
Presionando el botón Run o la tecla F8, continuaremos la ejecución hasta el final del programa.
En la parte inferior de la pantalla del debugger podemos ingresar el nombre de cualquiera de las variables del programa para saber cuál es su contenido en cualquier momento del mismo. También podemos modificar el contenido de una variable para saber cuál sería el resultado del programa con esta modificación.
Modificación del Debugger: Si visualizas una pantalla de Debug diferente a la que presentamos en las imágenes anteriores es porque tienes configurado el Debug Nuevo.
Para cambiar el debug debes seleccionar:
Utilidades -> Opciones -> Editor ABAP -> Debugging -> Función Debugging y cambiar la función del debug.