SAPUI5-opplæring for nybegynnere

⚡ Smart oppsummering

SAPUI5 er SAPs responsive HTML5-rammeverk som driver webapplikasjoner for bedrifter på tvers av stasjonære datamaskiner, mobilenheter og nettbrett. Denne gjennomgangen forklarer MVC-arkitekturen, komponentmodellen, bibliotekene og hvordan man bygger foreldre- og barnekomponenter inni. Eclipse.

  • 📱 Responsivt brukergrensesnitt: SAPUI5 bruker sap.m-biblioteket, slik at én kodebase tilpasser seg automatisk til skjermer på datamaskiner, nettbrett og mobil.
  • 🧩 Komponentmodell: UI-komponenter utvider sap.ui.core.UIComponent, mens Faceless Components utvider sap.ui.core.Component for gjenbrukbar, modulær kode.
  • ⚙️ MVC-mønster: Modeller inneholder data, visninger gjengir markup i XML eller JSON, og kontrollere håndterer hendelseslogikk uavhengig.
  • 🛠️ NetWeaver-distribusjon: Eclipse med SAP Utviklingsverktøypakker SAPUI5-apper som BSP-applikasjoner som ligger på ABAP-frontend-serveren.
  • Meldinger om hendelsesbuss: Foreldre- og underordnede komponenter utveksler data gjennom publiserings- og abonnementskanaler i sap.ui.getCore().getEventBus().

SAPUI5-opplæring for nybegynnere

Hva er SAPUI5?

SAPIU5 er et sett med biblioteker for å bygge responsive nettapplikasjoner som kjører på flere enheter som skrivebord, mobil og nettbrett. SAPUI5 fungerer på MVC konsept å akselerere utviklingssyklusen ved å lage data, forretningslogikk og representasjon av data separat på visningen. Så utviklingen av visning og kontroller kan skje uavhengig for å lage modeller (databeholdere).

SAPUI5 er den siste i rekken av SAP UI-utviklingsteknologier. For å gi webintegrasjon for det underliggende SAP ERP system, SAP kom opp med flere UI-utviklingsteknologier som BSP (Business server pages), PDK (Portal Development Kit), Web Dynpro Java, Web Dynpro ABAP. Og etterfølgeren til Web Dynpro ABAP er SAPUI5.

SAPIU5 Architecture

SAPIU5 Architecture
SAPIU5 Architecture

SAPUI ArchiTecture Diagram

I det ovennevnte ArchiTektur, den første boksen «Enheter» angir enhetene som UI5-applikasjoner kjører på. UI5-applikasjoner kan nås via en mobilapp eller en hvilken som helst nettleser. Dette laget kalles «Presentasjonslaget».

SAPUI5-applikasjoner og oData-tjenester ligger på SAP NetWeaver Gateway Server. Dette laget av arkitekturen kalles «applikasjonslaget».

Faktisk forretningslogikk er implementert i SAP kjernesystemer som ECC, CRM og BW. Forretningslogikk kan implementeres ved hjelp av SAP programmer og funksjonsmoduler. SAP transaksjons- og masterdata ligger på SAP systemer. Dette laget kalles «databaselaget» eller «persistenslaget».

SAPUI5-komponent

En komponent er en del gjenbrukbar kode. Det finnes to typer komponenter levert av SAPUI5:

  1. UI-komponenter – Disse representerer et brukergrensesnitt som inneholder UI-elementer. Disse er basert på SAPUI5-klasse kalt sap.ui.core.UIComponent
  2. Ansiktsløse komponenter – Disse har ikke et brukergrensesnitt. Disse er basert på SAPUI5-klassen kalt sap.ui.core.Component

I hovedsak er en komponent en mappe. Når du oppretter en ny SAPUI5-applikasjonen, vil du kunne se en mappestruktur opprettet i prosjektutforskeren som nedenfor.

SAPUI5-komponent

I denne UI5-applikasjonen er PassNum en komponent. Component.js-filen er obligatorisk for at en UI5-applikasjon skal oppføre seg som en komponent.

Neste i dette SAPIU5 Eclipse veiledning, vil vi lære hvordan du konfigurerer SAPUI5.

SAPUI5 oppsett

Før vi starter, må du sørge for at:

  1. Eclipse (Luna-versjon) er installert på den bærbare datamaskinen
  2. SAP Utviklingsverktøy for Eclipse Luna er installert på din Eclipse (SAP Utviklingsverktøy for Eclipse Luna - https://tools.hana.ondemand.com/luna/)
  3. SAP Påloggingspad er installert, og du har tilgang til SAP NetWeaver Gateway-system for utrulling og testing av applikasjonen vi skal bygge i denne bloggen.

Etter at applikasjonen er ferdig bygget, skal den se slik ut:

SAPUI5 oppsett

I dette SAPI UI5-veiledningen skal vi opprette to komponenter kalt foreldrekomponenten og barnekomponenten. Først skal vi opprette barnekomponenten og deretter bruke den i foreldrekomponenten.

La oss begynne å skitne på hendene.

Del 1) Opprett underordnet søknad

Målet vårt er å lage en underkomponent som godtar et tall fra 1 til 12 og viser månedens navn. Når den for eksempel mottar 3, skal den vise «mars».

Trinn 1) Opprett UI-prosjektet

Gå til Fil->Ny->Annet->SAPUI5 Applikasjonsutvikling->Applikasjonsprosjekt.

Opprett UI-prosjektet

Lag et søknadsprosjekt for SAPUI5 ved å følge veiviseren. Se skjermbilde nedenfor.

Opprett UI-prosjektet

Skriv inn navnet på prosjektet, og la de andre valgene forbli slik veiviseren foreslår.

Opprett UI-prosjektet

I skjermbildet ovenfor vises to typer biblioteker som radioknapper:

  1. sap.m
  2. sap.ui.commons

Når du velger sap.m, ber du veiviseren om å opprette et UI5-applikasjonsprosjekt der bootstrap-delen automatisk inkluderer sap.m-biblioteket, som er ment for å lage responsive webapplikasjoner.

Neste i dette SAP I FIORI-opplæringen ser du delen av veiviseren nedenfor der du må opprette den første visningen. En første visning er en visning som gjengis først når applikasjonen åpnes.

Opprett UI-prosjektet

Her må du oppgi navnet på visningen og velge visningstype. SAPUI5 støtter 4 typer visning som tydelig på skjermen ovenfor. Så brukergrensesnittet til en SAPUI5-applikasjonen kan bygges ved hjelp av JavaSkript eller XML eller JSON eller HTML, avhengig av hvilket språk du er komfortabel med.

På slutten av veiviseren opprettes et nytt prosjekt og vises i Prosjektutforsker-vinduet i Eclipse som nedenfor.

Opprett UI-prosjektet

Trinn 2) Component.js-kode

La oss deretter opprette en Component.js-fil og skrive koden nedenfor i den.

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


  },
});

Trinn 3) Index.html-kode

La oss deretter be index.html-filen vår om å laste inn Component.js når applikasjonen åpnes. Skriv koden nedenfor i index.html-filen.

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

Trinn 4) DisplayMonthView.view.xml-kode

La oss deretter skrive kode i displaymonth-visningen vår for å vise måneden hvis nummer er mottatt fra den overordnede komponenten.

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

Etter at du har limt inn koden ovenfor, skal visningen din se slik ut nedenfor.

DisplayMonthView.view.xml-kode

Trinn 5) DisplayMonthView.controller.js-kode

Og til slutt, la oss skrive koden til DisplayMonthViews Controller-fil.

Koden er kun skrevet i onInit() hook-metoden, så bare den limes inn her. Resten av filen er slik den er generert av rammeverket.

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

Trinn 6) Implementering av applikasjonen på SAP NetWeaver Gateway-server

Distribuer prosjektet og oppgi det tekniske navnet på BSP-applikasjonen som genereres på ABAP-frontend-serveren. La navnet være zdisplaymonthProsjektet ditt skal se slik ut nedenfor.

SAP Netweaver Gateway Server

DEL 2) Opprette en overordnet komponent

Nå er det på tide å opprette en ny komponent (foreldrekomponent) som vil bruke komponenten vi har opprettet så langt i denne veiledningen.

Trinn 1) Opprett en ny SAPUI5-applikasjon

Gå til Fil->Ny->Annet->SAPUI5 Applikasjonsutvikling->Applikasjonsprosjekt. Følg deretter veiviserinstruksjonene for å opprette et nytt SAPUI5 søknadsprosjekt. Dette er beskrevet i detalj i trinn 1 av del 1 i denne opplæringen ovenfor.

Navnet på det overordnede komponentprosjektet er PassnummerDet tekniske navnet på BSP-applikasjonen som genereres etter utrulling er zpassnumProsjektstrukturen vil se slik ut nedenfor.

Lage en ny SAPUI5-applikasjon

La oss nå skrive kode i index.html-, Component.js-, PassNum.view.xml- og PassNum.controller.js-filer.

Trinn 2) Kilde Code av Index.html til den overordnede komponenten

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

Trinn 3) Kildekoden til Component.js-filen til overordnet komponent

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

  },
});

Trinn 4) Kildekoden til filen 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>

Etter at du har brukt koden ovenfor i visningen din, skal visningen din se slik ut.

Kildekoden til filen PassNum.view.xml

Trinn 5) Kildekoden til PassNum.controller.js

Bare onInit()-metoden er endret. Alt annet i denne filen forblir det samme.

onInit: function() {

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

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


	}

Trinn 6) Distribusjon av overordnet komponent til SAP NetWeaver Gateway-server

Distribuer applikasjonen på ABAP-frontend-serveren og kjør den. Du skal kunne kjøre den ved å høyreklikke på prosjektet og klikke på alternativet «Kjør på ABAP-server».

Distribusjon av overordnet komponent til SAP Netweaver Gateway Server

Under URL vil åpne seg i Eclipse browser.
http://hostname:8000/sap/bc/ui5_ui5/sap/zpassnum/index.html

Kopier URL og kjør den i selve nettleseren. I vertsnavnet ovenfor (markert med gult) er vertsnavnet til ABAP-frontend-serveren din.

Produksjon

SAP Netweaver Gateway Server Output

Klikk på «Første»-knappen, og januar skal vises i underkomponenten.

SAP Netweaver Gateway Server Output

Nyt å lage vakre, responsive nettapplikasjoner ved å bruke SAPUI5.

Spørsmål og svar

SAPUI5 er den proprietære kommersielle utgaven som følger med SAP lisenser. OpenUI5 er delsettet av Apache 2.0 med åpen kildekode, og mangler visse bedriftskontroller som smarte skjemaer for sap.ui.comp.

Fiori er SAPs designsystem og appkatalog. SAPUI5 er JavaSkriptrammeverk som gjengir Fiori-apper, slik at hver Fiori-skjerm er bygget på SAPUI5-kontroller.

Start med sap.m for responsive kontroller, sap.ui.table for rutenettdata og sap.viz for diagrammer. Disse tre dekker de fleste bedriftsskjermene du bygger.

Ja. SAP Bygge Code og GitHub Copilot kan stillase XML-visninger, kontrollerstubber og JSONModel-bindinger fra ledetekster i naturlig språk, selv om utviklere fortsatt gjennomgår den genererte koden.

AI-assistenter genererer OPA5- og QUnit-testtilfeller, foreslår aria-label-verdier og flagger manglende tastaturbehandlere, helping lag møtes SAP tilgjengelighetsstandarder raskere.

Oppsummer dette innlegget med: