ABAP/4
ABAP/4 es el lenguaje creado por SAP AG para la implementación y personalización de su sistema R/3.
La traducción aproximada del acrónimo al inglés sería "A Business Application Programming language", versión 4.
Es un lenguaje estructurado por bloques que se asemeja principalmente a una combinación entre el PL/SQL de Oracle y el PL/I de IBM.
Contiene un conjunto moderadamente rico de estructuras de datos; enteros, números BCD "empaquetados", cadenas de caracteres, fechas, horas, ...
Algunas herramientas razonables de modularización que manejan tanto subrutinas localizadas (llamadas FORM), como funciones encapsuladas definidas globalmente (llamadas FUNCTION MODULES).
Un conjunto algo limitado de operadores SQL; una instrucción select se representa mediante una estructura de bucle, donde las operaciones se colocan dentro del bucle. Por ejemplo, una selección típica se vería así:
select * from mytable where key like '25%'.
write: / mytable-key, mytable-value.
perform do_something using mytable-value.
endselect.
Los operadores son algo "limitados" en el sentido de que no se pueden componer directamente para generar cosas como joins internos o externos; en su lugar, se anidan select "loops" uno dentro de otro.
ABAP/4 contiene algunas estructuras de control altamente orientadas a eventos para informes. Por ejemplo, se pueden definir eventos para:
INITIALIZATION.
START-OF-SELECTION.
END-OF-SELECTION.
AT NEW-PAGE.
AT END-OF-PAGE.
Los informes pueden definirse con capacidades de drill-down, donde al "hacer doble clic" en una línea en un informe, se puede solicitar al programa que muestre un "subinforme" o tal vez ejecutar un informe o transacción independiente.
También se definen eventos para automatizar el acceso a "bases de datos lógicas", es decir, recorrer selectivamente un árbol jerárquico definido para un conjunto de tablas relacionadas. Esto se puede utilizar para proporcionar (sin intervención del programador) criterios adicionales de selección y ordenación como parámetros para informes.
ABAP/4 es un lenguaje compilado en bytes. La máquina virtual está bastante oculta a la vista, pero se pueden examinar volcados de memoria, y parecen asemejarse al lenguaje ensamblador IBM 370.
Las operaciones que trabajan en tablas tendrán que acceder al servidor de la base de datos; por eficiencia, existe la noción de una "Tabla Interna", que es una estructura de matriz que se almacena "localmente" en el servidor de la aplicación. El uso de tablas internas disminuye tanto la carga en la red como en el servidor de la base de datos, y es muy recomendable, al menos para cantidades moderadas de datos.
Se utilizan algunos "pequeños lenguajes" adicionales para vincular el código ABAP/4 a las definiciones de pantalla y al código de control de pantalla para ayudar a definir transacciones en línea.
En conjunto con el lenguaje de "control de pantalla", ABAP/4 se utiliza para implementar sustancialmente toda la funcionalidad visible del sistema R/3. El "núcleo" de R/3 representa algunos (aunque bastante grandes) programas escritos en C que interpretan el bytecode ABAP/4. Hay tanta infraestructura construida alrededor de esto que la mayoría de los usuarios e incluso muchos desarrolladores probablemente no son conscientes de dónde está o qué es el núcleo.
Introducción a la programación ABAP/4 para SAP, Edición Revisada y Ampliada
Programación ABAP Avanzada para SAP
No es una guía tremendamente "avanzada"; sería más preciso caracterizarla como una guía "intermedia". Pero como sucesora de un libro de "introducción", presumiblemente tuvieron que llamarla "Avanzada".
SAPscript
La forma siempre complicada de generar una salida de informe sofisticada en sistemas R/3
SAPscript Made Easy 4.6
No estoy seguro de que tenga sentido considerar que se puede "hacer fácil", pero esta es una documentación bastante definitiva de SAP...
Una Introducción al Alemán para Programadores ABAP/4
Visión general del lenguaje de programación ABAP/4
Amazon presenta ABAP/4: Programando el Sistema SAP R/3
