ABAP - ABAP

ABAP / 4
Paradigma Orientado a objetos , estruturado , imperativo
Projetado por SAP SE
Apareceu pela primeira vez 1983 ; 38 anos atrás ( 1983 )
Versão estável
7.55 / 2 de setembro de 2020 ; 11 meses atrás ( 2020-09-02 )
Disciplina de digitação Estático , forte , seguro , nominativo
SO Plataforma cruzada
Local na rede Internet scn .sap .com / community / abap% 20scn .sap .com / community / abap
Implementações principais
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ão para "processador de preparação de relatório geral") é uma linguagem de programação de alto nível criada pela empresa de software alemã SAP SE . Atualmente se posiciona, ao lado do Java , como a linguagem de programação do SAP NetWeaver Application Server , que faz parte da plataforma SAP NetWeaver para construção de aplicativos de negócios.

Introdução

ABAP é uma das muitas linguagens de quarta geração específicas de aplicativos ( 4GLs ) desenvolvidas pela primeira vez na década de 1980. Era originalmente a linguagem de relatório para SAP R / 2 , uma plataforma que permitia que grandes corporações criassem aplicativos de negócios de mainframe para gerenciamento de materiais e contabilidade financeira e gerencial. ABAP estabelece integração entre software independente.

ABAP costumava ser uma abreviatura de A llgemeiner B erichts- A ufbereitungs- P rozessor , alemão para "processador de preparação relatório genérico", mas mais tarde foi renomeado para o Inglês A dvanced B usiness A APLICAÇÃO P ROGRAMAÇÃO . ABAP foi uma das primeiras linguagens a incluir o conceito de Bancos de Dados Lógicos (LDBs), que fornece um alto nível de abstração a partir do (s) nível (is) básico (s) de banco de dados, que suporta todas as plataformas, linguagens e unidades.

A linguagem ABAP foi originalmente usada por desenvolvedores para desenvolver a plataforma SAP R / 3 . Ele também foi planejado para ser usado por clientes SAP para aprimorar os aplicativos SAP - os clientes podem desenvolver relatórios personalizados e interfaces com programação ABAP. A linguagem foi voltada para clientes mais técnicos com experiência em programação.

ABAP continua sendo a linguagem para a criação de programas para o sistema cliente-servidor R / 3 , que a SAP lançou pela primeira vez em 1992. Conforme o hardware do computador evoluiu na década de 1990, cada vez mais aplicativos e sistemas SAP eram escritos em ABAP. Em 2001, todas as funções, exceto as mais básicas, eram escritas em ABAP. Em 1999, a SAP lançou uma extensão orientada a objetos para ABAP chamada ABAP Objects, junto com o R / 3 release 4.6.

A plataforma de desenvolvimento atual da SAP, NetWeaver, oferece suporte a ABAP e Java .

ABAP possui uma abstração entre os aplicativos de negócios, o sistema operacional e o banco de dados. Isso garante que os aplicativos não dependam diretamente de um servidor específico ou plataforma de banco de dados e possam ser facilmente transferidos de uma plataforma para outra.

SAP Netweaver atualmente é executado em UNIX ( AIX , HP-UX , Solaris , Linux ), Microsoft Windows , i5 / OS em IBM System i (anteriormente iSeries, AS / 400) ez / OS em IBM System z (anteriormente zSeries, S / 390). Os bancos de dados com suporte são HANA , SAP ASE (anteriormente Sybase), IBM DB2 , Informix , MaxDB , Oracle e Microsoft SQL Server (o suporte para Informix foi descontinuado no SAP Basis release 7.00).

Ambiente de execução ABAP

Todos os programas ABAP residem no banco de dados SAP. Eles não são armazenados em arquivos externos separados, como programas Java ou C ++. No banco de dados, todo o código ABAP existe em duas formas: código-fonte, que pode ser visualizado e editado com as ferramentas ABAP Workbench; e código gerado, uma representação binária um tanto comparável ao bytecode Java . Os programas ABAP são executados sob o controle do sistema de tempo de execução, que faz parte do kernel SAP. O sistema runtime é responsável pelo processamento das declarações ABAP, controlando a lógica do fluxo das telas e respondendo aos eventos (como um usuário clicar em um botão da tela); a este respeito, pode ser visto como uma máquina virtual comparável ao Java VM. Um componente chave do sistema de tempo de execução ABAP é a Interface de banco de dados, que transforma instruções ABAP independentes de banco de dados ("Open SQL") em instruções compreendidas pelo DBMS ("SQL nativo") subjacente. A interface do banco de dados trata de toda a comunicação com o banco de dados relacional em nome dos programas ABAP; Ele também contém recursos extras, como armazenamento em buffer de tabelas e dados acessados ​​com frequência na memória local do servidor de aplicativos.

Sistemas SAP e cenários

Todos os dados SAP existem e todos os softwares SAP são executados no contexto de um sistema SAP . Um sistema consiste em um banco de dados relacional central e um ou mais aplicativos ("instâncias") acessando os dados e programas neste banco de dados. Um sistema SAP contém pelo menos uma instância, mas pode conter mais, principalmente por motivos de dimensionamento e desempenho. Em um sistema com várias instâncias, os mecanismos de balanceamento de carga garantem que a carga seja distribuída uniformemente pelos servidores de aplicativos disponíveis.

As instalações do Web Application Server ( paisagens ) normalmente consistem em três sistemas: um para desenvolvimento; um para teste e garantia de qualidade; e um para produção. A paisagem pode conter mais sistemas (por exemplo, sistemas separados para teste de unidade e teste de pré-produção) ou pode conter menos (por exemplo, apenas desenvolvimento e produção, sem QA separado); no entanto, três é a configuração mais comum. Os programas ABAP são criados e passam primeiro por testes no sistema de desenvolvimento. Posteriormente, eles são distribuídos para os outros sistemas na paisagem. Essas ações ocorrem sob o controle do Sistema de Mudança e Transporte (CTS), que é responsável pelo controle de simultaneidade (por exemplo, evitando que dois desenvolvedores alterem o mesmo código ao mesmo tempo), gerenciamento de versão e implantação de programas no QA e sistemas de produção.

O Web Application Server consiste em três camadas: a camada de banco de dados; a camada de aplicação; e a camada de apresentação. Essas camadas podem ser executadas na mesma ou em diferentes máquinas físicas. A camada de banco de dados contém o banco de dados relacional e o software de banco de dados. O conhecimento da camada de aplicativo contém a instância ou instâncias do sistema. Todos os processos do aplicativo, incluindo as transações comerciais e o desenvolvimento ABAP, são executados na camada do aplicativo. A camada de apresentação trata da interação com os usuários do sistema. O acesso online aos servidores de aplicativos ABAP pode ser feito por meio de uma interface gráfica proprietária, chamada de "SAP GUI", ou por meio de um navegador da web.

Camadas de software

O software ABAP é implantado em componentes de software. Exemplos disso são:

  • SAP_BASIS é a camada de base técnica necessária em todos os sistemas ABAP.
  • SAP_ABA contém funcionalidades que são necessárias para todos os tipos de aplicativos de negócios, como parceiros de negócios e gerenciamento de endereços.
  • SAP_UI fornece a funcionalidade para criar aplicativos SAP UI5.
  • BBPCRM é um exemplo de aplicativo de negócios, neste caso, o aplicativo de CRM
  • SAP ABAP é uma linguagem de programação ERP.

Transações

Uma transação na terminologia SAP é a execução de um programa. A maneira normal de executar o código ABAP no sistema SAP é inserindo um código de transação (por exemplo, VA01 é o código de transação para "Criar pedido de venda"). As transações podem ser chamadas por meio de menus definidos pelo sistema ou específicos do usuário com base em funções. Eles também podem ser iniciados inserindo o código da transação diretamente em um campo de comando, que está presente em todas as telas do SAP. As transações também podem ser chamadas programaticamente por meio das instruções ABAP CALL TRANSACTION e LEAVE TO TRANSACTION. A noção geral de uma transação é chamada de Unidade Lógica de Trabalho (LUW) na terminologia SAP; a forma abreviada do código de transação é T-code .

Tipos de programas ABAP

Como em outras linguagens de programação, um programa ABAP é uma unidade executável ou uma biblioteca, que fornece código reutilizável para outros programas e não é executável independentemente.

ABAP distingue dois tipos de programas executáveis:

  • Relatórios
  • Pools de módulos

Os relatórios seguem um modelo de programação relativamente simples em que um usuário opcionalmente insere um conjunto de parâmetros (por exemplo, uma seleção em um subconjunto de dados) e o programa então usa os parâmetros de entrada para produzir um relatório na forma de uma lista interativa. O termo "relatório" pode ser um pouco enganador, pois os relatórios também podem ser projetados para modificar dados; a razão pela qual esses programas são chamados de relatórios é a natureza "orientada por lista" da saída que eles produzem.

Os pools de módulos definem padrões mais complexos de interação do usuário usando uma coleção de telas. O termo “tela” refere-se à imagem física real que o usuário vê. Cada tela também possui uma "lógica de fluxo", que se refere ao código ABAP implicitamente invocado pelas telas, que é dividido em uma seção "PBO" (Processo Antes da Saída) e "PAI" (Processo Depois da Entrada). Na documentação SAP, o termo “dynpro” (programa dinâmico) se refere à combinação da tela e sua lógica de fluxo.

Os tipos de programas não executáveis ​​são:

  • INCLUIR módulos
  • Pools de subrotina
  • Grupos de funções
  • Classes de objeto
  • Interfaces
  • Pools de tipo

Um módulo INCLUDE é incluído no momento da geração na unidade de chamada; é freqüentemente usado para subdividir programas grandes.
Os conjuntos de sub-rotinas contêm sub-rotinas ABAP (blocos de código incluídos por instruções FORM / ENDFORM e chamados com PERFORM).
Grupos de funções são bibliotecas de módulos de função independentes (incluídos em FUNCTION / ENDFUNCTION e chamados com CALL FUNCTION).
As classes e interfaces de objeto são semelhantes às classes e interfaces Java; o primeiro define um conjunto de métodos e atributos, o segundo contém definições de método "vazias", para as quais qualquer classe que implementa a interface deve fornecer código explícito.
Os pools de tipo definem coleções de tipos de dados e constantes.

Os programas ABAP são compostos de sentenças individuais (declarações). A primeira palavra em uma declaração é chamada de palavra-chave ABAP. Cada declaração termina com um ponto final. As palavras devem sempre ser separadas por pelo menos um espaço. As declarações podem ser recuadas como desejar. Com palavras-chave, adições e operandos, o sistema de tempo de execução ABAP não diferencia maiúsculas e minúsculas.

As declarações podem se estender além de uma linha. Você pode ter várias instruções em uma única linha (embora isso não seja recomendado). As linhas que começam com asterisco * na primeira coluna são reconhecidas como linhas de comentário pelo sistema de tempo de execução ABAP e são ignoradas. Aspas duplas (") indicam que o restante de uma linha é um comentário.

Ambiente de desenvolvimento

Existem duas maneiras possíveis de desenvolver em ABAP. A disponibilidade depende da liberação do sistema ABAP.

ABAP Workbench

O ABAP Workbench faz parte do sistema ABAP e é acessado via SAP GUI . Ele contém diferentes ferramentas para edição de programas. Os mais importantes são (os códigos de transação são mostrados entre parênteses):

  • Editor ABAP para escrever e editar relatórios, pools de módulos, includes e pools de sub-rotinas (SE38)
  • Dicionário ABAP para processamento de definições de tabela de banco de dados e recuperação de tipos globais (SE11)
  • Pintor de menus para projetar a interface do usuário (barra de menus, barra de ferramentas padrão, barra de ferramentas do aplicativo, atribuição de teclas de função) (SE41)
  • Pintor de tela para projetar telas e lógica de fluxo (SE51)
  • Construtor de função para módulos de função (SE37)
  • Construtor de classes para classes e interfaces de objetos ABAP (SE24)

O Object Navigator (transação SE80) fornece uma única interface integrada para essas várias ferramentas.

Ferramentas de desenvolvimento ABAP

O ABAP Development Tools ( ADT ), formalmente conhecido como "ABAP in Eclipse", é um conjunto de plugins para a plataforma Eclipse desenvolver ABAP.

Nesse cenário, o desenvolvedor ABAP instala as ferramentas necessárias em seu computador e trabalha localmente, enquanto uma sincronização contínua com o back-end é realizada.

Dicionário ABAP

O Dicionário ABAP contém todos os metadados sobre os dados no sistema SAP. Ele está intimamente ligado ao ABAP Workbench no sentido de que qualquer referência aos dados (por exemplo, uma tabela, uma visão ou um tipo de dados) será obtida do dicionário. Os desenvolvedores usam as transações do dicionário ABAP (diretamente ou por meio do SE80 Object Navigator dentro do ABAP Workbench) para exibir e manter esses metadados.

Quando um objeto de dicionário é alterado, um programa que faz referência ao objeto alterado fará referência automaticamente à nova versão na próxima vez em que o programa for executado. Como o ABAP é interpretado, não é necessário recompilar programas que fazem referência a objetos de dicionário alterados.

Segue uma breve descrição dos tipos mais importantes de objetos de dicionário:

  • As tabelas são contêineres de dados que existem no banco de dados relacional subjacente. Na maioria dos casos, existe uma relação de 1 para 1 entre a definição de uma tabela no Dicionário ABAP e a definição dessa mesma tabela no banco de dados (mesmo nome, mesmas colunas). Essas tabelas são conhecidas como "transparentes". Existem dois tipos de tabelas não transparentes: as tabelas "agrupadas" existem como entidades independentes no dicionário ABAP, mas são agrupadas em grandes tabelas físicas ("pools") no nível do banco de dados. As tabelas agrupadas geralmente são pequenas tabelas contendo, por exemplo, dados de configuração. As tabelas "agrupadas" são fisicamente agrupadas em "clusters" com base em suas chaves primárias; por exemplo, suponha que uma tabela agrupada H contém dados de "cabeçalho" sobre faturas de vendas, enquanto outra tabela agrupada D contém os itens de linha da fatura. Cada linha de H seria então fisicamente agrupada com as linhas relacionadas de D dentro de uma "tabela de cluster" no banco de dados. Esse tipo de armazenamento em cluster, que é projetado para melhorar o desempenho, também existe como funcionalidade nativa em alguns, embora não em todos, sistemas de banco de dados relacionais.
  • Os índices fornecem acesso acelerado aos dados da tabela para as condições de seleção usadas com frequência. Cada tabela SAP possui um "índice primário", que é criado implicitamente junto com a tabela e é usado para impor a exclusividade da chave primária. Índices adicionais (únicos ou não únicos) podem ser definidos; estes são chamados de "índices secundários".
  • As visualizações têm o mesmo propósito que no banco de dados subjacente: elas definem subconjuntos de colunas (e / ou linhas) de uma ou - usando uma condição de junção - várias tabelas. Como as visualizações são tabelas virtuais (elas se referem a dados em outras tabelas), elas não ocupam uma quantidade substancial de espaço.
  • Estruturas são tipos de dados complexos que consistem em vários campos (comparáveis ​​a struct em C / C ++).
  • Os elementos de dados fornecem o conteúdo semântico para uma tabela ou campo de estrutura. Por exemplo, dezenas de tabelas e estruturas podem conter um campo que fornece o preço (de um produto acabado, matéria-prima, recurso, ...). Todos esses campos podem ter o mesmo elemento de dados "PRICE".
  • Os domínios definem as características estruturais de um elemento de dados. Por exemplo, o elemento de dados PRICE pode ter um domínio atribuído que define o preço como um campo numérico com duas casas decimais. Os domínios também podem conter conteúdo semântico ao fornecer uma lista de valores possíveis. Por exemplo, um domínio "BOOLEANO" poderia definir um campo do tipo "caractere" com comprimento 1 e não diferencia maiúsculas de minúsculas, mas também restringiria os valores possíveis a "T" (verdadeiro) ou "F" (falso).
  • As ajudas de pesquisa (sucessores dos agora obsoletos "matchcodes") fornecem estratégias de pesquisa avançadas quando um usuário deseja ver os valores possíveis para um campo de dados. O tempo de execução ABAP fornece assistência implícita (listando todos os valores para o campo, por exemplo, todos os números de clientes existentes), mas as ajudas de pesquisa podem ser usadas para refinar essa funcionalidade, por exemplo, fornecendo pesquisas de clientes por localização geográfica, classificação de crédito, etc.
  • Os objetos de bloqueio implementam o bloqueio no nível do aplicativo ao alterar os dados.

Sintaxe ABAP

Esta breve descrição da sintaxe ABAP começa com o onipresente programa " Hello world ".

Olá Mundo

REPORT TEST.
WRITE 'Hello World'.

Este exemplo contém duas instruções: REPORTe WRITE. O programa exibe uma lista na tela. Nesse caso, a lista consiste em uma única linha "Hello World". A REPORTdeclaração indica que este programa é um relatório. Este programa pode ser um pool de módulos após a substituição da REPORTinstrução por PROGRAM.

Declarações encadeadas

Declarações consecutivas com uma primeira parte idêntica (mais à esquerda) podem ser combinadas em uma declaração "encadeada" usando o operador de cadeia :. A parte comum das declarações é escrita à esquerda dos dois pontos, as diferentes partes são escritas à direita dos dois pontos e separadas por vírgulas. O operador de dois pontos é anexado diretamente ao token anterior, sem espaço (o mesmo se aplica às vírgulas na lista de tokens, como pode ser visto nos exemplos abaixo).

O encadeamento é freqüentemente usado em WRITEinstruções. WRITEaceita apenas um argumento, então se, por exemplo, você quisesse exibir três campos de uma estrutura chamada FLIGHTINFO, você teria que codificar:

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

Encadear as declarações resulta em uma forma mais legível e mais intuitiva:

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

Em uma instrução em cadeia, a primeira parte (antes dos dois pontos) não se limita apenas ao nome da instrução. Toda a parte comum das instruções consecutivas pode ser colocada antes dos dois pontos. Exemplo:

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

pode ser reescrito de forma encadeada como:

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

Comentários

O ABAP tem 2 maneiras de definir o texto como um comentário :

  • Um asterisco (*) na coluna mais à esquerda de uma linha torna a linha inteira um comentário
  • As aspas duplas (") em qualquer lugar de uma linha transformam o resto da linha em um comentário

Exemplo:

***************************************
** 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
(...)

Espaços

O código em ABAP é sensível a espaços em branco.

x = a+b(c).

atribui à variável x a substring da variável a, começando de b com o comprimento definido pela variável c.

x = a + b( c ).

atribui à variável x a soma da variável a e o resultado da chamada ao método b com o parâmetro c.

Declarações ABAP

Em contraste com linguagens como C / C ++ ou Java, que definem um conjunto limitado de instruções específicas da linguagem e fornecem a maioria das funcionalidades por meio de bibliotecas, o ABAP contém uma grande quantidade de instruções integradas. Essas declarações tradicionalmente usavam estruturas semelhantes a frases e evitavam símbolos, tornando os programas ABAP relativamente prolixos. No entanto, em versões mais recentes da linguagem ABAP, um estilo terser é possível.

Um exemplo de sintaxe baseada em instrução (cuja sintaxe se origina em COBOL) versus sintaxe baseada em expressão (como em C / Java):

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

Tipos de dados e variáveis

ABAP fornece um conjunto de tipos de dados integrados. Além disso, cada estrutura, tabela, visão ou elemento de dados definido no Dicionário ABAP pode ser usado para digitar uma variável. Além disso, as classes de objetos e interfaces podem ser usadas como tipos.

Os tipos de dados integrados são:

Modelo Descrição
eu Inteiro
P Decimal compactado
F Ponto flutuante
N Caractere numérico
C Personagem
D Encontro: Data
T Tempo
X Hexadecimal (byte bruto)
CORDA String de comprimento variável
XSTRING Matriz de bytes brutos de comprimento variável

Variáveis ​​ou constantes de data (tipo D) contêm o número de dias desde 1º de janeiro de 1 DC. Variáveis ​​ou constantes de tempo (tipo T) contêm o número de segundos desde a meia-noite. Uma característica especial de ambos os tipos é que eles podem ser acessados ​​como inteiros e como cadeias de caracteres (com formato interno "AAAAMMDD" para datas e "hhmmss" para horas), que podem ser usados ​​para tratamento de data e hora. Por exemplo, o snippet de código abaixo calcula o último dia do mês anterior (nota: SY-DATUM é uma variável definida pelo sistema que contém a data atual):

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 as variáveis ​​ABAP devem ser declaradas explicitamente para serem usadas. Eles podem ser declarados com instruções individuais e digitação explícita ou, a partir do ABAP 7.40, inline com digitação inferida .

Declaração explicitamente digitada

Normalmente, todas as declarações são colocadas no topo do módulo de código (programa, sub-rotina, função) antes da primeira instrução executável; este posicionamento é uma convenção e não uma regra de sintaxe imposta. A declaração consiste no nome, tipo, comprimento (quando aplicável), modificadores adicionais (por exemplo, o número de decimais implícitos para um campo decimal compactado) e, opcionalmente, um 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 o uso de dois pontos para encadear instruções DATA consecutivas.

Declaração inline

Desde ABAP 7.40, as variáveis ​​podem ser declaradas inline com a seguinte sintaxe:

DATA(variable_name) = 'VALUE'.

Para este tipo de declaração, deve ser possível inferir o tipo estaticamente, por exemplo, pela assinatura do método ou estrutura da tabela do banco de dados.

Essa sintaxe também é possível em instruções OpenSQL:

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

Objetos ABAP

A linguagem ABAP oferece suporte à programação orientada a objetos , por meio de um recurso conhecido como "Objetos ABAP". Isso ajuda a simplificar os aplicativos e torná-los mais controláveis.

Os objetos ABAP são totalmente compatíveis com a linguagem existente, portanto, é possível usar instruções existentes e unidades de modularização em programas que usam objetos ABAP e também podem usar objetos ABAP em programas ABAP existentes. A verificação de sintaxe é mais forte em programas de objetos ABAP e algumas formas sintáticas (geralmente mais antigas) de certas instruções não são permitidas.

Os objetos formam uma cápsula que combina o personagem com o respectivo comportamento. Os objetos devem permitir aos programadores mapear um problema real e sua solução de software proposta individualmente. Objetos típicos em um ambiente de negócios são, por exemplo, 'Cliente', 'Pedido' ou 'Fatura'. Do Release 3.1 em diante, o Business Object Repository (BOR) do SAP Web Application Server ABAP contém exemplos de tais objetos. O modelo de objeto BOR será integrado a Objetos ABAP no próximo Release, migrando os tipos de objeto BOR para a biblioteca de classes ABAP. Uma introdução abrangente à orientação a objetos como um todo iria muito além dos limites desta introdução aos objetos ABAP. Esta documentação apresenta uma seleção de termos que são usados ​​universalmente na orientação a objetos e também ocorrem em objetos ABAP. Nas seções subsequentes, ele discute com mais detalhes como esses termos são usados ​​em objetos ABAP. O final desta seção contém uma lista de outras leituras, com uma seleção de títulos sobre orientação a objetos.

  • Objetos são instâncias de classes. Eles contêm dados e fornecem serviços. Os dados formam os atributos do objeto. Os serviços são conhecidos como métodos (também conhecidos como operações ou funções). Normalmente, os métodos operam em dados privados (os atributos ou estado do objeto), que são visíveis apenas para os métodos do objeto. Assim, os atributos de um objeto não podem ser alterados diretamente pelo usuário, mas apenas pelos métodos do objeto. Isso garante a consistência interna do objeto.
  • As classes descrevem objetos. Do ponto de vista técnico, os objetos são instâncias de tempo de execução de uma classe. Em teoria, qualquer número de objetos com base em uma única classe pode ser criado. Cada instância (objeto) de uma classe possui uma identidade única e seu próprio conjunto de valores para seus atributos.
  • Referências de objeto são endereços exclusivos que podem ser usados ​​para identificar e apontar para objetos em um programa. As referências de objeto permitem acesso aos atributos e métodos de um objeto.

Na programação orientada a objetos, os objetos geralmente têm as seguintes propriedades:

  • Encapsulamento - Objetos restringem a visibilidade de seus recursos (atributos e métodos) para outros usuários. Cada objeto possui uma interface, que determina como outros objetos podem interagir com ele. A implementação do objeto é encapsulada, ou seja, invisível fora do próprio objeto.
  • Herança - uma classe existente pode ser usada para derivar uma nova classe. As classes derivadas herdam os dados e métodos da superclasse. No entanto, eles podem substituir métodos existentes e também adicionar novos.
  • Polimorfismo - métodos idênticos (com nomes idênticos) se comportam de maneira diferente em classes diferentes. Em objetos ABAP, o polimorfismo é implementado redefinindo métodos durante a herança e usando construções chamadas interfaces.

Visualizações CDS

Os ABAP Core Data Services (ABAP CDS) são a implementação do conceito geral de CDS para AS ABAP. ABAP CDS permite definir modelos de dados semânticos no banco de dados central do servidor de aplicação. No AS ABAP, esses modelos podem ser definidos independentemente do sistema de banco de dados. As entidades desses modelos fornecem funções de acesso aprimoradas quando comparadas com tabelas e visualizações de banco de dados existentes definidas no Dicionário ABAP, tornando possível otimizar aplicativos baseados em Open SQL. Isso fica particularmente claro quando um AS ABAP usa um banco de dados SAP HANA, uma vez que suas características na memória podem ser implementadas de maneira ideal.

Os modelos de dados são definidos usando a linguagem de definição de dados (DDL) e a linguagem de controle de dados (DCL) fornecidas no ABAP CDS na sintaxe ABAP CDS. Os objetos definidos usando essas linguagens são integrados ao Dicionário ABAP e gerenciados aqui também.

O código-fonte do CDS só pode ser programado nas Ferramentas de Desenvolvimento ABAP (ADT) baseadas em Eclipse. A linguagem de definição de dados (DDL) e a linguagem de controle de dados (DCL) usam editores diferentes.

Recursos

SAP NW ABAP SQL Joins Operações de conjunto de SQL SELECIONE cláusulas
7,40 SP05
  • JUNÇÃO INTERNA
  • LEFT OUTER JOIN
  • DIREITO OUTER JOIN
  • UNIÃO
  • UNION ALL
  • ONDE
  • GRUPO POR
  • TENDO
  • COMO
7,40 SP08
7,50
7,51
  • CROSS JOIN
SAP NW ABAP Literais Operadores aritméticos Expressões condicionais
7,40 SP05
  • Na lista SELECT, por exemplo, literal como FieldName
  • Como valor RHS
  • +
  • -
  • Operadores booleanos
    • NÃO, E, OU
  • Operadores de comparação
    • ENTRE, =, <>, <,>, <=,> =, COMO
    • É [NÃO] NULO (somente na condição WHERE)
7,40 SP08
  • / (Divisão baseada em flutuação)
7,50
7,51
  • Funcionar como valor RHS
SAP NW ABAP Funções agregadas Funções numéricas Funções de string
7,40 SP05
  • AVG ([DISTINTO])
  • MAX
  • MIN
  • SOMA ([DISTINTO])
  • CONTAGEM ([DISTINTO])
  • CONTAR(*)
  • CEIL
  • MOD
  • SUBSTRING
  • LPAD
7,40 SP08
  • abdômen
  • DIV (divisão baseada em inteiro)
  • DIVISION (divisão baseada em decimal)
  • PISO
  • ARREDONDAR
  • CONCAT
  • SUBSTITUIR
7,50
  • CONCAT_WITH_SPACE
  • INSTR
  • DEIXOU
  • COMPRIMENTO
  • LTRIM
  • CERTO
  • RPAD
  • RTRIM
7,51
  • AVG ([AS]) para especificar o tipo de retorno
  • FLTP_TO_DEC
  • SUPERIOR
  • DIMINUIR
SAP NW ABAP Funções de string de byte Funções de data e hora Outras funções
7,40 SP05
  • CAST para tipos DDIC integrados, por exemplo, abap.fltp
7,40 SP08
  • COALESCE
  • CONVERSÃO DE MOEDA
  • CONVERSÃO 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
  • FUNDIDA
    • para elementos de dados, por exemplo, CHAR80
    • pode ser aninhado
7,51
  • ABAP_SYSTEM_TIMEZONE
  • ABAP_USER_TIMEZONE
  • TSTMP_TO_DATS
  • TSTMP_TO_TIMS
  • TSTMP_TO_DST
  • DATS_TIMS_TO_TSTMP
  • FUNDIDA
    • TIPO DE PRESERVAÇÃO
    • SSTRING para outros tipos
    • CLNT, LANG, TIMS, UNIT para elementos de dados do tipo CHAR e SSTRING
    • CHAR, SSTRING, NUMC para ACCP e vice-versa
    • Função agregada como operando
SAP NW ABAP Expressões condicionais (CASE) Extensibilidade Associações (não gerenciadas)
7,40 SP05
  • CASE "Simples" (se comporta como instrução switch)
  • Instruções CASE aninhadas
  • $ EXTENSION. * (Suporte para extensões de tabela de banco de dados)
  • Expressões de caminho em
    • SELECIONAR lista
    • Cláusula FROM
    • Cláusula WHERE
    • Cláusula HAVING
  • Condições de filtro em expressões de caminho, por exemplo, Products._Texts [lagu = 'EN'] como english_name
7,40 SP08
  • CASE "pesquisado" (se comporta como if ... else if)
  • ESTENDER VISUALIZAÇÃO
7,50
  • Expressões CASE podem ser usadas como operandos em funções CAST
  • EXTEND VIEW com parâmetros de entrada, expressões de caminho, conversões, funções de data e hora
7,51
  • Funcionar como valor RHS
  • EXTEND VIEW com funções agregadas, cláusulas GROUP BY e UNIONs
  • Definições de associação em visualizações com UNIONs
  • Filtros padrão para associações (COM FILTRO PADRÃO)
  • Cardinalidade "para muitos" (* :) pode ser especificada em filtros de caminho
SAP NW ABAP Variáveis ​​de sessão Parâmetros de entrada Outro
7,40 SP05
  • Elementos chave
7,40 SP08
  • parâmetros de entrada na maioria dos bancos de dados
7,50
  • $ session.user (sy-uname)
  • $ session.client (sy-mandt)
  • $ session.system_language (sy-langu)
  • Parâmetros de entrada em AnyDB
  • Função de tabela (somente SAP HANA)
7,51
  • $ session.system_date (sy-datum)
  • Extensões de metadados

Tabelas internas em ABAP

As tabelas internas são um recurso importante da linguagem ABAP. Uma tabela interna é definida de forma semelhante a um vetor de estruturas em C ++ ou um vetor de objetos em Java. A principal diferença com essas linguagens é que o ABAP fornece uma coleção de instruções para acessar e manipular facilmente o conteúdo das tabelas internas. Observe que ABAP não oferece suporte a matrizes; a única maneira de definir um objeto de dados de vários elementos é usar uma tabela interna.

As tabelas internas são uma forma de armazenar conjuntos de dados variáveis ​​de uma estrutura fixa na memória de trabalho do ABAP e fornecem a funcionalidade de matrizes dinâmicas. Os dados são armazenados linha por linha, onde cada linha tem a mesma estrutura.

As tabelas internas são preferencialmente usadas para armazenar e formatar o conteúdo das tabelas do banco de dados de dentro de um programa. Além disso, as tabelas internas em conexão com as estruturas são um meio importante de definir estruturas de dados complexas em um programa ABAP.

O exemplo a seguir define uma tabela interna com dois campos com o formato da tabela de banco de dados 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.

História

A lista a seguir fornece apenas uma visão geral aproximada sobre alguns marcos importantes na história da linguagem ABAP. Para obter mais detalhes, consulte ABAP - Mudanças específicas da versão .

Versão Data de lançamento Mudanças importantes
4,6C Maio de 2000
  • Objetos ABAP
6,40 2004
7,0 2006
  • Estrutura de troca / conceito de aprimoramento
7,02
  • Expressões como
    check lcl=>mi(1) + abs( -2 ) >= 3.
    
7,40 29/11/2012
  • "Pushdown de código" - use recursos avançados do banco de dados subjacente
  • Expressões de construtor (NEW, VALUE, REF, CONV, CAST, EXACT, COND, SWITCH)
  • Interfaces das classes de teste parcialmente implementadas
  • Expressões de tabela
  • Existência de linha de tabela interna / funções de índice de linha
7,40 SP05 dezembro de 2013
  • MOVE-CORRESPONDING para tabelas internas
  • Expressão LET em expressões de construtor
  • Operador CORRESPONDING
  • Visualizações CDS
  • Procedimentos de banco de dados gerenciado ABAP
7,40 SP08 Setembro de 2014
  • Expressões FOR
  • Operador construtor REDUZIR
  • Valor inicial para expressões de construtor
  • GROUP BY para tabelas internas
  • Expressões de filtro e valores padrão para expressões de tabela
  • Abra as declarações SQL inline após a instrução INTO
  • Métodos de interface opcionais
7,50 Novembro de 2015
  • Novo tipo de dados integrado INT8
  • Expressão relacional É INSTÂNCIA DE
  • Expressões de host SQL abertas
  • Abra as expressões SQL ROUND, CONCAT, LPAD, LENGTH, REPLACE, RIGHT, RTRIM e SUBSTRING
  • Expressões de caminho SQL aberto
  • Abrir SQL SELECT UNION
  • Abrir subconsulta SQL INSERT FROM
7,51 Outubro 2016
  • Enumerações
  • Expressões de tabela comuns em Open SQL
  • Abrir SQL / CDS CROSS JOIN
  • Manuseio de cliente CDS
  • Extensões de metadados em CDS
  • Data e hora em Open SQL / CDS
  • Ponto flutuante no Open SQL / CDS
7,52 Setembro de 2017
  • Classificação virtual de tabelas internas
7,54 Setembro de 2019
  • Novos tipos de dados integrados
  • Novo tipo ABAP integrado utclong
  • Atribuições de Cálculo
  • Casas decimais em carimbos de hora
  • Tratamento de clientes
  • Extensões da INTOCláusula
  • Definição de Associações
  • Nova Função Agregada STRING_AGG
  • Novas funções integradas
  • Adição DISTINCTopcional na função agregadaCOUNT
  • Expressões de janela
  • Condições SQL revisadas
  • Hierarquias Temporais
  • Navegadores de nova hierarquia
  • Agregar expressões em expressões SQL
  • CAST Matrix Revisada
  • Modo estrito na verificação de sintaxe
  • Verificação de sintaxe para literais e constantes de host
  • Anotação para dicas de banco de dados
  • Anotações para elementos de liberação
  • Especificando Entidades CDS Depois USING
  • Marcas de cotação para esquemas lógicos
  • Adição in placeda Declaraçãolate numbering
  • Adição in class ... unique
  • Nome externo de uma ação
  • Controle de campo estático
  • Nome arbitrário para métodos de manipulador
  • Pool de comportamentos sem exceções
  • Linguagem de manipulação de entidades
  • TYPE STRUCTURE FOR
  • Informação de Resposta
  • Nomes de tipo absoluto
  • Serviço Comercial
  • Verificações de autorização em atualizações
  • Tipo de mensagem implícita em IF_T100_DYN_MSG
  • Usando classes de teste
  • Adição COMBINATION MODE OR|ANDda DeclaraçãoGRANT SELECT ON
  • Adição REDEFINITIONda DeclaraçãoGRANT SELECT ON
  • Predicado VOID
  • Adição IN SCENARIOda DeclaraçãoGRANT SELECT ON
  • Condição de aspecto genérico da declaração DEFINE ROLE
  • Nova Variante INHERITING CONDITIONS FROM SUPER
  • REPLACINGOperadores Diferentes
  • Definição de um aspecto genérico
  • Restrições DCL para Hierarquias ABAP CDS
  • Restrições DCL para entidades de exibição de projeção transacional
7,55 Setembro de 2020
  • A instrução ABAP interna EXPORT NAMETAB não pode mais ser usada e leva a um erro de tempo de execução.
  • A instrução ABAP interna IMPORT NAMETAB ainda é parcialmente suportada por razões de compatibilidade com versões anteriores. Qualquer acesso a entradas para tipos de tabela DDIC leva a um erro de tempo de execução. Qualquer outro acesso leva a erros do ATC.
  • A antiga tabela de banco de dados nativa DDNTF para descrições de campo nametab separadas não é mais suportada e será excluída.
  • Agora é possível definir novas associações para fontes de dados externas em visualizações de projeção CDS.
  • Um novo tipo de visão CDS está disponível: a entidade de visão CDS.
  • O valor padrão do parâmetro de perfil rdisp / max_alt_modes, que determina o número possível de sessões ABAP por sessão de usuário, foi aprimorado de 6 para 16 e agora é igual ao número máximo de sessões ABAP por sessão de usuário.
  • Nas atribuições por trás da adição NEXT do operador construtor REDUCE, os operadores de atribuição de cálculo + =, + =, * =, / = ou && = podem ser usados ​​agora e as respectivas regras se aplicam.
  • Suporte de expressões regulares compatíveis com Perl
  • Substituições literais
  • Nova exceção capturável CX_SY_STRING_SIZE_TOO_LARGE
  • Opção de formatação CURRENCY para números de ponto flutuante decimal
  • SQL: Nova função de agregação ALLOW_PRECISION_LOSS
  • SQL: especificação de quadro de janela opcional em uma função de janela
  • SQL: novas funções de janela FIRST_VALUE e LAST_VALUE
  • SQL: Novas funções de conversão de data / hora para TIMESTAMPL, DATS e TIMS
  • SQL: novas funções de carimbo de data / hora UTCL_CURRENT, UTCL_ADD_SECONDS e UTCL_SECONDS_BETWEEN
  • SQL: novas funções de data DATN_DAYS_BETWEEN, DATN_ADD_DAYS e DATN_ADD_MONTHS
  • SQL: novas adições após a cláusula ORDER BY: NULLS FIRST e NULLS LAST
  • SQL: novas funções de agregação MEDIAN, STDDEV, VAR, CORR e CORR_SPEARMAN
  • SQL: Nova função de conversão de geometria as_geo_json
  • Condições SQL revisadas
  • SQL: Nova função de janela NTILE
  • SQL: SELECT, INTO target - as variáveis ​​do host agora podem ser declaradas in-line, mesmo quando a cláusula FROM é dinâmica
  • SQL: novas funções de conversão de tipo to_clob e to_blob
  • SQL: nova função de conversão de moeda conversão de moeda
  • SQL: streaming e localizadores agora podem ser usados ​​em expressões SQL
  • SQL: outros tipos de dados permitidos em expressões SQL elementares
  • SQL: opções de carregamento de hierarquia
  • SQL: literais digitados
  • SQL: novas funções de string
  • SQL: adição à cláusula UPDATE FROM
  • SQL: modo estrito de verificação de sintaxe
  • Acesso ao CDC: Verifique com o elemento IS [NOT] INITIAL em uma condição literal
  • Acesso ao CDC: desvio de adição quando
  • Acesso ao CDC: Verifique o nome do usuário nas condições do usuário
  • Acesso ao CDC: tipos de dados
  • Acesso ao CDC: condições de desvio de aspecto
  • Declaração de exceções CX_NO_CHECK

Veja também

Referências

links externos