ABAP Cloud: o que muda em relação ao ABAP clássico
O que é o ABAP Cloud, onde ele é obrigatório, o que deixa de existir em cada área do código, o que entra no lugar e o que continua permitido, ao contrário do que se costuma dizer.
ABAP Cloud não é outra linguagem. É o mesmo ABAP com um conjunto de regras que o tornam seguro para atualizações: o que a SAP não garante como estável simplesmente não existe para quem programa nele. Entender exatamente o que muda evita dois erros comuns: subestimar o trabalho de conversão e, no outro extremo, achar que "nada do que fazemos hoje funciona lá".
O que é ABAP Cloud
A SAP define o ABAP Cloud por quatro regras:
- a versão de linguagem "ABAP for Cloud Development", uma versão enxuta do ABAP, sem os comandos obsoletos e sem o que depende do SAP GUI ou do servidor;
- só objetos liberados: da SAP, o código usa apenas o que ela publica como API, com contrato de estabilidade;
- só o ABAP Development Tools (ADT), no Eclipse: não há desenvolvimento pelo SAP GUI;
- o RAP (ABAP RESTful Application Programming Model) como modelo para aplicações transacionais.
O que é "liberado", para quem e com que garantia está em Contratos de liberação de API: o que o C0, o C1, o C2, o C3 e o C4 garantem. Além do ABAP padrão e do ABAP Cloud, existe uma terceira versão de linguagem, ainda mais restrita: o ABAP for Key Users, usado pelos apps Fiori de extensibilidade, como Custom Logic e Custom CDS Views. Ela está em ABAP for Key Users: o que são os objetos de Key User e onde eles entram no Clean Core.
Onde ele é obrigatório
| Produto | ABAP Cloud |
|---|---|
| SAP BTP ABAP Environment e S/4HANA Cloud Public Edition | Obrigatório: o ABAP clássico não existe |
| S/4HANA on-premise e Private Edition, desde 2022 | Opcional e recomendado: convive com o clássico, objeto por objeto |
No S/4HANA on-premise, cada objeto tem a sua versão de linguagem. Um sistema pode ter código clássico antigo e código novo em ABAP Cloud lado a lado, e a conversão pode ser feita aos poucos.
Quem impede o uso do que não é permitido
No ABAP Cloud, a regra não depende de alguém rodar o ATC: quem barra é a verificação de sintaxe. Um objeto que usa algo não liberado, ou um comando que não existe na versão de linguagem, não ativa. No acesso dinâmico, como uma chamada montada em tempo de execução, a verificação acontece na execução, com erro em tempo de execução. O ATC continua útil para avaliar o código clássico antes da conversão, apontando o que impediria a troca.
O que muda, área por área
Tipos de objeto
| No ABAP clássico | No ABAP Cloud |
|---|---|
Programa executável (REPORT), module pool, INCLUDE, type pool |
Não existem. Só classes, interfaces e grupos de função |
| Dynpro, tela de seleção, GUI status, transação SAP GUI | Não existem. A interface é Fiori sobre RAP |
| Ajuda de pesquisa do dicionário | Não existe. Ajuda de pesquisa baseada em CDS |
CDS no formato antigo (define view) |
Obsoleta: a SAP só evolui a view entity, que é o formato a usar |
| User exit, ampliação implícita ou explícita | Não existem. Só BAdI liberado |
Grupos de função e módulos de função próprios continuam permitidos, sem o parâmetro TABLES.
Interface e listas
Todo o mundo do SAP GUI fica de fora: WRITE e listas, TOP-OF-PAGE, AT LINE-SELECTION, PARAMETERS, SELECT-OPTIONS, START-OF-SELECTION, CALL SCREEN, SET PF-STATUS e afins. A interface passa a ser Fiori, com o RAP expondo os dados por um serviço OData. ALV, seja por REUSE_ALV_* ou por CL_SALV_TABLE, também não está disponível.
Chamada de programas
SUBMIT, CALL TRANSACTION e LEAVE TO TRANSACTION não existem. Processamento em fundo vira application job (catálogo e template de job), e reaproveitamento de lógica passa a ser por classes.
Banco de dados
| No ABAP clássico | No ABAP Cloud |
|---|---|
SQL nativo (EXEC SQL), cursores, CALL DATABASE PROCEDURE |
Não existem. ABAP SQL e AMDP |
CLIENT SPECIFIED, USING CLIENT (acesso a outro mandante) |
Não existem: cada programa vê só o próprio mandante |
| Leitura de qualquer tabela da SAP | Só por CDS liberadas, como I_Product no lugar da MARA e I_JournalEntry no lugar da BKPF |
| Tabelas próprias | Leitura e gravação continuam permitidas |
FOR ALL ENTRIES, BYPASSING BUFFER, WITH PRIVILEGED ACCESS e AMDP continuam permitidos. O AMDP precisa ser seguro para mandante e usar só objetos liberados.
Transação e atualização
- Update task (
CALL FUNCTION IN UPDATE TASK),SET UPDATE TASK LOCALePERFORM ON COMMITnão existem: a atualização é sempre local, no mesmo processo. COMMIT WORKcontinua permitido a quem controla a transação, mas não dentro do RAP: nos handlers e na fase de gravação, quem confirma é o próprio framework.
Paralelismo e RFC
| No ABAP clássico | No ABAP Cloud |
|---|---|
STARTING NEW TASK, tRFC |
Frameworks liberados: CL_ABAP_PARALLEL e o Background Processing Framework |
CALL FUNCTION DESTINATION com destino da SM59 |
Continua permitido, com o destino vindo de um arranjo de comunicação |
Programação dinâmica
- Geração de código (
GENERATE SUBROUTINE POOL,INSERT REPORT,READ REPORT) não existe. A SAP oferece as APIs XCO para gerar objetos. - Tokens dinâmicos continuam permitidos:
ASSIGNpor nome,CREATE OBJECTpor nome de classe, chamada dinâmica de método eSELECTcom tabela dinâmica. A verificação de liberação é feita na execução. - RTTS (
CL_ABAP_TYPEDESCRe subclasses) continua permitido;DESCRIBEnão existe.
Serviços técnicos
Cada serviço clássico tem uma API liberada no lugar:
| Serviço | No ABAP clássico | No ABAP Cloud |
|---|---|---|
| Log de aplicação | BAL_LOG_CREATE, BAL_DB_SAVE |
CL_BALI_LOG |
| Faixa de numeração | NUMBER_GET_NEXT |
CL_NUMBERRANGE_RUNTIME |
SO_NEW_DOCUMENT_ATT_SEND_API1, CL_BCS |
CL_BCS_MAIL_MESSAGE |
|
| Bloqueio | Chamada direta de ENQUEUE_* |
CL_ABAP_LOCK_OBJECT_FACTORY |
| Documento de modificação | CHANGEDOCUMENT_OPEN |
CL_CHDO_WRITE_TOOLS |
| Jobs | JOB_OPEN, JOB_CLOSE |
Application job (CL_APJ_RT_API) |
| Formulários | Smart Forms, SAPscript | Adobe Forms, pelo Adobe Document Services |
| Planilha | Download pelo SAP GUI | XCO_CP_XLSX |
| Comunicação externa | Destinos na SM59 | Cenários e arranjos de comunicação |
| Manutenção de tabela | Visão de manutenção (SM30) | Objeto de business configuration e app de configuração |
Arquivos no servidor (OPEN DATASET) e upload ou download pelo SAP GUI ficam de fora.
Linguagem
O ABAP Cloud remove o que já era obsoleto e o que dependia do ambiente clássico:
- macros (
DEFINE), linha de cabeçalho em tabela interna,OCCURS,RANGES,MOVE,COMPUTE,REFRESH,CATCH SYSTEM-EXCEPTIONS, bancos lógicos e extratos; MESSAGEsó comINTO: a mensagem chega ao usuário por exceção, pelo RAP ou pelo log de aplicação;BREAK-POINTno código (oASSERTcontinua permitido);GET TIMEeSET LANGUAGE: data e hora vêm deGET TIME STAMPeCL_ABAP_CONTEXT_INFO;- a maior parte dos campos de sistema: os oficiais incluem
sy-subrc,sy-tabix,sy-index,sy-uname,sy-languesy-mandt; - rotinas de conversão: só
ALPHAeISOLA.
FORM e PERFORM ainda compilam, mas a SAP os marca como obsoletos, suportados só temporariamente.
O que continua permitido, ao contrário do que se costuma dizer
- criar e chamar módulos de função próprios;
- RFC síncrono, com destino de arranjo de comunicação;
COMMIT WORKfora do RAP;- AMDP;
- programação dinâmica e RTTS;
CALL TRANSFORMATIONcom XSLT e Simple Transformations;- ler e gravar tabelas próprias;
AUTHORITY-CHECKcom objetos de autorização liberados ou próprios;FOR ALL ENTRIESeWITH PRIVILEGED ACCESS.
Mudou entre releases
A versão de linguagem evolui. Do S/4HANA 2023 (ABAP 7.58) para o 2025, passaram a ser permitidos, entre outros, WAIT UP TO, a chamada de função IN REMOTE SESSION e conexões secundárias de banco, desde que abertas por um objeto de conexão. Antes de descartar uma técnica, vale conferir a documentação do release em uso.
Como o ABAP Cloud convive com o clássico
No S/4HANA on-premise e Private Edition, os dois coexistem:
- o código clássico chama qualquer coisa, inclusive objetos ABAP Cloud;
- o código ABAP Cloud chama objetos liberados da SAP e objetos Z do mesmo componente de software. Para chamar um objeto clássico de outro componente, esse objeto precisa estar liberado com o contrato C1, que é o papel de um wrapper.
Os detalhes dessa regra estão em Componentes de software no ABAP Cloud: quem pode chamar quem. Para o efeito disso no painel do SAP Cloud ALM, veja Por que um programa com tela clássica para no nível B.
Fontes
- SAP Help, ABAP Keyword Documentation, Language Elements in ABAP Versions (S/4HANA 2025 e 7.58) e a documentação de ABAP for Cloud Development.
- SAP Help, SAP BTP ABAP Environment: tipos de objeto, application jobs, formulários, comunicação e business configuration.
- SAP Community, ABAP Cloud FAQ.
- Thomas Schneider (SAP), ABAP Language Versions – FAQs, SAP Community.
- SAP, Cloudification Repository (GitHub SAP/abap-atc-cr-cv-s4hc).