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

SAPUI5 Archiarquitetura
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

  1. 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
  2. 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.

SAPComponente UI5

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 โ€“

  1. Eclipse (versรฃo Luna) estรก instalado no seu laptop
  2. 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/)
  3. 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:

SAPConfiguraรงรฃo UI5

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 o projeto de IU

Crie um projeto de aplicativo para SAPUI5 seguindo o assistente que abre. Veja a captura de tela abaixo.

Crie o projeto de IU

Insira o nome do projeto, deixe as demais seleรงรตes permanecerem iguais ร s sugeridas pelo assistente.

Crie o projeto de IU

Na captura de tela acima, existem 2 tipos de bibliotecas exibidas como botรตes de opรงรฃo

  1. sap.m
  2. 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.

Crie o projeto de IU

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.

Crie o projeto de IU

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-

Cรณdigo DisplayMonthView.view.xml

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.

SAP Servidor Gateway Netweaver

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

Crie um novo SAPAplicativo UI5

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

Cรณdigo fonte do arquivo PassNum.view.xml

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'.

Implantaรงรฃo do componente pai para SAP Servidor Gateway Netweaver

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

SAP Saรญda do servidor Netweaver Gateway

Clique no botรฃo 'Primeiro', janeiro deve ser exibido no componente filho.

SAP Saรญda do servidor Netweaver Gateway

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

Resuma esta postagem com: