ABAP for Key Users: o que são os objetos de Key User e onde eles entram no Clean Core
A terceira versão de linguagem do ABAP, a dos apps Fiori de extensibilidade. O que cada app gera, o que esse código pode usar e fazer, como é transportado e como ele aparece nos níveis do Clean Core.
Quando se fala de Clean Core, a conversa costuma ficar entre o ABAP clássico e o ABAP Cloud. Existe uma terceira versão de linguagem, menos comentada e presente em quase todo S/4HANA: o ABAP for Key Users. É nela que fica o código criado pelos apps Fiori de extensibilidade, como Custom Logic e Custom CDS Views. Muitas empresas já têm dezenas desses objetos, com prefixo ZZ1_, sem saber direito o que eles são nem como contam no painel.
O que é o ABAP for Key Users
A SAP define três versões de linguagem para o ABAP no S/4HANA:
| Versão | Para quê | Onde se escreve |
|---|---|---|
| Standard ABAP | O ABAP clássico, sem restrição | SAP GUI ou ADT |
| ABAP for Cloud Development | Desenvolvimento com regras de nuvem: só APIs liberadas | ADT |
| ABAP for Key Users | Extensões feitas por key users, dentro do que a SAP oferece como ponto de extensão | Apps Fiori de extensibilidade |
O ABAP for Key Users é uma versão bem mais restrita que o ABAP Cloud. O código fica sempre dentro de métodos, e a versão é definida pelos próprios apps: ninguém escolhe ABAP for Key Users no ADT para um objeto produtivo. Ela existe no SAP BTP, no S/4HANA Cloud Public Edition e, desde 2022, no S/4HANA on-premise e Private Edition.
Os apps e o que cada um gera
| App | O que cria |
|---|---|
| Custom Fields | Campos novos em tabelas, telas, CDS, serviços e formulários da SAP |
| Custom Logic | A implementação de uma BAdI liberada, com o código escrito pelo key user |
| Custom CDS Views | CDS sobre CDS liberadas da SAP ou sobre outros objetos de Key User, para relatório, API ou reuso |
| Custom Business Objects | Um objeto de negócio próprio: tabelas, serviço OData, interface de usuário e lógica de validação |
| Custom Analytical Queries | Consultas analíticas sobre CDS de análise |
Um detalhe que pesa no Clean Core: nem todo objeto gerado por esses apps fica em ABAP for Key Users. Num S/4HANA 2023, as CDS do Custom CDS Views e as classes do Custom Logic estavam em ABAP for Key Users. Já as CDS geradas pelo Custom Business Objects, pelas Custom Analytical Queries e pelos campos personalizados estavam em Standard ABAP, no formato antigo de CDS. Para o painel, é a versão de linguagem do objeto que conta, não o app que o criou.
Os prefixos ZZ1_ e YY1_
Os objetos de Key User nascem com um prefixo próprio. No S/4HANA on-premise e Private Edition, ele é configurado na transação S_ATO_SETUP, junto com os pacotes de destino, e o mais comum é ZZ1_. Os rascunhos de sandbox usam outro prefixo, como ZZ9_. No S/4HANA Cloud Public Edition, o prefixo que costuma aparecer é YY1_.
O que um objeto de Key User pode usar
A regra é mais estreita que a do ABAP Cloud. Um objeto em ABAP for Key Users só pode usar:
- objetos liberados em C1 com a visibilidade Use in Key User Apps;
- objetos criados pelos apps de Key User e marcados para uso por outros apps de Key User.
Num S/4HANA 2023, a verificação de sintaxe deu estes resultados:
| O código de Key User lê... | Resultado |
|---|---|
CDS liberada para Key User e para Cloud (I_Product) |
Aceito |
CDS liberada só para Key User (I_BudgetEntryDocumentType) |
Aceito |
CDS liberada só para Cloud (ICA_FiscalYearVariant) |
Recusado: "The use of CDS Entity ... is not permitted" |
Classe liberada só para Cloud (CL_BALI_LOG) |
Recusado |
Tabela não liberada com sucessor (T001) |
Recusado, com a indicação "Use CDS Entity I_COMPANYCODE instead" |
| Objeto gerado por outro app de Key User (lido por uma classe de Custom Logic) | Aceito |
| CDS em ABAP for Key Users criada no ADT, só para teste, sem liberação | Recusado |
A última linha mostra uma diferença em relação ao ABAP Cloud. No ABAP Cloud, objetos Z do mesmo componente de software se enxergam sem contrato. No ABAP for Key Users, não: mesmo no mesmo pacote, um objeto criado fora dos apps precisa estar liberado para Key User. A regra de componentes do ABAP Cloud está em Componentes de software no ABAP Cloud: quem pode chamar quem, e as visibilidades em Contratos de liberação de API: o que o C0, o C1, o C2, o C3 e o C4 garantem.
O caminho contrário também tem limite: uma classe ABAP Cloud que tenta ler uma CDS liberada só para Key User é recusada. A SAP descreve as duas camadas como separadas, e com os objetos da SAP é assim que funciona. Com os objetos de Key User da própria empresa, no S/4HANA on-premise, um objeto ABAP Cloud do mesmo componente de software os leu sem liberação; de outro componente, vale a regra do C1. Objetos de ABAP Cloud podem ser liberados para Key User, mas o contrário não vale, com uma exceção: os campos personalizados podem ser usados pelo código ABAP Cloud.
O que a linguagem permite
O ABAP for Key Users tem uma lista curta de comandos, publicada pela SAP:
- permitidos: declarações (
DATA,TYPES,CONSTANTS,FIELD-SYMBOLS), controle de fluxo (IF,CASE,DO,WHILE,LOOP), tratamento de exceções (TRY,CATCH) e operações de texto (CONCATENATE,SPLIT,REPLACE,FIND); - com restrição:
SELECTsó em objetos permitidos;INSERT,MODIFY,DELETE,READeSORTsó em tabela interna;MESSAGEsó comINTO;RAISEsóEXCEPTION; - campos de sistema: só
sy-subrc,sy-tabix,sy-index,sy-dbcntesy-fdpos, e só para leitura.
Ficam de fora, entre outros: chamar módulo de função, AUTHORITY-CHECK, COMMIT WORK, CREATE OBJECT, gravar em tabela de banco, chamar BAdI, programação dinâmica e saída de lista. Na verificação de sintaxe, a mensagem é direta, por exemplo "AUTHORITY-CHECK" is not allowed in the current ABAP language version. ou Access to the field "SY-UNAME" is not permitted in the current ABAP language version.
Algumas expressões, como VALUE, NEW, CONV e COND, e também JOIN e FOR ALL ENTRIES, foram aceitas pela verificação de sintaxe, embora a tabela de elementos de linguagem da documentação 7.58 as marque como fora do ABAP for Key Users. Na dúvida, vale a verificação de sintaxe do sistema e a lista de comandos do SAP Help, não essa tabela.
Na lógica de uma BAdI, há ainda uma segunda trava: o contrato transacional da própria BAdI. Numa BAdI classificada como funcional, até um SELECT gera aviso de violação do contrato transacional, e uma gravação gera erro, antes mesmo da regra de versão de linguagem.
Transporte
No S/4HANA on-premise e Private Edition, a extensibilidade de Key User é ativada pela S_ATO_SETUP (Adaptation Transport Organizer):
- os itens nascem num pacote local, que não é transportado;
- o app Configure Software Packages define o pacote de desenvolvimento e a request de destino;
- o app Register Extensions for Transport registra cada item no pacote e na request. O key user não cria a request: alguém da TI cria por ele;
- na request, o item vai como objeto próprio (por exemplo
R3TR SCBOpara um Custom Business Object), junto com os objetos gerados.
No S/4HANA Cloud Public Edition, o transporte é feito pelos apps Export Software Collection e Import Collection.
Key User e os níveis do Clean Core
O white paper de Clean Core da SAP (edição de agosto de 2026) põe a extensibilidade de Key User no nível A: uma extensão é A quando usa só APIs e pontos de extensão liberados, feita com as ferramentas de Key User ou de desenvolvedor, cada uma na sua versão de linguagem. O mesmo documento recomenda começar pelas opções de Key User nas extensões acopladas ao sistema.
No painel, o retrato ainda não é tão simples:
- a ajuda do SAP Cloud ALM descreve os objetos de nível A como os feitos em ABAP for Cloud Development;
- o próprio white paper avisa, em nota, que o indicador de objetos de nível A do painel do RISE with SAP ainda não considera objetos de Key User;
- o ATC classifica itens de Key User como não prontos para a nuvem. A nota SAP 3593439 os exclui do ATC por padrão, mas só a partir do S/4HANA 2023 SPS04;
- os objetos gerados em Standard ABAP (as CDS de Custom Business Objects, de campos e de consultas) seguem a regra do ABAP padrão: sem ocorrência, ficam no nível B.
Antes de contar com um objeto de Key User como nível A, vale conferir como ele aparece na exportação do Cloud ALM do próprio sistema.
Há também um uso prático para a adequação de código clássico. Um programa em ABAP padrão que lê uma CDS liberada só para Key User recebe ocorrência de nível C, porque para ele aquela CDS é um objeto interno. Uma Custom CDS View sobre a mesma CDS, criada no app Custom CDS Views e transportada pelo Adaptation Transport Organizer, não gera ocorrência: o check de uso de APIs não analisa objetos em ABAP for Key Users. Lida pelo programa clássico, ela é um objeto Z, e chamadas entre objetos Z não pontuam. Quando a alternativa liberada para uma tabela da SAP só existe para Key User, esse caminho tira a ocorrência C do programa em vez de só mudá-la de lugar.
Quando usar cada versão
| Necessidade | Caminho |
|---|---|
| Campo novo em processo da SAP | Custom Fields |
| Regra simples num ponto de extensão da SAP (validação, valor padrão, campo obrigatório) | Custom Logic, se a BAdI estiver liberada para Key User |
| Relatório ou API sobre dados da SAP | Custom CDS Views, ou CDS em ABAP Cloud quando a lógica crescer |
| Chamadas a APIs, gravação, autorização, integração, processamento em fundo | ABAP Cloud no ADT |
| Interface com tela do SAP GUI | ABAP clássico, com o teto do nível B (veja Por que um programa com tela clássica para no nível B) |
O ABAP for Key Users resolve bem o que é pequeno e próximo do processo. Quando a regra precisa de algo que a linguagem não permite, o passo seguinte é o ABAP Cloud. As diferenças estão em ABAP Cloud: o que muda em relação ao ABAP clássico.
Fontes
- SAP Help, ABAP Keyword Documentation 7.58: ABAP Language Versions, ABAP Language Versions, Release Contracts and Released APIs, glossário ABAP for Key Users e Language Elements in ABAP Versions.
- SAP Help, SAP S/4HANA Cloud Public Edition: Key User Extensibility, Custom Logic, Custom CDS Views, Custom Business Objects, Custom Analytical Queries, Custom Fields e Statements in ABAP for Key Users.
- SAP Help, SAP Cloud ALM: Extensibility (System View).
- SAP, Extend SAP S/4HANA in the cloud and on premise with ABAP based extensions (ABAP Extensibility Guide), versão 2.3, agosto de 2025.
- SAP, Clean core extensibility (white paper), edição de agosto de 2026, seções 3.3.4 e 4.3.3 e nota 29.
- Thomas Schneider (SAP), ABAP Language Versions – FAQs, SAP Community.
- Testes de verificação de sintaxe e consultas às tabelas de objetos de Key User num SAP S/4HANA 2023 (SAP_BASIS 758).