✒️ABAP Las características de los programas ABAP
ABAP Las características de los programas ABAP
1- APLICACIONES ABAP
Dentro del mundo ABAP se pueden crear distintos tipos de objetos siendo los mas comunes:
REPORTE
tipo de programa donde generalmente existe una pantalla de selección, en la cual se introducen ciertos parámetros, luego a partir de estos parámetros se realiza una selección de datos a tablas SAP otabals Z y finalmente se muestra los datos obtenidos por pantalla mediante la utilización de la sentencia write, Lo que describimos anteriormente se conoce en ABAP como "Reporte Clásico, es decir un reporte generado a partir de la sentencia WRITE.
REPORTE INTERACTIVO
- Reporte Interactivo 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.
Para trabajar con reportes interactivos vamos a utilizar los eventos:
- AT LINE-SELECTION.
- TOP-OF-PAGE DURING LINE-SELECTION.
También vamos a utilizar las siguientes variables del sistema, las cuales nos proporcionan información muy útil:
- sy-lisel
- sy-lsind
- sy-lilli
- sy-currow
REPORTE ALV
Tipo de reporte especifico de ABAP donde el sistema nos proporciona una gran cantidad de funcionalidades para agregar a nuestro reporte, tal como la impresion, enviar a excel, ordenar, clasificar, etc.
Los tipos de ALV más utilizados son:
- Grillas
- Listas
- Jerárquico
Las grillas son reportes que están encuadrados en tablas. Las listas es un tipo de reporte similar a cuando se muestran los datos con write, pero con una serie de botón de comando. El jerárquico es un listado cabecera/detalle, como por ejemplo una factura y sus posiciones.
ALVPROGRAMA DE DIALOGOconsiste en una serie de pantallas o dynpros por las que el usuario va navegando a medida que se produce la ejecución del programa.
Cada pantalla o dynpro tiene una lógica asociada.
Se lo conoce también con el nombre de "Module Pool".
Para trabajar con los programas de diálogo vamos a utilizar la transacción estándar SE80.
Utilizaremos el Screen Painter y el Menu Painter para crear las pantallas que componen al programa de diálogo.
Para ejecutar un programa de diálogo necesitaremos crearle una transacción asociada al programa.
FORMULARIOS
Son objetos de SAP que se utilizan en la creación de documentos que necesitan ser impresos, visualizados por pantalla o enviados por correo electrónico. Ejemplos de formularios son Facturas, Remitos, Ordenes de compra, Solicitudes de pedido, etc.
SAP presenta numerosos documentos que luego de ser registrados o posterior a su modificación puede ser requerida su "salida externa".
El término "salida externa" expresa que el documento pueda ser afectado de las siguientes actividades:
- Impreso
- Enviado por e-mail
- Enviado por fax
- Enviado como EDI
- Entre otras
Existen dos técnicas para realizar un Batch Input, una se realiza de forma Online y la otra en forma Batch. Ellas son:
CALL TRANSACTION: se realiza de forma Online, por lo que ejecuta las actualizaciones en el momento en que se ejecuta el programa del Batch Input. Se utiliza la sentencia estándar CALL TRANSACTION.
JUEGO DE DATOS: se realiza de forma Batch (o de fondo) y queda almacenado en SAP para su posterior ejecución mediante la transacción SM35. Consiste en la ejecución de una serie de funciones estándar para la apertura, ejecución y cierre del juego de datos.
Los pasos para la realización de un Batch Input mediante la técnica de CALL TRANSACCTION son los siguientes:
- 1ero: Declaración de datos propios del Batch Input.
- 2do: Lectura de datos de archivo de entrada.
- 3ero: Carga de la tabla BDCDATA.
- 4to: Ejecución de la sentencia CALL TRANSACTION.
Son huecos que deja SAP dentro de los objetos estándar del sistema, para que los programadores agreguen código de modo de satisfacer un requerimiento que no satisface SAP.
Son las primeras ampliaciones que introdujo SAP.
Son propias del módulo de SAP SD de Ventas y Distribución, no existen en otros módulos de SAP.
Están implementados en la forma de subrutinas.
Todos los User Exit están nombrados por SAP como USEREXIT_XXXXXXXX.
El principal problema que presentan está en encontrar el User Exit correcto. Una vez que lo encontramos deberemos verificar que el mismo sirva para nuestro propósito.
El código ABAP que se insertará dentro del User Exit puede colocarse dentro de un INCLUDE que comenzará con Z o sino suelto.
FIELD EXITS
Son objetos de ABAP que se utilizan para relacionar un campo de una dynpro de un determinado programa con un código de programa o función.
El nexo de unión entre la función y el campo es a través del elemento de datos de dicho campo.
Se las conoce también con el nombre "Exit de campo".
Un FIELD EXIT es una función que tiene la particularidad de que sólo tiene un parámetro de entrada INPUT y uno de salida OUTPUT.
Generalmente se utilizan para validar los campos de una dynpro sin modificar el código fuente del programa en el cual está funcionando. Su codificación se realiza aparte.
El Field Exit se codifica por elemento de datos y luego se asocia a un programa y a una dynpro en particular. El código es ejecutado automáticamente al dar ENTER sobre la dynpro que tiene el campo específico, al pasar de pantalla (o salir de la pantalla) o en algunos casos al presionar el botón Grabar de la dynpo.
En la transacción SE37, biblioteca de funciones, y colocando field_exit_* y luego pulsando F4 nos saldrán todos los Field Exit del sistema.
Una de las desventajas del Field Exit es que no se puede hacer un DEBUG al código, la forma de hacerlo es ir colocando mensajes (MESSAGE) dentro del código para ir viendo por donde pasa dentro del código y qué valores está manejando.
ABAP Field Exits
También llamados ampliaciones de campo, son validaciones de los elementos de datos asociados a campos de pantallas o dynpros de SAP. Los Field Exits son módulos de funciones que son llamados y ejecutados posteriormente de las validaciones del sistema estándar. Los mismos por ser... [+Ampliar Descripción]
Assign
Es una sentencia ABAP que se utiliza para asignar datos a un field symbol. Los “field symbols” son nombres simbólicos de otros campos. No reservan espacio físicamente para un campo sino que “apuntan” a su contenido. Un field symbol puede apuntar a cualquier objeto... [+Ampliar Descripción]
PRFB
Es el código de acceso que ejecutamos desde la transacción estándar CMOD para acceder a los Field Exits. Los pasos para crear un Field Exit son los siguientes: Primero debemos ir a la transacción CMOD y a continuación escribir PRFB en el campo de comándos y... [+Ampliar Descripción]
ABAP Características de los Programas ABAP
Dentro del mundo ABAP se pueden crear distintos tipos de objetos. Los más comunes de ellos son: Reportes clásicos, Reportes Interactivos y Reportes ALV Programas de Dialogo Formularios Batch Input User Exits Field Exits Módulos de Funciones y RFCs Analicemos... [+Ampliar Descripción]
ABAP Field Symbols
Al contrario de lo que sucede con el acceso estático de los datos, donde necesitamos especificar el nombre de un objeto para poder hacer algo con él, los Field Symbol nos permiten acceder y pasar datos cuyos nombres y atributos no conocemos hasta el momento de la ejecución. Un Field...
ABAP Búsqueda de Exits en Transacciones
Existen varias formas de buscar en el sistema SAP cual es el Exit o Ampliaciones que deberemos modificar para poder cumplir con un determinado requisito que nos plantean. La forma de buscar una Ampliación va a depender del tipo de ampliación de la que estemos hablando. Los tipos de Ampliaciones... [+Ampliar Descripción]
Field Symbol
Son una sentencia ABAP que nos permite acceder a los datos de los programas en forma dinámica. Los Field Symbols son como los punteros del lenguaje C ya que sirven para asignar el contenido de una variable al field symbol. NO reservan espacio físicamente para un campo sino... [+Ampliar Descripción]
ABAP User Exits y Customer Exits
Las Ampliaciones son diferentes herramientas que presenta SAP para realizar mejoras, modificaciones o agregados a un programa estándar del sistema. En SAP existen varios tipos de ampliaciones, que son utilizados de acuerdo al tipo de mejora o requerimiento que se quiera desarrollar, cada una... [+Ampliar Descripción]
Es el lenguaje de programación propiedad del Sistema SAP, que se utiliza para programar en la mayoría de los productos de la empresa. ABAP significa (Advanced Business Application Programming). ABAP también es conocido como SAP ABAP.
FuncionesLos módulos de funciones son programas ABAP que se crean a través de la transacción estándar SE37, conocida como la biblioteca de funciones y que pueden ser reutilizados en cualquier otro programa.
La idea principal detrás de los módulos de funciones es no tener que generar infinidad de veces un código que utilizamos de igual forma en distintos programas ABAP.
Los módulos de funciones permiten encapsular las lógicas de procesamiento dentro del módulo, de modo que nos olvidamos de lo que se procese dentro del módulo y obtenemos la salida que deseamos.
El sistema SAP estándar nos proporcionas muchísimos módulos de funciones estándar que podremos utilizar o también podemos crear nuestros propios módulos de funciones, de acuerdo a las necesidades que tengamos.
Siempre que se define un módulo de funciones, será necesario crear previamente un grupo de funciones. El grupo de funciones también lo crearemos a través de la transacción SE37.
Nuevo concepto: 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 4 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
- Control: sentencias de control de flujo de programa. Ej. IF, WHILE, DO, etc.
- Operativas: realizan funciones según la palabra clave. Ej. WRITE, MOVE
Imagen 1.1 Estructura de un reporte o programa ABAP
REPORT <Nombre> ......................... Nombre del Programa
TABLES:............................................. Aca se definen las tablas del diccionario de datos
DATA:................................................. Aca 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 asteristo en la primera columna de la fila
- Con comillas dobles en cualquier posición de la línea.
Ej: * Imprimimos en pantalla
Ej: WRITE:/ 'Este es mi primer programa en Abap'. "Imprimimos en pantalla
Audio Tips 1: En ABAP como desarrolladores tenemos la posibilidad de elegir trabajar con el entorno de programación viejo o el nuevo. Se puede configurar en el Menú utilidades -opciones -Editor Abap - Editor y seleccionar opción Editor Fronten nuevo. Allí estan presentes algunas de las caracteristicas de loseditores de software mas reconocidas como el autocompletado y otras funciones.
2- EVENTOS DE UN PROGRAMA ABAP: la programación ABAP es orientada a eventos.
Nuevo concepto: 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.
- Inizialization: es el primer evento que se ejecuta. Nos permite inicializar los campos de la pantalla de selección de un programa o cualquier otra variable.
- AT Seletion-screen: este evento se lanca 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.
-AT USER-COMMAND: se ejecuta cuando el usuario presiona un botón del menú en un reporte.
- TOP-OF-PAGE: este evento se lanza cuando se crea automaticamente una nueva página.Esto ocurrirá cuando el número de líneas procesado sobrpase el número de líneas fijado para la página en la sentencia REPORT.
Un ejemplo de como usar 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:
Z_PRUEBA_EVENTOSMH
SPAN { font-family: "Courier New"; color: #000000; background: #FFFFFF; } .L0S31 { font-style: italic; color: #808080; } .L0S32 { color: #3399FF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; } *&---------------------------------------------------------------------*
*& Report Z_PRUEBA_EVENTOSMH
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_PRUEBA_EVENTOSMH.
DATA: v_campo1 TYPE i,
v_campo2 TYPE i,
v_suma TYPE i.
INITIALIZATION.
CLEAR v_suma.
v_campo1 = 10.
v_campo2 = 20.
START-OF-SELECTION.
v_suma = v_campo1 + v_campo2.
TOP-OF-PAGE.
WRITE 'Resultado de las cuentas'.
END-OF-SELECTION.
WRITE v_suma.
Auto Tips 2: explicación breve del programa Z_PRUEBA_EVENTOASMH (de la imagen anterior). Declaramos 3 variables V_campo1, v_campo2 y v_suma (todas de tipo entero), luego dentro del evento INITIALIZATION borramos el contenido de la variable de suma con la sentencia CLEAR (cada vez que querramos borrar o inicializar el contenido de una variable vamos a utilizar esa sentencia. Asignamos a la variable 1 el valor 10, y a la variable 2 el valor 20), luego dentro del evento START-OF-SELECTION sumamos las variables v_campo1 y 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 variable v_suma. Si ejecutamos este programa produciríamos la siguiente salida: Programa de prueba de los eventos Abap -Resultado de las cuentas 30.
Sabías que: No oimporta el orden en el que se escriban los eventos dentro de un programa.
3- UTILIZANDO EL DEBUGGER: es muy importante utilizarlo ya que los programas solo funcionan si y solo si son perfectas o sin errores. Algunos errores se detectan a simple vista pero para resolver otros necesitamos ejecutar el programa y saber exactamente cuales son los valores que van tomando variables internas del mismo. Para esto existe el debugger. Veamos como debuggear el progrma Z_PRUEBA_EVENTOSMH que creamos. VIsualizar el programa con la transaccion SE38, y colocamos un breakpoint luego de la declaración de las variables presionando (ctrl-Shift+F9) o breackpoint externo o breakpoints de sesión que durarán mientras la sesión esté abierta.
Auto Tips 3: existen dos tipos de breakpoint los estáticos y los dinámicos, los primeros se generan escribiendo la sentencia BREAK-POINT, los estáticos el programa siempre detendrá su ejecución en el punto donde escribamos un breakpoint estático y pasará inmediatamente al modo debugge, estos breakpoint funcionan independientemente del usuario que ejecuta el programa. Dentro de los breakpoint dinámicos existen tres tipos: los breakpoint de debugger que son creados en el debugg, y se borran cuando se cierra el mismo, los de sesión que son creados en el editor ABAP y son válidos mientras dura la sesión del usuario para todos los modos externos existentes para la sesión de logon y por último los externos que son válidos para todos los usuarios en el servidor y son válidos por dos horas.
Presionando el boton Single step o F5 ejecutaremos paso a paso es decir sentencia a sentencia
Presionando el botón Execute o F6 ejecutaremos subrutina a subrutina sin entrar en el contenido de cada una.
Presionandoelbotón Returns o F7 retornaremos a la rutina de nivel superior de la rutina actual en ejecución.
Presionando el botón Run o F8 continuaremos la ejecución hasta el final de programa.
Audio Tips 4: una funcionalidad muy util que nos proporciona el dubugge ABAP es posicionarnos en una línea de código determinada para poder ejecutarla, tanto si quiesieramos ejecutar una línea de código posterior a la línea actual que se está ejecutando como si quisieramos ejecutar una línea de código anterior a la línea actual en procesamiento. Para ello solo basta con posicionar el puntero del mousse en la línea deseada y presionar shift+F12
En la parte inferior de la pantalla del debugger podemos ingresar el nombre de cualquiera de las variables del programa para saber cual es su contenido en cualquier momento del mismo. Tambien podemos modificar el contenido de una variable para saber cual sería el resultado del programa con esa modificación.
Uso del Menú: Modificción del Debugger
Si visualizas una pantalla de Debug diferente a la que presentamos en las imágenes anteriores es porque tenes configurado el Debug Nuevo. Para cambiar el debug debes ir: Utilidades - opciones - Editor ABAP - Debugging - Función Debugging (y cambiar la función del Debugg).
Ejercicio:
Código fuente del ejemplo
*&---------------------------------------------------------------------* *& Report Z_PRUEBA_EVENTOS *& *&---------------------------------------------------------------------* REPORT z_prueba_eventos. DATA: v_campo1 TYPE i, v_campo2 TYPE i, v_suma TYPE i. INITIALIZATION. CLEAR v_suma. v_campo1 = 10. v_campo2 = 20. START-OF-SELECTION. v_suma = v_campo1 + v_campo2. TOP-OF-PAGE. WRITE 'Resultado de las cuentas'. END-OF-SELECTION. WRITE v_suma.
 
 
 
Sobre el autor
Publicación académica de Claudio Marcelo Dario Haikel, en su ámbito de estudios para la Carrera Consultor ABAP.
Claudio Marcelo Dario Haikel
Profesión: Funcional Sap - Argentina - Legajo: HM94J
✒️Autor de: 58 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Claudio Haikel