SAPUI5 Урок за начинаещи

Какво е SAPUI5?

SAPUI5 е набор от библиотеки за изграждане на адаптивни уеб приложения, които работят на множество устройства като настолен компютър, мобилно устройство и таблет. SAPUI5 работи MVC концепция за ускоряване на цикъла на разработка чрез създаване на данни, бизнес логика и представяне на данни отделно в изгледа. Така че разработването на изглед и контролер може да се осъществи независимо за създаване на модели (контейнери за данни).

SAPUI5 е най-новият от поредицата SAP Технологии за разработка на UI. За да се осигури уеб интеграция за основния SAP ERP система, SAP излезе с множество технологии за разработка на UI като BSP (страници на бизнес сървър), PDK (комплект за разработка на портал), Web Dynpro Java, Web Dynpro ABAP. И наследникът на Web Dynpro ABAP е SAPUI5.

SAPUI5 Archiтекстура

SAPUI5 Archiтекстура
SAPUI5 Archiтекстура

SAPUI Archiтектурна диаграма

В горното Architecture, първото поле, т.е. „Устройства“ показват устройствата, на които работят UI5 приложения. Приложенията UI5 могат да бъдат достъпни чрез мобилно приложение или всеки браузър на тези устройства. Този слой на архитектурата се нарича „Презентационен слой“.

SAPUI5 приложенията и oData услугите се намират SAP NetWeaver Gateway сървър. Този слой на архитектурата се нарича „Приложен слой“.

Действителната бизнес логика е внедрена в SAP основни системи като ECC, CRM и BW и т.н.... Бизнес логиката може да бъде внедрена с помощта на SAP програми и функционални модули. SAP се намират транзакционните и основните данни SAP системи. Този слой на архитектурата се нарича „Слой на база данни“ или „Слой на устойчивост“.

SAPUI5 компонент

Компонентът е част от работещ код, който се използва повторно, когато е необходимо. Има 2 вида компоненти, предоставени от SAPUI5

  1. UI компоненти – Те представляват потребителски интерфейс, съдържащ UI елементи. Те са базирани на SPAUI5 клас, наречен sap.ui.core.UIComponent
  2. Безлични компоненти – Те нямат потребителски интерфейс. Те се основават на SAPUI5 клас, наречен sap.ui.core.Component

По същество компонентът е папка. Когато създавате нов SAPПриложение UI5, ще можете да видите структура на папки, създадена във вашия изследовател на проекти, както е показано по-долу.

SAPUI5 компонент

В това UI5 приложение PassNum е компонент. Файлът Component.js е задължителен, за да може приложението UI5 да се държи като компонент. Файлът Component.js е контролерът на компонентите.

Следващият в това SAPUI5 Eclipse урок, ще научим как да настроим SAPUI5.

SAPНастройка на UI5

Преди да започнем, трябва да се уверите, че –

  1. Eclipse (версия Luna) е инсталиран на вашия лаптоп
  2. SAP Инструменти за разработка за Eclipse Luna и инсталиран на вашето затъмнение (SAP Инструменти за разработка за Eclipse Луна - https://tools.hana.ondemand.com/luna/)
  3. SAP Панелът за влизане е инсталиран и имате достъп до него SAP Система NetWeaver Gateway за внедряване и тестване на това приложение, което ще изградим в този блог.

След като приложението е напълно изградено, то трябва да изглежда по следния начин:

SAPНастройка на UI5

В този SAPРъководство за уроци за UI5, ще създадем 2 компонента, а именно родителски компонент и дъщерен компонент. Първо ще създадем Child Component и след това ще го използваме в Parent компонент.

Да започнем да си цапаме ръцете.

Част 1) Създаване на дъщерно приложение

Нашата цел е да създадем дъщерен компонент, който да приема число от 1 до 12 и да показва името на месеца. Например получава 3; трябва да показва „март“.

Стъпка 1) Създайте UI проекта

Отидете на Файл->Нов->Други->SAPUI5 Разработка на приложения->Проект за приложения.

Създайте UI проекта

Създайте проект за приложение за SAPUI5, като следвате съветника, който се отваря. Вижте екранната снимка по-долу.

Създайте UI проекта

Въведете името на проекта, оставете другите селекции да останат същите, както е предложено от съветника.

Създайте UI проекта

В горната екранна снимка има 2 вида библиотеки, показани като радио бутони

  1. сап.м
  2. sap.ui.commons

Когато изберете sap.m, вие казвате на съветника да създаде проект за UI5 приложение, чиято секция за зареждане автоматично ще включва библиотека sap.m, която е предназначена за създаване на адаптивно уеб приложение.

Следващият в това SAP FIORI урок, ще видите по-долу раздел на съветника, където трябва да създадете първоначален изглед. Първоначалният изглед е изглед, който ще бъде изобразен първи при достъп до приложението.

Създайте UI проекта

Тук трябва да дадете името на изгледа и да изберете типа на изгледа. SAPUI5 поддържа 4 вида изглед, както се вижда на екрана по-горе. Така потребителският интерфейс на a SAPПриложението UI5 може да бъде създадено с помощта на Javascript или XML или JSON или HTML, който език ви харесва.

В края на съветника ще бъде създаден нов проект и ще се покаже в прозореца на Project Explorer на Eclipse както е показано по-долу.

Създайте UI проекта

Стъпка 2) Component.js код

След това нека създадем файл Component.js и да напишем кода по-долу в него.

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");

  
  },
});

Стъпка 3) Index.html код

След това нека кажем файла index.html, в който да заредим Component.js SAPUI5, когато приложението е достъпно от браузъра. Затова напишете кода по-долу във файла 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>

Стъпка 4) DisplayMonthView.view.xml код

След това нека напишем код в нашия изглед displaymonth, който ще покаже месеца, чийто номер на месеца е получен от родителския компонент.

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

След като поставите горния код, вашият изглед трябва да изглежда по-долу-

DisplayMonthView.view.xml код

Стъпка 5) DisplayMonthView.controller.js код

И накрая, нека напишем код на файла Controller на DisplayMonthView.

Кодът е написан само в метода за кука onInit() на този контролер, следователно поставяме тук само onInit() кода. Останалата част от файла е генерирана от рамката.

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);
	},

Стъпка 6) Внедряване на приложението на SAP Netweaver Gateway сървър

Разположете проекта и дайте техническото име на BSP приложението, което ще бъде генерирано на ABAP фронтенд сървъра. Нека името бъде zdisplaymonth. В този момент вашият проект за приложение трябва да изглежда по-долу.

SAP Netweaver Gateway сървър

ЧАСТ 2) Създаване на родителски компонент

Сега е време да създадете нов компонент (родителски компонент), който ще използва компонента, който сме създали досега в този урок.

Стъпка 1) Създайте нов SAPUI5 приложение

Отидете на Файл->Нов->Други->SAPUI5 Разработка на приложения->Проект за приложения. След това следвайте инструкциите на съветника, за да създадете нов SAPПроект за UI5 приложение. Това е описано подробно в стъпка 1 от част 1 в този урок по-горе.

Името на проекта на родителския компонент е PassNum. И техническото име на приложението BSP, генерирано след внедряването на SAPUI5 компонент към ABAP преден сървър е zpassnum. Структурата на проекта ще изглежда по-долу

Създайте нов SAPUI5 приложение

Нека сега напишем код във файловете index.html, Component.js и PassNum.view.xml и PassNum.controller.js

Стъпка 2) Изходен код на 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-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>

Стъпка 3) Изходен код на файла Component.js на родителския компонент

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");
 
  },
});

Стъпка 4) Изходен код на файла 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>

След като използвате горния код във вашия изглед, вашият изглед трябва да изглежда по-долу

Изходният код на файла PassNum.view.xml

Стъпка 5) Изходен код на PassNum.controller.js

Променен е само методът onInit(). Всичко останало в този файл остава същото

onInit: function() {

	jQuery.sap.registerModulePath("DisplayMonth", "../zdisplaymonth");
	},

	clickbutton:function(oEvent)
	{			
		sap.ui.getCore().getEventBus().publish("exchange", 
				"data", oEvent.oSource.sId.split("--")[1]);
		
		
	}

Стъпка 6) Внедряване на родителски компонент към SAP Netweaver Gateway сървър

Разположете приложението на ABAP фронтенд сървър и го стартирайте. Трябва да можете да го стартирате, като щракнете с десния бутон върху проекта и щракнете върху опцията „Изпълни на ABAP сървър“.

Внедряване на родителски компонент към SAP Netweaver Gateway сървър

URL адресът по-долу ще се отвори в браузъра Eclipse.
http://hostname:8000/sap/bc/ui5_ui5/sap/zpassnum/index.html

Копирайте URL адреса и го стартирайте в действителния браузър. В горното име на хост, маркирано в жълто, е името на хоста на вашия ABAP фронтенд сървър.

Продукция

SAP Изход на сървъра на Netweaver Gateway

Щракнете върху бутона „Първи“, януари трябва да се покаже в дъщерния компонент.

SAP Изход на сървъра на Netweaver Gateway

Насладете се на създаването на красиви, отзивчиви уеб приложения, като използвате SAPUI5.

Oбобщение

В този SAPUI5 урок, ние научихме:

  • SAPUI5 проучен: SAPUI5 е най-новият от поредицата SAP Технологии за разработка на UI.
  • Какво е SAP UI5: SAPUI5 е набор от библиотеки, които се използват за изграждане на адаптивни уеб приложения
  • Компоненти на SAPUI5 архитектурата е Devices, Client, NetWeaver Gateway, Persistence Layer
  • A SAPUI5 Component е част от работещ код, който се използва повторно, когато е необходимо
  • Видове SAPUI5 Component са 1) UI компоненти, 2) безлични компоненти
  • Научихме за консумирането на един sapui5 компонент в друг sapui5 компонент и предаването на данни между двата компонента