SAPTutorial UI5 para iniciantes
โก Resumo Inteligente
SAPUI5 รฉ SAPO framework HTML5 responsivo da [nome da empresa] impulsiona aplicaรงรตes web empresariais em dispositivos desktop, mรณveis e tablets. Este guia explica a arquitetura MVC, o modelo de componentes, as bibliotecas e como construir componentes pai e filho dentro do [nome da empresa]. Eclipse.

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 ArchiNa arquitetura, a primeira caixa, '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 de qualquer navegador. Essa camada รฉ chamada de 'Camada de Apresentaรงรฃo'.
SAPOs aplicativos UI5 e os serviรงos oData residem no SAP Servidor NetWeaver Gateway. Esta camada da arquitetura รฉ chamada de 'Camada de Aplicaรงรฃo'.
A lรณgica de negรณcios real รฉ implementada em SAP Sistemas centrais como ECC, CRM e BW. 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. Essa camada รฉ chamada de 'Camada de Banco de Dados' ou 'Camada de Persistรชncia'.
SAPComponente UI5
Um componente รฉ um trecho de cรณdigo reutilizรกvel. Existem dois tipos de componentes fornecidos por SAPIU5:
- Componentes de IU โ Representam uma interface de usuรกrio contendo elementos de IU. Sรฃo baseados em SAPClasse UI5 โโchamada sap.ui.core.UIComponent
- Componentes sem interface grรกfica โ Estes nรฃo possuem interface de usuรกrio. 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.
Nesta aplicaรงรฃo UI5, PassNum รฉ um componente. O arquivo Component.js รฉ obrigatรณrio para que uma aplicaรงรฃo UI5 se comporte como um 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 estรก instalado no seu Eclipse (SAP Ferramentas de Desenvolvimento para Eclipse Lua - https://tools.hana.ondemand.com/luna/)
- SAP O Logon Pad estรก instalado e vocรช tem acesso ao SAP Sistema NetWeaver Gateway para implantaรงรฃo e teste do aplicativo que vamos construir neste blog.
Depois que o aplicativo estiver completamente construรญdo, ele deverรก ficar assim:
Neste curso SAPNeste guia de tutoriais de UI5, criaremos dois componentes chamados Componente Pai e Componente Filho. Primeiro, criaremos o Componente Filho e, em seguida, o utilizaremos 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, ao receber o nรบmero 3, ele deverรก exibir "Marรงo".
Etapa 1) Crie o projeto de IU
Vรก em Arquivo->Novo->Outro->SAPDesenvolvimento de aplicaรงรตes UI5 -> Projeto de aplicaรงรฃo.
Crie um projeto de aplicativo para SAPUI5 seguindo o assistente. Veja a captura de tela abaixo.
Digite o nome do projeto e deixe as outras opรงรตes como sugeridas pelo assistente.
Na captura de tela acima, hรก 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 aplicativos da web responsivos.
A seguir neste SAP No tutorial do Fiori, vocรช verรก a seรงรฃo do assistente abaixo onde precisa criar a visualizaรงรฃo inicial. Uma visualizaรงรฃo inicial รฉ a primeira visualizaรงรฃo que serรก exibida quando o aplicativo for acessado.
Aqui vocรช precisa informar 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 linguagem com a qual vocรช se sinta confortรกvel.
Ao final do assistente, um novo projeto serรก criado e exibido na janela Explorador de Projetos. Eclipse como abaixo.
Etapa 2) Cรณdigo Component.js
Em seguida, 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
Em seguida, vamos instruir nosso arquivo index.html a carregar o Component.js quando o aplicativo for acessado. 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
Em seguida, vamos escrever o cรณdigo na nossa view displaymonth para exibir o mรชs cujo nรบmero foi 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 como abaixo.
Etapa 5) Cรณdigo DisplayMonthView.controller.js
E, finalmente, vamos escrever o cรณdigo do arquivo Controller do DisplayMonthView.
O cรณdigo estรก escrito apenas no mรฉtodo de gancho onInit(), portanto, somente ele estรก colado aqui. O restante do arquivo รฉ gerado pelo framework.
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 NetWeaver Gateway
Implante o projeto e atribua o nome tรฉcnico ao aplicativo BSP gerado no servidor front-end ABAP. Por exemplo, o nome serรก zdisplaymรชsSeu projeto deverรก ter a aparรชncia abaixo.
PARTE 2) Criando um componente pai
Agora รฉ hora de criar um novo componente (componente pai) que consumirรก o componente que criamos atรฉ agora neste tutorial.
Passo 1) Crie um novo SAPAplicativo UI5
Vรก em Arquivo->Novo->Outro->SAPUI5 Application Development -> Application Project. Em seguida, siga as instruรงรตes do assistente para criar um novo projeto. SAPProjeto de aplicativo UI5. Isso foi descrito em detalhes na Etapa 1 da Parte 1 deste tutorial acima.
O nome do projeto Componente pai รฉ Nรบmero da senhaO nome tรฉcnico da aplicaรงรฃo BSP gerada apรณs a implantaรงรฃo รฉ zpassnumA estrutura do projeto serรก semelhante ร seguinte.
Vamos agora escrever o cรณdigo nos arquivos index.html, Component.js, PassNum.view.xml e PassNum.controller.js.
Etapa 2) Fonte Code do arquivo 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>
Apรณs usar o cรณdigo acima em sua view, ela deverรก ficar como abaixo.
Etapa 5) Cรณdigo-fonte de PassNum.controller.js
Apenas o mรฉtodo onInit() foi alterado. Todo o resto neste arquivo permanece igual.
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 NetWeaver Gateway
Implante a aplicaรงรฃo no servidor front-end ABAP e execute-a. Vocรช poderรก executรก-la clicando com o botรฃo direito do mouse no projeto e selecionando a opรงรฃo "Executar no servidor ABAP".
O abaixo URL abrirรก em Eclipse navegador.
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 frontend ABAP.
saรญda
Clique no botรฃo 'Primeiro' e janeiro deverรก aparecer no componente filho.
Divirta-se criando aplicativos web bonitos e responsivos usando SAPUI5.














