SAPUI5-opetusohjelma aloittelijoille
Mikรค on SAPUI5?
SAPIU5 on joukko kirjastoja, joiden avulla voidaan rakentaa responsiivisia verkkosovelluksia, jotka toimivat useilla laitteilla, kuten pรถytรคkoneilla, mobiililaitteilla ja tableteilla. SAPUI5 toimii MVC-konsepti nopeuttaa kehityssykliรค luomalla dataa, liiketoimintalogiikkaa ja tietojen esitystรค erikseen nรคkymรคssรค. Joten nรคkymรคn ja ohjaimen kehittรคminen voi tapahtua itsenรคisesti mallien (tietosรคiliรถiden) luomiseksi.
SAPUI5 on sarjan uusin SAP Kรคyttรถliittymรคn kehitysteknologiat. Tarjotakseen web-integraation taustalla SAP ERP-jรคrjestelmรค, SAP keksi useita kรคyttรถliittymรคkehitystekniikoita, kuten BSP (yrityspalvelinsivut), PDK (portaalin kehityspaketti), Web Dynpro Java, Web Dynpro ABAP. Ja Web Dynpro ABAP:n seuraaja on SAPUI5.
SAPIU5 Archirakenne

SAPUI Architecture Kaavio
Edellรค Architecture, ensimmรคinen laatikko, eli "Laitteet" osoittavat laitteet, joissa UI5-sovellukset toimivat. UI5-sovelluksia voi kรคyttรครค nรคiden laitteiden mobiilisovelluksella tai millรค tahansa selaimella. Tรคtรค arkkitehtuurin kerrosta kutsutaan "Esityskerrokseksi".
SAPUI5-sovellukset ja oData-palvelut sijaitsevat SAP NetWeaver Gateway Server. Tรคtรค arkkitehtuurin kerrosta kutsutaan sovelluskerrokseksi.
Todellinen liiketoimintalogiikka on toteutettu SAP ydinjรคrjestelmรคt, kuten ECC, CRM ja BW jne... Liiketoimintalogiikkaa voidaan toteuttaa kรคyttรคmรคllรค SAP ohjelmat ja toimintomoduulit. SAP tapahtuma- ja perustiedot sijaitsevat SAP jรคrjestelmรคt. Tรคtรค arkkitehtuurin kerrosta kutsutaan tietokantakerrokseksi tai pysyvyyskerrokseksi.
SAPUI5-komponentti
Komponentti on toimiva koodi, jota kรคytetรครคn tarvittaessa uudelleen. Toimittamia komponentteja on 2 tyyppiรค SAPIU5
- Kรคyttรถliittymรคkomponentit โ Nรคmรค edustavat kรคyttรถliittymรครค, joka sisรคltรครค kรคyttรถliittymรคelementtejรค. Nรคmรค perustuvat SPAUI5-luokkaan nimeltรค sap.ui.core.UIComponent
- Kasvottomat komponentit โ Nรคillรค ei ole kรคyttรถliittymรครค. Nรคmรค perustuvat SAPUI5-luokka nimeltรค sap.ui.core.Component
Pohjimmiltaan komponentti on kansio. Kun luot uuden SAPUI5-sovellus, voit nรคhdรค projektinhallinnassasi luodun kansiorakenteen kuten alla.
Tรคssรค UI5-sovelluksessa PassNum on komponentti. Component.js-tiedosto on pakollinen, jotta UI5-sovellus toimii komponenttina. Component.js-tiedosto on komponenttiohjain.
Seuraavaksi tรคssรค SAPIU5 Eclipse opetusohjelmassa, opimme mรครคrittรคmรครคn SAPUI5.
SAPUI5:n asennus
Ennen kuin aloitamme, sinun on varmistettava, ettรค -
- Eclipse (Luna-versio) on asennettu kannettavaan tietokoneeseen
- SAP Kehitystyรถkalut Eclipse Luna ja asennettu pimennykseen (SAP Kehitystyรถkalut Eclipse Luna - https://tools.hana.ondemand.com/luna/)
- SAP Kirjautumislevy on asennettu, ja sinulla on pรครคsy siihen SAP NetWeaver Gateway -jรคrjestelmรค tรคmรคn sovelluksen kรคyttรถรถnottoa ja testausta varten, jota aiomme rakentaa tรคssรค blogissa.
Kun sovellus on rakennettu kokonaan, sen pitรคisi nรคyttรครค alla:
Tรคssรค SAPUI5-opetusopas, luomme 2 komponenttia, nimittรคin ylรคkomponentin ja lapsikomponentin. Ensin luomme lapsikomponentin ja kรคytรคmme sen sitten ylรคkomponentissa.
Aletaan likaamaan kรคsiรคmme.
Osa 1) Luo lapsisovellus
Tavoitteemme on luoda lapsikomponentti, joka hyvรคksyy numerot 1-12 ja nรคyttรครค kuukauden nimen. Esimerkiksi se saa 3; sen pitรคisi nรคyttรครค "Maaliskuu".
Vaihe 1) Luo kรคyttรถliittymรคprojekti
Mene Tiedosto->Uusi->Muu->SAPUI5-sovelluskehitys->sovellusprojekti.
Luo sovellusprojekti SAPUI5 seuraamalla avautuvaa ohjattua toimintoa. Katso kuvakaappaus alla.
Anna projektin nimi ja anna muiden valintojen pysyรค samoina kuin ohjattu toiminto on ehdottanut.
Yllรค olevassa kuvakaappauksessa on kahden tyyppisiรค kirjastoja, jotka nรคkyvรคt valintanapeina
- sap.m
- sap.ui.commons
Kun valitset sap.m, kรคsket ohjattua toimintoa luomaan UI5-sovellusprojektin, jonka bootstrap-osio sisรคltรครค automaattisesti sap.m-kirjaston, joka on tarkoitettu reagoivan verkkosovelluksen luomiseen.
Seuraavaksi tรคssรค SAP FIORI-opetusohjelmassa, nรคet ohjatun toiminnon alla osan, jossa sinun on luotava ensimmรคinen nรคkymรค. Alkuperรคinen nรคkymรค on nรคkymรค, joka luodaan ensimmรคisenรค, kun sovellusta kรคytetรครคn.
Tรคssรค sinun tulee antaa nรคkymรคn nimi ja valita nรคkymรคn tyyppi. SAPUI5 tukee neljรครค nรคkymรครค, kuten yllรค olevasta nรคytรถstรค kรคy ilmi. Joten kรคyttรถliittymรค a SAPUI5-sovellus voidaan rakentaa kรคyttรคmรคllรค Javascript tai XML tai JSON tai HTML kumpi kieli sinulle sopii.
Ohjatun toiminnon lopussa uusi projekti luodaan ja nรคytetรครคn Project Explorer -ikkunassa Eclipse kuten alla.
Vaihe 2) Component.js-koodi
Luodaan seuraavaksi Component.js-tiedosto ja kirjoitetaan siihen alla oleva koodi.
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");
},
});
Vaihe 3) Index.html-koodi
Kerrotaan seuraavaksi index.html-tiedosto, johon Component.js ladataan SAPUI5, kun sovellusta kรคytetรครคn selaimesta. Joten kirjoita alle koodi index.html-tiedostoon.
<!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>
Vaihe 4) DisplayMonthView.view.xml-koodi
Seuraavaksi kirjoitetaan koodi nรคyttรถkuukausinรคkymรครคmme, joka nรคyttรครค kuukauden, jonka kuukausinumero vastaanotetaan ylรคkomponentilta.
<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>
Kun olet liittรคnyt yllรค olevan koodin, nรคkymรคsi pitรคisi nรคyttรครค alla:
Vaihe 5) DisplayMonthView.controller.js-koodi
Ja lopuksi kirjoitetaan koodi DisplayMonthView'n Controller-tiedostoon.
Koodi kirjoitetaan vain tรคmรคn ohjaimen onInit()-hook-metodissa, joten tรคhรคn liitetรครคn vain onInit()-koodi. Loput tiedostosta on kehyksen luomaa.
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);
},
Vaihe 6) Sovelluksen kรคyttรถรถnotto SAP Netweaver Gateway Server
Ota projekti kรคyttรถรถn ja anna tekninen nimi BSP-sovellukselle, joka luodaan ABAP-etupalvelimelle. Olkoon nimi znรคyttรถkuukausi. Tรคssรค vaiheessa hakemusprojektisi pitรคisi nรคyttรครค alla olevalta.
OSA 2) Pรครคkomponentin luominen
Nyt on aika luoda uusi komponentti (emokomponentti), joka kuluttaa tรคssรค opetusohjelmassa tรคhรคn mennessรค luomamme komponentin.
Vaihe 1) Luo uusi SAPUI5 sovellus
Mene Tiedosto->Uusi->Muu->SAPUI5-sovelluskehitys->sovellusprojekti. Luo sitten uusi seuraamalla ohjatun toiminnon ohjeita SAPUI5-sovellusprojekti. Tรคmรค on kuvattu yksityiskohtaisesti yllรค olevan opetusohjelman osan 1 vaiheessa 1.
Pรครคkomponenttiprojektin nimi on PassNum. Ja BSP-sovelluksen tekninen nimi, joka on luotu kรคyttรถรถnoton jรคlkeen SAPUI5-komponentti ABAP-etupalvelimeen on zpassnum. Projektin rakenne nรคyttรครค alla olevalta
Kirjoitetaan nyt koodi index.html-, Component.js- ja PassNum.view.xml- ja PassNum.controller.js-tiedostoihin
Vaihe 2) Pรครคkomponentin Index.html lรคhdekoodi
<!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>
Vaihe 3) Pรครคkomponentin Component.js-tiedoston lรคhdekoodi
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");
},
});
Vaihe 4) PassNum.view.xml-tiedoston lรคhdekoodi
<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>
Kun olet kรคyttรคnyt yllรค olevaa koodia nรคkymรคssรคsi, nรคkymรคsi pitรคisi nรคyttรครค alla olevalta
Vaihe 5) PassNum.controller.js:n lรคhdekoodi
Vain onInit()-menetelmรครค on muutettu. Kaikki muu tรคssรค tiedostossa pysyy ennallaan
onInit: function() {
jQuery.sap.registerModulePath("DisplayMonth", "../zdisplaymonth");
},
clickbutton:function(oEvent)
{
sap.ui.getCore().getEventBus().publish("exchange",
"data", oEvent.oSource.sId.split("--")[1]);
}
Vaihe 6) Pรครคkomponentin kรคyttรถรถnotto kohteeseen SAP Netweaver Gateway Server
Ota sovellus kรคyttรถรถn ABAP-etupalvelimella ja suorita se. Sinun pitรคisi pystyรค suorittamaan se napsauttamalla projektia hiiren kakkospainikkeella ja napsauttamalla "Suorita ABAP-palvelimella" -vaihtoehtoa.
Alla oleva URL-osoite avautuu eclipse-selaimessa.
http://hostname:8000/sap/bc/ui5_ui5/sap/zpassnum/index.html
Kopioi URL-osoite ja suorita se varsinaisessa selaimessa. Yllรค olevassa keltaisella merkityssรค isรคntรคnimessรค on ABAP-kรคyttรถliittymรคpalvelimesi isรคntรคnimi.
ulostulo
Napsauta "Ensimmรคinen" -painiketta, tammikuun pitรคisi nรคkyรค lapsikomponentissa.
Nauti kauniiden, responsiivisten verkkosovellusten luomisesta SAPUI5.
Yhteenveto
Tรคssรค SAPUI5-opetusohjelma, olemme oppineet:
- SAPUI5 tutkittu: SAPUI5 on sarjan uusin SAP Kรคyttรถliittymรคn kehitysteknologiat.
- Mikรค on SAP UI5: SAPUI5 on joukko kirjastoja, joita kรคytetรครคn reagoivien verkkosovellusten rakentamiseen
- Komponentit SAPUI5-arkkitehtuuri ovat Devices, Client, NetWeaver Gateway, Persistence Layer
- A SAPUI5-komponentti on toimiva koodi, jota kรคytetรครคn tarvittaessa uudelleen
- Tyyppisiรค SAPUI5-komponentit ovat 1) UI-komponentteja, 2) kasvottomia komponentteja
- Opimme yhden sapui5-komponentin kuluttamisesta toiseen sapui5-komponenttiin ja tiedon siirtรคmisestรค nรคiden kahden komponentin vรคlillรค














