No ano passado
Estabeleci um caminho de aprendizagem para me atualizar com as ferramentas e técnicas de desenvolvimento da SAP que, apesar de estarem presentes há algum tempo, a zona de conforto era muito confortável para sair dela, até que veio o avanço e percebi que não queria ficar para trás. Depois de um ano, as coisas estão começando a dar frutos :), o que é ótimo.
Desta vez, quero falar sobre o Framework de Processamento de Objetos Empresariais (BOPF), que é outra forma de manter registros de banco de dados de forma orientada a objetos. Embora esta seja uma visão bastante simplista, o framework é capaz de fazer muito mais coisas, como lidar com autorizações ou até mesmo orquestrar o fluxo lógico do negócio do aplicativo. Pode ser integrado com várias tecnologias de IU, como UI5 ou Web Dynpro/FPM.
Seguindo meus últimos exemplos de modelagem de uma Loja de Música dentro da SAP, eu queria ver como poderia modelar isso em um Objeto Empresarial. Então, executei minha instância de VM com a Edição de Desenvolvedor do SAP AS ABAP 751, abri o Eclipse e criei um novo objeto empresarial.
O Eclipse tem este assistente pronto para criar BOs
Selecionei o pacote e dei um nome a ele. Estou fazendo uma criação manual aqui, mas veremos mais tarde que também é possível criar BOs a partir de ABAP CDS usando algumas anotações. Estou curioso para ver qual será o resultado final, então nomeei isso como "MANUAL" e mais tarde compararei este BO com um criado a partir de CDS para ver a diferença.
Na próxima tela, você é solicitado a definir uma estrutura persistente e uma estrutura transitória. A estrutura persistente será a definição da tabela do banco de dados, a estrutura transitória são apenas campos que podem ser calculados em tempo de execução, como detalhes de dados mestres que você não deseja ter duplicados em suas tabelas de banco de dados. Por simplificação, escolho criar apenas uma estrutura persistente.
Uma coisa muito boa sobre o ABAP 7.50 é que agora podemos definir estruturas, elementos de dados e domínios diretamente do Eclipse, adeus SE11!
Então, minha estrutura parece assim:
@EndUserText.label : 'Estrutura'
@AbapCatalog.enhancementCategory : #NOT_EXTENSIBLE
define type zinstruments_ps {
@EndUserText.label : 'Número de série do instrumento'
serialnumber : abap.char(10);
@EndUserText.label : 'Nome da empresa do instrumento'
builder : abap.char(35);
@EndUserText.label : 'Tipo de instrumento'
type : abap.char(30);
@EndUserText.label : 'Imagem do instrumento'
picture_url : abap.char(255);
@EndUserText.label : 'Preço do instrumento'
@Semantics.amount.currencyCode : 'zinstruments_ps.currency_code'
price : abap.curr(15,3);