ABAP/4
ABAP/4 é a linguagem criada pela SAP AG para a implementação e personalização de seu sistema R/3.
A tradução aproximada do acrônimo em inglês seria "A Business Application Programming language", versão 4.
É uma linguagem estruturada por blocos que se assemelha principalmente a uma combinação entre o PL/SQL da Oracle e o PL/I da IBM.
Contém um conjunto moderadamente rico de estruturas de dados; inteiros, números BCD "empacotados", strings, datas, horas, ...
Algumas ferramentas razoáveis de modularização que lidam tanto com sub-rotinas localizadas (chamadas FORM), quanto com funções encapsuladas definidas globalmente (chamadas FUNCTION MODULES).
Um conjunto um tanto limitado de operadores SQL; uma instrução select é representada por uma estrutura de loop, onde as operações são colocadas dentro do loop. Por exemplo, uma seleção típica seria assim:
select * from mytable where key like '25%'.
write: / mytable-key, mytable-value.
perform do_something using mytable-value.
endselect.
Os operadores são um tanto "limitados" no sentido de que não podem ser compostos diretamente para gerar coisas como joins internos ou externos; em vez disso, os select "loops" são aninhados um dentro do outro.
ABAP/4 contém algumas estruturas de controle altamente orientadas a eventos para relatórios. Por exemplo, eventos podem ser definidos para:
INITIALIZATION.
START-OF-SELECTION.
END-OF-SELECTION.
AT NEW-PAGE.
AT END-OF-PAGE.
Relatórios podem ser definidos com capacidades de drill-down, onde ao "clicar duas vezes" em uma linha em um relatório, o programa pode ser solicitado a mostrar um "sub-relatório" ou talvez executar um relatório ou transação independente.
Também são definidos eventos para automatizar o acesso a "bancos de dados lógicos", ou seja, percorrer seletivamente uma árvore hierárquica definida para um conjunto de tabelas relacionadas. Isso pode ser usado para fornecer (sem intervenção do programador) critérios adicionais de seleção e ordenação como parâmetros para relatórios.
ABAP/4 é uma linguagem compilada em bytes. A máquina virtual está bastante oculta à vista, mas dumps de memória podem ser examinados e parecem se assemelhar à linguagem de montagem IBM 370.
Operações que trabalham em tabelas terão que acessar o servidor do banco de dados; por eficiência, há a noção de uma "Tabela Interna", que é uma estrutura de matriz armazenada "localmente" no servidor de aplicação. O uso de tabelas internas reduz a carga na rede e no servidor de banco de dados, sendo altamente recomendado, pelo menos para quantidades moderadas de dados.
Alguns "pequenos idiomas" adicionais são usados para vincular o código ABAP/4 às definições de tela e ao código de controle de tela para ajudar a definir transações online.
Em conjunto com a linguagem de "controle de tela", o ABAP/4 é usado para implementar substancialmente toda a funcionalidade visível do sistema R/3. O "núcleo" do R/3 consiste em alguns (embora bastante grandes) programas escritos em C que interpretam o bytecode ABAP/4. Há tanta infraestrutura construída em torno disso que a maioria dos usuários e até mesmo muitos desenvolvedores provavelmente não estão cientes de onde está ou o que é o núcleo.
Introdução à programação ABAP/4 para SAP, Edição Revisada e Ampliada
Programação ABAP Avançada para SAP
Não é um guia tremendamente "avançado"; seria mais preciso caracterizá-lo como um guia "intermediário". Mas como sucessor de um livro de "introdução", presumivelmente tiveram que chamá-lo de "Avançado".
SAPscript
A maneira sempre complicada de gerar uma saída de relatório sofisticada nos sistemas R/3
SAPscript Made Easy 4.6
Não tenho certeza se faz sentido considerar que pode ser "feito facilmente", mas esta é uma documentação bastante definitiva da SAP...
Uma Introdução ao Alemão para Programadores ABAP/4
Visão geral da linguagem de programação ABAP/4
Amazon apresenta ABAP/4: Programando o Sistema SAP R/3