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

SAPUI Architecture diagram
I ovenstรฅende Architecture, first box, dvs. 'Devices' angiver de enheder, som UI5-applikationer kรธrer pรฅ. UI5-applikationer kan tilgรฅs via en mobilapp eller en hvilken som helst browser pรฅ disse enheder. Dette lag af arkitekturen kaldes 'Presentation Layer'.
SAPUI5-applikationer og oData-tjenester findes pรฅ SAP NetWeaver Gateway Server. Dette lag af arkitekturen kaldes 'Application Layer'.
Faktisk forretningslogik er implementeret i SAP kernesystemer som ECC, CRM og BW osv.... Forretningslogik kan implementeres vha SAP programmer og funktionsmoduler. SAP transaktions- og stamdata ligger pรฅ SAP systemer. Dette lag af arkitekturen kaldes 'Database Layer' eller 'Persistence Layer'.
SAPUI5 komponent
En komponent er et stykke arbejdskode, der genbruges, hvor det er nรธdvendigt. Der er 2 typer komponenter leveret af SAPUI5
- UI-komponenter โ Disse reprรฆsenterer en brugergrรฆnseflade, der indeholder UI-elementer. Disse er baseret pรฅ SPAUI5 klasse kaldet sap.ui.core.UIComponent
- 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.
I denne UI5-applikation er PassNum en komponent. Component.js-filen er obligatorisk for at UI5-applikationen opfรธrer sig som en komponent. Component.js-filen er komponentcontrolleren.
Nรฆste i denne SAPUI5 Eclipse tutorial, vil vi lรฆre at konfigurere SAPUI5.
SAPUI5 opsรฆtning
Fรธr vi starter, skal du sikre dig, at โ
- Eclipse (Luna version) er installeret pรฅ din bรฆrbare computer
- SAP Udviklingsvรฆrktรธjer til Eclipse Luna og installeret pรฅ din formรธrkelse (SAP Udviklingsvรฆrktรธjer til Eclipse Luna - https://tools.hana.ondemand.com/luna/)
- SAP Logon pad er installeret, og du har adgang til SAP NetWeaver Gateway-system til implementering og test af denne applikation, som vi skal bygge i denne blog.
Nรฅr applikationen er fรฆrdigbygget, skal den se ud som nedenfor:
I denne SAPUI5 tutorials guide, vil vi oprette 2 komponenter nemlig Parent Component og Child Component. Fรธrst vil vi oprette Child Component og derefter forbruge den i Parent Component.
Lad os begynde at fรฅ hรฆnderne snavsede.
Del 1) Opret underordnet ansรธgning
Vores mรฅl er at skabe en bรธrnekomponent, der accepterer et tal fra 1 til 12 og viser mรฅnedens navn. For eksempel modtager den 3; den skulle vise 'marts'.
Trin 1) Opret UI-projektet
Gรฅ til Filer->Ny->Andet->SAPUI5 applikationsudvikling->applikationsprojekt.
Opret et ansรธgningsprojekt til SAPUI5 ved at fรธlge guiden, der รฅbnes. Se skรฆrmbillede nedenfor.
Indtast navnet pรฅ projektet, lad de andre valg forblive de samme som foreslรฅet af guiden.
I ovenstรฅende skรฆrmbillede er der 2 typer biblioteker vist som radioknapper
- sap.m
- sap.ui.commons
Nรฅr du vรฆlger sap.m, beder du guiden om at oprette et UI5-applikationsprojekt, hvis bootstrap-sektion automatisk vil inkludere sap.m-bibliotek, som er beregnet til at skabe en responsiv webapplikation.
Nรฆste i denne SAP FIORI tutorial, vil du se nedenstรฅende afsnit af guiden, hvor du skal oprette den fรธrste visning. En indledende visning er en visning, der fรธrst gengives, nรฅr applikationen รฅbnes.
Her skal du angive navnet pรฅ visningen og vรฆlge type visning. 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, hvilket sprog du er fortrolig med.
I slutningen af โโguiden vil et nyt projekt blive oprettet og vist i Project Explorer-vinduet i Eclipse som nedenfor.
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 fortรฆlle index.html-filen, der skal indlรฆses Component.js SAPUI5, nรฅr applikationen tilgรฅs fra browseren. 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 displaymรฅnedsvisning, som viser den mรฅned, hvis mรฅnedsnummer 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, skal din visning se ud som nedenfor-
Trin 5) DisplayMonthView.controller.js-kode
Og endelig, lad os skrive koden til DisplayMonthViews Controller-fil.
Koden er kun skrevet i onInit() hook-metoden for denne controller, og indsรฆtter derfor kun onInit()-koden her. Resten af โโfilen er som genereret af rammen.
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 giv det tekniske navn pรฅ BSP-applikationen, som vil blive genereret pรฅ ABAP-frontend-serveren. Lad navnet vรฆre zdisplaymรฅned. Pรฅ dette tidspunkt skal dit ansรธgningsprojekt se ud som nedenfor.
DEL 2) Oprettelse af en overordnet komponent
Nu er det tid til at oprette en ny komponent (forรฆldrekomponent), som vil forbruge 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 en ny SAPUI5 ansรธgningsprojekt. Dette er blevet beskrevet detaljeret i trin 1 i del 1 i denne รธvelse ovenfor.
Navnet pรฅ det overordnede komponentprojekt er PassNum. Og det tekniske navn pรฅ BSP-applikationen genereret efter implementering af SAPUI5 komponent til ABAP frontend server er zpassnum. Projektstrukturen vil se ud som nedenfor
Lad os nu skrive kode i index.html, Component.js og PassNum.view.xml og PassNum.controller.js filer
Trin 2) Kildekode for 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, skal din visning se ud som nedenfor
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 bรธr vรฆre i stand til at kรธre det ved at hรธjreklikke pรฅ projektet og klikke pรฅ 'Kรธr pรฅ ABAP-server' mulighed.
Nedenstรฅende URL vil รฅbne op i eclipse browser.
http://hostname:8000/sap/bc/ui5_ui5/sap/zpassnum/index.html
Kopier URL'en og kรธr den i den faktiske browser. I ovenstรฅende vรฆrtsnavn markeret med gult er vรฆrtsnavnet pรฅ din ABAP-frontend-server.
Produktion
Klik pรฅ knappen 'Fรธrst', januar skal vises i underordnet komponent.
Nyd at skabe smukke, responsive webapplikationer ved hjรฆlp af SAPUI5.
Resumรฉ
I denne SAPUI5 tutorial, vi har lรฆrt:
- SAPUI5 udforsket: SAPUI5 er den seneste i rรฆkken af SAP UI udviklingsteknologier.
- Hvad er SAP UI5: SAPUI5 er et sรฆt biblioteker, som bruges til at bygge responsive webapplikationer
- Komponenter af SAPUI5-arkitektur er Devices, Client, NetWeaver Gateway, Persistence Layer
- A SAPUI5 Component er et stykke arbejdskode, der genbruges, hvor det er nรธdvendigt
- Typer af SAPUI5-komponent er 1) UI-komponenter, 2) Ansigtslรธse komponenter
- Vi lรฆrte om at forbruge en sapui5-komponent til en anden sapui5-komponent og overfรธre data mellem de to komponenter














