SAPTutorial UI5 para iniciantes
O que รฉ a SAPUI5?
SAPUI5 รฉ um conjunto de bibliotecas para construir aplicativos da web responsivos que rodam em vรกrios dispositivos, como desktop, celular e tablet. SAPUI5 funciona em Conceito MVC para acelerar o ciclo de desenvolvimento criando dados, lรณgica de negรณcios e representaรงรฃo de dados separadamente na visualizaรงรฃo. Assim, o desenvolvimento da visualizaรงรฃo e do controlador pode ocorrer de forma independente para a criaรงรฃo de modelos (contรชineres de dados).
SAPUI5 รฉ o mais recente da sรฉrie de SAP Tecnologias de desenvolvimento de UI. A fim de fornecer integraรงรฃo web para o SAP Sistema ERP, SAP criou vรกrias tecnologias de desenvolvimento de UI, como BSP (pรกginas de servidor de negรณcios), PDK (kit de desenvolvimento de portal), Web Dynpro Java, Web Dynpro ABAP. E o sucessor do Web Dynpro ABAP รฉ SAPUI5.
SAPUI5 Archiarquitetura

SAPUI Archidiagrama de arquitetura
No acima Architecture, primeira caixa, ou seja, 'Dispositivos' indica os dispositivos nos quais os aplicativos UI5 sรฃo executados. Os aplicativos UI5 podem ser acessados โโpor meio de um aplicativo mรณvel ou qualquer navegador nesses dispositivos. Essa camada da arquitetura รฉ chamada de 'Camada de Apresentaรงรฃo'.
SAPAplicativos UI5 e serviรงos oData residem em SAP NetWeaver Gateway Server. Esta camada da arquitetura รฉ chamada de 'Camada de Aplicaรงรฃo'.
A lรณgica de negรณcios real รฉ implementada em SAP sistemas principais como ECC, CRM e BW, etc.โฆ A lรณgica de negรณcios pode ser implementada usando SAP programas e mรณdulos de funรงรฃo. SAP Dados transacionais e mestres residem em SAP sistemas. Esta camada da arquitetura รฉ chamada de 'Camada de Banco de Dados' ou 'Camada de Persistรชncia'.
SAPComponente UI5
Um Componente รฉ um pedaรงo de cรณdigo funcional que รฉ reutilizado sempre que necessรกrio. Existem 2 tipos de componentes fornecidos por SAPUI5
- Componentes de UI โ Representam uma interface de usuรกrio contendo elementos de UI. Eles sรฃo baseados na classe SPAUI5 chamada sap.ui.core.UIComponent
- Componentes sem rosto โ Estes nรฃo tรชm uma interface de usuรกrio. Eles sรฃo baseados em SAPClasse UI5 โโchamada sap.ui.core.Component
Essencialmente, um Componente รฉ uma pasta. Quando vocรช cria um novo SAPAplicativo UI5, vocรช poderรก ver uma estrutura de pastas criada em seu explorador de projetos como abaixo.
Neste aplicativo UI5, PassNum รฉ um componente. O arquivo Component.js รฉ obrigatรณrio para que o aplicativo UI5 se comporte como um componente. O arquivo Component.js รฉ o controlador do componente.
A seguir neste SAPUI5 Eclipse tutorial, aprenderemos como configurar SAPUI5.
SAPConfiguraรงรฃo UI5
Antes de comeรงarmos, vocรช precisa garantir que โ
- Eclipse (versรฃo Luna) estรก instalado no seu laptop
- SAP Ferramentas de Desenvolvimento para Eclipse Luna e instalado em seu eclipse (SAP Ferramentas de Desenvolvimento para Eclipse Lua - https://tools.hana.ondemand.com/luna/)
- SAP O painel de logon estรก instalado e vocรช tem acesso a SAP Sistema NetWeaver Gateway para implantaรงรฃo e teste nesta aplicaรงรฃo que iremos construir neste blog.
Depois que o aplicativo estiver completamente construรญdo, ele deverรก ficar assim:
Neste curso SAPGuia de tutoriais UI5, criaremos 2 componentes, nomeadamente Componente Pai e Componente Filho. Primeiro, criaremos o componente filho e depois o consumiremos no componente pai.
Vamos comeรงar a sujar as mรฃos.
Parte 1) Criar aplicativo filho
Nosso objetivo รฉ criar um componente filho que aceite um nรบmero de 1 a 12 e exiba o nome do mรชs. Por exemplo, recebe 3; deve exibir 'marรงo'.
Etapa 1) Crie o projeto de IU
Vรก em Arquivo->Novo->Outro->SAPDesenvolvimento de aplicativos UI5-> Projeto de aplicativo.
Crie um projeto de aplicativo para SAPUI5 seguindo o assistente que abre. Veja a captura de tela abaixo.
Insira o nome do projeto, deixe as demais seleรงรตes permanecerem iguais ร s sugeridas pelo assistente.
Na captura de tela acima, existem 2 tipos de bibliotecas exibidas como botรตes de opรงรฃo
- sap.m
- sap.ui.commons
Ao selecionar sap.m, vocรช estรก instruindo o assistente a criar um projeto de aplicativo UI5 cuja seรงรฃo de inicializaรงรฃo incluirรก automaticamente a biblioteca sap.m, destinada ร criaรงรฃo de um aplicativo da web responsivo.
A seguir neste SAP Tutorial FIORI, vocรช verรก abaixo a seรงรฃo do assistente onde vocรช precisa criar a Visualizaรงรฃo inicial. Uma visualizaรงรฃo inicial รฉ aquela que serรก renderizada primeiro quando o aplicativo for acessado.
Aqui vocรช precisa fornecer o nome da visualizaรงรฃo e selecionar o tipo de visualizaรงรฃo. SAPUI5 suporta 4 tipos de visualizaรงรฃo, conforme evidente na tela acima. Portanto, a UI de um SAPO aplicativo UI5 pode ser construรญdo usando Javascript ou XML ou JSON ou HTML, qualquer idioma com o qual vocรช se sinta confortรกvel.
Ao final do assistente, um novo projeto serรก criado e exibido na janela Project Explorer do Eclipse como abaixo.
Etapa 2) Cรณdigo Component.js
A seguir, vamos criar um arquivo Component.js e escrever o cรณdigo abaixo nele.
sap.ui.core.UIComponent.extend("DisplayMonth.Component", {
metadata: {
"name": "DisplayMonth",
"dependencies": {
"components": []}
},
createContent: function() {
var oViewData = {
component: this
};
var oView = sap.ui.view({
viewName: "DisplayMonth.displaymonth.DisplayMonthView",
type: sap.ui.core.mvc.ViewType.XML,
viewData: oViewData
});
return(oView);
},
init: function() {
// call super init (will call function "create content")
sap.ui.core.UIComponent.prototype.init.apply(this, arguments);
// always use absolute paths relative to our own component
// (relative paths will fail if running in the Fiori Launchpad)
var sRootPath = jQuery.sap.getModulePath("DisplayMonth");
},
});
Etapa 3) Cรณdigo Index.html
A seguir, vamos informar o arquivo index.html para carregar o Component.js em SAPUI5 quando o aplicativo รฉ acessado pelo navegador. Entรฃo escreva o cรณdigo abaixo no arquivo index.html.
<!DOCTYPE HTML>
<html>
<head>
// adding meta tags to tell IE browser to render the page in IE-edge mode.
<meta http-equiv="X-UA-Compatible" content="IE=edge">
// adding meta tag to tell eclipse to use UTF 8 as character encoding
<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/>
// Bootstrap script to tell ui5 designtime and runtime to use sap.m library, use //blue-crystal these and use complex binding syntax
<script src="resources/sap-ui-core.js"
id="sap-ui-bootstrap"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-xx-bindingSyntax="complex"
data-sap-ui-resourceroots='{"DisplayMonth": "./"}'>
</script>
<script>
sap.ui.getCore().attachInit(function() {
new sap.m.Shell({
app: new sap.ui.core.ComponentContainer({
height : "100%",
name : "DisplayMonth"
})
}).placeAt("content");
});
</script>
</head>
// start of body of SAPUI5 application. It contains a div element.
<body class="sapUiBody" role="application">
<div id="content"></div>
</body>
</html>
Etapa 4) Cรณdigo DisplayMonthView.view.xml
A seguir, vamos escrever o cรณdigo em nossa visualizaรงรฃo displaymonth que exibirรก o mรชs cujo nรบmero do mรชs รฉ recebido do componente pai.
<html:style>
#__xmlview1--id{
margin-left: 30rem;
margin-top: 9rem;
font-size: 6rem;
font-style: italic;
background-color: burlywood;
}
</html:style>
<App id="fioricontent">
<Page title="Child Component">
<content>
<Text id="id" xmlns="sap.m" text="{myModel>/monthname}"></Text>
</content>
</Page>
</App>
Depois de colar o cรณdigo acima, sua visualizaรงรฃo deverรก ficar semelhante a abaixo-
Etapa 5) Cรณdigo DisplayMonthView.controller.js
E finalmente, vamos escrever o cรณdigo do arquivo Controller do DisplayMonthView.
O cรณdigo รฉ escrito apenas no mรฉtodo de gancho onInit() deste controlador, portanto, colando aqui apenas o cรณdigo onInit(). O restante do arquivo รฉ gerado pela estrutura.
onInit : function() {
sap.ui.getCore().getEventBus().subscribe("exchange", "data",
function(channel, event, oEventData) {
jsonModel = new sap.ui.model.json.JSONModel({
monthumber : oEventData,
monthname : ''
});
// derive month name from month number
switch (jsonModel.oData.monthumber) {
case "1":
jsonModel.oData.monthname = 'January';
break;
case "2":
jsonModel.oData.monthname = 'February';
break;
case "3":
jsonModel.oData.monthname = 'March';
break;
case "4":
jsonModel.oData.monthname = 'April';
break;
case "5":
jsonModel.oData.monthname = 'May';
break;
case "6":
jsonModel.oData.monthname = 'June';
break;
case "7":
jsonModel.oData.monthname = 'July';
break;
case "8":
jsonModel.oData.monthname = 'August';
break;
case "9":
jsonModel.oData.monthname = 'September';
break;
case "10":
jsonModel.oData.monthname = 'October';
break;
case "11":
jsonModel.oData.monthname = 'November';
break;
case "12":
jsonModel.oData.monthname = 'December';
break;
}
this.getView().setModel(jsonModel, "myModel");
}, this);
},
Etapa 6) Implantaรงรฃo do aplicativo em SAP Servidor Gateway Netweaver
Implante o projeto e forneรงa o nome tรฉcnico da aplicaรงรฃo BSP que serรก gerada no servidor frontend ABAP. Deixe o nome ser zdisplaymรชs. Neste ponto, seu projeto de aplicativo deve ter a aparรชncia abaixo.
PARTE 2) Criando um componente pai
Agora รฉ a hora de criar um novo Componente (Componente Pai) que irรก consumir o Componente que criamos atรฉ agora neste tutorial.
Passo 1) Crie um novo SAPAplicativo UI5
Vรก em Arquivo->Novo->Outro->SAPDesenvolvimento de aplicativos UI5-> Projeto de aplicativo. Em seguida, siga as instruรงรตes do assistente para criar novos SAPProjeto de aplicativo UI5. Isso foi descrito em detalhes na Etapa 1 da Parte 1 deste tutorial acima.
O nome do projeto do componente pai รฉ Senha. E o nome tรฉcnico da aplicaรงรฃo BSP gerada apรณs a implantaรงรฃo do SAPO componente UI5 โโpara o servidor front-end ABAP รฉ zpassnum. A estrutura do projeto serรก semelhante a abaixo
Vamos agora escrever cรณdigo nos arquivos index.html, Component.js e PassNum.view.xml e PassNum.controller.js
Etapa 2) Cรณdigo-fonte de Index.html do componente pai
<!DOCTYPE HTML>
<html>
<head>
// adding meta tags to tell IE browser to render the page in IE-edge mode.
<meta http-equiv="X-UA-Compatible" content="IE=edge">
// adding meta tag to tell eclipse to use UTF 8 as character encoding
<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/>
// Bootstrap script to tell ui5 designtime and runtime to use sap.m library, use //blue-crystal these and use complex binding syntax
<script src="resources/sap-ui-core.js"
id="sap-ui-bootstrap"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-resourceroots='{"PassNum": "./"}'>
</script>
<script>
sap.ui.getCore().attachInit(function() {
new sap.m.Shell({
app: new sap.ui.core.ComponentContainer({
height : "100%",
name : "PassNum"
})
}).placeAt("content");
});
</script>
</head>
// start of Body of SAPUI5 application, Contains a div tag,
<body class="sapUiBody" role="application">
<div id="content"></div>
</body>
</html>
Etapa 3) Cรณdigo-fonte do arquivo Component.js do componente pai
sap.ui.core.UIComponent.extend("PassNum.Component", {
metadata: {
"name": "PassNum",
"dependencies": {
"components": []}
},
createContent: function() {
var oViewData = {
component: this
};
// Creating Reference of a PassNum XML view
var myView = sap.ui.view({
viewName: "PassNum.passnum.PassNum",
type: sap.ui.core.mvc.ViewType.XML,
viewData: oViewData
});
return(myView);
},
init: function() {
// call super init (this will call function "create content")
sap.ui.core.UIComponent.prototype.init.apply(this, arguments);
// ensure to use absolute paths relative to own component
// (running in the Fiori Launchpad, relative paths will fail)
var sRootPath = jQuery.sap.getModulePath("PassNum");
},
});
Etapa 4) Cรณdigo-fonte do arquivo PassNum.view.xml
<Page title="Parent Component"> <content> <VBox xmlns="sap.m" id="vboxid"> <items> <Button xmlns="sap.m" id="1" text="First" press="clickbutton" class="sapUiSmallMarginEnd"></Button> <Button xmlns="sap.m" id="2" text="Second" press="clickbutton" class="sapUiSmallMarginEnd"></Button> <Button xmlns="sap.m" id="3" text="Third" press="clickbutton" class="sapUiSmallMarginEnd"></Button> <Button xmlns="sap.m" id="4" text="Fourth" press="clickbutton" class="sapUiSmallMarginEnd"></Button> <Button xmlns="sap.m" id="5" text="Fifth" press="clickbutton" class="sapUiSmallMarginEnd"></Button> <core:ComponentContainer id="conpcontid" name="DisplayMonth" manifestFirst="true" component="zdisplaymonth"></core:ComponentContainer> </items> </VBox> </content> </Page>
Depois de usar o cรณdigo acima em sua visualizaรงรฃo, sua visualizaรงรฃo deverรก ser semelhante a abaixo
Etapa 5) Cรณdigo-fonte de PassNum.controller.js
Apenas o mรฉtodo onInit() foi alterado. Todo o resto neste arquivo permanece o mesmo
onInit: function() {
jQuery.sap.registerModulePath("DisplayMonth", "../zdisplaymonth");
},
clickbutton:function(oEvent)
{
sap.ui.getCore().getEventBus().publish("exchange",
"data", oEvent.oSource.sId.split("--")[1]);
}
Etapa 6) Implantaรงรฃo do componente pai para SAP Servidor Gateway Netweaver
Implante o aplicativo no servidor frontend ABAP e execute-o. Vocรช deve conseguir executรก-lo clicando com o botรฃo direito do mouse no projeto e clicando na opรงรฃo 'Executar no servidor ABAP'.
O URL abaixo serรก aberto no navegador Eclipse.
http://hostname:8000/sap/bc/ui5_ui5/sap/zpassnum/index.html
Copie o URL e execute-o no navegador real. No nome do host acima marcado em amarelo estรก o nome do host do seu servidor front-end ABAP.
saรญda
Clique no botรฃo 'Primeiro', janeiro deve ser exibido no componente filho.
Divirta-se criando aplicativos web bonitos e responsivos usando SAPUI5.
Resumo
Neste curso SAPTutorial UI5, aprendemos:
- SAPUI5 explorada: SAPUI5 รฉ o mais recente da sรฉrie de SAP Tecnologias de desenvolvimento de UI.
- O que รฉ a SAP IU5: SAPUI5 รฉ um conjunto de bibliotecas usadas para construir aplicativos da web responsivos
- Componentes de SAPA arquitetura UI5 sรฃo dispositivos, cliente, NetWeaver Gateway, camada de persistรชncia
- A SAPO componente UI5 โโรฉ um pedaรงo de cรณdigo funcional que รฉ reutilizado sempre que necessรกrio
- Tipos de SAPOs componentes UI5 sรฃo 1) Componentes UI, 2) Componentes Faceless
- Aprendemos como consumir um componente sapui5 em outro componente sapui5 e passar dados entre os dois componentes














