top of page

Curso Online ABAP Programación Estructurada

Nivel Básico a Experto

11 Horas de video

200 Horas de Estudio

92 Test

Certificado

3.323 Alumnos

Acceso de por vida

15 Días de garantía de devolución

Pago seguro con SSL

Aceptamos todas las formas de pago

Temario
Detalle
Requisitos
Vídeos
Glosario

CURSO ONLINE ABAP PROGRAMACIÓN ESTRUCTURADA

¡Bienvenido/a a nuestro Curso Online de Programación Orientada a Objetos! En este curso, te proporcionaremos las bases fundamentales del modelo de programación en ABAP, centrándonos en el paradigma de la programación orientada a objetos, que es ampliamente utilizado en las tecnologías y frameworks de SAP.


Nos enorgullecemos de mantener nuestro curso actualizado para adaptarlo a la nueva versión del lenguaje ABAP, lo que te permitirá afrontar los desafíos de la programación en la nube y mantener tu formación al día.


A través de nuestro Curso Online de Programación Orientada a Objetos, obtendrás las herramientas y conocimientos necesarios para comprender en profundidad las tecnologías de ABAP y estar preparado/a para enfrentar proyectos en este campo.


¡Únete a nuestro curso y potencia tus habilidades en programación con ABAP! Estamos emocionados/as de acompañarte en este aprendizaje y brindarte las herramientas para avanzar en tu carrera profesional. ¡Te esperamos con entusiasmo en nuestro curso online!

INTRODUCCIÓN.

1.1. CONCEPTO.

ABAP (Advanced Business Application Programming) es un lenguaje de cuarta generación, propiedad de SAP, que se utiliza para programar la mayoría de sus productos (R/3, mySAP Business suite...). 


Utiliza sentencias de Open SQL para conectarse con prácticamente cualquier base de datos. Cuenta con miles de funciones para el manejo de archivos, bases de datos, fechas, etc. Permite conexiones RFC (Remote Function Calls) para conectar a los sistemas SAP con cualquier otro sistema o lenguaje de programación.


SAP suministra una instalación limitada de R/3 llamada MiniSAP para la práctica de la programación en ABAP. MiniSap ha sido reemplazado por SAP NetWeaver 7.03 Trial Versión



¿Dónde obtener MINI SAP?

El MiniSap es una versión reducida del SAP que no incluye ningún módulo, se utiliza para empezar a aprender la programación en Abap; que es el lenguaje de programación de SAP; ya que en teoría MiniSap permite programar todo lo que se puede programar en SAP.



¿Dónde obtener MINI WAS?

El MiniWas es la versión que además de permitir hacer todo lo que se puede hacer con el MiniSAP, también permite practicar la programación orientada a Web (BSP).



¿Dónde obtener un acceso IDES a un Servidor SAP?

IDES significa "Internet Demonstration and Evaluation System".



Descarga SAP GUI 7

SAP es una aplicación cliente/servidor, por lo que se tiene que instalar la aplicación SAP GUI PAHT 7 en la máquina cliente, la cual creará el acceso "SAP LOGON" que nos permitirá crear la conexión al servidor SAP.



Instalación SAP GUI 7

SAP es una aplicación cliente/servidor, por lo que se tiene que instalar la aplicación SAP GUI PAHT 7 en la máquina cliente, la cual creará el acceso "SAP LOGON" que nos permitirá crear la conexión al servidor SAP.



Conexión con SAP LOGON

La aplicación SAP LOGON es la que se utiliza para realizar la conexión con el servidor de aplicaciones de SAP, donde necesitamos unos datos que nos lo tiene que proporcionar el Servidor.



Interfaz SAP

La pantalla principal de SAP se llama SAP EASY ACCESS, y está formada por:

  • Varios menús compuestos por opciones.

  • Una estructura de carpetas, que es como SAP organiza sus transacciones.



Carpeta Workbench ABAP

En la carpeta de herramientas se puede encontrar las transacciones que principalmente nos permite realizar consultas y configuraciones de aspectos concretos de SAP.

Tal como crear una sociedad o cambiar sus propiedades.



Paquete y Orden de transporte Sap

El sistema R/3 de SAP está basado en una arquitectura cliente-servidor, lo que significa que hay una distribución de las tareas que debe realizar el sistema.

También se puede instalar en diferentes sistemas operativos y trabaja con diferentes tipos de base de datos.



TIPOS DE DATOS ABAP.

Buffer de Programa.

Para que se puedan ejecutar los programas, el servidor de aplicaciones almacena dichos programas en un buffer que se denomina “buffer de programa”.


Cuando un programa se tiene que ejecutar, se realiza una búsqueda en el buffer de programa.

  • Si es encontrado:
    Y no ha sido modificado en la base de datos, la copia almacenada es usada.

  • Si no se encuentra, o si la copia de la base de datos es más nueva,
    El programa se vuelve a cargar.

Roll Área

El roll área se crea cada vez que un usuario ejecuta un programa, es decir un roll área por usuario y programa, y se usa para almacenar información sobre la ejecución de los programas, donde almacena variables, punteros, etc, de cada ejecución.


Si varios usuarios ejecutan un programa a la misma vez, ejecutan la misma copia que está en el buffer de programa, pero los datos de la ejecución son almacenados en el roll área de cada usuario, permitiendo que cada uno tenga valores diferentes para los objetos del programa.



Objetos de Datos.

Existen dos tipos de objetos de datos:

  • Objetos de datos modificables

  • Objetos de datos NO modificables


Cuando un programa se ejecuta se reserva un espacio de la memoria para los objetos de datos que están ubicados en el área roll del programa, permitiendo la lectura y modificación de los objetos de datos (los que permite la modificación).


Y finalmente, cuando el programa termina su ejecución, se libera el espacio de memoria que tenía asignado para que se vuelva a asignar a más ejecuciones.



Sap ABA variables.

Lo primero que hay que hacer en la codificación de un programa es declarar las variables, ya que es obligatorio que estén declaradas antes de su utilización.


Para declarar una variable se tiene que informar obligatoriamente de:

  • Nombre, usando la sentencia DATA o PARAMETERS.

  • Tipo, usando la sentencia TYPE.


Y opcionalmente:

  • Longitud, usando la sentencia LENGTH.

  • Valor Inicial, usando la sentencia VALUE.



Abap de declarar variables.

Para declara variables se pueden usar:

  • DATA, que se usa para declarar una variable y posteriormente un valor.

  • PARAMETERS, que se usa para introducir el valor de la variable por pantalla, será el usuario final el que pueda introducir el valor deseado por la pantalla.


Características en los nombres de las variables:

  • El primer carácter tiene que ser alfabético.

  • Los nombres de variable pueden tener un máximo de longitud de 30 caracteres.

  • No puede con los caracteres excepto: “( )”, “+”, “.”, “,” y “:”.


Recomendación de SAP:

  • No utilizar guiones, en su lugar usar subrayado.

  • No usar USING o CHANGING como nombres de variables.

  • La sentencia DATA se puede hacer en cualquier parte del programa, pero se recomienda declararla en la parte superior.

  • La longitud por defecto depende del tipo de dato.

  • El tipo por defecto es c (carácter).

  • El valor inicial para una variable numérica es 0.

  • El valor inicial para una variable de carácter es blanco.

  • Solo se puede inicializar los literales o constantes, las variables no se inicializan.


Tipos estándar ABAP.

ABAP es un lenguaje de programación que utiliza una alta variedad de datos y de tipos de datos. Posee tipos de datos elementales sobre los cuales se pueden crear otros muy complejos.


Los tipos estándar ABAP se dividen en dos grupos:

● Tipos completo, tienen una longitud fija.

● Tipos incompleto, la longitud de la variable se indica en el momento de su declaración.


Tipos de datos completos Abap.

TIPO DE DATOS ESTRUCTURA

D                            Tipo para fechas. Tiene el formato: AAAAMMDD. Tiene una longitud 8 (fija).

T                             Tipo para hora. Tiene el formato: HHMMSS  Tiene una longitud 6 (fija).

I                                Tipo para entero. Tiene una longitud 4 (fija).

F                             Tipo para número de punto flotante  Tiene una longitud 8 (fija).

DECFLOAT16               Tipo de número decimal de punto flotante. Tiene una longitud 8 (fija).

DECFLOAT34              Tipo de número decimal de punto flotante. Tiene una longitud 16 (fija).

STRING                    Tipo de cadena de caracteres. Tiene una longitud dinámica.

XSTRING                    Tipo para secuencia de bytes de longitud dinámica (cadena hexadecimal)



Tipos de datos incompletos Abap.

TIPO DE DATOS ESTRUCTURA

C                           Tipo para cadena de caracteres. Tiene una longitud variable, se especifica en su declaración.

N                          Tipo para cadena de caracteres numérica. Tiene una longitud variable, se especifica en su declaración.

X                           Tipo para secuencia de bytes (cadena hexadecimal). Tiene una longitud variable, se especifica en su declaración.

P                           Tipo para número empaquetado. Tiene una longitud variable, se especifica en su declaración. Se utiliza cuando queremos almacenar un valor numérico con decimales.



Sap Abap constantes y Literales.

A las constantes y a los literales no se pueden modificar su valor durante la ejecución del programa.


Se utilizar para evitar escribir valores literales en el programa. Aunque se puede escribir un valor entre comillas generalmente suele estar prohibido, se tiene que crear un literal o una constante y utilizarlos.

Para declarar una constante o un literal se usa la sentencia CONSTANTS:



Variables del sistema Sap Abap.

El sistema de SAP dispone de 171 variables de sistema, y se informan:

  • Con el inicio de la sesión, como la variable UNAME, que se informa con el nombre de conexión del usuario,

  • Cuando se ejecuta un programa, como la variable BATCH, que indica si el programa se ha lanzado de forma online o batch.

  • Durante la ejecución del programa, como la variable SUBRC, que utiliza para saber si la ejecución de la sentencia anterior a terminado correctamente.


El listado de estas variables se puede ver en la transacción SE11- DICCIONARIO ABAP, en el tipo de dato SYST.



SENTENCIAS ARITMÉTICAS.

Asignar valor a variable Abap.

En ABAP se puede asignar un valor a un objeto de dos formas diferentes:

  • Usando la cláusula MOVE:
    MOVE variable1 TO variable2.

  • Usando el signo igual:
    Variable2 = variable1.


En ambos casos la variable2 tendrá los mismos datos que variable1.


Clases de Abap sentencias aritméticas.

OPERACIÓN A REALIZAR PALABRA CLAVE

Sumar                                 ADD

Restar                                  SUBTRACT

Multiplicar                            MULTIPLY

Dividir                                 DIVIDE

Cociente de una división.        DIV

Resto de la división.               MOD

Exponente                           **

Raíz cuadrada                      SQRT

Realización por asignación     COMPUTE


Sentencia Abap COMPUTE.

Para la realización de operaciones aritméticas en ABAP no es obligatorio la utilización de comandos individuales, como ADD para la suma, SUBTRACT para la resta, etc.


Toda operación aritmética se puede realizar de dos formas:

  • Realizando la operación y asignándola con el carácter igual a una variable.
    SUMA = 2 + 3.
    TOTAL_PAGAR = IMPORTE * 1,20.

  • Usando la palabra clave COMPUTE, que no es obligatoria, es igual que la forma anterior, pero incluyéndola. COMPUTE solo se puede usar para realizar operaciones aritméticas.
    COMPUTE SUMA = 2 + 3.
    COMPUTE TOTAL_PAGAR = IMPORTE * 1,20.





SENTENCIAS CON CARACTERES.

¿Qué es un carácter y una cadena de caracteres?

En programación cuando nos referimos a un carácter es cualquier símbolo que no se considera numérico, ya se han letras, símbolos, caracteres especiales e incluso números si van entre comillas. En programación ABAP cuando nos referimos a un número que va entre comillas, no lo considera tal como un valor numérico, sino como un carácter que visualmente es igual que un número.


Y una cadena de caracteres es un conjunto de caracteres, pueden ser de los siguientes tipos:

C -> CARÁCTER.

D -> FECHA.

T -> TIME.

STRING. -> STRING, cadena de caracteres con longitud variable.

N – NUMÉRICO ENTERO.


Abap operaciones aritméticas.

OPERACIÓN A REALIZAR PALABRA CLAVE

Unión                                                  CONCATENATE

Condensa                                            CONDENSE

Remplaza                                             REPLACE

Busca                                                   SEARCH

Desplaza                                              SHIFT

Convertir a mayúsculas o minúsculas     TRASLATE

Divide                                                  SPLIT

Longitud                                              STRLEN


Sentencia CONCATENATE, Abap concatenar cadenas.

La sentencia CONCATENATE se usa para unir dos a más cadenas de caracteres, teniendo en cuenta la elimina los espacios finales de cada valor

Ejemplo:

  • CONCATENATE valor1 valor2 INTO variable1.


Esta sentencia tiene dos añadidos:

  • SEPARATED BY, donde elimina los espacios en blanco iniciales y finales de cada valor y separa los valores con el carácter indicado después del BY
    CONCATENATE valor1 valor2 INTO variable1 SEPARATED BY “ “.

  • RESPECTING BLANKS, que respeta todos los espacios en blanco de cada valor.
    CONCATENATE valor1 valor2 INTO variable1 RESPECTING BLANKS.


Sentencia Sap Abap CONDENSE string.

La sentencia CONDENSE se utiliza para eliminar los espacios iniciales y finales de una cadena, además si la cadena tuviera más de un espacio en blanco entre las palabras solo dejaría uno.

  • CONDENSE variable1.


La sentencia CONDENSE tiene un añadido NO-GAPS, que lo que hace es eliminar absolutamente todos los espacios en blanco, iniciales, finales e intermedios de una cadena.

  • CONDENSE variable1 NO-GAPS.


Sentencia Abap REPLACE.

La sentencia REPLACE, se utiliza para remplazar uno o varios caracteres por uno o varios caracteres, teniendo en cuenta que solo remplaza el primer carácter encontrado.

  • REPLACE caracter1 WITH caracter2 INTO variable1.


Tiene un añadido ALL OCCURRENCES OF, que se usara cuando queremos que sustituya todos los caracteres encontrados y no solamente el primero.

  • REPLACE ALL OCCURRENCES OF caracter1 IN variable1 WITH caracter2.


Sentencia Abap SEARCH.

La sentencia SEARCH se utiliza para buscar una subcadena en una cadena y con la utilización de la variable del sistema SY-FDPOS sabremos cuantos caracteres hay antes de esa subcadena.

  • FORMATO:
    SEARCH cadena. FOR subcadena

  • EJEMPLO:
    SEARCH ‘MI NOMBRE ES JUAN’ FOR ‘JUAN’.


Después de la sentencia SEARCH, el sistema informa la variable SY-FDPOS con el número de caracteres que hay antes de la subcadena JUAN, que en este caso es 13.


Para conocer la posición donde empieza la subcadena JUAN, hay que sumar 1 al valor de la variable SY-FDPOS, obteniendo la posición 14.


Sentencia Abap SHIFT.

La sentencia SHIFT se utiliza para desplazar una subcadena de una cadena de caracteres hacia uno de los lados, teniendo en cuenta que se eliminan los caracteres desplazados y que la longitud de la cadena no varía.


La sentencia SHIFT tiene 4 formas de funcionamiento:

  • SHIFT gv_datos BY 1 PLACES LEFT, que desplaza hacia la izquierda los caracteres indicados.

  • SHIFT gv_datos BY 1 PLACES LEFT, que desplaza hacia la derecha los caracteres indicados.

  • SHIFT gv_datos LEFT DELETING LEADING ‘***’, que desplaza a la izquierda la subcadena indicada.

  • SHIFT gv_datos RIGHT DELETING TRAILING ‘***’, que desplaza a la derecha la subcadena indicada.


Sentencia Abap TRANSLATE.

La sentencia TRANSLATE se utiliza para convertir una cadena en mayúsculas o minúsculas.


Tiene dos formas:

  • TRANSLATE GV_DATOS TO LOWER CASE, transforma los caracteres de la variable GV_DATOS a minúsculas.

  • TRANSLATE GV_DATOS TO UPPER CASE, transforma los caracteres de la variable GV_DATOS a mayúsculas.


Sentencia Abap SPLIT.

La sentencia SPLIT se utiliza para dividir una cadena en subcadenas, a la cual tenemos que indicar que carácter se usara como identificador para las divisiones.

  • EJEMPLO:
    SPLIT variable AT ‘ ‘(carácter identificativo de la división)INTO var1var2 var3.


Se puede sustituir las variables que contienen las subcadenas, por una tabla interna, en este caso cada registro contendrá una subcadena diferente.

  • EJEMPLO:
    SPLIT variable AT ‘ ‘(carácter identificativo de la división) INTO TABLE nombre-tabla.


Sentencia Abap STRLEN.

La sentencia STRLEN se utiliza para saber la longitud de una cadena sin tener en cuenta los espacios en blanco finales.

  • EJEMPLO:
    STRLEN( GV_DATOS ).


Trabajando con una parte de una cadena.

Para trabajar solo con una parte de la cadena podemos usar el añadido +I(L).


Donde “I”, es la posición inicial, teniendo en cuenta que ABAP empieza a contar desde el número 0, por lo que hay que restar uno si contamos desde el 1.


Donde L, es el número de caracteres con los que queremos trabajar.

  • Var1 = var2+3(5)-> se asigna desde la posicion3, y se pasan 5 caracteres.


Sentencia Abap ADD.

La suma en ABAP se puede realizar de 2 formas:

  • Utilizando el carácter “+”
    Variable1 = variable1 + variable2.
    Total = total + iva.

  • Utilizando la palabra reservada ADD:
    ADD variable2 TO variable1.
    ADD iva TO total.


El resultado es igual para todas las formas, se está sumando el valor de la variable2 a la variable1.


Sentencia Abap SUBTRACT.

La resta en ABAP se puede realizar de 2 formas:

  • Utilizando el carácter “-”
    Variable1 = variable1 - variable2.
    Total = total – descuento.

  • Utilizando la palabra reservada SUBTRACT:
    SUBTRACT variable2 FROM variable1.
    SUBTRACT descuento FROM total.


El resultado es igual para todas las formas, se está restando el valor de la variable2 a la variable1.



Sentencia Abap MULTIPLY.

La multiplicación en ABAP se puede realizar de 2 formas:

  • Utilizando el carácter “*”
    Variable1 = variable1 * variable2.
    Total = total * iva.

  • Utilizando la palabra reservada MULTIPLY:
    MULTIPLY variable2 BY variable1.
    MULTIPLY total BY iva.


El resultado es igual para todas las formas, se está multiplicando el valor de la variable2 al valor la variable1.


Sentencia Abap DIVIDE.

La división en ABAP se puede realizar de 2 formas:

  • Utilizando el carácter “/”
    Variable1 = variable1 / variable2.
    Total = herencia / num_hijos

  • Utilizando la palabra reservada DIVIDE:
    DIVIDE variable1 BY variable2.
    DIVIDE herencia BY num_hijos.


El resultado es igual para todas las formas, se está dividiendo el valor de la variable1 por el valor la variable2.


Sentencia Abap DIV.

Para saber el cociente de una división se usa la palabra reservada DIV

  • Cociente = dividendo DIV divisor.


Sentencia Abap MOD.

Para saber el resto de una división se usa la palabra reservada MOD.

  • Resto = dividendoMOD divisor.


Sentencia Abap exponencial.

Para saber el resultado de un exponente se usa el operado “**”.

  • Area = Lado ** 2.


Sentencia Abap SQRT.

Para saber la raíz cuadrada en ABAP se usa la palabra reservada SQRT.

  • Raiz_cuadrada = SQRT( variable1 ).


SENTENCIAS LÓGICAS.

Abap Clases de condiciones.

CONDICION             CARÁCTER                   PALABRA

Igual                           =                            EQ

Diferente                     <>                           NE

Mayor                         >                               GT

Mayor igual                  >=                          GE

Menor                        <                                LT

Menor igual                 <=                           LE

O                                                             OR

Y                                                                     AND



Operaciones lógicas Abap.

OPERACIÓN A REALIZAR  PALABRA CLAVE

Bifurcación                                              IF / ELSE / ENDIF.

Bifurcación múltiple                                  CASE / ENDCASE.

Repetición.                                              DO / ENDDO.

Repetición.                                               WHILE / ENDWHILE.

Desplaza                                                 SHIFT

Convertir a mayúsculas o minúsculas          TRASLATE

Divide                                                   SPLIT

Longitud                                                STRLEN


Sentencia Sap Abap IF.

La sentencia IF se usa para ejecutar un código, si se cumple la condición, ejecuta el código que está en la palabra reservada IF y la palabra ENDIF.

  • IF gv_dia = ‘LUNES’.

WRITE ‘HOY ES LUNES’.

ENDIF.


Teniendo en cuenta que la sentencia IF no indica el final del programa, por lo que todo el código que está a continuación del ENDIF se ejecutara.

  • IF gv_dia = ‘LUNES’.

WRITE ‘HOY ES LUNES’.

ENDIF.

  • WRITE / ‘HAY QUE IR AL MEDICO’.

  • La salida de este código genera un mensaje indicando HOY ES LUNES y en la siguiente línea el mensaje HAY QUE IR AL MEDICO.


Sentencia Abap ELSE.

La sentencia ELSE se usa con la sentencia IF y se usa para ejecutar un bloque de código cuando no se cumple la condición de la sentencia IF.

  • IF gv_dia = ‘LUNES’.

WRITE ‘HOY ES LUNES’.

ELSE

WRITE ‘HOY NO ES LUNES’.

ENDIF.


Solo puede haber un ELSE por cada sentencia IF.


Sentencia IF ANIDADOS Abap.

Las sentencias IF, se pueden anidar unas dentro de otras. Para de esta forma controlar más opciones.

  • EJEMPLO:
    IF GV_NUMERO = 1.

WRITE / ‘UNO’.

             ELSE

IF GV_NUMERO = 2.

WRITE / ’DOS’.

ELSE.

WRITE / ’NÚMERO MUY GRANDE’.

ENDIF.

ENDIF.


La segunda sentencia IF, solo se evalúa si no se cumple la condición de la primera sentencia IF.


Y en el caso de que la segunda sentencia IF tampoco se cumpla se ejecutara la sentencia ELSE del segundo IF.


Sentencia Sap Abap CASE.

La sentencia CASE se utiliza para interpretar fácilmente los casos de una opción.

  • CASE GV_NUMERO.
    WHEN 1.
    WRITE: ‘UNO’.
    WHEN 2.
    WRITE: ‘DOS’.
    WHEN OTHERS.
    WRITE: ’NÚMERO MUY GRANDE’.


La sentencia CASE, equivale a evaluar la variable número, y los WHEN se usa para ejecutar el bloque de código que viene a continuación, si se cumple su condición.



Sentencia Abap DO.

La sentencia DO repite un bloque de código tantas veces como se indica en el clausula TIME.

  • DO 3 TIMES.

ADD 1 TO GV_NUMERO.

                WRITE / ‘EL NÚMERO ES ‘, GV_NUMERO.

ENDDO.


El ejemplo anterior muestra por pantalla:

  • EL NÚMERO ES 1

  • EL NÚMERO ES 2

  • EL NÚMERO ES 3


Sentencia ABAP EXIT DO.

La sentencia EXIT, se utiliza dentro de la sentencia DO, y se utiliza para finalizar el bucle.

  • DO 3 TIMES.

ADD 1 TO GV_NUMERO.


IF GV_NUMERO = 2.

EXIT.

ENDIF.

WRITE / ‘EL NÚMERO ES ‘, GV_NUMERO.

ENDDO.


El ejemplo anterior muestra por pantalla:

  • EL NÚMERO ES 1


Aunque con la cláusula TIME se indique que se tiene que ejecutar 3 veces, al realizarse la segunda vuelta, se ejecuta la sentencia EXIT, la cual fuerza la finalización del bucle.


Sentencia ABAP CONTINUE.

La sentencia CONTINUE, se utiliza dentro de la sentencia DO, y se utiliza para ignorar el código que viene a su continuación, forzando que empiece una nueva vuelta.


  • DO 3 TIMES.

ADD 1 TO GV_NUMERO.


                IF GV_NUMERO = 2.

CONTINUE.

ENDIF.


                WRITE / ‘EL NÚMERO ES ‘, GV_NUMERO.

ENDDO.


El ejemplo anterior muestra por pantalla:

  • EL NÚMERO ES 1

  • EL NÚMERO ES 3


La sentencia CONTINUE, no provoca el fin del bucle.


Sentencia WHILE.

La sentencia WHILE, repite un bloque mientras se cumpla la condición indicada.

  • WHILE GV_NUMERO < 3.

ADD 1 TO GV_NUMERO.

                 WRITE / ‘EL NÚMERO ES ‘, GV_NUMERO.

ENDWHILE.


El ejemplo anterior muestra por pantalla:

  • EL NÚMERO ES 1

  • EL NÚMERO ES 2

  • EL NÚMERO ES 3


Dentro de la sentencia WHILE, se puede usar las sentencias EXIT y CONTINUE.



TABLAS INTERNAS.

Introducción.

Una tabla interna es un objeto que permite guardar en la memoria grandes cantidades de datos.


En el momento de la declaración se puede indicar con qué número de registros empieza, si no se indica nada solo se creará la estructura sin ningún registro.


Una tabla interna existe en memoria mientras se está ejecutando el programa. Luego al terminar el programa el sistema borra la estructura y los datos.


Una tabla interna este compuesto por:

  • Un cuerpo, que está formado por 1 o más campos.

  • Una cabecera la cual tiene la misma estructura que la tabla interne y se utiliza para acceder a los registros de la tabla interna.


Tipos de tablas Abap,  Clases de tablas internas.

CONDICION PALABRA CLAVE

Estándar                  TYPE STANDARD TABLE OF

Ordenadas               TYPE SORTED TABLE OF

Hashed                     TYPE HASHED TABLE OF


Abap tipos de tablas STANDARD.

Este es el tipo de tabla que se crea por defecto cuando no se indica el tipo en la declaración o indicando la cláusula TYPE STANDARD TABLE OF. Los registros de este tipo de tabla se organizan según un índice interno, no existe un índice para buscar por un campo.


Para buscar un registro en estas tablas se puede hacer por el índice o por la clave:

  • Si se realiza por el índice, es mucho más rápido ya que va directamente al registro que se busca.

  • Si se realiza por la clave, se compara uno a uno todos los registros de la tabla, hasta encontrar el dato que se busca.


La ventaja de este tipo de tabla es que se pueden añadir registros muy rápidamente, pero la desventaja es que es muy poco eficiente, ya que para la búsqueda de un dato tiene que recorrer toda la tabla y contra más grande sea la tabla más puedo tardar en encontrar el registro.


En este tipo de tablas no se insertan registros, sino que se añaden, ya que cuando se añade un nuevo registro siempre va al final de la tabla, por lo que se una la sentencia APPEND


Para mejorar el rendimiento de la tabla, cuando se hace una lectura o una modificación o una eliminación de un registro, es preferible hacerlo mediante el índice y no por un campo, y esto se realiza con la sentencia INDEX.


Abap tipos de tablas SORTED.

Este es el tipo de tabla que se crea indicando la cláusula TYPE SORTED TABLA OF.


Para buscar un registro en estas tablas se puede hacer por el índice o por la clave:

  • Si se realiza por el índice.

  • Si se realiza por la clave, que puede ser única (WITH UNIQUE) o no única (WITH NON-UNIQUE).


La ventaja de este tipo de tabla es que el acceso es mucho mas rápido, ya que utiliza un algoritmo de búsqueda que divide la base de datos de dos en dos, hasta llegar al registro que esta buscando, pero requiere que esta ordenada por el campo en el que se está buscando. 


La desventaja es que las inserciones de datos son mucho más lentas que una tabla estándar, ya que el campo tiene que estar ordenado, tiene que buscar la posición del nuevo dato a insertar. La inserción de datos se realiza con la sentencia INSERT.


Tipos de tablas Sap Abap HASHED.

Este es el tipo de tabla que se crea indicando la cláusula TYPE HASHED TABLA OF.


En este tipo de tabla no se puede acceder a un registro por un índice, ya que se hace a través de un algoritmo (hashed), que calcula la posición de un registro partiendo de una determinada clave.


La clave de estas tablas es única, por lo que el algoritmo hashed se encarga de que dos datos distintos de la clave se almacenen en la misma posición de la tabla.


La ventaja de este tipo de tabla es que el acceso es mucho más rápido, ya que debido a su algoritmo siempre tarda lo mismo en encontrar un registro, independientemente del tamaño de la tabla. La desventaja es que las inserciones de datos son mucho más lentas que una tabla estándar, ya que cada vez que se inserta un dato el algoritmo hashed tiene que buscar la posición del nuevo dato a insertar. La inserción de datos se realiza con la sentencia INSERT.


Abap declarar tabla interna.

Las tablas internas se pueden crear de muchas formas, entre ellas vamos a dar las más usadas:


Abap declarar tabla interna STANDARD.

Las tablas STANDARD se declaran:

  • Usando la estructura de una tabla del diccionario de datos, usando la cláusula :
    DATA GT_TABLA MARA.
    DATA GT_TABLA MARA.

  • Usando una estructura propia:
    Primero, declarando un tipo de datos, en donde creamos la estructura de la tabla:
    TYPES:

BEGIN OF GTY_TABLA,

NOMBRE TYPE STRING,

APELLIDO TYPE STRING,

END OF GTY_TABLA.

  • Segundo, declarando una estructura del tipo creado, esta variable se utilizará para insertar los datos en la tabla, solo puede almacenar un registro y se indica con la cláusula TYPE.
    DATA GWA_TABLA TYPE GTY_TABLA.

  • Tercero, declarando una tabla interna con el mismo formato que la estructura creada en el punto 2, esta tabla puede almacenar más de un registro, y se declara con la clausula TYPE OF TABLE.
    DATA GT_TABLA TYPE OF TABLE GWA_TABLA.


Las tablas STANDARD no se pueden indexar por lo que no se puede usar la cláusula WITH UNIQUE KEY.

Para añadir datos en una tabla STANDARD:

  • Se puede declarar con una cabecera, la cual se utilizará para informarla con los datos que se quiere añadir y posteriormente usarla para añadir esos datos a la tabla:
    DATA GT_TABLA TYPE STANDARD TABLE OF MARA

  • Creando una estructura con el mismo formato que la tabla, que se usara como si fuera una cabecera.
    DATA GWA_TABLA MARA.


En su declaración se puede indicar el número de registros que tendrá al crearse con la cláusula INITIAL SIZE.

  • DATA GT_TABLA TYPE STANDARD TABLE OF MARA 10.


Abap declarar tabla interna SORTED.

Las tablas SORTED se declaran:

  • Usando la estructura de una tabla del diccionario de datos, usando la cláusula TYPE SORTED TABLE OF:
    DATA GT_TABLA TYPE SORTED TABLE OF MARA.

  • Usando una estructura propia:
    Primero, declarando un tipo de datos, en donde creamos la estructura de la tabla:
    TYPES:

BEGIN OF GTY_TABLA,

NOMBRE TYPE STRING,

APELLIDO TYPE STRING,

END OF GTY_TABLA.


  • Segundo, declarando una estructura del tipo creado, esta variable se utilizará para insertar los datos en la tabla, solo puede almacenar un registro y se indica con la cláusula TYPE.
    DATA GWA_TABLA TYPE GTY_TABLA.

  • Tercero, declarando una tabla interna con el mismo formato que la estructura creada en el punto 2, esta tabla puede almacenar más de un registro, y se declara con la cláusula TYPE SORTED OF TABLE.
    DATA GT_TABLA TYPE SORTED TABLE OF GWA_TABLA.


Las tablas SORTED tiene un índice obligatorio que puede ser:

  • UNICO
    DATA GT_TABLA TYPE SORTED TABLE OF MARA NOMBRE.

  • Duplicado:
    DATA GT_TABLA TYPE SORTED TABLE OF MARA NOMBRE.


Para añadir datos en una tabla SORTED:

  • Se tiene que crear una variable tipo cabecera, ya que no se puede crear en el momento de su declaración, tal como ocurre con las tablas STANDARD,
    DATA GWA_TABLA TYPE MARA.


En su declaración se puede indicar el número de registros que tendrá al crearse con la cláusula INITIAL SIZE.

  • DATA GT_TABLA TYPE SORTED TABLE OF MARA INITIAL SIZE 10.


Abap declarar tabla interna HASHED.

Las tablas HASHED se declaran:

  • Usando la estructura de una tabla del diccionario de datos, usando la cláusula TYPE HASHED TABLE OF :
    DATA GT_TABLA TYPE HASHED TABLE OF MARA.

  • Usando una estructura propia:
    Primero, declarando un tipo de datos, en donde creamos la estructura de la tabla:
    TYPES:

BEGIN OF GTY_TABLA,

NOMBRE TYPE STRING,

APELLIDO TYPE STRING,

END OF GTY_TABLA.

  • Segundo, declarando una estructura del tipo creado, esta variable se utilizará para insertar los datos en la tabla, solo puede almacenar un registro y se indica con la cláusula TYPE.
    DATA GWA_TABLA TYPE GTY_TABLA.


  • Tercero, declarando una tabla interna con el mismo formato que la estructura creada en el punto 2, esta tabla puede almacenar más de un registro, y se declara con la cláusula TYPE HASHED OF TABLE
    DATA GT_TABLA TYPE HASHED TABLE OF GWA_TABLA.


Las tablas SORTED tiene un índice único obligatorio:

  • UNICO
    DATA GT_TABLA TYPE HASHED TABLE OF MARA WITH UNIQUE KEY NOMBRE.


Para añadir datos en una tabla HASHED:

  • Se tiene que crear una variable tipo cabecera, ya que no se puede crear en el momento de su declaración, tal como ocurre con las tablas STANDARD,
    DATA GWA_TABLA TYPE MARA.


En su declaración se puede indicar el número de registros que tendrá al crearse con la cláusula INITIAL SIZE.

  • DATA GT_TABLA TYPE HASHED TABLE OF MARA INITIAL SIZE 10.


Clave de una tabla.

Una clave se utiliza para identificar un registro concreto en una tabla.

Hay dos tipos de claves:


· Clave estándar: La asigna el sistema, en una tabla STANDARD la clave está formada por todos los campos que no sean punteros o tablas internas. Para las tablas SORTED Y HASHED se puede indicar que el sistema cree una tabla por defecto con la cláusula DEFAULT KEY


· Clave definida por el usuario

  • Clave única: No puede existir registros duplicados, es decir, registros con la misma clave. La clave de las tablas estándar no puede ser única y la clave de las tablas hashed siempre son únicas.

  • Clave duplicada: Puede existir registros, es decir, registros con la misma clave. Las tablas STANDARD y SORTED son las que pueden tener claves duplicadas.


Acceso por el índice.

Las tablas STANDARD y SORTED, tienen un índice que se guarda en la variable de sistema SY-TABIX, y es el modo más rápido para acceder a un registro, pero sólo se puede usar cuando conocemos en que índice se encuentra el registro que queremos buscar.



Insertar datos en tabla interna Abap.

Cuando se inserta datos en una tabla se crea un nuevo registro.


Para insertar este registro no se puede usar directamente la tabla, hay que crear una variable con la misma estructura que la tabla, y esto se realiza usando la cláusula TYPE.

  • DATA GWA_TABLA TYPE MARA.

Como crear una tabla interna en Abap, Tablas STANDARD.

En este tipo de tablas no se dice que se insertan datos, sino que se añaden datos, debido a que los nuevos datos siempre irán en un nuevo registro al final de la tabla. Esto provoca que las inserciones sean más rápidas que en el resto de las tablas, pero su acceso será más lento, ya que la tabla no tiene clave por campos, por lo que, para buscar un dato, se recorre toda la tabla entera hasta encontrar el dato que busca.


Las tablas STANDARD se pueden declarar:

  • Con cabecera, usando la cláusula WITH HEADER LINE,
    DATA GT_TABLA TYPE STANDARD TABLE OF MARA WITH HEADER LINE..


Por lo que se puede usar la cabecera creada para añadir los datos en la tabla, donde se usa un guion para separar la variable del campo y para ello:

  • Primero informamos la cabecera:
    GT_TABLA-NOMBRE = ‘JUAN’.
    GT_TABLA-NOMBRE = ‘PEREZ.

  • Segundo usamos la sentencia APPEND para añadir los datos de la cabecera a la tabla:
    APPEND GT_TABLA TO GT_TABLA-NOMBRE.

  • Sin cabecera:
    DATA GT_TABLA TYPE STANDARD TABLE OF MARA.


Al no tener cabecera tenemos que crear una variable con la misma estructura que la tabla, y esto se realiza con la sentencia TYPE:

  • DATA GWA_TABLA TYPE MARA.


Usamos la sentencia APPEND para añadir los datos de la variable a la tabla:

  • APPEND GWA_TABLA TO GT_TABLA-NOMBRE.


Como crear una tabla interna en Abap,Tablas SORTED Y HASHED.

En este tipo de tablas si se insertan datos, debido al que el sistema buscará la posición de los nuevos datos dentro de la tabla. Esto provoca que las inserciones sean más lentas que en las tablas STANDARD, pero su acceso será más rápido ya que usan un algoritmo que facilita la búsqueda y no tienen que recorrer toda la tabla.


Estos tipos de tablas no se pueden declarar con cabecera, por lo que hay que crear una variable con la misma estructura que la tabla, y esto se realiza con la sentencia TYPE:

  • DATA GWA_TABLA TYPE MARA.

Usamos la sentencia INSERT para insertar los datos de la variable a la tabla:

  • INSERT GWA_TABLA INTO TABLE GT_TABLA-NOMBRE.


Sentencia Sap Abap SELECT INTO TABLE.

La sentencia SELECT permite recuperar registros de una tabla del diccionario de datos y grabarlos en una tabla interna o en una estructura.


Al utilizar la sentencia SELECT, se puede grabar los registros directamente sobre la tabla interna, sin tener que pasar por la estructura.


Para guardar los registros en una tabla interna, borrando los datos ya existentes:

  • SELECT * FROM KNA1 INTO TABLE GT_KNA1.


Para guardar los registros en una tabla interna, respetando los datos ya existentes:

  • SELECT * FROM KNA1

APPENDING TABLE GT_KNA1.


Para guardar un registro en una estructura:

  • SELECT SINGLE * FROM KNA1

INTO GWA_KNA1.


Sentencia Sap Abap SELECT INTO CORRESPONDING FIELDS OF TABLE.

La sentencia SELECT permite recuperar registros de una tabla del diccionario de datos y grabarlos en una tabla interna o en una estructura.


Al utilizar la sentencia SELECT, se puede grabar los registros directamente sobre la tabla interna, sin tener que pasar por la estructura.

  • Para guardar los datos de las columnas en una tabla interna, asignándose por el nombre de las columnas y no por su posición, se puede usar la sentencia SELECT INTO COREESPONDING FIELDS OF TABLE:
    SELECT * FROM KNA1 INTO CORRESPONDING FIELDS OF TABLE GT_KNA1.

  • Para guardar los datos de las columnas en una estructura, asignándose por el nombre de las columnas y no por su posición, se puede usar la sentencia SELECT INTO COREESPONDING FIELDS OF:
    SELECT * FROM KNA1 INTO CORRESPONDING FIELDS OF TABLE GWA_KNA1.


Sentencia Sap Abap MOVE CORRESPONDING .

La sentencia MOVE-CORRESPONDING permite pasar los valores de una columna otra, siempre que las columnas tengan el mismo nombre.

  • Se puede usar a nivel de estructura:
    LOOP AT GT_KNA1 INTO GWA_KNA1.


MOVE-CORRESPONDING GWA_KNA1 TO GWA_CLIENTES.

ENDLOOP.

  • Y a nivel de tabla:
    MOVE-CORRESPONDING GT_KNA1 TO GT_CLIENTES.


Con estas sentencias las columnas que tengan el mismo nombre serán informadas.


Abap leer tabla interna.

Para leer los datos de una tabla interna se puede utilizar varias sentencias:

  • LOOP AT: Para recorrer toda la tabla.

  • READ: Para leer un registro en concreto.


Sentencia LOOP AT Abap.

La sentencia LOOP AT, se utiliza para recorrer toda una tabla registro a registro, y en cada registro informa una estructura y realiza el código que esta entre el LOOP AT y el ENDLOOP.

  • Para mostrar el contenido de una tabla sin cabecera, se puede usar la siguiente sentencia:
    LOOP AT GT_KNA1 INTO GWA_KNA1.

WRITE / GWA_KNA1.

ENDLOOP


  • Para mostrar el contenido de una tabla con cabecera, se puede usar la siguiente sentencia:
    LOOP AT GT_KNA1.

WRITE / GT_KNA1.

ENDLOOP


  • Para mostrar el contenido de una tabla y cuyos clientes son de España, se puede usar la siguiente sentencia:
    LOOP AT GT_KNA1 INTO GWA_KNA1

WHERE LAND1 = ‘ES’.

WRITE / GWA_KNA1.

ENDLOOP.


Sentencia Abap LOOP AT TRANSPORTING NO FIELDS.

La sentencia LOOP AT, se utiliza para recorrer toda una tabla registro a registro, y en cada registro informa una estructura y realiza el código que esta entre el LOOP AT y el ENDLOOP.


Pero si no necesitamos saber el contenido de la tabla, podemos usar la cláusula TRANSPORTING NO FIELDS, con la cual no hace falta una estructura para recorrer la tabla.

  • LOOP AT GT_KNA1 TRANSPORTING NO FIELD

WHERE LAND1 = ‘ES’.

ADD 1 TO GV_CONTADOR.

ENDLOOP


Sentencia aBAP READ TABLE INDEX.

La sentencia READ TABLE INDEX, se utiliza para leer un registro de una tabla interna, pero hay que indicar el número del registro que queremos leer. Esta sentencia no se usa para buscar un dato, si no para recuperar los datos que sabemos que está en un registro en concreto.

  • Ejemplo, la siguiente sentencia lee el registro 3 de la tabla interna GT_KNA1, e introduce los datos en la estructura GWA_KNA1.
    READ TABLE GT_KNA1 INTO GWA_KNA1 INDEX 3.


Este tipo de lectura es la más rápida, ya que se accede directamente al registro, por lo que es la más recomendada cuando sabemos en que registro están los datos a recuperar.


Sentencia ABAP READ TABLE WITH KEY.

La sentencia READ TABLE WITH KEY, se utiliza para buscar un valor en un campo de una tabla interna. Este campo no tiene que formar parte de un índice, pero por motivos de rendimiento se aconseja que, si forme parte de un índice, para mejorar la búsqueda.

  • Ejemplo, la siguiente sentencia busca el cliente “FACTORY.SA” en el campoLAND1 de la tabla interna GT_KNA1.
    READ TABLE GT_KNA1 INTO GWA_KNA1 WITH KEY LAND1 = ‘FACTORY.SA’.


Sentencia ABAP READ TABLE TRANSPORTING NO FIELDS.

La sentencia READ TABLE TRANSPORTING NO FIELDS, se utiliza para buscar un valor en un campo de una tabla interna sin tener que utilizar una estructura.

  • Ejemplo, la siguiente sentencia busca el cliente “FACTORY.SA” en el campoLAND1 de la tabla interna GT_KNA1.
    READ TABLE GT_KNA1 TRANSPORTING NO FIELDS

WITH KEY LAND1 = ‘FACTORY.SA’.


ABAP modificar tabla interna.

Para modificar los datos de una tabla interna se puede utilizar varias sentencias:

  • MODIFY: Para realizar una modificación necesita una estructura.

  • FIELD-SYMBOLS: Modifica directamente el valor de un campo.


Sentencia aba MODIFY.

La sentencia MODIFY, se utiliza para modificar los campos de un registro y necesita una estructura y especificar el número del registro a modificar.

  • Ejemplo, la siguiente sentencia modifica todos los valores del campo LAND1 a “ES”.
    LOOP AT GT_KNA1 INTO GWA_KNA1.

GWA_KNA1-LAND1 = ‘ES’.

MODIFY GT_KNA1 FROM GWA_KNA1 INDEX SY-TABIX.

ENDLOOP.

  • Ejemplo, la siguiente sentencia modifica el campo LAND1 a “ES”, del registro encontrado.
    READ TABLE GT_KNA1 WITH KEY ‘SANTANDER’.

IF SY-SUBRC = 0.

GWA_KNA1-LAND1 = ‘ES’.

MODIFY GT_KNA1 FROM GWA_KNA1 INDEX SY-TABIX.

ENDIF.


Abap FIELD-SYMBOLS.

Los FIELD-SYMBOLS, se utiliza para apuntar a un objeto y cuando se realiza una modificación sobre el FIELD-SYMBOLS, automáticamente se realiza la modificación sobre el objeto al que este asignado.


Para asignar el FIELD-SYMBOLS se utiliza la cláusula ASSIGNING.

  • Ejemplo, de declaración de un
    FIELD-SYMBOLS: <GFS_KNA1> TYPE KNA1.

  • Ejemplo, la siguiente sentencia modifica todos los valores del campo LAND1 a “ES”.
    LOOP AT GT_KNA1 ASSIGNING <GFS_KNA1>.

<GFS_KNA1>-LAND1 = ‘ES’.

ENDLOOP.


Eliminar datos de una tabla Abap.

Para eliminar los datos de una tabla interna se puede utilizar varias sentencias:

  • DELETE INDEX: Para eliminar un registro indicando el número del registro.

  • DELETE TABLE: Para eliminar un registro usando los datos de una estructura.


Sentencia Abap DELETE TABLE.

La sentencia DELETE TABLE se utiliza cuando queremos eliminar un registro usando los datos de una estructura.


La sentencia DELETE TABLE, busca los datos de la estructura en la tabla, y si lo encuentra elimina el registro.

  • Ejemplo, elimina de la tabla GT_KNA1 el registro que tengo los datos de la estructura GWA_KNA1.
    DELETE TABLE GT_KNA1 FROM GWA-KNA1


Sentencia Abap DELETE INDEX.

La sentencia DELETE INDEX se utiliza cuando se quiere eliminar un registro, indicando el número del registro que se quiere eliminar.

  • Ejemplo, elimina de la tabla GT_KNA1 el registro número 24.
    DELETE GT_KNA1 INDEX 24.

  • Ejemplo, elimina de la tabla GT_KNA1 los registros posteriores al 5.
    LOOP AT GT_KNA1
    DELETE GT_KNA1 INDEX 5.
    ENDLOOP.


Abap ordenar tabla interna.

Para ordenar los registros de una tabla estándar se puede usar la sentencia SORT.


Sentencia Abap SORT.

  • EJEMPLO: Ordena la tabla GT_KNA1 ascendentemente por el campo GT_KNA1
    SORT GT_KNA1 BY LAND1 ASCENDIGNG.

  • EJEMPLO: Ordena la tabla GT_KNA1 descendentemente por el campo GT_KNA1
    SORT GT_KNA1 BY LAND1 DESCENDING.


Sentencia Abap DESCRIBE TABLE.

La sentencia DESCRIBE TABLE, se utiliza para saber el número de registros que tiene una tabla interna, para la cual hace falta una variable para almacenar el valor devuelto.

  • Ejemplo: La siguiente sentencia almacena en la variable GV_NUM_REG el número de registros de la tabla interna GT_KNA1.
    DESCRIBE TABLE GT_KNA1 LINES GV_NUM_REG.



FUNCIÓN DEBUGGING.

Interfaz Abap Debugging.

La función debugging o debug es utilizada por los programadores para poder localizar un posible error, ya que permite parar un programa, ver su código y el valor de las variables y ejecutarlo paso a paso.


Para poder activar esta función podemos ir a:

  • SISTEMA -> UTILIDADES -> DEPURACIÓN ABAP.

Una vez activada, solo hay que ejecutar el programa y se mostrará la ventana de Debugging.


En la parte superior existen ver varias opciones para la ejecución,

  • PASO A PASO: Permite avanzar el código línea a línea.

  • Permite avanzar, pero no se mete dentro de las rutinas o métodos, de este modo se puede avanzar más rápido al debugar un programa ya que permite saltarlo.

  • Permite salir de una rutina o método rápidamente.

  • Permite continuar hasta el final del programa o hasta que encuentre un breackpoint, Los breackpoint son puntos de interrupción que el usuario pone en las líneas del comando para que cuando se ejecuta el debug se pare la ejecución en ese punto y no tenga que ir línea a línea hasta llegar a esa línea de código.


Estas funciones también están disponibles en la barra de menú, la cual también dispone de la opción de menú “BREACKPOINT” con las opciones:

  • Borrar todos los breackpoint que hayamos creado.

  • Desactivarlos.

  • Activarlos.

  • Crear uno.


En la parte inferior de estas opciones se muestra:

  • El nombre del programa en el que está la línea que se está ejecutando, hay que saber que antes de ejecutar el programa, el sistema ejecuta una serie de programas cuyo código también salen con el debug, pues este es el primer programa que se ejecuta antes que el nuestro.

  • El evento o módulo que se está ejecutando, así como el nombre del evento.

  • El valor de las variables de sistema:
    SUBRC: Que sirve para saber si una operación se ha ejecutado correctamente.
    TABIX: Que nos devuelve el índice de una tabla interna.


La ventana principal está dividida en 3 subventanas.

  • En la primera se puede ver el código del programa, así como el código necesario para ejecutar el programa, para ejecutar un programa ABAP ejecuta una serie de programas y su código también se muestra en esta ventana.


Aquí podemos ver una fecha de color amarillo, esta fecha indica en que linea de código está situado, la cual va a ser ejecutada nada más sigua el programa.

  • Luego tenemos la ventana de “pila Abap” donde nos muestra información de los módulos, métodos o funciones por los que ya ha pasado hasta llegar a la posición actual.

  • Por último, está la ventana donde podemos ver el valor de las variables del programa o del sistema, incluso se puede cambiar su valor, para en caso de detectar un error ver si se soluciona con el nuevo valor, este cambio de valor solo es temporal, una vez detectado el error, hay que ir al programa y hacer las modificaciones oportunas.


Luego en la parte superior de estas ventanas se puede ver una serie de pestañas, los cuatros primeras pestañas tienen la misma información, pero distribuidas de diferentes formas.

  • Pestaña Desktop1:
    En la parte superior está la ventana de código, que permite ver el código del programa.
    En la parte inferior está la pestaña de variables, que permite visualizar el valor de las variables que se están usando.

  • Pestaña desktop2:
    En la parte izquierda está la ventana de código
    En la parte derecha está la ventana de PILA ABAP donde podemos ver los diferentes eventos por los que ha pasado antes de llegar a la línea actual.

  • Pestaña desktop3:
    En la parte izquierda está la ventana de código
    En la parte derecha está la ventana de variables, donde se pueden ver las variables de sistema y del programa.


Al producirse un error tipo DUM, se muestra una pantalla que contiene información de del error:

  • El nombre del programa en el que se ha producido el error

  • En nombre del módulo o función que ha producido el error.

  • El código del programa que se ha ejecutado.

  • La línea de código en el que se ha producido el error.


Abap Breakpoint de sesión.

Existen dos tipos de breakpoint o puntos de interrupción:

  • De sesión.


Si al ejecutar un código de programa se encuentra una línea que tenga un breakpoints, la ejecución parará y el programador podrá ver el código que se ha ejecutado anteriormente hasta ese punto, tal como los valores actuales de las variables y de este modo poder detectar un error en el código si fuese necesario.


Un breakpoint de sesión:

  • Está asociado a nuestra sesión de usuario, por lo que, si se crea un breakpoint en un programa y se sale de nuestra sesión, al volver a entrar ya estará eliminado.

  • También si se pone un breakpoint de sesión a un programa y otro usuario ejecuta el mismo programa, este no estará afectado por nuestro breakpoint, y no se le parará su ejecución, es decir un breakpoint de sesión solo afecta a nuestras ejecuciones.

  • No se puede asignar sobre la parte declarativa de variables, hay que asignarlo en la parte de codificación.


Antes de crear un breakpoint de sesión, hay que seleccionar la línea donde se quiere poner, y existes de varias formas de crearlo:

  • Con la opción de menú:
    Utilidades -> Breakpoints -> Fijar /borrar.

  • Con el icono de la herramienta.

  • Usando directamente el ratón sobre la franja izquierda de la línea.


Al crear un breakpoint se puede ver como en la parte izquierda de la línea seleccionada se muestra un icono de stop con una pantalla, este icono indica que es un breakpoint de sesión.


Ahora si se ejecutase el programa, se mostrará la pantalla de función debugging y se pararía en esta línea, en la cual se puede ver una flecha amarilla, la cual nos indica que esta línea es la que se va a ejecutar a continuación.


Para ver el valor de las variables solo hay que hacer doble clic sobre ellas, y en la parte de la derecha, se muestra la variable y su valor

Se puede modificar el valor una variable, para ello, hay que usar el icono que está a su derecha y que tiene el dibujo de un lápiz, el cual hace que el campo que contiene el valor de la variable pase a modo edición. Una vez modificado el valor, hay que confirmar el cambio con la tecla intro.


Breakpoint externo Abap.

Existen dos tipos de Breakpoints:

  • De sesión.


Los breakpoint externos no tiene la misma duración que la sesión de un usuario, tal como pasa con el breakpoint de sesión, si no que su duración depende de una variable de sistema, la cual ya tiene configurada el tiempo que debe durar un breakpoint externo, que general mente es de unas horas.


Esto quiere decir que, al salir de la sesión y al volver a entrar, se seguirá viendo los breakpoint externos que se hayan creado. Los breakpoint externos como los de sesión están asignados al usuario que lo creo, por lo que, si otro usuario ejecuta el mismo programa, no se le parará su ejecución.


Tal como pasa con los breakpoint de sesión, lo Breakpoints externos tampoco se pueden asignar sobre la parte declarativa de variables, hay que asignarlo en la parte de codificación.


Antes de crear un breakpoint externo, hay que seleccionar la línea donde se quiere ponerlo y entonces crearlo, que se puede hacer de 2 formas,

  • Con la opción de menú:
    Utilidades -> Breakpoints externos -> Fijar /borrar breakpoint externo.
    La segunda opción es con el icono de la barra de herramientas,


Un breakpoint externo se muestra como icono de stop con la figura de un muñeco, este icono nos indica que es un breakpoint externo.


A diferencia del breakpoint de sesión, no se puede crear directamente con el ratón, de esta forma solo se puede crear breakpoint de sesión


E funcionamiento de un breakpoint de sesión o externo es el mismo.


En la ventana de función debugging, se puede usar las pestañas:

  • Destock1.

  • Destock2.

  • Destock3.

  • Destock4.


Todas tienen la misma funcionalidad, solo que cambia la forma de distribuir los datos en la pantalla.


qqq

PROGRAMACIÓN DE DIALOGO CON OPEN SQL.

Una mala práctica de programación es escribir todo el código del programa en la parte principal del programa. Lo más adecuado es modularizar el código del programa, utilizando incluyes, subrutinas, etc. y a esta práctica de codificar se le llama modularizar. Y en el programa se escribirá:

  • La llamada a los includes.

  • Los eventos, los cuales tendrán llamadas a subrutinas que estarán en el include F01.

  • La estructura principal del programa con llamada a subrutinas, las cuales contendrá el código.


Los includes se pueden considerar como un fichero que pueden contener el código para la declaración de las variables, u operativas, como por ejemplo recuperar datos de una tabla.  De esta forma se modulariza un programa y lo se hace más fácil de visualizar, de entender y de modificar.


Todo programa debería tener 3 includes:

  • Include “TOP”: Se usa para almacenar el código referente, a las declaraciones de las variables, estructuras y tablas.De esta forma si se entra en un programa que no se conoce y se necesita saber que variables tiene declarado, solo está que ir al include top.

  • Include “SEL”: Contiene el código referente a las pantallas, como son los campos de entrada, los check box, los radio button, etc.

  • Include “F01”: Contiene el código a las operativas del programa, por ejemplo, select, updates, llamadas a otros módulos, etc, La característica de este include es que suele tener como máximo unas 10.000 líneas, que, aunque parece muchas líneas, se suelen conseguir, por lo que cuando hay que escribir más código, se usa el include F02 y cuando este llega a su límite, se usa el include F03, así consecutivamente.


Para crear un include:

  • Se puede usar la transacción SE38 y en el desplegable “TIPO”, elegir “Programa de include”.

  • Hacer la llamada al include en el programa y hacer doble clic sobre el:
    EJEMPLO: INCLUDE Z_PROG_TOP.


Los includes también hay que activarlo, igual que a los programas ejecutables.


Para poder conocer los elementos de un programa o navegar por ellos se puede usar el icono de “Visualizar lista de objetos”, que muestra en la parte izquierda unas carpetas, la primera es la del programa y las que están por debajo son los objetos que utiliza, por ejemplo, la carpeta includes, que contiene los includes que existan en el programa.


Si se quisiera ir al include:

  • Se utiliza el botón visualizar lista de objetos y se hace doble clic sobre el include.

  • O directamente se hace doble clic sobre el nombre del include, que se ha escrito en el programa.


Al acceder al include la ventana se actualiza para presentar su Código, y para volver al programa:

  • Se utiliza el botón visualizar lista de objetos y se hace doble clic sobre la carpeta del programa.

  • O se usa el icono de atrás.


Abap RADIO BUTTON.

Los radiobuttons da la oportunidad de mostrar una serie de opciones por pantalla y que usuario solo pueda seleccionar una de ellas, a diferencia de los check box que se pueden seleccionar todas.

Sintaxis radiobuttons:

  • PARAMETERS (nombre_radiobutton) RADIOBUTTON GROUP (nombre_grupo) [DEFAULT 'X'].
    Nombre_radiobutton: Todo radiobutton tiene que tener un nombre de variable y como se usa el comando PARAMETERS, solo puede tener una longitud máxima de 8 posiciones.

    DEFAULT ‘X’: Esta opción es opcional y activa por defecto el radiobutton que lo tenga.


Para asignar un texto a un radiobutton se puede usar la opción de menú:

  • Pasar a -> Elementos de texto -> Textos de selección.


Para crear un texto multilenguaje se usa la opción:

  • Pasar a -> Traducción.


Bloques en Abap.

Sintaxis para crear un bloque:

  • SELECTION-SCREEN (BEGIN/END) OF BLOCK (nombre_bloque) [WITH FRAME] [TITLE text-(nombre texto)].
    BEGIN / END: Para indicar el inicio del bloque se usa la opción BEGIN y para indicar el final del bloque se usa la opción END. Todos los campos que estén entre estas dos opciones se mostraran dentro del mismo bloque.
    Nombre_bloque: Este identificar se usa para dar un nombre al bloque. Generalmente no se usa para nada más.
    WITH FRAME: Esta opción es opcional y marca con una linea el borde del bloque.
    TITLE: Se utiliza para mostrar una cabecera en el grupo.
    Text-(nombre-texto): Llamado símbolo de texto y es necesario para que la cabecera sea multilenguaje o evitar poner un literal en el propio programa. Su longitud máxima es de 3 posiciones.


Para asignar un texto a un bloque se puede usar la opción de menú:

  • Pasar a -> Elementos de texto -> Símbolos de texto.


Para crear un texto multilenguaje se usa la opción:

  • Pasar a -> Traducción.


Campo de entrada de valor.

Para crear un campo de entrada que admita datos se usa la sentencia:

  • PARAMETERS nombre_variable TYPE tipo_de_variable LENGT longitud.

Para asignarle un texto a un parámetro se puede ir a la opción de menú:

  • Pasar a -> Elementos de datos -> Textos de selección.


Y en el campo texto se introduce el texto que se le quiere asignar.

Existe la posibilidad de hacer obligatorio un campo de entrada y para ello se usa la opción OBLIGATORY, que hará que cuando se ejecute el programa se muestre un dibujo de un check, indicando que el campo es obligatorio.


De esta manera al ejecutar el programa sin introducir un dato en el campo obligatorio, se mostrará un mensaje en el que se indica que hay que complementar los campos obligatorios, y esto sin necesidad de codificar un código para que compruebe si el campo está informado o no.


Abap SELECTION SCREEN OF LINE.

Este comando permite que los campos se muestren en una misma línea, evitando que se muestren por pantalla uno debajo del otro, y su sintaxis es:

  • SELECTION-SCREEN BEGIN/END OF LINE.


Todas las variables que se encuentre entre la opción “BEGIN” y “END”, se mostraran en una única línea.


El inconveniente de este comando es que las variables no asignan el texto definido en los textos de selección, por lo que es necesario usar el comando SELECTION-SCREENCOMMET.


Abap SELECTION-SCREEN COMMET.

Este comando se usa para asignar un texto a las variables o campos que estén entre el bloque de un SELECTION-SCREEEN OF LINE


Su sintaxis es:

  • SELECTION-SCREEN COMMENT pi(long)
    pi: Indica la posición donde se va a empezar a escribir el texto asociado al text-xxx
    long: Indica las posiciones que va a ocupar.
    text-xxx: Símbolo de texto, sirve para asignar un texto. Siempre empieza por “text- “ y continua con 3 caracteres, a elegir.
    Nom-var: Nombre del campo o variable.


CHECKBOX Abap.

Un check box o una casilla de selección, se utiliza para dar al usuario la elección de activar o dejar activado una opción.

Su sintaxis es:

  • PARAMETERS nombre_var TYPE C AS CHECKBOX [ DEFAUL ‘X’].


Abap CALENDARIO.

Cuando se crea un campo para almacenar una fecha, se puede utilizar un char de 8 o 10 posiciones. Pero si se quiere que se muestre un calendario y poder seleccionar una fecha, se tiene que usar una variable de tipo SY-DATUM.


Ejemplo: PARAMETERS pa_fecha TYPE SY-DATUM.


Abap SELECT OPTIONS.

Select-options es un objeto de la pantalla que admite:

  • Valores individuales.

  • Rangos de valores: Definidos por un valor “DESDE” hasta un valor “HASTA”.


Y estos valores se usan para filtrar la salida del proceso en el que está implicado.


Su sintaxis es:

  • SELECT-OPTIONS nom_variable FORtipo_de_datos [OBLIGATORY] [NO INTERVALS] [NO-EXTENSION]


Cuando se crea un select-options se creará una tabla interna con los siguientes campos:

  • SIGN: Este campo contiene:
    I: Se usa cuando se quiere incluir un valor.
    E: Se usa cuando se quiere excluir un valor.

  • OPTION: Acepta los siguientes valores:
    BT, entre.
    NB, no Entre.
    EQ, igual.
    NE, no igual
    GT, mayor que.
    LT, menor que.

  • LOW: Este campo almacena el valor desde del rango.

  • HIGH: Este campo almacena el valor hasta alto del rango.


Clases y Abap tipos de mensajes.

SAP tiene el objeto “Clases de Mensaje” donde se puede almacenar los mensajes que se quiere mostrar por pantalla. Cada mensaje esta asociado a un numero de mensaje, y para mostrar ese mensaje solo hay que hacer referencia a ese número.


La transacción que permite visualizar, modificar o crear un tipo de mensaje es la SE91, que se encuentra en la ruta:

  • MENÚ SAP-> HERRAMIENTAS -> WORKBENCH ABAP ->DESARROLLO -> ENTORNO DE PROGRAMACIÓN.


Esta transacción no solo permite crear un mensaje, si no también tiene la opción de que según el lenguaje de conexión que se utilice, se traduzca dicho mensaje, esta traducción no es de forma automática, hay que crear una traducción por cada lengua que se desee tener, y para ello hay que usar la opción de menú:

  • PASAR A -> TRADUCCIÓN.


Existen varios tipos de mensajes, y cada uno varia en la forma de informar:

  • Mensaje de éxito: Muestra un mensaje, pero no en una ventana sino en la parte inferior izquierda de la pantalla y con un icono de verde. Utiliza el tipo de mensaje “S”.

  • Mensaje informativo: Muestra una ventana dando una informacion y al hacer clic sobre botón aceptar sigue con la ejecución del programa. Utiliza el tipo de mensaje “I”.

  • Mensaje de error lógico: Muestra un mensaje en la parte inferior izquierda de la pantalla y el programa no se puede ejecutar hasta que cumpla la lógica correcta de un campo, el campo se pone en rojo y se muestra un mensaje de error en la parte inferior izquierda. Utiliza el tipo de mensaje “E”.

  • Mensaje de cancelación: Se muestra una ventana y al pulsar sobre el botón finalizar, sale del programa y vuelve al SAP. Utiliza el tipo de mensaje “A”

  • Mensaje warning: Se muestra un mensaje de advertencia en la parte inferior izquierda, pero deja ejecutar el programa. Utiliza el tipo de mensaje “W”.


También existe 3 formas de realizar la llamada a un mensaje:

  • Esta la forma incorrecta:
    ‘texto del mensaje’ TYPE ‘tipo de mensaje’.
    Ejemplo: MESSAGE ‘Este mensaje es de advertencia’ TYPE “W”.

  • Esta la forma abreviada:
    tipo_mensaje numero_mensaje(clase_mensaje).
    s000(z_class).

  • Esta la forma larga:

  • MESSAGE ID ‘clase_mensaje0 TYPE ‘tipo_mensaje’ NUMBER ‘num_mensaje’.

  • 'Z_CLASS' TYPE 'I' NUMBER '004'.


Sap Abap eventos INITIALIZATION.

Este evento se ejecuta antes de mostrarse la pantalla, por lo que es muy aconsejable usarlo para inicializar las variables de las pantallas, o dar les un valor.


Eventos pantalla de selección Abap  AT SELECTION SCREEN ON.

Este evento se usa para comprobar el valor de un campo. Después de este evento hay que indicar el nombre del campo que se quiere controlar.


Pueden existir tantos eventos de este tipo como variables existan en la pantalla.


Evento Abap START OF SELECTION.

Este evento se ejecuta después de los eventos anteriores y es el que contiene la estructura principal del programa.


Crear tabla Abap  de base de datos.

Las tablas de base de datos también reciben el nombre de tablas transparentes.


La diferencia entre una tabla interna y una tabla de base de datos es la duración de la estructura y de los datos. Una tabla interna y sus datos existen mientras el programa se está ejecutando, pero una tabla de diccionario de datos dura hasta que se eliminan físicamente. A esta duración se le denomina persistencia. Por lo cual las tablas del diccionario de datos son tablas persistentes o transparentes.


Para poder ver, modificar o crear una tabla de diccionario de datos se puede usar la transacción SE11 - Diccionario de datos,


Esta transacción permite trabajar con varios objetos como son las tablas, vistas, tipos de datos, etc.  y dispone de 3 botones,

  • El botón de visualizar que es para ver una tabla ya existente.

  • El botón modificar, que es para modificar un objeto existente, hay que recordar que las tablas propias de ABAP, por ejemplo, la tabla KNA1 que es la tabla de clientes, no son modificables, solo se puede modificar nuestras tablas o la de otros usuarios teniendo los permisos adecuados.

  • El botón de crear, que es para crear un nuevo objeto que no exista.

Para crear una tabla, hay que informar el campo “Nombre de la tabla”, recordando que todos los objetos que se crean en SAP tienen que empezar por las letras “z” o “y”, y las tablas están incluidas en esta norma. Y para crear la tabla solo hay que ejecutar el botón “CREAR”.

Una vez ejecutada la transacción SE11, se muestra:

  • Un campo de descripción: Donde hay que introducir la descripción de la tabla.

  • Varias pestañas:
    Entrega y actualizaciones: Que tiene las opciones:
    Clase de entrega: Donde que seleccionar la clase de tabla y esto depende del tipo de tabla que se desea crear, la clase a, indica que es una tabla de aplicación, con datos maestros y de movimiento.
    Permisos: Que tiene 3 opciones:
    La primera opción es visualización y actualización con restricciones.
    La segunda opción es visualización y actualización permitida (recomendada)
    Y la tercera opción es visualización y actualización no permitida.

  • Campos: Donde se indican los campos que van a formar la estructura de la tabla. Y contiene varios campos:
    NAME: Se usa para introducir el nombre de la columna. En un sistema relacional es obligatorio que al menos un campo forme parte de la clave y además que sea el primer campo de la tabla y en SAP la información de las tablas se clasifica por el campo mandante, y prácticamente todas las tablas de SAP empiezan por el campo mandate.


Por lo que el primer campo tiene que ser “MANDT”, que es el mandante.

  • KEY: Se usa para saber si el campo forma parte de la clave de la tabla, y el mandante siempre tiene que formar parte de la clave,

  • Tercera columna: Se usa para saber si el sistema va a dar un valor inicial al campo, como el campo es el mandante, el sistema lo va a informar con el número de mandante que se está usado en la conexión a la aplicación SAP.

  • Elemento de datos: ABAP ya viene con un grupo de elementos de datos que están formados por un tipo de dato. Al crear un campo se puede usar un elemento de datos ya existente. Cada elemento de datos ya tiene definido su tipo, longitud, descripción y no se puede modificar.

  • Tipo de dato: Si no se quiere usar un elemento de datos se puede usar un tipo de datos. Con esta opción solo se selecciona el tipo de datos, hay que informar su tamaño, y descripción.


Una vez informado todos los campos que van a formar una tabla, existe varias opciones que permite modificar o eliminar los campos en el caso de querer rectificar alguno, estos campos son:

  • Cortar.

  • Copiar.

  • Pegar.

  • Insertar una línea.

  • Borrar una línea.


Para crear la tabla hay que ejecutar el icono del disquete.

Las tablas igual que sucede con los programas tienen que ser activadas, pero antes de activarlas es necesario realizar dos operaciones:

  • La primera es informar las opciones técnicas: Usando botón “Opciones técnicas” que muestra una pantalla solo hay que informar los dos primeros campos:
    Clase de dato: Como los datos no van a variar mucho, se selecciona la primera opción que es “appl0“.
    Categoría de tamaño: Cuyo matchcode muestra una lista, para que indica que cantidad de registros se espera almacenar en la tabla.

  • La segunda es informar la categoría de ampliación: usando la opción de menú “Detalles “, que muestra un mensaje de que la tabla no está clasificada. Y que se seleccione una categoría de ampliación:
    Hay que seleccionar una de las opciones que se muestra, siendo la más aconsejada la primera opción, ampliar la tabla de cualquier manera.


Visualizando e insertando datos en una tabla bd.

Para visualizar o insertar datos directamente sobre una tabla del diccionario de datos se puede usar la transacción SE11, que se encuentra en la ruta:

  • MENÚ SAP-> HERRAMIENTAS -> WORKBENCH ABAP -> DESARROLLO -> SE11 -> Diccionario de datos.


Para inserta datos en una tabla, se puede usar:

  • La opción Utilidades-> Contenido de tabla-> Registrar entradas:
    Al ejecutase se muestra una ventana donde aparecen los campo que forman la tabla, donde se puede introducir los nuevos datos que formaran el registro y con el icono del disquete se creará el nuevo registro.


Para visualizar datos de una tabla, se puede usar:

  • La opción Utilidades -> Contenido de tablas -> Visualizar

  • O por el icono de “Contenido” que se encuentra en la barra.
    Al ejecutarse se muestra una pantalla donde se puede ver:
    Todos los campos que forman la tabla, y que actúan como filtro para el listado de los registros.

  • El campo “Cantidad Máxima de aciertos”, es para que en caso de que existan muchos registros a mostrar solo muestre un número determinado de registros.

  • El botón de “Cantidad de entradas”, que indicará el número de registros que contiene la tabla.

  • El icono del reloj, que es para ver todo el contenido de la tabla y al ejecutarse se podrá realizar las operaciones de:

  • Añadir un nuevo registro.

  • Eliminar uno existente.

  • Borrar todos los registros.

  • Modificar un registro.

  • ETC.


Sentencia Abap SQL INSERT.

Para insertar datos en una tabla de base de datos es necesario:

  • Crear una estructura con el mismo formato o estructura que la tabla:
    DATA: gwa_estructura TYPE tabla.

  • Usar la sentencia INSERT:
    INSERT tabla FROM gwa_estructura.


Sentencia Abap SQL DELETE.

Para eliminar datos en una tabla de base de datos es necesario:

  • Crear una estructura con el mismo formato o estructura que la tabla:
    DATA: gwa_estructura TYPE tabla.

  • Usar la sentencia DELETE:
    DELETE tabla FROM estructura.


Hay que diferenciar entre baja física y baja lógica:

  • La baja física es cuando el registro es eliminado de la tabla de base de datos

  • En la baja lógica, no se elimina el registro, si no que se modificar un campo para indicar que ese registro ya está dado de baja.


Sentencia Abap SQL SELECT.

Para recuperar datos en una tabla de base de datos es necesario usar la sentencia SELECT.


Si solo se recupera un registro se usa la sentencia SELECT SINGLE …. INTO.


Si se recupera más de un registro se usa la sentencia SELECT … INTO TABLE.


Si solo ve va a recuperar un campo, se puede usar una variable del mismo tipo que el campo recuperado.


Si se va a recuperar todos los campos de una tabla hay que usar una estructura.


EJEMPLO: SELECT  SINGLE * FROM nombre_tabla INTO [TABLE].


Sentencia Abap SQL UPDATE.

Para actualizar datos en una tabla de base de datos es necesario usar la sentencia UPDATE.


Su sintaxis es: UPDATE nombre_tabla FROM nombre_estructura.


Sentencia Abap SQL SELECT… INTO TABLE.

Para actualizar más de un registro de una tabla de base de datos es necesario usar la sentencia select … into table, la cual necesita una tabla interna


Su sintaxis es: SELECT * FROM nombre_tabla_bd INTO TABLE nombre_tabla_interna.


Abap crear transaccion.

SAP es un sistema transaccional, y esto significa que todo el sistema se ejecuta a través de transacciones, incluso el SE38 es una transacción, igual que el  SE11 y así con como el resto de aplicaciones.


Hay que entender que los usuarios finales no ejecutan los programas, ni siquiera saben de la existencia de la transacción SE38, por lo que no pueden ejecutar los programas, si se quiere que el usuario final pudiera ejecutar algún programa, se tendría que crear una transacción que este asignada al programa y de esta manera el usuario ya puede ejecutar la transacción y el programa que está asignada a ella.


Y para crear una transacción, está la transacción SE93.


Si se ejecuta, se muestra una ventana donde se puede ver:

  • El campo “Código de transacción”, en el cual hay que introducir el nombre de la transacción con la que se quiere trabajar.

  • El botón de “Visualizar”, el cual se usara para cuando se quiere visualizar una transacción ya existen.

  • El botón de “Modificar”, el cual se usara cuando se quiere modificar una transacción, siempre que no sea del sistema, ya que no está permitido.

  • Y el botón de “Crear”, el cual se usa para crear una transacción.


Una vez introducido el nombre de la transacción, el cual tiene que empezar por “Z”, se puede ejecutar el botón de crear, el cual mostrará una ventana de configuración, la cual  tiene:

  • El campo “Texto breve”, donde hay que introducir un texto sobre la transacción.

  • La opción “Programa y dynpro”, para los programas que no son ejecutables.

  • La opción“Programa e imagen de selección”, que se usa cuando se va a ejecutar un programa con una dynpro.

  • La opción “Método de una clase”.

  • La opción “Transacciones con variantes”, las variantes se usan para rellenar los campos de una pantalla con unos valores dados, de esta forma no hay que ir rellenando todos los campos de una pantalla cada vez que se ejecuta.

  • La opción “Transacción con parámetros”, esta consiste en pasar un parámetro a la transacción para que se ejecute con esos datos.


Una vez seleccionada una opción y ejecuta el botón de continuar, se muestra una ventana donde se puede ver:

  • El campo“Código de transacción”, que ya está informado.

  • El campo “Paquete”, que no se puede informar aquí.

  • El campo “Texto de transacción”,ya está informado con el valor que se le dio en la pantalla anterior.

  • El campo “Programa”, hay que introducir el nombre del programa que se quiere que se ejecute.

  • El campo “Imagen de selección”, hay que introducir el código de la dynpro que utiliza el programa.

  • El campo “Inicio con variante”, es por si se hubiera creado una variante y se quisiera que al ejecutar esta transacción, se ejecutase el programa con unos valores determinados en los campos de entrada.

  • La opción de “Capacidad GUI”, que significa interfaz gráfico de usuario, y hay que seleccionar donde va a funcionar la transacción:
    La primera opción es para ejecutar por html, es decir atreves de un navegador.
    La segunda opción es la de java, que se ejecuta en todas las plataformas,ya sean Linux, Mac, Windows, etc.
    La tercera opción es para Windows.


Y para terminar con la creación de la transacción se ejecuta el icono del disquete.


Una vez creada la transacción se puede ir al campo de comando y ejecutarla.


Sap crear variante de transacción.

Las variantes se utilizan para que las opciones y campos de una pantalla ya se informen de una forma predeterminada, y para crear una variante no hace falta ninguna transacción, ni siquiera hace falta usar la transacción se38, ya que las variantes las puede crear cualquier usuario.


Simplemente hay que ejecutar la transacción en la que se quiere crear la variante.


Una vez que ya está ejecutado el programa que en el que se quiere crear la variante, lo primero que hay que hacer, es dejar seleccionada las opciones e informar los campos tal como se quiere que se muestre cuando se ejecute la variante.


Después hay que ejecutar el icono del disquete, que mostrará una pantalla de atributos de la variante, donde se pueden ver la columna “imagen de selección”, que tiene asignado la dynpro 1000, que es la que se le asigna por defecto a los programas y también se puede ver todos los campos de la pantalla, donde se puede se puede:

  • Proteger campos.

  • Grabar campo sin valores

  • Que sea obligatorio.


Una vez configurado hay que informar:

  • El campo “Variante”.

  • El campo “Significado”.


Y para terminar de crear la variante solo hay que ejecutar el icono del disquete, el cual creara un nuevo botón en la pantalla principal del programa, al lado del icono del reloj, y al ejecutarlo modificará los datos de la pantalla según los datos configurados en la variante.


También existen más opciones sobre variantes, si se va a la opción de menú Pasar a -> Variantes, se muestra las opciones:

  • “Traer”, para traer una variante que ya exista.

  • Visualizar, para visualizar todas las variantes.

  • Borrar, para borrar una variante.

  • Grabar como variante, para crear una nueva variante.


Sap crear transacción con variante.

Ya sabemos que para crear una transacción, se puede usarla transacción SE93, pero también se puede crear desde la transacción SE38.


Una vez ejecutada la transacción SE38 con el programa en el cual se quiere crear la variante.


Hay que ir al listado de objetos y usar el botón secundario del ratón para desplegar una lista de opciones, en la que se muestra la opción de Crear, y en ella se puede crear una serie de objetos y entre ellos esta las transacciones.


Si se ejecuta, se mostrará la ventana de configuración de transacciones donde se puede asignar una variante.


Al ejecutar una transacción con una variante asignada, la transacción ejecutará de forma automática la variante que tiene asignada.


Abap crear menú de ámbito y favoritos.

Hay que entender que es un menú de ámbito, y por ejemplo el menú de  “MENU SAP” es un menú de ámbito, por lo que al crear un menú de ámbito es como si creara una carpeta que puede contener un grupo de transacciones.


Y para crear un menú de ámbito se puede usar la transacción SE4N, la cual muestra la ventana de “Actualizar menú de ámbito”, que está formada por el campo “Menú de ámbito” donde hay que introducir el nombre del menú de ámbito con el que se quiere trabajar.


Después hay que ejecutar el icono del papel, que siempre corresponde a crear un objeto, el cual muestra una ventana indicando el nombre del menú de ámbito y en el campo descripción hay que introducir una descripción.


Y para seguir con la creación hay que ejecutar el botón  “Crear menú de ámbito”, que muestra la pantalla de “Tratar menú de ámbito”, donde se puede ver una primera línea, y bajo ella hay que introducir las transacciones que se desea que contenga, y para ello hay que ir al icono de “Insertar entrada en un nivel inferior”  y ejecutarlo.


La cual muestra una ventana, donde se puede introducir las transacciones que se quiere que contenga.


  • En el campo “Código de transacción” se tiene que introducir el código de la transacción.

  • En el campo “texto”, seintroduce una descripción.

Y para confirmar los datos, se ejecuta el botón de continuar, el cual creara un subnivel en el menú de ámbito.


Finalmente para guardar los datos, hay que ejecutar el icono del disquete.


Para crear un acceso directo de una transacción en la carpeta de favoritos, se puede hacer varias operativas:

  • Seleccionar la carpeta de favoritos, hacer clic con el botón secundario del ratón y seleccionar la opción de“Insertar Transacción” y en esta ventana introducir el nombre de la transacción.


qqq

EXTERNALIZACIÓN DE SUBRUTINAS.

Externalización.

Las subrutinas se puede externalizar o modularizar, y es la práctica general en un trabajo.


Aunque las subrutinas pueden usar las variables globales, lo más aconsejable es que usen variables locales, de esta forma se facilita la codificación.


Cuando una subrutina se externaliza, es decir, que puede ser llamada por un programa en el cual no está creada, lo más normal es pasarle unos valores de entrada y recibir otros valores de salida.


Cuando se llama a una subrutina se usa el comando perform, seguido del nombre de la subrutina.

  • Ejemplo: Perfom multiplicación.


La creación de la subrutina está formada por los comandos form y endform.

  • Ejemplo: Form multiplicación.

endform.


Abap tipos de variables.

Hay 2 tipos de variables:

  • Variables globales: Son los objetos declarados en el programa y se pueden usar en cualquier parte del programa.

  • Variables locales: Son los objetos declarados en una subrutina y solo se pueden usar dentro de la subrutina, si se usará fuera de la subrutina daría error.


Firma de una subrutina Abap.

Cuando una subrutina usa parámetros  de entrada y/o salida, al conjunto de estos parámetros se le denomina  firma la de subrutina.

  • La firma que se usa al llamar a una subrutina, tiene que ser la misma con la que está creada, es decir, la llamada a la subrutina tiene que tener el mismo número de parámetros de entrada y salida.

  • Pero no es necesario que tengan el mismo nombre, lo normal es que se llamen de forma diferente, ya que el paso de los valores no se realiza por el nombre de los parámetros, sino por la posición que ocupa en la firma.


Tipo de subrutinas Abap.

Existen 2 tipos de subrutinas.

  • Internas: Cuando la subrutina está dentro del mismo programa que la llama.

  • Externas: Cuando la subrutina está en un programa distinto al que la llama.


Tipos de parámetros Abap.

Hay que distinguir que parámetros son de entrada, de salida o entrada/salida.

  • Parámetros de entrada: Son los que tienen un valor para informar la subrutina.

  • Parámetros de salida: son los que devuelven un valor de la subrutina.

  • Parámetros de entrada/salida: son los que tienen un valor para informar la subrutina y esta puede modificar su valor, para que después el programa pueda usar el nuevo valor.


Sap Abap Using value (paso por valor).

El comando “USING VALUE” se usa para indicar que se va a utilizar un parámetro de entrada, el “VALUE” solo se usa en la creación de la subrutina:

  • Ejemplo llamada a la rutina:
    PERFORM multiplicar USING num1.

  • Ejemplo creación de rutina:
    FORM multiplicar USING VALUE(factor) TYPE i.

ENDFORM.



Abap CHANGING.

Se usa para indicar que se va a utilizar un parámetro de salida.

  • Ejemplo llamada a la rutina:
    PERFORM multiplicar CHANGING  resultado.

  • Ejemplo creación de rutina:
    FORM multiplicar CHANGING  producto i.
    ...
    ENDFORM.


Abap USING (Paso por referencia).

Se usa para indicar que se va a utilizar un parámetro de entrada/salida :

  • Ejemplo llamada a la rutina:
    PERFORM multiplicar USING num1.

  • Ejemplo creación de rutina:
    FORM multiplicar USING mul_pro i.

ENDFORM.


Abap TABLE…STRUCTURE.

Se usa para indicar que se va a utilizar un parámetro de entrada/salida  y que es una tabla interna:

  • Ejemplo llamada a la rutina:
    PERFORM informar TABLE tabla1.

  • Ejemplo creación de rutina:
    FORM informar TABLE mul_pro STRUCTURE gt_tabla1.

ENDFORM.


Formas de llamar a una subrutina externa, Abap llamar programa desde otro.

Hay 2 formas de realizar la llamada a una rutina externa.

  • Ejemplo:
    PERFORM nombre_rutina IN PROGRAM nombre_programa.

  • Ejemplo:
    PERFORM nombre_rutina(nombre_programa)

FUNCIONES.

Sap Abap funciones.

Los módulos de funciones se crean para realizar operaciones que se utilizan en más de un programa  y de esta forma se evita duplicar código, ya que en vez de que cada programa tenga su código repetido, tendrán la llamada al módulo de funciones el cual tendrá la operativa que necesitan, y de esta forma se ahorra tiempo y dinero en codificación ya que no es lo mismo crear todo el código para una operativa en varios programas, que realizar la llamada  al módulo que ya contiene todo el código.


También se ahorra tiempo en el mantenimiento  ya que si en el futuro se necesita hacer alguna modificación sobre una operativa, no es lo mismo buscar todos los programas que tengan esa misma operativa y modificarlos, que hacer una sola modificación al módulo de funciones y de esta forma los programas que llamen a un módulo de funciones ni sabrán de que  ha habido modificaciones.


SAP dispone de una gran cantidad de módulos de funciones

Y para trabajar con los módulos de funciones hay que ir a la transacción SE37 biblioteca de funciones, la cual se encuentra en la ruta:

  • MENU SAP -> HERRAMIENTAS -> WORKBENCH ABAP -> DESARROLLO -> SE37 - BIBLIOTECA DE FUNCIONES.


La pantalla de “Módulo de funciones”, está formada por las pestañas:

  • Pestaña “Atributos”, y la cual muestralos atributos de este módulo que son:
    El campo “Grupo de funciones”, que indica a que grupo de funciones pertenece este módulos de funciones
    El campo de “Descripción”, donde está la descripción del módulo,
    El campo de “Texto breve”, donde también hay una descripción del módulo.
    Recuadro con el título “Forma de ejecución” , donde se muestra las posible formas de ejecutar el módulo de funciones y las cuales son,
    Módulo de funciones normal, esta opciónindica que este módulo se puede llamar desde el propio servidor SAP, pero no desde otro servidor remoto.

  • Módulo de acceso remoto, que permite hacer una llamada a un módulo desde un servidor externo.

  • Módulo de actualización, la cual tiene las opciones

  • Inicio inmediato de actualización, donde el módulo de funciones se procesa inmediatamente en la tarea de actualización.

  • Inicio inmediato de actualización y no actualizable posteriormente, con esta opciones también se procesainmediatamente en la tarea de actualización perono se puede realizar una actualización posterior.

  • Inicio retardado de la actualización, es cuando no hay una prioridad alta para realizar el proceso de actualización. Esta opción es la que se suele utilizar para modificar bases de datos no críticas para el sistema

  • Ejecución colectiva, que se utiliza para agrupar el módulo de funciones iguales, que están actualizándose de forma independiente entre ellas.

  • Check box de “Basado en XLM soportado”que se activa cuando se hace llamadas de acceso remoto.

  • En la parte izquierda se puede ver los campos de “Datos generales” , donde está:
    El campo de “Responsable”.
    El campo de “Modificado por”.
    El campo de “Fecha de modificación”.
    Los datos del paquete donde está el módulo de funciones
    El campo de “Idioma maestro”.

  • Pestaña “Import”, donde se muestra los parámetros de importación que son los parámetros que envían datos al módulo de funciones y está formada por las columnas:
    Nombre de parámetro.
    Tipificación del parámetro.
    Tipo de referencia,es decir de qué tipo deldiccionario de dato es.
    La siguiente columna es la de valor propuesto, que es el valor por defecto cuando el parámetro es opcional.
    Opcional, ya que no todos los parámetros de entrada tienen que ser obligatorios informarlos y en caso de no estar informado usaran el valor que está en la columna “valor por defecto”.
    Traspaso por valor, que se usa para indicar si el traspaso del valor del parámetro se va a realizar por referencia o por valor, esta opción es la que se utiliza cuando se llama desde un sistema externo, ya que no dispone de las referencias del parámetro y tiene que realizar el traspaso por valor.
    Texto breve.

  • Pestaña “Expor”, donde se puede ver los parámetros de salida, con los cuales el módulo de funciones devuelve los datos.Y está compuesto por los campos
    Nombre del parámetro
    La tipificación
    El tipo
    Traspaso por valor
    Texto breve.

  • Pestaña “Changing” que son los parámetros que se puede modificar durante la ejecución, y tiene las mismas columnas que la pestañade export.

  • Pestaña “Tablas”, que da la posibilidad de tener tablas como de entrada o salida.

  • Pestaña de excepciones, las excepciones se utilizan para informar al llamador de módulo de funcionessi se ha producido algún error o excepción, como por ejemplo que la base de datos no esté disponible.

  • En la columna “Excepción” se pondría el nombre de la excepción”.

  • En la columna “texto breve” se indicaría el texto a informar.

  • Pestaña de “código fuente”, donde está el código que se va a ejecutar cuando se llame a este módulo de funciones.Y se puede ver que lo primero es una cabecera donde se informa y se describelos parámetros que utiliza este módulo, esta cabecera se realiza de forma automática al ir rellenando las pestañas que hemos visto. Cada vez que se modifique una de las pestañas anteriores,y se genere el módulo de funciones, la cabecera se actualizará.


Hay que saber que la nomenclatura que SAP utiliza para los parámetros inporting es la I, para los parámetros exporting es la “E”, para las tablas la “T” y para los de tipo changing la “C”. y de esta forma solo viendo el nombre del parámetro se puede identificar de que tipo es.


Y debajo de  la cabecera esta todo el código de este módulo de funciones el cual se ejecuta cuando es llamado.


También hay que saber que un módulo de funciones no tiene obligación de tener algún tipo de parámetros ya que puede existir módulos que solo realicen una operativa y no tengan que ser informados con valores e incluso tampoco tienen que devolverlos.


Sap Abap crear grupo de funciones.

Para crear un grupo de funciones se puede usar la transacción SE37 biblioteca de funciones.


En el menú principal está la opción de “Pasar a”, que tiene la opciones;

  • Crear grupo, que es para crear un grupo de funciones.

  • Modificar grupo, que es para modificar un grupo de funciones.

  • Visualizar grupo, que es para poder ver los atributos de un grupo de funciones.

  • Borrar grupo, que es para cuando se quiere borrar un grupo de funciones

  • Buscar grupo, que ofrece varias opciones para buscar un grupo de funciones.


Sap crear módulo de funciones.

Para crear un módulo de funciones hay que ejecutar la transacción de biblioteca de funciones, la cual es la SE37.


En el campo “Módulo de funciones”, hay que introducir el nombre del módulo, el cual tiene que empezar por “Z” o “Y”.


Una vez introducido el nombre del módulo de funciones, hay que ejecutar el botón de crear.


Que muestra una ventana con dos campos obligatorios:

  • “Grupo de funciones”, hay que introducir el nombre del grupo de funciones al que se va a asignar.

  • “Texto breve”.


Y después de grabar los datos y se mostrara una pantalla donde se podrá empezar a informar los parámetros del módulo de funciones y la cual está formada por las pestañas:

  • “Import”, donde hay que informar de los parámetros de entra que va a tener.
    En la primera columna se introduce el nombre del parámetro, el cual tiene que empezar por “I”.
    En la columna “Tipo referencia” se introduce el tipo del parámetro y para ayudar en la búsqueda de un tipo está el botón de matchcode. Que muestra una pequeña ventana con varios botones, y cada botón ayuda a buscar un tipo de objeto diferente:
    El primer botón ayuda a buscar “elementos de datos”.
    El segundo botón ayuda a buscar “estructuras”.
    El tercer botón ayua a buscar tablas de base de datos.
    El siguiente botón sirve para buscar tipos de tablas.
    El siguiente para buscar vistas.
    El siguiente para buscar clases
    Y el último para buscar interfaces.


Cada una de estas opciones mostrará otra ventana, donde se puede ir filtrando los datos a buscar, contra mas campos se informen,  más restrictiva será la búsqueda.


Una vez seleccionado el tipo de datos, si se pulsa la tecla Intro rellenará la columna “Tipificación”

  • En la columna “Opcional”, hay un check box para indicar si el parámetro es opcional, por lo que no será obligatorio informarlo a la hora de llamar al módulo de funciones.

  • En la columna ”Texto breve”, hay que introducir un texto, pero que generalmente será rellenará de forma automática al elegir un tipo de datos u objeto que ya tenga una descripción.

  • “Export”, se informa con los parámetros de salida.

  • “Changing” se informa con los parámetros que van a ser modificados durante la ejecución del módulo de funciones.

  • “Tablas”, donde se crea los parámetros tipo tabla.

  • “Excepciones”, es donde se declaran las excepciones o errores controladas por el módulo de funciones.

  • “Código fuente”, donde ya estará formada la cabecera con los datos de los diferentes parámetros introducidos en las pestañas anteriores.


Creando código en Abap módulo de funciones.

El código que se puede implementar en un módulo de funciones es el mismo que el que se puede implementar en un programa, y esto incluye a las subrutinas.


Incluso un módulo de funciones puede llamar a otros módulos de funciones.


Cuando un módulo de funciones levanta una excepción, informa la variable de sistema SY-SUBRC de un valor diferente a 0, para que el llamador sepa que ha habido algún error en la ejecución del módulo.


Probando Test del Abap módulo de funciones.

Para la realización de las pruebas de los módulos de funciones se puede realizar de dos formas:

  • Creando un programa que realice la llamada al módulo de funciones.

  • Usando la pantalla de test del módulo de funciones.


Para realizar las pruebas por la opción de test, primero el módulo tiene que estar en estado activo, lo cual se consigue usando la opción de la varita.


Una vez en estado activo, ya se puede lanzar la pantalla de test del módulo de funciones utilizando el icono de la llave.


Que mostrará la pantalla de test formada por:

  • Icono del reloj, que es para ejecutar el test.

  • Icono del reloj con debuging, que daposibilidad de ejecutarlo mientras lo debugamos,

  • Nombre el grupo de funciones.

  • Nombre del módulo de funciones.

  • Apartado de parámetros de entrada, donde se muestran los parámetros de entrada del módulo.

  • Apartado de parámetros de salida, donde se muestran los parámetros de salida del módulo

  • Apartado de parámetros de chanching, donde se muestran los parámetros de entrada/salida del módulo

  • Aparado de tablas, donde se muestran la tablas internas, la cual da la posibilidad de introducir registros de entrada. Y para ellos hay que hacer doble clic sobre el campos “entrada”, que muestra una nueva ventana con la tabla dibujada y con las opciones:

  • Icono de entrada simple,que cambia la forma de vista de los campos de horizontal a vertical.

  • Conjunto de botones para el desplazamientos de los campos,estos son muy útiles cuando la tabla tiene muchos campos, ya que en la pantalla no se verían todos y para desplazarse por los campo hay que usar estos botones

  • Icono de eliminar,para eliminar registros.

  • Icono de insertar, para insertar registros.

  • Botón de nueva línea, se diferencia del de insertar, que el registro siempre lo crea al final de la tabla, mientras que el de insertar, lo crea por encima del registro que este seleccionado.

  • Campo entradas, indica el número de registros que tiene actualmente la tabla.


Para empezar con las pruebas, solo hay que informar los campos de entrada según la casuística que se quiera probar y ejecutar el botón del reloj.


Llamando al Abap módulo de funciones.

Para realizar la llamada a un módulo de funciones se puede:

  • Usar el comando CALL FUNCTION, seguido del nombre y de los parámetros y excepciones que usa.

  • Usar el botón “MODELO”, el cual genera todo el código para poder realizar la llamada a cualquier objeto.


El control de retorno de la llamada se realiza a través de la variable de sistema sy-subrc.


En el caso de producirse una excepción y no estar controlada, se provocará un error tipo DUM, el cual provoca la salida del programa.



Quiero Estudiar

PRECIO VENTA 12 €

Comprar
Versión Gratuita

A continuación, te presentamos ofertas de tiempo limitado.

Acceso a todos los cursos de la web con un único pago

La mejor oferta de toda la web, no encontrarás ninguna como esta. Con el Plan Quiero Estudiar puedes acceder a todos los cursos de la web, incluido los futuros. Pero no puedes acceder a todos a la vez, podrás asignarte los 3 cursos que quieras independientemente de su precio o temática.

 

Cada vez que finalices uno, recibirás su certificado de finalización y podrás asignarte otro más.

Al comprar esta oferta, los botones de "Comprar" se convertirán en "Quiero Estudiar" y podrás elegir tus cursos de forma tranquila.

Aprovecha esta gran oferta, nunca más tendrás que gastar dinero en comprar más cursos.

Oferta 3 x 1 en cursos individuales (no Máster)

¡Aprovecha nuestra promoción excepcional de 3x1 en cursos online!

 

En nuestra variada selección de temáticas, pagarás por un curso individual y podrás llevarte otros dos completamente gratis. De esta manera, tendrás la libertad de escoger los tres cursos que más te interesen, sin importar la temática. Es una excelente oportunidad para ampliar tus conocimientos y habilidades. Por favor, ten en cuenta que esta oferta no se aplica a nuestros programas de Máster.

Al comprar esta oferta, los botones de "Comprar" se convertirán en "Quiero Estudiar" y podrás elegir tus 3 cursos de forma tranquila.

Promoción Exclusiva para este Máster

Comprar Máster por 18€
Ver temario del Máster

¿Tienes un código promocional?

PROCESANDO EL CÓDIGO PROMOCIONAL, ESPERE POR FAVOR

Activar:
linea2.jpg
cursos online en oferta
bottom of page