SAPУчебник UI5 для начинающих

⚡ Умное резюме

SAPUI5 — это SAPАдаптивный HTML5-фреймворк, используемый в корпоративных веб-приложениях на настольных компьютерах, мобильных устройствах и планшетах. В этом пошаговом руководстве объясняется архитектура MVC, компонентная модель, библиотеки и как создавать родительские и дочерние компоненты внутри Eclipse.

  • 📱 Адаптивный пользовательский интерфейс: SAPВ UI5 используется библиотека sap.m, поэтому единый код автоматически адаптируется к экранам настольных компьютеров, планшетов и мобильных устройств.
  • 🧩 Модель компонентов: Компоненты пользовательского интерфейса наследуют sap.ui.core.UIComponent, а компоненты без внешнего интерфейса — sap.ui.core.Component, что обеспечивает возможность повторного использования и модульность кода.
  • ⚙️ Шаблон MVC: Модели хранят данные, представления отображают разметку в формате XML или JSON, а контроллеры обрабатывают логику событий независимо друг от друга.
  • 🇧🇷 Развертывание NetWeaver: Eclipse с SAP Пакеты инструментов разработки SAPПриложения UI5 в виде BSP-приложений, размещенных на фронтенд-сервере ABAP.
  • Обмен сообщениями в шине событий: Родительские и дочерние компоненты обмениваются данными через каналы публикации и подписки sap.ui.getCore().getEventBus().

SAPУчебник UI5 для начинающих

Что такое SAPUI5?

SAPUI5 — это набор библиотек для создания адаптивных веб-приложений, которые работают на нескольких устройствах, таких как настольные, мобильные и планшеты. SAPUI5 работает Концепция MVC ускорить цикл разработки за счет создания данных, бизнес-логики и представления данных отдельно в представлении. Таким образом, разработка представления и контроллера может происходить независимо для создания моделей (контейнеров данных).

SAPUI5 — последняя версия в серии SAP Технологии разработки пользовательского интерфейса. Чтобы обеспечить веб-интеграцию базового SAP ERP-система, SAP разработал несколько технологий разработки пользовательского интерфейса, таких как BSP (страницы бизнес-сервера), PDK (комплект разработки портала), Web Dynpro. Java, Веб-Динпро ABAP. И преемником Web Dynpro ABAP является SAPпользовательский интерфейс5.

SAPUI5 Archiтекстура

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

SAPUI ArchiДиаграмма тектуры

В выше ArchiВ первой части раздела «Устройства» указаны устройства, на которых работают приложения UI5. Доступ к приложениям UI5 можно получить через мобильное приложение или любой браузер. Этот слой называется «слой представления».

SAPПриложения UI5 и сервисы oData размещаются на SAP Сервер NetWeaver Gateway. Этот уровень архитектуры называется «прикладным уровнем».

Реальная бизнес-логика реализована в SAP основные системы, такие как ECC, CRM и BW. Бизнес-логика может быть реализована с использованием SAP программы и функциональные модули. SAP транзакционные и основные данные хранятся на SAP системы. Этот слой называется «слоем базы данных» или «слоем хранения данных».

SAPКомпонент UI5

Компонент — это фрагмент многократно используемого кода. Существует 2 типа компонентов, предоставляемых... SAPИнтерфейс 5:

  1. Компоненты пользовательского интерфейса — это элементы пользовательского интерфейса, представляющие собой структуру интерфейса. Они основаны на... SAPКласс UI5 называется sap.ui.core.UIComponent
  2. Компоненты без внешнего интерфейса — у них нет пользовательского интерфейса. Они основаны на SAPКласс UI5 называется sap.ui.core.Component

По сути, компонент — это папка. Когда вы создаете новый SAPUI5, вы сможете увидеть структуру папок, созданную в проводнике вашего проекта, как показано ниже.

SAPКомпонент UI5

В этом UI5-приложении PassNum является компонентом. Для того чтобы UI5-приложение функционировало как компонент, необходим файл Component.js.

Далее в этом SAPUI5 Eclipse учебник, мы научимся настраивать SAPпользовательский интерфейс5.

SAPНастройка UI5

Прежде чем начать, вам необходимо убедиться в следующем:

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

После полной сборки приложения оно должно выглядеть так:

SAPНастройка UI5

В этом SAPВ этом руководстве по UI5 мы создадим два компонента: родительский и дочерний. Сначала мы создадим дочерний компонент, а затем используем его в родительском компоненте.

Начнем пачкать руки.

Часть 1) Создание дочернего приложения

Наша цель — создать дочерний компонент, который будет принимать число от 1 до 12 и отображать название месяца. Например, при получении числа 3 он должен отображать «Март».

Шаг 1) Создайте проект пользовательского интерфейса

Перейдите в Файл->Создать->Другое->.SAPРазработка приложений UI5 -> Проект приложения.

Создайте проект пользовательского интерфейса

Создайте проект приложения для SAPUI5 создается с помощью мастера настройки. См. скриншот ниже.

Создайте проект пользовательского интерфейса

Введите название проекта, а остальные параметры оставьте такими, какими их предложил мастер настройки.

Создайте проект пользовательского интерфейса

На скриншоте выше в виде переключателей отображаются 2 типа библиотек:

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

Выбирая sap.m, вы указываете мастеру создать проект приложения UI5, в раздел Bootstrap которого автоматически будет включена библиотека sap.m, предназначенная для создания адаптивных веб-приложений.

Далее в этом SAP В этом руководстве по FIORI вы увидите раздел мастера, где необходимо создать начальное представление. Начальное представление — это представление, которое будет отображаться первым при обращении к приложению.

Создайте проект пользовательского интерфейса

Здесь необходимо указать название представления и выбрать его тип. SAPUI5 поддерживает 4 типа просмотра, как показано на экране выше. Таким образом, пользовательский интерфейс SAPПриложение UI5 может быть создано с использованием JavaСкрипт или XML или JSON или HTML, в зависимости от того, какой язык вам удобнее использовать.

По завершении работы мастера будет создан новый проект, который отобразится в окне «Проводник проектов». Eclipse как показано ниже.

Создайте проект пользовательского интерфейса

Шаг 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 при каждом обращении к приложению. Напишите следующий код в файле 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

И наконец, давайте напишем код файла контроллера DisplayMonthView.

Код написан только в методе-хуке 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

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

SAP Сервер шлюза Netweaver

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

Теперь пришло время создать новый компонент (родительский компонент), который будет использовать компонент, созданный нами ранее в этом уроке.

Шаг 1) Создайте новый SAPПриложение UI5

Перейдите в Файл->Создать->Другое->.SAPРазработка приложений UI5 -> Проект приложения. Затем следуйте инструкциям мастера для создания нового проекта. SAPПроект приложения UI5. Это было подробно описано в шаге 1 части 1 данного руководства выше.

Название родительского проекта компонента: ПарольТехническое имя приложения BSP, сгенерированное после развертывания, — это... zpassnumСтруктура проекта будет выглядеть следующим образом.

Создать новый SAPПриложение UI5

Теперь давайте напишем код в файлах index.html, Component.js, PassNum.view.xml и PassNum.controller.js.

Шаг 2) Источник Code из файла 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

Разверните приложение на ABAP-сервере и запустите его. Вы сможете запустить его, щелкнув правой кнопкой мыши по проекту и выбрав опцию «Запустить на ABAP-сервере».

Развертывание родительского компонента в SAP Сервер шлюза Netweaver

Ниже URL откроется в Eclipse браузер.
http://hostname:8000/sap/bc/ui5_ui5/sap/zpassnum/index.html

Скопируйте URL и запустите его в реальном браузере. В приведенном выше имени хоста (выделено желтым) указано имя хоста вашего ABAP-сервера.

Результат

SAP Вывод сервера шлюза Netweaver

Нажмите на кнопку «Первое», и в дочернем компоненте должно отобразиться «Январь».

SAP Вывод сервера шлюза Netweaver

Наслаждайтесь созданием красивых, адаптивных веб-приложений с помощью SAPпользовательский интерфейс5.

Часто задаваемые вопросы (FAQ)

SAPUI5 — это проприетарная коммерческая версия, поставляемая с SAP лицензии. OpenUI5 — это подмножество Apache 2.0 с открытым исходным кодом, в котором отсутствуют некоторые корпоративные элементы управления, такие как интеллектуальные формы sap.ui.comp.

Фиори — это SAPСистема дизайна и каталог приложений. SAPUI5 — это JavaСкриптовый фреймворк, который обеспечивает рендеринг приложений Fiori, поэтому каждый экран Fiori построен на его основе. SAPЭлементы управления UI5.

Начните с sap.m для адаптивных элементов управления, sap.ui.table для табличных данных и sap.viz для диаграмм. Эти три файла охватывают большинство корпоративных экранов, которые вы будете создавать.

Да. SAP Построить Code А GitHub Copilot может генерировать XML-представления, заглушки контроллеров и привязки JSONModel на основе запросов на естественном языке, хотя разработчики все равно проверяют сгенерированный код.

Искусственный интеллект-помощники генерируют тестовые примеры OPA5 и QUnit, предлагают значения aria-label и отмечают отсутствующие обработчики клавиатуры.ping команды встречаются SAP Стандарты доступности внедряются быстрее.

Подведем итог этой публикации следующим образом: