Você está na página 1de 39

Treinamento Fiori

Back-end Service
ABAP Programming Model in S/4HANA
Odata (Open Data Protocol) 

• Conjunto de práticas recomendadas para criar e consumir APIs RESTful


• Usado para carregar componentes, métodos http e consumir dados;
• Oferece suporte completo a CRUD usando os diferentes métodos HTTP (GET, POST, PUT
DELETE);

Referências:
• https://www.progress.com/blogs/odata-faqs-w
hy-should-rest-api-developers-use-odata
• https://sandippatilprogrammer.wordpress.com/
2013/12/03/what-is-odata-advantages-and-disa
dvantages/
Odata (Open Data Protocol)  - Resposta da requisição

A) Cabeçalho da requisição REST


B) Status da Requisição (Exemplo HTTP 200 = sucesso)
C) Resultado da requisição (JSON)
Odata (Open Data Protocol)  - Resposta da requisição {
"d":{
"results":[
{
"Bukrs":"1000",
"Nome":"1000 - ALIMENTOS S/A"
},
{
"Bukrs":"1410",
"Nome":"1410 - Company Code 1410"
},
{
"Bukrs":"2000",
"Nome":"2000 - OUTRO"
},
{
"Bukrs":"3000",
C },
"Nome":"3000 – Empresa 30000"

{
"Bukrs":"4000",
"Nome":"4000 - MINERAÇAO"
},
{
"Bukrs":"9000",
"Nome":"9000 - M&C PARTIC. SOC. LTDA"
A) Cabeçalho da requisição REST },
{
B) Status da Requisição (Exemplo HTTP 200 = sucesso) "Bukrs":"9100",
C) Resultado da requisição (JSON) },
"Nome":"9100 - CAMPAI PART. SOC. EIREL"

{
"Bukrs":"9200",
"Nome":"9200 - MARJAM PART. SOC. EIREL"
}
]
}
}
Odata - Requesting Data – Exemplos de requisições
Requesting Data
Requesting EntitySet
GET https://services.odata.org/TripPinRESTierService/People
Requesting Single Entity by ID
GET https://services.odata.org/TripPinRESTierService/People('russellwhyte’ )

Requesting Single Property Value


GET https://services.odata.org/TripPinRESTierService/Airports('KSFO')/Name
Requesting a Single Primitive or Enum Type Property Raw Value
GET https://services.odata.org/TripPinRESTierService/Airports('KSFO')/Name/$value

Querying Data
System Query Option $filter
GET https://services.odata.org/TripPinRESTierService/People?$filter=FirstName eq 'Scott'

Referências:
• https://www.odata.org/odata-services/
Perguntas?
Arquitetura – SAP Fiori

SAP

Fiori APP
SAP Netweaver Gateway/SICF

Service/SEGW

UI5 Project
OData
Arquitetura – SAP Fiori Ambiente SAP Fiori Ambiente SAP ECC

Service/SEGW
Service/SEGW
/n/iwfnd/maint_service

UI5
Project OData SAP Netweaver
Gateway/SICF
Fiori APP
Criação do Gateway Service Builder – Data Model

1) Na transação
SEGW, criamos
um projeto de
Gateway Service
Builder
Criação do Gateway Service Builder – Data Model

Primeiro passo é a criação do Data Model


• Entity Type - É modelado os
campos dos serviços
• Associations – Utilizado para
realizar links associando um tipos,
criar dependências para otimizar
na chamada dos serviços (Ex:
Header e Itens)
• Entity Sets: Onde definimos as
querys que serão disponibilizados
nos serviços.
Criação do Gateway Service Builder – Data Model

Podemos criar o Data Model utilizando os


dicionários ABAP (Estrutura, tipo de tabele e
Tabela).
Criação do Gateway Service Builder – Data Model

Escolha o nome do
objeto, este nome será
utilizado na criação do
Entity Sets e na chamada
do serviço.
Criação do Gateway Service Builder – Data Model

Selecione os campos que


deseja passar no Odata.
O ideal é pensar nos
campos que faça sentido
no front-end.
Note que Mandt é um
campo importante dentro
do ABAP (Back-end), mas
geralmente não é enviado
para o Front-end
Criação do Gateway Service Builder – Data Model

Selecione os campos que


deseja passar no Odata.
O ideal é pensar nos
campos que faça sentido
no front-end.
Note que Mandt é um
campo importante dentro
do ABAP (Back-end), mas
geralmente não é enviado
para o Front-end
Json
Criação do Gateway Service Builder – Data Model

Na próxima tela,
escolhemos os campos
chaves.
Nesta parte é importante
escolher um campo que
será obrigatório na “tela
de seleção” do Front-end
Criação do Gateway Service Builder – Data Model

Após a geração do Entity Type, precisaremos habilitar os campos que serão utilizados
nos métodos CRUD do Odata.
Neste ponto também são habilitados os campos para System Query Options do Odata
($filter, $orderby, $count).
Criação do Gateway Service Builder – Data Model

Após a geração do
Entity Type,
precisaremos habilitar
os campos que serão
utilizados nos métodos
CRUD do Odata.
Criação do Gateway Service Builder – Habilitando o serviço
Dentro da transação /n/iwfnd/maint_service, iremos Inserir um novo serviço
Criação do Gateway Service Builder – Habilitando o serviço
Escolher qual Alias iremos consumir o serviço.
Criação do Gateway Service Builder – Habilitando o serviço
Nome do Serviço é composto pelo nome do projeto + _SRV
Selecione o link do nome do serviço técnico
Criação do Gateway Service Builder – Habilitando o serviço
Após passo anterior, selecione o pacote que deseja salvar o serviço e Selecione Ativar Oahth p/Serviço
Criação do Gateway Service Builder – Habilitando o serviço
Após ativar o serviço, podemos voltar na tela anterior e
realizar os testes na função SAP Gateway Client
Criação do Gateway Service Builder – Habilitando o serviço
Executando o serviço, podemos validar se está
funcionando no código HTTP = 200
Criação do Gateway Service Builder – Habilitando o serviço
Dentro da transação SICF, iremos validar se o serviço
está ativo para http externo ao SAP.
Criação do Gateway Service Builder – Re-definição dos Métodos

Todas as implementações de processos ABAP ficam non


Na classe de final DPC_EXT

Para realizar a
criação, iremos no
método escolhido >>
botão direito do mouse
>> Go to ABAP
Workbench
Criação do Gateway Service Builder – Re-definição dos Métodos

Após isso, iremos redefinir o método da classe de


serviço

Resultado da query entityset é sempre devolvido na


tabela ET_ENTITYSET
Criação do Gateway Service Builder – Re-definição dos Métodos

Resultado do GET
Criação do Gateway Service Builder – Re-definição dos Métodos

Resultado do GET, alterando a operação para “?$format=json”


Criação do Gateway Service Builder – Re-definição dos Métodos

Get passando “parâmetro” / (Get Entity)

Primeiro é feito seleção


do filtro na tabela
it_key_tab
O resultado é entregue
na workarea er_entity
Criação do Gateway Service Builder – Re-definição dos Métodos

Get passando “parâmetro” / (Get Entity) -


/sap/opu/odata/sap/ZPP_GSB001_SRV/UsuarioSet('CAST')
Criação do Gateway Service Builder – Re-definição dos Métodos

POST / CREATE_ENTITY
Criação do Gateway Service Builder – Re-definição dos Métodos

POST / CREATE_ENTITY

Precisamos passar os
valores nas estruturas
conforme foi modelado.

Normalmente é utilizado
no formato json (?
$format=json)
Criação do Gateway Service Builder – Re-definição dos Métodos

PUT + Parâmetro de seleção / UPDATE_ENTITY

Primeiro é feita a
validação na base
se o registro existe

Após validação é
atualizado no ERP.
Criação do Gateway Service Builder – Re-definição dos Métodos

PUT + Parâmetro de seleção / UPDATE_ENTITY


Criação do Gateway Service Builder – Re-definição dos Métodos

DELETE + Parâmetro de seleção / DELETE_ENTITY


Criação do Gateway Service Builder – Re-definição dos Métodos

DELETE + Parâmetro de seleção / DELETE_ENTITY


/sap/opu/odata/sap/ZPP_GSB001_SRV/UsuarioSet('POST123')
Obrigado!

www.castgroup.com.br

Você também pode gostar