Object Services – Parte 1
Olá abapeiros!
Como o próprio nome se refere, o ABAP101 tem por objetivo ajudar aqueles que estão se iniciando no mundo SAP/ABAP.
Apesar desta futura sequência de posts esperar que você possui conhecimentos em orientação a objetos, não quer dizer de forma alguma que ele trata de um assunto avançado.
ABAP Services nada mais são do que classes standard que disponibilizam serviços que o ABAP Objects não é capaz de realizar sozinho. Estes serviços são três:
- Serviço de Consulta: serve para consultar dados do banco.
- Serviço de Persistência: serve para atualizar dados do banco.
- Serviço de Transação (ou transacional): serve para manter o BD consistente (dentro das propriedades ACID).
Relembrando os tempos de Telecurso 2000,
“Vamos pensar um pouco…”
Sem o conhecimento ou uso de Object Services e utilizando ABAP procedural, como faríamos para:
1A) Consultar dados do banco?
Resposta: Ora, essa é bem fácil… Simplemente com o uso do comando SELECT.
2A) Atualizar dados do banco de dados
Resposta: Usando comandos como UPDATE, INSERT, DELETE e MODIFY.
3A) Gerenciar transações (aqui me refiro a transações de banco de dados)
Resposta: Comandos COMMIT WORK e ROLLBACK WORK.
Ainda sem o conhecimento ou uso de Object Services e mas utilizando ABAP Objects, como poderiamos fazer para:
1B) Consultar dados do banco?
Resposta: Criar uma classe Z com métodos para buscar dados. Basicamente seria o comando SELECT encapsulado no método e sofisticando um pouco um tratamento de exceção caso a consulta não tenha sucesso.
2B) Atualizar dados do banco de dados
Resposta: Criar uma nova classe Z ou utilizar a mesma, agora com métodos que encapsulam os comandos UPDATE, INSERT, DELETE e MODIFY.
3B) Gerenciar transações (aqui me refiro a transações de banco de dados)
Reposta: Essa creio que seja mais difícil de encontrar e ainda mais de gerar valor no código: encapsular os comandos COMMIT WORK e ROLLBACK.
Parando um pouco, pense por 1 minuto quais seriam as diferenças entre essas duas abordagens. Depois, de ler o post inteiro, comente com suas opiniões.
Agora sim, com o conhecimento de ABAP Objects, ABAP Services e deste post, como faríamos para:
1C) Consultar dados do banco?
Resposta: Utilizando as classes CL_OS_QUERY* e as interfaces IF_OS_QUERY*.
2C) Atualizar dados do banco de dados
Resposta: Utilizando classes persistentes e seus agentes.
3C) Gerenciar transações (aqui me refiro a transações de banco de dados)
Resposta: Utilizando as classes CL_OS_TRANSACTION* e as interfaces IF_OS_TRANSACTION*.
Claro, como o blog ABAP101 ajuda iniciantes em ABAP, lhe daremos a oportunidade de pesquisar, estudar, fuçar, programar por conta própria antes de começar a efetivamente colocar a mão na massa.
Veja as classes e interfaces citadas na transação SE24. Use o where-used na sua empresa ou no mini sap recentemente instalado no seu computador para saber quais objetos sap usam tais classes e interfaces. Consulte a documentação oficial, a SDN, aquele tal de google ou bing e se você quiser dar um passo além leia o livro próprio do assunto da SAP Press.
Um abraço, boa semana e aguardem pelo próximo post do assunto!