SAPUI5-vejledning for begyndere

โšก Smart opsummering

SAPUI5 er SAP's responsive HTML5-framework, der driver virksomhedswebapplikationer pรฅ tvรฆrs af desktop-, mobil- og tablet-enheder. Denne gennemgang forklarer MVC-arkitekturen, komponentmodellen, bibliotekerne og hvordan man bygger forรฆldre- og underordnede komponenter indeni. Eclipse.

  • ???? Responsiv brugergrรฆnseflade: SAPUI5 bruger sap.m-biblioteket, sรฅ รฉn kodebase tilpasser sig automatisk til desktop-, tablet- og mobilskรฆrme.
  • ๐Ÿงฉ Komponentmodel: UI-komponenter udvider sap.ui.core.UIComponent, mens Faceless-komponenter udvider sap.ui.core.Component for genanvendelig, modulรฆr kode.
  • ๐Ÿ‡ง๐Ÿ‡ท MVC-mรธnster: Modeller indeholder data, visninger gengiver markup i XML eller JSON, og controllere hรฅndterer hรฆndelseslogik uafhรฆngigt.
  • ๐Ÿ› ๏ธ NetWeaver-implementering: Eclipse med SAP Udviklingsvรฆrktรธjspakker SAPUI5-apps som BSP-applikationer, der hostes pรฅ ABAP-frontend-serveren.
  • โœ… Beskeder om eventbus: Forรฆldre- og underordnede komponenter udveksler data via sap.ui.getCore().getEventBus() publicerings- og abonnementskanaler.

SAPUI5-vejledning for begyndere

Hvad er SAPUI5?

SAPUI5 er et sรฆt biblioteker til at bygge responsive webapplikationer, der kรธrer pรฅ flere enheder som desktop, mobil og tablet. SAPUI5 virker pรฅ MVC koncept at accelerere udviklingscyklussen ved at skabe data, forretningslogik og reprรฆsentation af data separat pรฅ visningen. Sรฅ udviklingen af โ€‹โ€‹view og controller kan foregรฅ uafhรฆngigt for at skabe modeller (datacontainere).

SAPUI5 er den seneste i rรฆkken af SAP UI udviklingsteknologier. For at give webintegration til det underliggende SAP ERP system, SAP kom op med flere UI-udviklingsteknologier som BSP (Business server pages), PDK (Portal Development Kit), Web Dynpro Java, Web Dynpro ABAP. Og efterfรธlgeren til Web Dynpro ABAP er SAPUI5.

SAPUI5 Architecture

SAPUI5 Architecture
SAPUI5 Architecture

SAPUI Architecture diagram

I ovenstรฅende ArchiI den fรธrste boks 'Enheder' angiver den de enheder, som UI5-applikationer kรธrer pรฅ. UI5-applikationer kan tilgรฅs via en mobilapp eller enhver browser. Dette lag kaldes 'Prรฆsentationslaget'.

SAPUI5-applikationer og oData-tjenester findes pรฅ SAP NetWeaver Gateway Server. Dette lag af arkitekturen kaldes 'applikationslaget'.

Faktisk forretningslogik er implementeret i SAP kernesystemer som ECC, CRM og BW. Forretningslogik kan implementeres ved hjรฆlp af SAP programmer og funktionsmoduler. SAP transaktions- og stamdata ligger pรฅ SAP systemer. Dette lag kaldes 'databaselaget' eller 'persistenslaget'.

SAPUI5 komponent

En komponent er et stykke genanvendelig kode. Der findes 2 typer komponenter, som SAPUI5:

  1. UI-komponenter โ€“ Disse reprรฆsenterer en brugergrรฆnseflade, der indeholder UI-elementer. Disse er baseret pรฅ SAPUI5-klasse kaldet sap.ui.core.UIComponent
  2. Ansigtslรธse komponenter โ€“ Disse har ikke en brugergrรฆnseflade. Disse er baseret pรฅ SAPUI5 klasse kaldet sap.ui.core.Component

Grundlรฆggende er en komponent en mappe. Nรฅr du opretter en ny SAPUI5-applikation, vil du vรฆre i stand til at se en mappestruktur oprettet i din projektstifinder som nedenfor.

SAPUI5 komponent

I denne UI5-applikation er PassNum en komponent. Filen Component.js er obligatorisk for at en UI5-applikation kan opfรธre sig som en komponent.

Nรฆste i denne SAPUI5 Eclipse tutorial, vil vi lรฆre at konfigurere SAPUI5.

SAPUI5 opsรฆtning

Fรธr vi starter, skal du sรธrge for at:

  1. Eclipse (Luna version) er installeret pรฅ din bรฆrbare computer
  2. SAP Udviklingsvรฆrktรธjer til Eclipse Luna er installeret pรฅ din Eclipse (SAP Udviklingsvรฆrktรธjer til Eclipse Luna - https://tools.hana.ondemand.com/luna/)
  3. SAP Logon Pad er installeret, og du har adgang til SAP NetWeaver Gateway-system til implementering og test af den applikation, vi skal bygge i denne blog.

Nรฅr applikationen er fรฆrdigbygget, skal den se ud som nedenfor:

SAPUI5 opsรฆtning

I denne SAPI UI5-vejledningen opretter vi to komponenter kaldet Parent Component og Child Component. Fรธrst opretter vi Child Component og bruger den derefter i Parent Component.

Lad os begynde at fรฅ hรฆnderne snavsede.

Del 1) Opret underordnet ansรธgning

Vores mรฅl er at oprette en underordnet komponent, der accepterer et tal fra 1 til 12 og viser mรฅnedens navn. For eksempel, nรฅr den modtager 3, skal den vise 'marts'.

Trin 1) Opret UI-projektet

Gรฅ til Filer->Ny->Andet->SAPUI5 Applikationsudvikling-> Applikationsprojekt.

Opret UI-projektet

Opret et ansรธgningsprojekt til SAPUI5 ved at fรธlge guiden. Se skรฆrmbilledet nedenfor.

Opret UI-projektet

Indtast projektets navn, og lad de andre valg forblive som foreslรฅet af guiden.

Opret UI-projektet

I ovenstรฅende skรฆrmbillede vises der 2 typer biblioteker som radioknapper:

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

Nรฅr du vรฆlger sap.m, beder du guiden om at oprette et UI5-applikationsprojekt, hvis bootstrap-sektion automatisk inkluderer sap.m-biblioteket, som er beregnet til at oprette responsive webapplikationer.

Nรฆste i denne SAP I FIORI-vejledningen vil du se den del af guiden nedenfor, hvor du skal oprette den indledende visning. En indledende visning er en visning, der vises fรธrst, nรฅr applikationen tilgรฅs.

Opret UI-projektet

Her skal du angive navnet pรฅ visningen og vรฆlge visningstypen. SAPUI5 understรธtter 4 typer visninger, som det fremgรฅr af ovenstรฅende skรฆrm. Sรฅ brugergrรฆnsefladen af โ€‹โ€‹en SAPUI5-applikationen kan bygges vha JavaScript eller XML eller JSON eller HTML, alt efter hvilket sprog du er fortrolig med.

Nรฅr guiden er fรฆrdig, oprettes et nyt projekt, som vises i Projekt Explorer-vinduet. Eclipse som nedenfor.

Opret UI-projektet

Trin 2) Component.js-kode

Lad os derefter oprette en Component.js-fil og skrive nedenstรฅende kode 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");


  },
});

Trin 3) Index.html-kode

Lad os derefter bede vores index.html-fil om at indlรฆse Component.js, nรฅr applikationen tilgรฅs. Skriv nedenstรฅende kode 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>

Trin 4) DisplayMonthView.view.xml-kode

Lad os derefter skrive kode i vores displaymonth-visning for at vise den mรฅned, hvis nummer er modtaget fra den overordnede komponent.

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

Nรฅr du har indsat ovenstรฅende kode, burde din visning se ud som nedenfor.

DisplayMonthView.view.xml-kode

Trin 5) DisplayMonthView.controller.js-kode

Og til sidst, lad os skrive koden til DisplayMonthViews Controller-fil.

Koden er kun skrevet i onInit() hook-metoden, sรฅ kun den indsรฆttes her. Resten af โ€‹โ€‹filen er som genereret af frameworket.

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

Trin 6) Implementering af applikationen pรฅ SAP NetWeaver Gateway-server

Implementer projektet, og angiv det tekniske navn pรฅ den BSP-applikation, der genereres pรฅ ABAP-frontendserveren. Lad navnet vรฆre zdisplaymรฅnedDit projekt skal se ud som nedenfor.

SAP Netweaver Gateway Server

DEL 2) Oprettelse af en overordnet komponent

Nu er det tid til at oprette en ny komponent (forรฆlderkomponent), som vil bruge den komponent, vi har oprettet indtil videre i denne vejledning.

Trin 1) Opret en ny SAPUI5 applikation

Gรฅ til Filer->Ny->Andet->SAPUI5 Applikationsudvikling->Applikationsprojekt. Fรธlg derefter guidens instruktioner for at oprette et nyt SAPUI5 ansรธgningsprojekt. Dette er blevet beskrevet detaljeret i trin 1 i del 1 i denne รธvelse ovenfor.

Navnet pรฅ det overordnede komponentprojekt er AdgangskodeDet tekniske navn pรฅ BSP-applikationen, der genereres efter implementeringen, er zpassnumProjektstrukturen vil se ud som nedenfor.

Opret en ny SAPUI5 applikation

Lad os nu skrive kode i filerne index.html, Component.js, PassNum.view.xml og PassNum.controller.js.

Trin 2) Kilde Code af Index.html for den overordnede komponent

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

Trin 3) Kildekoden til Component.js-filen til Parent Component

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

  },
});

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

Nรฅr du har brugt ovenstรฅende kode i din visning, burde din visning se ud som nedenfor.

Kildekoden til filen PassNum.view.xml

Trin 5) Kildekoden for PassNum.controller.js

Kun onInit()-metoden er blevet รฆndret. Alt andet i denne fil forbliver det samme.

onInit: function() {

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

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


	}

Trin 6) Implementering af overordnet komponent til SAP NetWeaver Gateway-server

Implementer applikationen pรฅ ABAP-frontend-serveren, og kรธr den. Du burde kunne kรธre den ved at hรธjreklikke pรฅ projektet og klikke pรฅ indstillingen 'Kรธr pรฅ ABAP-server'.

Implementering af overordnet komponent til SAP Netweaver Gateway Server

Den nedenstรฅende URL vil รฅbne op i Eclipse browser.
http://hostname:8000/sap/bc/ui5_ui5/sap/zpassnum/index.html

Kopier URL og kรธr den i selve browseren. I ovenstรฅende vรฆrtsnavn (markeret med gult) er vรฆrtsnavnet pรฅ din ABAP-frontend-server.

Produktion

SAP Netweaver Gateway Server Output

Klik pรฅ knappen 'Fรธrst', og januar burde vises i underkomponenten.

SAP Netweaver Gateway Server Output

Nyd at skabe smukke, responsive webapplikationer ved hjรฆlp af SAPUI5.

Ofte Stillede Spรธrgsmรฅl

SAPUI5 er den proprietรฆre kommercielle udgave, der leveres med SAP licenser. OpenUI5 er open source-udvalget af Apache 2.0, der mangler visse virksomhedskontroller som f.eks. sap.ui.comp smart forms.

Fiori er SAP's designsystem og appkatalog. SAPUI5 er JavaScript-framework, der gengiver Fiori-apps, sรฅ hver Fiori-skรฆrm er bygget pรฅ SAPUI5-kontroller.

Start med sap.m til responsive kontroller, sap.ui.table til gitterdata og sap.viz til diagrammer. Disse tre dรฆkker de fleste virksomhedsskรฆrme, du vil opbygge.

Ja. SAP Byg Code og GitHub Copilot kan scaffolde XML-visninger, controller-stubs og JSONModel-bindinger fra prompts i naturligt sprog, selvom udviklere stadig gennemgรฅr den genererede kode.

AI-assistenter genererer OPA5- og QUnit-testtilfรฆlde, foreslรฅr aria-labelvรฆrdier og markerer manglende tastaturhรฅndteringer, helping hold mรธdes SAP tilgรฆngelighedsstandarder hurtigere.

Opsummer dette indlรฆg med: