ABAP - ABAP

ABAP / 4
Paradigma Orientado a objetos , estructurado , imperativo
Diseñada por SAP SE
Apareció por primera vez 1983 ; Hace 38 años ( 1983 )
Lanzamiento estable
7.55 / 2 de septiembre de 2020 ; hace 11 meses ( 2020-09-02 )
Disciplina de mecanografía Estático , fuerte , seguro , nominativo
SO Multiplataforma
Sitio web scn .sap .com / community / abap% 20scn .sap .com / community / abap
Implementaciones importantes
SAP R / 2 , SAP R / 3 , SAP S / 4HANA
Influenciado por
Objective-C , COBOL , SQL

ABAP (Advanced Business Application Programming, originalmente Allgemeiner Berichts-Aufbereitungs-Prozessor , alemán para "procesador de preparación de informes generales") es un lenguaje de programación de alto nivel creado por la empresa de software alemana SAP SE . Actualmente se posiciona, junto con Java , como el lenguaje para programar el servidor de aplicaciones SAP NetWeaver , que es parte de la plataforma SAP NetWeaver para la construcción de aplicaciones comerciales.

Introducción

ABAP es uno de los muchos lenguajes de cuarta generación específicos de aplicaciones ( 4GL ) desarrollados por primera vez en la década de 1980. Originalmente era el lenguaje de informes para SAP R / 2 , una plataforma que permitía a las grandes corporaciones crear aplicaciones comerciales de mainframe para la gestión de materiales y la contabilidad financiera y de gestión. ABAP establece la integración entre software independiente.

ABAP solía ser una abreviatura de A llgemeiner B erichts- A ufbereitungs- P rozessor , alemán para "procesador de preparación del informe genérico", pero más tarde se renombró al Inglés A dvanced B usiness A plicación P ROGRAMACIÓN . ABAP fue uno de los primeros lenguajes en incluir el concepto de bases de datos lógicas (LDB), que proporciona un alto nivel de abstracción de los niveles básicos de la base de datos, que admite todas las plataformas, idiomas y unidades.

Los desarrolladores utilizaron originalmente el lenguaje ABAP para desarrollar la plataforma SAP R / 3 . También estaba destinado a ser utilizado por los clientes de SAP para mejorar las aplicaciones de SAP: los clientes pueden desarrollar informes e interfaces personalizados con la programación ABAP. El lenguaje estaba dirigido a clientes más técnicos con experiencia en programación.

ABAP sigue siendo el lenguaje para crear programas para el sistema cliente-servidor R / 3 , que SAP lanzó por primera vez en 1992. A medida que el hardware de la computadora evolucionó durante la década de 1990, cada vez más aplicaciones y sistemas de SAP se escribieron en ABAP. En 2001, todas las funciones, excepto las más básicas, estaban escritas en ABAP. En 1999, SAP lanzó una extensión orientada a objetos para ABAP llamada ABAP Objects, junto con la versión 4.6 de R / 3.

La plataforma de desarrollo actual de SAP, NetWeaver, es compatible con ABAP y Java .

ABAP tiene una abstracción entre las aplicaciones comerciales, el sistema operativo y la base de datos. Esto asegura que las aplicaciones no dependan directamente de un servidor o plataforma de base de datos específicos y que se puedan migrar fácilmente de una plataforma a otra.

SAP Netweaver se ejecuta actualmente en UNIX ( AIX , HP-UX , Solaris , Linux ), Microsoft Windows , i5 / OS en IBM System i (anteriormente iSeries, AS / 400) yz / OS en IBM System z (anteriormente zSeries, S / 390). Las bases de datos admitidas son HANA , SAP ASE (anteriormente Sybase), IBM DB2 , Informix , MaxDB , Oracle y Microsoft SQL Server (la compatibilidad con Informix se suspendió en la versión 7.00 de SAP Basis).

Entorno de tiempo de ejecución ABAP

Todos los programas ABAP residen dentro de la base de datos de SAP. No se almacenan en archivos externos separados como programas Java o C ++. En la base de datos, todo el código ABAP existe en dos formas: código fuente, que se puede ver y editar con las herramientas ABAP Workbench; y código generado, una representación binaria algo comparable con el código de bytes de Java . Los programas ABAP se ejecutan bajo el control del sistema de tiempo de ejecución, que es parte del kernel de SAP. El sistema de tiempo de ejecución es responsable de procesar las declaraciones ABAP, controlar la lógica de flujo de las pantallas y responder a los eventos (como cuando un usuario hace clic en un botón de pantalla); en este sentido, puede verse como una máquina virtual comparable con la máquina virtual Java. Un componente clave del sistema de tiempo de ejecución ABAP es la interfaz de base de datos, que convierte las declaraciones ABAP independientes de la base de datos ("SQL abierto") en declaraciones comprendidas por el DBMS subyacente ("SQL nativo"). La interfaz de la base de datos maneja toda la comunicación con la base de datos relacional en nombre de los programas ABAP; También contiene características adicionales como el almacenamiento en búfer de tablas y datos a los que se accede con frecuencia en la memoria local del servidor de aplicaciones.

Paisajes y sistemas SAP

Todos los datos de SAP existen y todo el software de SAP se ejecuta en el contexto de un sistema SAP . Un sistema consta de una base de datos relacional central y una o más aplicaciones ("instancias") que acceden a los datos y programas de esta base de datos. Un sistema SAP contiene al menos una instancia, pero puede contener más, principalmente por razones de tamaño y rendimiento. En un sistema con varias instancias, los mecanismos de equilibrio de carga garantizan que la carga se distribuya uniformemente entre los servidores de aplicaciones disponibles.

Las instalaciones del servidor de aplicaciones web ( paisajes ) suelen constar de tres sistemas: uno para el desarrollo; uno para pruebas y aseguramiento de la calidad; y uno para producción. El paisaje puede contener más sistemas (por ejemplo, sistemas separados para pruebas unitarias y pruebas de preproducción) o puede contener menos (por ejemplo, solo desarrollo y producción, sin QA separado); sin embargo, tres es la configuración más común. Los programas ABAP se crean y se someten a las primeras pruebas en el sistema de desarrollo. Posteriormente se distribuyen a los demás sistemas del paisaje. Estas acciones se llevan a cabo bajo el control del Sistema de Cambio y Transporte (CTS), que es responsable del control de concurrencia (p. Ej., Evitar que dos desarrolladores cambien el mismo código al mismo tiempo), la administración de versiones y la implementación de programas en QA y sistemas de producción.

El servidor de aplicaciones web consta de tres capas: la capa de base de datos; la capa de aplicación; y la capa de presentación. Estas capas pueden ejecutarse en la misma o en diferentes máquinas físicas. La capa de la base de datos contiene la base de datos relacional y el software de la base de datos. El conocimiento de la capa de aplicación contiene la instancia o instancias del sistema. Todos los procesos de aplicación, incluidas las transacciones comerciales y el desarrollo de ABAP, se ejecutan en la capa de aplicación. La capa de presentación maneja la interacción con los usuarios del sistema. El acceso en línea a los servidores de aplicaciones ABAP puede realizarse a través de una interfaz gráfica patentada, que se denomina "SAP GUI", o mediante un navegador web.

Capas de software

El software ABAP se implementa en componentes de software. Ejemplos de estos son:

  • SAP_BASIS es la capa base técnica requerida que se requiere en todos los sistemas ABAP.
  • SAP_ABA contiene funcionalidades que se requieren para todo tipo de aplicaciones comerciales, como la gestión de socios comerciales y direcciones.
  • SAP_UI proporciona la funcionalidad para crear aplicaciones SAP UI5.
  • BBPCRM es un ejemplo de una aplicación empresarial, en este caso la aplicación CRM
  • SAP ABAP es un lenguaje de programación ERP.

Actas

Una transacción en la terminología de SAP es la ejecución de un programa. La forma normal de ejecutar el código ABAP en el sistema SAP es ingresando un código de transacción (por ejemplo, VA01 es el código de transacción para "Crear orden de venta"). Las transacciones se pueden llamar a través de menús basados ​​en roles definidos por el sistema o específicos del usuario. También se pueden iniciar ingresando el código de transacción directamente en un campo de comando, que está presente en cada pantalla de SAP. Las transacciones también se pueden invocar mediante programación mediante las instrucciones ABAP CALL TRANSACTION y LEAVE TO TRANSACTION. La noción general de una transacción se denomina Unidad lógica de trabajo (LUW) en la terminología de SAP; la forma abreviada de código de transacción es T-code .

Tipos de programas ABAP

Como en otros lenguajes de programación, un programa ABAP es una unidad ejecutable o una biblioteca, que proporciona código reutilizable a otros programas y no es ejecutable de forma independiente.

ABAP distingue dos tipos de programas ejecutables:

  • Informes
  • Grupos de módulos

Los informes siguen un modelo de programación relativamente simple mediante el cual un usuario ingresa opcionalmente un conjunto de parámetros (por ejemplo, una selección sobre un subconjunto de datos) y el programa luego usa los parámetros de entrada para producir un informe en forma de lista interactiva. El término "informe" puede ser algo engañoso ya que los informes también pueden diseñarse para modificar datos; la razón por la que estos programas se denominan informes es la naturaleza "orientada a listas" de la salida que producen.

Los grupos de módulos definen patrones más complejos de interacción del usuario mediante una colección de pantallas. El término "pantalla" se refiere a la imagen física real que ve el usuario. Cada pantalla también tiene una "lógica de flujo", que se refiere al código ABAP implícitamente invocado por las pantallas, que se divide en una sección "PBO" (Proceso antes de la salida) y "PAI" (Proceso después de la entrada). En la documentación de SAP, el término "dynpro" (programa dinámico) se refiere a la combinación de la pantalla y su lógica de flujo.

Los tipos de programas no ejecutables son:

  • INCLUYE módulos
  • Piscinas de subrutina
  • Grupos de funciones
  • Clases de objetos
  • Interfaces
  • Piscinas de tipo

Un módulo INCLUDE se incluye en el momento de la generación en la unidad de llamada; a menudo se utiliza para subdividir programas grandes.
Los grupos de subrutinas contienen subrutinas ABAP (bloques de código encerrados por declaraciones FORM / ENDFORM e invocados con PERFORM).
Los grupos de funciones son bibliotecas de módulos de funciones autónomos (incluidos en FUNCTION / ENDFUNCTION e invocados con CALL FUNCTION).
Las clases de objetos y las interfaces son similares a las clases y las interfaces de Java; el primero define un conjunto de métodos y atributos, el segundo contiene definiciones de método "vacías", para las cuales cualquier clase que implemente la interfaz debe proporcionar código explícito.
Los grupos de tipos definen colecciones de tipos de datos y constantes.

Los programas ABAP se componen de oraciones (declaraciones) individuales. La primera palabra de una declaración se llama palabra clave ABAP. Cada declaración termina con un punto. Las palabras siempre deben estar separadas por al menos un espacio. Las declaraciones se pueden sangrar como desee. Con palabras clave, adiciones y operandos, el sistema de tiempo de ejecución de ABAP no distingue entre mayúsculas y minúsculas.

Las declaraciones pueden extenderse más allá de una línea. Puede tener varias declaraciones en una sola línea (aunque no se recomienda). Las líneas que comienzan con un asterisco * en la primera columna son reconocidas como líneas de comentario por el sistema de tiempo de ejecución ABAP y se ignoran. Las comillas dobles (") indican que el resto de una línea es un comentario.

Entorno de desarrollo

Hay dos formas posibles de desarrollar ABAP. La disponibilidad depende del lanzamiento del sistema ABAP.

Banco de trabajo ABAP

El ABAP Workbench es parte del sistema de ABAP y se accede a través de SAP GUI . Contiene diferentes herramientas para editar programas. Los más importantes son (los códigos de transacción se muestran entre paréntesis):

  • Editor ABAP para escribir y editar informes, grupos de módulos, grupos de inclusiones y de subrutinas (SE38)
  • Diccionario ABAP para procesar definiciones de tablas de bases de datos y recuperar tipos globales (SE11)
  • Menu Painter para diseñar la interfaz de usuario (barra de menú, barra de herramientas estándar, barra de herramientas de la aplicación, asignación de teclas de función) (SE41)
  • Screen Painter para diseñar pantallas y lógica de flujo (SE51)
  • Generador de funciones para módulos de funciones (SE37)
  • Generador de clases para clases e interfaces de objetos ABAP (SE24)

El navegador de objetos (SE80 transacción) proporciona una interfaz única integrada en estas diversas herramientas.

Herramientas de desarrollo ABAP

Las herramientas de desarrollo ABAP ( ADT ), conocidas formalmente como "ABAP en Eclipse", es un conjunto de complementos para que la plataforma Eclipse desarrolle ABAP.

En este escenario, el desarrollador de ABAP instala las herramientas necesarias en su computadora y trabaja localmente, mientras que se realiza una sincronización continua con el backend.

Diccionario ABAP

El Diccionario ABAP contiene todos los metadatos sobre los datos en el sistema SAP. Está estrechamente vinculado con ABAP Workbench en el sentido de que cualquier referencia a los datos (por ejemplo, una tabla, una vista o un tipo de datos) se obtendrá del diccionario. Los desarrolladores utilizan las transacciones del Diccionario ABAP (directamente o mediante el Navegador de objetos SE80 dentro de ABAP Workbench) para mostrar y mantener estos metadatos.

Cuando se cambia un objeto de diccionario, un programa que hace referencia al objeto cambiado automáticamente hará referencia a la nueva versión la próxima vez que se ejecute el programa. Dado que se interpreta ABAP, no es necesario volver a compilar programas que hagan referencia a objetos de diccionario modificados.

A continuación, se incluye una breve descripción de los tipos más importantes de objetos de diccionario:

  • Las tablas son contenedores de datos que existen en la base de datos relacional subyacente. En la mayoría de los casos existe una relación 1 a 1 entre la definición de una tabla en el Diccionario ABAP y la definición de esa misma tabla en la base de datos (mismo nombre, mismas columnas). Estas tablas se conocen como "transparentes". Hay dos tipos de tablas no transparentes: las tablas "agrupadas" existen como entidades independientes en el Diccionario ABAP, pero están agrupadas en tablas físicas grandes ("agrupaciones") en el nivel de la base de datos. Las tablas agrupadas suelen ser tablas pequeñas que contienen, por ejemplo, datos de configuración. Las tablas "agrupadas" se agrupan físicamente en "agrupaciones" según sus claves primarias; por ejemplo, suponga que una tabla agrupada H contiene datos de "encabezado" sobre facturas de ventas, mientras que otra tabla agrupada D contiene las partidas de la factura. Cada fila de H se agruparía físicamente con las filas relacionadas de D dentro de una "tabla de grupo" en la base de datos. Este tipo de agrupación en clústeres, que está diseñado para mejorar el rendimiento, también existe como funcionalidad nativa en algunos, aunque no en todos, los sistemas de bases de datos relacionales.
  • Los índices brindan acceso acelerado a los datos de la tabla para las condiciones de selección que se usan con frecuencia. Cada tabla de SAP tiene un "índice principal", que se crea implícitamente junto con la tabla y se utiliza para hacer cumplir la singularidad de la clave principal. Se pueden definir índices adicionales (únicos o no únicos); estos se denominan "índices secundarios".
  • Las vistas tienen el mismo propósito que en la base de datos subyacente: definen subconjuntos de columnas (y / o filas) a partir de una o, utilizando una condición de combinación, varias tablas. Dado que las vistas son tablas virtuales (se refieren a datos de otras tablas), no ocupan una cantidad sustancial de espacio.
  • Las estructuras son tipos de datos complejos que constan de varios campos (comparables a la estructura en C / C ++).
  • Los elementos de datos proporcionan el contenido semántico de una tabla o un campo de estructura. Por ejemplo, decenas de tablas y estructuras pueden contener un campo que indique el precio (de un producto terminado, materia prima, recurso, ...). Todos estos campos pueden tener el mismo elemento de datos "PRECIO".
  • Los dominios definen las características estructurales de un elemento de datos. Por ejemplo, el elemento de datos PRECIO podría tener un dominio asignado que defina el precio como un campo numérico con dos decimales. Los dominios también pueden llevar contenido semántico al proporcionar una lista de valores posibles. Por ejemplo, un dominio "BOOLEANO" podría definir un campo de tipo "carácter" con longitud 1 y no distingue entre mayúsculas y minúsculas, pero también restringiría los valores posibles a "T" (verdadero) o "F" (falso).
  • Las ayudas de búsqueda (sucesoras de los "códigos de coincidencia" ahora obsoletos) proporcionan estrategias de búsqueda avanzadas cuando un usuario desea ver los posibles valores de un campo de datos. El tiempo de ejecución de ABAP proporciona asistencia implícita (enumerando todos los valores para el campo, por ejemplo, todos los números de clientes existentes) pero las ayudas de búsqueda se pueden utilizar para refinar esta funcionalidad, por ejemplo, proporcionando búsquedas de clientes por ubicación geográfica, calificación crediticia, etc.
  • Los objetos de bloqueo implementan el bloqueo a nivel de aplicación cuando se cambian los datos.

Sintaxis ABAP

Esta breve descripción de la sintaxis ABAP comienza con el omnipresente programa " Hola mundo ".

Hola Mundo

REPORT TEST.
WRITE 'Hello World'.

Este ejemplo contiene dos declaraciones: REPORTy WRITE. El programa muestra una lista en la pantalla. En este caso, la lista consta de una sola línea "Hola mundo". El REPORTcomunicado indica que este programa es un informe. Este programa podría ser un grupo de módulos después de reemplazar la REPORTinstrucción con PROGRAM.

Declaraciones encadenadas

Los enunciados consecutivos con una primera parte idéntica (más a la izquierda) se pueden combinar en un enunciado "encadenado" utilizando el operador de cadena :. La parte común de las declaraciones se escribe a la izquierda de los dos puntos, las partes diferentes se escriben a la derecha de los dos puntos y se separan por comas. El operador de dos puntos se adjunta directamente al token anterior, sin un espacio (lo mismo se aplica a las comas en la lista de tokens en, como se puede ver en los ejemplos a continuación).

El encadenamiento se usa a menudo en WRITEdeclaraciones. WRITEacepta solo un argumento, por lo que si, por ejemplo, quisiera mostrar tres campos de una estructura llamada FLIGHTINFO, tendría que codificar:

WRITE FLIGHTINFO-CITYFROM.
WRITE FLIGHTINFO-CITYTO.
WRITE FLIGHTINFO-AIRPTO.

Encadenar las declaraciones da como resultado una forma más legible e intuitiva:

WRITE: FLIGHTINFO-CITYFROM, FLIGHTINFO-CITYTO, FLIGHTINFO-AIRPTO.

En una declaración en cadena, la primera parte (antes de los dos puntos) no se limita solo al nombre de la declaración. La parte común completa de las declaraciones consecutivas se puede colocar antes de los dos puntos. Ejemplo:

REPLACE 'A' WITH 'B' INTO LASTNAME.
REPLACE 'A' WITH 'B' INTO FIRSTNAME.
REPLACE 'A' WITH 'B' INTO CITYNAME.

podría reescribirse en forma encadenada como:

REPLACE 'A' WITH 'B' INTO: LASTNAME, FIRSTNAME, CITYNAME.

Comentarios

ABAP tiene 2 formas de definir texto como comentario :

  • Un asterisco (*) en la columna más a la izquierda de una línea hace que toda la línea sea un comentario
  • Una comilla doble (") en cualquier parte de una línea convierte el resto de esa línea en un comentario

Ejemplo:

***************************************
** Program: BOOKINGS                 **
** Author: Joe Byte, 07-Jul-2007     **
***************************************

REPORT BOOKINGS.

* Read flight bookings from the database
SELECT * FROM FLIGHTINFO
  WHERE CLASS = 'Y'       "Y = economy
  OR    CLASS = 'C'.      "C = business
(...)

Espacios

El código en ABAP es sensible a los espacios en blanco.

x = a+b(c).

asigna a la variable x la subcadena de la variable a, comenzando desde b con la longitud definida por la variable c.

x = a + b( c ).

asigna a la variable x la suma de la variable ay el resultado de la llamada al método b con el parámetro c.

Declaraciones ABAP

A diferencia de lenguajes como C / C ++ o Java, que definen un conjunto limitado de declaraciones específicas del lenguaje y proporcionan la mayor parte de la funcionalidad a través de bibliotecas, ABAP contiene una gran cantidad de declaraciones integradas. Estas declaraciones utilizaban tradicionalmente estructuras en forma de oraciones y evitaban los símbolos, lo que hacía que los programas ABAP fueran relativamente prolijos. Sin embargo, en versiones más recientes del lenguaje ABAP, es posible un estilo más terso.

Un ejemplo de sintaxis basada en declaraciones (cuya sintaxis se origina en COBOL) versus sintaxis basada en expresiones (como en C / Java):

ADD TAX TO PRICE.
* is equivalent to
PRICE = PRICE + TAX .

Tipos de datos y variables

ABAP proporciona un conjunto de tipos de datos integrados. Además, cada estructura, tabla, vista o elemento de datos definido en el Diccionario ABAP se puede utilizar para escribir una variable. Además, las clases de objetos y las interfaces se pueden utilizar como tipos.

Los tipos de datos integrados son:

Escribe Descripción
I Entero
PAG Decimal empaquetado
F Punto flotante
norte Carácter numérico
C Personaje
D Fecha
T Tiempo
X Hexadecimal (byte sin formato)
CUERDA Cuerda de longitud variable
XSTRING Matriz de bytes sin formato de longitud variable

Las variables o constantes de fecha (tipo D) contienen el número de días desde el 1 de enero del 1 d.C. Las variables de tiempo o constantes (tipo T) contienen el número de segundos desde la medianoche. Una característica especial de ambos tipos es que se puede acceder a ellos como enteros y como cadenas de caracteres (con formato interno "AAAAMMDD" para fechas y "hhmmss" para horas), que se pueden utilizar para el manejo de fechas y horas. Por ejemplo, el siguiente fragmento de código calcula el último día del mes anterior (nota: SY-DATUM es una variable definida por el sistema que contiene la fecha actual):

DATA LAST_EOM    TYPE D.  "last end-of-month date

* Start from today's date
  LAST_EOM = SY-DATUM.
* Set characters 6 and 7 (0-relative) of the YYYYMMDD string to "01",
* giving the first day of the current month
  LAST_EOM+6(2) = '01'.
* Subtract one day
  LAST_EOM = LAST_EOM - 1.

  WRITE: 'Last day of previous month was', LAST_EOM.

Todas las variables ABAP deben declararse explícitamente para poder utilizarse. Se pueden declarar con declaraciones individuales y escritura explícita o, desde ABAP 7.40, en línea con escritura inferida .

Declaración escrita explícitamente

Normalmente, todas las declaraciones se colocan en la parte superior del módulo de código (programa, subrutina, función) antes de la primera declaración ejecutable; esta ubicación es una convención y no una regla de sintaxis impuesta. La declaración consta del nombre, tipo, longitud (cuando corresponda), modificadores adicionales (por ejemplo, el número de decimales implícitos para un campo decimal empaquetado) y, opcionalmente, un valor inicial:

* Primitive types:
DATA: COUNTER      TYPE I,
      VALIDITY     TYPE I VALUE 60,
      TAXRATE(3)   TYPE P DECIMALS 1,
      LASTNAME(20) TYPE C,
      DESCRIPTION  TYPE STRING.

* Dictionary types:
DATA: ORIGIN       TYPE COUNTRY.

* Internal table:
DATA: T_FLIGHTS    TYPE TABLE OF FLIGHTINFO,
      T_LOOKUP     TYPE HASHED TABLE OF FLT_LOOKUP.

* Objects:
DATA: BOOKING      TYPE REF TO CL_FLT_BOOKING.

Observe el uso de los dos puntos para encadenar sentencias DATA consecutivas.

Declaración en línea

Desde ABAP 7.40, las variables se pueden declarar en línea con la siguiente sintaxis:

DATA(variable_name) = 'VALUE'.

Para este tipo de declaración, debe ser posible inferir el tipo de forma estática, por ejemplo, mediante la firma del método o la estructura de la tabla de la base de datos.

Esta sintaxis también es posible en declaraciones OpenSQL:

SELECT * FROM ekko into @DATA(lt_ekko) WHERE ebeln EQ @lv_ebeln.

Objetos ABAP

El lenguaje ABAP admite la programación orientada a objetos , a través de una función conocida como "Objetos ABAP". Esto ayuda a simplificar las aplicaciones y hacerlas más controlables.

ABAP Objects es totalmente compatible con el lenguaje existente, por lo que se pueden usar declaraciones y unidades de modularización existentes en programas que usan ABAP Objects, y también se pueden usar ABAP Objects en programas ABAP existentes. La verificación de sintaxis es más fuerte en los programas de objetos ABAP y algunas formas sintácticas (generalmente las más antiguas) de ciertas declaraciones no están permitidas.

Los objetos forman una cápsula que combina el personaje con el comportamiento respectivo. Los objetos deben permitir a los programadores mapear un problema real y su solución de software propuesta de forma individualizada. Los objetos típicos en un entorno empresarial son, por ejemplo, 'Cliente', 'Pedido' o 'Factura'. Desde la versión 3.1 en adelante, el Business Object Repository (BOR) de SAP Web Application Server ABAP contiene ejemplos de dichos objetos. El modelo de objetos BOR se integrará en los objetos ABAP en la próxima versión mediante la migración de los tipos de objetos BOR a la biblioteca de clases ABAP. Una introducción completa a la orientación a objetos en su conjunto iría mucho más allá de los límites de esta introducción a los objetos ABAP. Esta documentación presenta una selección de términos que se utilizan universalmente en la orientación a objetos y también se encuentran en Objetos ABAP. En las secciones siguientes, se analiza con más detalle cómo se utilizan estos términos en los objetos ABAP. El final de esta sección contiene una lista de lecturas adicionales, con una selección de títulos sobre orientación a objetos.

  • Los objetos son instancias de clases. Contienen datos y prestan servicios. Los datos forman los atributos del objeto. Los servicios se conocen como métodos (también conocidos como operaciones o funciones). Normalmente, los métodos operan con datos privados (los atributos o el estado del objeto), que solo son visibles para los métodos del objeto. Por lo tanto, los atributos de un objeto no pueden ser cambiados directamente por el usuario, sino solo por los métodos del objeto. Esto garantiza la coherencia interna del objeto.
  • Las clases describen objetos. Desde un punto de vista técnico, los objetos son instancias en tiempo de ejecución de una clase. En teoría, se puede crear cualquier número de objetos basados ​​en una sola clase. Cada instancia (objeto) de una clase tiene una identidad única y su propio conjunto de valores para sus atributos.
  • Las referencias a objetos son direcciones únicas que pueden usarse para identificar y señalar objetos en un programa. Las referencias a objetos permiten acceder a los atributos y métodos de un objeto.

En la programación orientada a objetos, los objetos suelen tener las siguientes propiedades:

  • Encapsulación: los objetos restringen la visibilidad de sus recursos (atributos y métodos) a otros usuarios. Cada objeto tiene una interfaz, que determina cómo otros objetos pueden interactuar con él. La implementación del objeto está encapsulada, es decir, invisible fuera del propio objeto.
  • Herencia: una clase existente se puede usar para derivar una nueva clase. Las clases derivadas heredan los datos y métodos de la superclase. Sin embargo, pueden sobrescribir los métodos existentes y también agregar otros nuevos.
  • Polimorfismo: los métodos idénticos (con nombres idénticos) se comportan de manera diferente en diferentes clases. En los objetos ABAP, el polimorfismo se implementa redefiniendo métodos durante la herencia y utilizando construcciones llamadas interfaces.

Vistas de CDS

Los servicios de datos básicos de ABAP (ABAP CDS) son la implementación del concepto general de CDS para AS ABAP. ABAP CDS permite definir modelos de datos semánticos en la base de datos central del servidor de aplicaciones. En AS ABAP, estos modelos se pueden definir independientemente del sistema de base de datos. Las entidades de estos modelos proporcionan funciones de acceso mejoradas en comparación con las vistas y tablas de bases de datos existentes definidas en el Diccionario ABAP, lo que hace posible optimizar las aplicaciones basadas en Open SQL. Esto es particularmente claro cuando un AS ABAP usa una base de datos SAP HANA, ya que sus características en memoria se pueden implementar de manera óptima.

Los modelos de datos se definen utilizando el lenguaje de definición de datos (DDL) y el lenguaje de control de datos (DCL) proporcionados en ABAP CDS en la sintaxis ABAP CDS. Los objetos definidos con estos lenguajes se integran en ABAP Dictionary y también se gestionan aquí.

El código fuente de CDS solo se puede programar en las herramientas de desarrollo ABAP (ADT) basadas en Eclipse. El lenguaje de definición de datos (DDL) y el lenguaje de control de datos (DCL) utilizan diferentes editores.

Características

SAP NW ABAP Uniones SQL Operaciones de conjuntos SQL SELECCIONAR cláusulas
7.40 SP05
  • UNIR INTERNAMENTE
  • IZQUIERDA COMBINACIÓN EXTERNA
  • UNIÓN EXTERIOR DERECHA
  • UNIÓN
  • UNIÓN TODOS
  • DONDE
  • AGRUPAR POR
  • TENIENDO
  • COMO
7.40 SP08
7,50
7.51
  • ÚNETE CRUZADO
SAP NW ABAP Literales Operadores aritméticos Expresiones condicionales
7.40 SP05
  • En la lista SELECT, por ejemplo, literal como FieldName
  • Como valor RHS
  • +
  • -
  • operadores booleanos
    • NO, Y, O
  • Operadores de comparación
    • ENTRE, =, <>, <,>, <=,> =, ME GUSTA
    • ES [NO] NULO (solo en la condición WHERE)
7.40 SP08
  • / (División basada en flotación)
7,50
7.51
  • Función como valor RHS
SAP NW ABAP Funciones agregadas Funciones numéricas Funciones de cadena
7.40 SP05
  • AVG ([DISTINCT])
  • MAX
  • MIN
  • SUM ([DISTINCT])
  • COUNT ([DISTINCT])
  • CONTAR(*)
  • HACER TECHO
  • MODIFICACIÓN
  • SUBSTRING
  • LPAD
7.40 SP08
  • abdominales
  • DIV (división basada en números enteros)
  • DIVISION (división basada en decimales)
  • PISO
  • REDONDO
  • CONCAT
  • REEMPLAZAR
7,50
  • CONCAT_WITH_SPACE
  • INSTR
  • IZQUIERDA
  • LARGO
  • LTRIM
  • DERECHO
  • RPAD
  • RTRIM
7.51
  • AVG ([AS]) para especificar el tipo de retorno
  • FLTP_TO_DEC
  • SUPERIOR
  • MÁS BAJO
SAP NW ABAP Funciones de cadena de bytes Funciones de fecha y hora Otras funciones
7.40 SP05
  • CAST a tipos DDIC incorporados, por ejemplo, abap.fltp
7.40 SP08
  • JUNTARSE
  • CONVERSIÓN DE MONEDA
  • CONVERSIÓN DE UNIDADES
  • DECIMAL_SHIFT
7,50
  • BINTOHEX
  • HEXTOBIN
  • DATS_DAYS_BETWEEN
  • DATS_ADD_DAYS
  • DATS_ADD_MONTHS
  • DATS_IS_VALID
  • TIMS_IS_VALID
  • TSTMP_IS_VALID
  • TSTMP_CURRENT_UTCTIMESTAMP
  • TSTMP_SECONDS_BETWEEN
  • TSTMP_ADD_SECONDS
  • EMITIR
    • a elementos de datos, p. ej., CHAR80
    • se puede anidar
7.51
  • ABAP_SYSTEM_TIMEZONE
  • ABAP_USER_TIMEZONE
  • TSTMP_TO_DATS
  • TSTMP_TO_TIMS
  • TSTMP_TO_DST
  • DATS_TIMS_TO_TSTMP
  • EMITIR
    • TIPO DE CONSERVACIÓN
    • SSTRING a otros tipos
    • CLNT, LANG, TIMS, UNIT a elementos de datos de tipo CHAR y SSTRING
    • CHAR, SSTRING, NUMC a ACCP y viceversa
    • Función agregada como operando
SAP NW ABAP Expresiones condicionales (CASE) Extensibilidad Asociaciones (no administradas)
7.40 SP05
  • CASO "simple" (se comporta como una instrucción de cambio)
  • Sentencias CASE anidadas
  • $ EXTENSION. * (Soporte para extensiones de tabla de base de datos)
  • Expresiones de ruta en
    • SELECCIONAR lista
    • Cláusula FROM
    • Dónde cláusula
    • TENIENDO cláusula
  • Condiciones de filtro en expresiones de ruta, p. Ej., Products._Texts [lagu = 'EN'] como english_name
7.40 SP08
  • CASO "buscado" (se comporta como si ... si no)
  • AMPLIAR VISTA
7,50
  • Las expresiones CASE se pueden utilizar como operandos en funciones CAST
  • EXTENDER VISTA con parámetros de entrada, expresiones de ruta, conversiones, funciones de fecha y hora
7.51
  • Función como valor RHS
  • EXTEND VIEW con funciones agregadas, cláusulas GROUP BY y UNIONs
  • Definiciones de asociación en vistas con UNION
  • Filtros predeterminados para asociaciones (CON FILTRO PREDETERMINADO)
  • La cardinalidad "a muchos" (* :) se puede especificar en los filtros de ruta
SAP NW ABAP Variables de sesión Parámetros de entrada Otro
7.40 SP05
  • Elementos clave
7.40 SP08
  • parámetros de entrada en la mayoría de las bases de datos
7,50
  • $ session.user (sy-uname)
  • $ session.client (sy-mandt)
  • $ session.system_language (sy-langu)
  • Parámetros de entrada en AnyDB
  • Función de tabla (solo SAP HANA)
7.51
  • $ session.system_date (sy-datum)
  • Extensiones de metadatos

Tablas internas en ABAP

Las tablas internas son una característica importante del lenguaje ABAP. Una tabla interna se define de manera similar a un vector de estructuras en C ++ o un vector de objetos en Java. La principal diferencia con estos lenguajes es que ABAP proporciona una colección de declaraciones para acceder y manipular fácilmente el contenido de las tablas internas. Tenga en cuenta que ABAP no admite matrices; la única forma de definir un objeto de datos de varios elementos es utilizar una tabla interna.

Las tablas internas son una forma de almacenar conjuntos de datos variables de una estructura fija en la memoria de trabajo de ABAP y proporcionan la funcionalidad de matrices dinámicas. Los datos se almacenan fila por fila, donde cada fila tiene la misma estructura.

Las tablas internas se utilizan preferiblemente para almacenar y formatear el contenido de las tablas de la base de datos desde dentro de un programa. Además, las tablas internas en relación con las estructuras son un medio importante para definir estructuras de datos complejas en un programa ABAP.

El siguiente ejemplo define una tabla interna con dos campos con el formato de la tabla de base de datos VBRK.

* First define structured type
TYPES: BEGIN OF t_vbrk,
         VBELN TYPE VBRK-VBELN,
         ZUONR TYPE VBRK-ZUONR,
       END OF t_vbrk.

* Now define internal table of our defined type t_vbrk
DATA : gt_vbrk TYPE STANDARD TABLE OF t_vbrk,
       gt_vbrk_2 TYPE STANDARD TABLE OF t_vbrk.   "easy to define more tables

* If needed, define structure (line of internal table)
* Definition with type or with reference to internal table:
DATA : gs_vbrk TYPE t_vbrk,
       gs_vbrk_2 LIKE LINE OF gt_vbrk_2.

* You can also define table type if needed
TYPES tt_vbrk TYPE STANDARD TABLE OF t_vbrk.

Historia

La siguiente lista solo ofrece una descripción general aproximada de algunos hitos importantes en la historia del lenguaje ABAP. Para obtener más detalles, consulte ABAP: cambios específicos de la versión .

Versión Fecha de lanzamiento Cambios principales
4.6C Mayo de 2000
  • Objetos ABAP
6,40 2004
7.0 2006
  • Cambiar marco / concepto de mejora
7.02
  • Expresiones como
    check lcl=>mi(1) + abs( -2 ) >= 3.
    
7,40 2012-11-29
  • "Código pushdown": utilice funciones avanzadas de la base de datos subyacente
  • Expresiones de constructor (NEW, VALUE, REF, CONV, CAST, EXACT, COND, SWITCH)
  • Interfaces de clases de prueba parcialmente implementadas
  • Expresiones de tabla
  • Existencia de línea de tabla interna / funciones de índice de línea
7.40 SP05 diciembre 2013
  • MOVE-CORRESPONDING para tablas internas
  • Expresión LET en expresiones constructoras
  • Operador CORRESPONDIENTE
  • Vistas de CDS
  • Procedimientos de base de datos administrada por ABAP
7.40 SP08 Septiembre de 2014
  • PARA expresiones
  • Operador constructor REDUCIR
  • Valor inicial para expresiones de constructor
  • GROUP BY para tablas internas
  • Filtrar expresiones y valores predeterminados para expresiones de tabla
  • Declaraciones en línea de SQL abierto después de la instrucción INTO
  • Métodos de interfaz opcionales
7,50 Noviembre de 2015
  • Nuevo tipo de datos integrado INT8
  • La expresión relacional ES INSTANCIA DE
  • Expresiones de host SQL abiertas
  • Expresiones SQL abiertas ROUND, CONCAT, LPAD, LENGTH, REPLACE, RIGHT, RTRIM y SUBSTRING
  • Expresiones de ruta SQL abiertas
  • Abra SQL SELECT UNION
  • Abrir subconsulta SQL INSERT FROM
7.51 Octubre de 2016
  • Enumeraciones
  • Expresiones de tabla comunes en Open SQL
  • Abra SQL / CDS CROSS JOIN
  • Manejo de clientes CDS
  • Extensiones de metadatos en CDS
  • Fecha y hora en Open SQL / CDS
  • Punto flotante en Open SQL / CDS
7.52 Septiembre de 2017
  • Clasificación virtual de tablas internas
7.54 Septiembre de 2019
  • Nuevos tipos de datos integrados
  • Nuevo tipo ABAP incorporado utclong
  • Asignaciones de cálculo
  • Lugares decimales en marcas de tiempo
  • Manejo de clientes
  • Extensiones de la INTOCláusula
  • Definición de asociaciones
  • Nueva función agregada STRING_AGG
  • Nuevas funciones integradas
  • Adición DISTINCTopcional en función agregadaCOUNT
  • Expresiones de ventana
  • Condiciones SQL revisadas
  • Jerarquías temporales
  • Nuevos navegadores de jerarquía
  • Expresiones agregadas en expresiones SQL
  • CAST Matriz revisada
  • Modo estricto en la verificación de sintaxis
  • Verificación de sintaxis para literales y constantes de host
  • Anotación para sugerencias de base de datos
  • Anotaciones para liberar elementos
  • Especificar entidades de CDS después USING
  • Comillas para esquemas lógicos
  • Adición in placede la Declaraciónlate numbering
  • Adición in class ... unique
  • Nombre externo de una acción
  • Control de campo estático
  • Nombre arbitrario para métodos de controlador
  • Grupo de comportamiento Sin excepciones
  • Lenguaje de manipulación de entidades
  • TYPE STRUCTURE FOR
  • Información de respuesta
  • Nombres de tipos absolutos
  • Servicio empresarial
  • Comprobaciones de autorización en actualizaciones
  • Tipo de mensaje implícito en IF_T100_DYN_MSG
  • Usar clases de prueba
  • Adición COMBINATION MODE OR|ANDde la DeclaraciónGRANT SELECT ON
  • Adición REDEFINITIONde la DeclaraciónGRANT SELECT ON
  • Predicado VOID
  • Adición IN SCENARIOde la DeclaraciónGRANT SELECT ON
  • Condición del aspecto genérico de la declaración DEFINE ROLE
  • Nueva variante INHERITING CONDITIONS FROM SUPER
  • Diferentes REPLACINGoperadores
  • Definición de un aspecto genérico
  • Restricciones de DCL para jerarquías de CDS de ABAP
  • Restricciones de DCL para entidades de vista de proyección transaccional
7.55 Septiembre de 2020
  • La instrucción interna ABAP EXPORT NAMETAB ya no se puede utilizar y provoca un error de tiempo de ejecución.
  • La declaración interna ABAP IMPORT NAMETAB todavía se admite parcialmente por razones de compatibilidad con versiones anteriores. Cualquier acceso a las entradas para los tipos de tabla DDIC conduce a un error de tiempo de ejecución. Cualquier otro acceso conduce a errores de ATC.
  • La antigua tabla de base de datos nativa DDNTF para descripciones de campo de etiqueta de nombre separadas ya no se admite y se eliminará.
  • Ahora es posible definir nuevas asociaciones con fuentes de datos externas en vistas de proyección de CDS.
  • Está disponible un nuevo tipo de vista CDS: la entidad de vista CDS.
  • El valor predeterminado del parámetro de perfil rdisp / max_alt_modes, que determina el número posible de sesiones ABAP por sesión de usuario, se mejoró de 6 a 16 y ahora es el mismo que el número máximo de sesiones ABAP por sesión de usuario.
  • En las asignaciones detrás de la adición NEXT del operador constructor REDUCE, los operadores de asignación de cálculo + =, + =, * =, / = o && =, se pueden usar ahora y se aplican las reglas respectivas.
  • Soporte de expresiones regulares compatibles con Perl
  • Reemplazos textuales
  • Nueva excepción detectable CX_SY_STRING_SIZE_TOO_LARGE
  • Opción de formato CURRENCY para números de coma flotante decimal
  • SQL: Nueva función agregada ALLOW_PRECISION_LOSS
  • SQL: especificación de marco de ventana opcional dentro de una función de ventana
  • SQL: Nuevas funciones de ventana FIRST_VALUE y LAST_VALUE
  • SQL: Nuevas funciones de conversión de fecha / hora para TIMESTAMPL, DATS y TIMS
  • SQL: Nuevas funciones de marca de tiempo UTCL_CURRENT, UTCL_ADD_SECONDS y UTCL_SECONDS_BETWEEN
  • SQL: nuevas funciones de fecha DATN_DAYS_BETWEEN, DATN_ADD_DAYS y DATN_ADD_MONTHS
  • SQL: Nuevas adiciones después de la cláusula ORDER BY: NULLS FIRST y NULLS LAST
  • SQL: Nuevas funciones agregadas MEDIAN, STDDEV, VAR, CORR y CORR_SPEARMAN
  • SQL: nueva función de conversión de geometría as_geo_json
  • Condiciones SQL revisadas
  • SQL: Nueva función de ventana NTILE
  • SQL: SELECT, INTO target: las variables del host ahora se pueden declarar en línea incluso cuando la cláusula FROM es dinámica
  • SQL: nuevas funciones de conversión de tipo to_clob y to_blob
  • SQL: nueva función de conversión de moneda conversión de moneda
  • SQL: la transmisión y los localizadores ahora se pueden usar en expresiones SQL
  • SQL: más tipos de datos permitidos en expresiones SQL elementales
  • SQL: opciones de carga de jerarquía
  • SQL: literales con tipo
  • SQL: nuevas funciones de cadena
  • SQL: adición a la cláusula UPDATE FROM
  • SQL: modo estricto de verificación de sintaxis
  • Acceso CDC: Verifique con el elemento ES [NO] INICIAL en una condición literal
  • Acceso a los CDC: omisión de la adición cuando
  • Acceso a los CDC: compruebe el nombre de usuario en las condiciones de usuario
  • Acceso a los CDC: tipos de datos
  • Acceso a los CDC: condiciones de omisión de aspecto
  • Declaración de excepciones CX_NO_CHECK

Ver también

Referencias

enlaces externos