├── .gitignore ├── 03_UI5_HelloWorld ├── UI5_TemplateApp │ ├── webapp │ │ ├── css │ │ │ └── style.css │ │ ├── i18n │ │ │ └── i18n.properties │ │ ├── controller │ │ │ └── View1.controller.js │ │ ├── view │ │ │ └── View1.view.xml │ │ ├── model │ │ │ └── models.js │ │ ├── Component.js │ │ ├── index.html │ │ └── manifest.json │ ├── neo-app.json │ ├── .user.project.json │ └── .project.json ├── sapWebIDE-PE │ ├── logoUI5.jpg │ └── config_master │ │ └── service.destinations │ │ └── destinations │ │ ├── Northwind │ │ └── XXX ├── ABAP_UI5-HelloWorld_v1.pdf └── UI5_TemplateApp_Preview.jpg ├── 04_UI5_CRUD ├── ABAP_UI5-CRUDnav_MasterDetail │ ├── webapp │ │ ├── css │ │ │ └── style.css │ │ ├── view │ │ │ ├── App.view.xml │ │ │ ├── Detail.view.xml │ │ │ └── Master.view.xml │ │ ├── model │ │ │ └── models.js │ │ ├── i18n │ │ │ └── i18n.properties │ │ ├── controller │ │ │ ├── Master.controller.js │ │ │ ├── App.controller.js │ │ │ └── Detail.controller.js │ │ ├── index.html │ │ ├── Component.js │ │ ├── manifest.json │ │ └── localService │ │ │ └── metadata.xml │ ├── .user.project.json │ ├── neo-app.json │ └── .project.json ├── ABAP_UI5-CRUDnav_v2.pdf ├── ABAP_UI5-CRUDnav_MasterDetail_Detail.png └── ABAP_UI5-CRUDnav_MasterDetail_Master.png ├── 02_ODataService_Usage └── ABAP_OData-Usage_v1.pdf ├── 01_ODataService_CreationABAP ├── ABAP_OData-Retrieval_v1.pdf ├── ABAP_OData-Retrieval_v1-Presentation.pdf └── ABAP_OData-Retrieval_ZCL_Z_ODS_EMPLOYEE_XXX_DPC_EXT.abap └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | /.idea/ -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/webapp/css/style.css: -------------------------------------------------------------------------------- 1 | /* Enter your custom styles here */ -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/webapp/css/style.css: -------------------------------------------------------------------------------- 1 | /* Enter your custom styles here */ -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/webapp/i18n/i18n.properties: -------------------------------------------------------------------------------- 1 | title=Title 2 | appTitle = App Title 3 | appDescription=App Description -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_v2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maenujem/UI5_OData_CRUD_Example/HEAD/04_UI5_CRUD/ABAP_UI5-CRUDnav_v2.pdf -------------------------------------------------------------------------------- /03_UI5_HelloWorld/sapWebIDE-PE/logoUI5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maenujem/UI5_OData_CRUD_Example/HEAD/03_UI5_HelloWorld/sapWebIDE-PE/logoUI5.jpg -------------------------------------------------------------------------------- /02_ODataService_Usage/ABAP_OData-Usage_v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maenujem/UI5_OData_CRUD_Example/HEAD/02_ODataService_Usage/ABAP_OData-Usage_v1.pdf -------------------------------------------------------------------------------- /03_UI5_HelloWorld/ABAP_UI5-HelloWorld_v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maenujem/UI5_OData_CRUD_Example/HEAD/03_UI5_HelloWorld/ABAP_UI5-HelloWorld_v1.pdf -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp_Preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maenujem/UI5_OData_CRUD_Example/HEAD/03_UI5_HelloWorld/UI5_TemplateApp_Preview.jpg -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail_Detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maenujem/UI5_OData_CRUD_Example/HEAD/04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail_Detail.png -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail_Master.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maenujem/UI5_OData_CRUD_Example/HEAD/04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail_Master.png -------------------------------------------------------------------------------- /01_ODataService_CreationABAP/ABAP_OData-Retrieval_v1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maenujem/UI5_OData_CRUD_Example/HEAD/01_ODataService_CreationABAP/ABAP_OData-Retrieval_v1.pdf -------------------------------------------------------------------------------- /01_ODataService_CreationABAP/ABAP_OData-Retrieval_v1-Presentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maenujem/UI5_OData_CRUD_Example/HEAD/01_ODataService_CreationABAP/ABAP_OData-Retrieval_v1-Presentation.pdf -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/webapp/controller/View1.controller.js: -------------------------------------------------------------------------------- 1 | sap.ui.define([ 2 | "sap/ui/core/mvc/Controller" 3 | ], function(Controller) { 4 | "use strict"; 5 | 6 | return Controller.extend("UI5_Template.controller.View1", { 7 | 8 | }); 9 | }); -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/webapp/view/App.view.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/webapp/view/View1.view.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /03_UI5_HelloWorld/sapWebIDE-PE/config_master/service.destinations/destinations/Northwind: -------------------------------------------------------------------------------- 1 | #ServiceDestination 2 | Description=Northwind OData Service 3 | Type=HTTP 4 | TrustAll=true 5 | Authentication=NoAuthentication 6 | Name=Northwind 7 | ProxyType=Internet 8 | URL=http\://services.odata.org\:80 9 | WebIDEUsage=odata_gen 10 | WebIDESystem=Northwind 11 | WebIDEEnabled=true -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/webapp/model/models.js: -------------------------------------------------------------------------------- 1 | sap.ui.define([ 2 | "sap/ui/model/json/JSONModel", 3 | "sap/ui/Device" 4 | ], function(JSONModel, Device) { 5 | "use strict"; 6 | 7 | return { 8 | 9 | createDeviceModel: function() { 10 | var oModel = new JSONModel(Device); 11 | oModel.setDefaultBindingMode("OneWay"); 12 | return oModel; 13 | } 14 | 15 | }; 16 | }); -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/webapp/model/models.js: -------------------------------------------------------------------------------- 1 | sap.ui.define([ 2 | "sap/ui/model/json/JSONModel", 3 | "sap/ui/Device" 4 | ], function(JSONModel, Device) { 5 | "use strict"; 6 | 7 | return { 8 | 9 | createDeviceModel: function() { 10 | var oModel = new JSONModel(Device); 11 | oModel.setDefaultBindingMode("OneWay"); 12 | return oModel; 13 | } 14 | 15 | }; 16 | }); -------------------------------------------------------------------------------- /03_UI5_HelloWorld/sapWebIDE-PE/config_master/service.destinations/destinations/XXX: -------------------------------------------------------------------------------- 1 | #ServiceDestination 2 | Description=XXX 3 | Type=HTTP 4 | TrustAll=true 5 | Authentication=NoAuthentication 6 | Name=XXX 7 | ProxyType=Internet 8 | URL=http\://xxx.xxx.xxx.xxx\:xxxx 9 | WebIDEUsage=odata_abap,dev_abap,ui5_execute_abap,bsp_execute_abap 10 | WebIDESystem=XXX 11 | WebIDEEnabled=true 12 | sap-client=xxx 13 | -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/webapp/i18n/i18n.properties: -------------------------------------------------------------------------------- 1 | title=Title 2 | appTitle = App Title 3 | appDescription=App Description 4 | 5 | employeeCreated=Employee with ID {0} created! 6 | employeeUpdated=Employee with ID {0} updated! 7 | employeeDeleted=Employee with ID {0} deleted! 8 | 9 | masterViewTitle=Manuel Schaffner: Master 10 | detailViewTitle=Manuel Schaffner: Detail 11 | 12 | employeeList=Employee List 13 | employeeDetail=Employee Detail 14 | 15 | createButtonText=Create 16 | updateButtonText=Update 17 | deleteButtonText=Delete -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/.user.project.json: -------------------------------------------------------------------------------- 1 | { 2 | "run": [ 3 | { 4 | "filePath": "/webapp/index.html", 5 | "previewMode": 1, 6 | "dataMode": 1, 7 | "workspace": "withoutWorkspace", 8 | "ui5ActiveVersion": null, 9 | "ui5VerSource": null, 10 | "isDefaultVersion": 0, 11 | "urlParameters": [], 12 | "hashParameter": "", 13 | "backendSystem": [], 14 | "_metadata": { 15 | "runnerId": "webapprunner", 16 | "id": 6719078, 17 | "displayName": "Run index.html", 18 | "lastRunTimeStamp": 1530484024503 19 | } 20 | } 21 | ] 22 | } -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/neo-app.json: -------------------------------------------------------------------------------- 1 | { 2 | "welcomeFile": "/webapp/index.html", 3 | "routes": [ 4 | { 5 | "path": "/resources", 6 | "target": { 7 | "type": "service", 8 | "name": "sapui5", 9 | "entryPath": "/resources", 10 | "version": "1.44.12" 11 | }, 12 | "description": "SAPUI5 Resources" 13 | }, 14 | { 15 | "path": "/test-resources", 16 | "target": { 17 | "type": "service", 18 | "name": "sapui5", 19 | "entryPath": "/test-resources", 20 | "version": "1.44.12" 21 | }, 22 | "description": "SAPUI5 Test Resources" 23 | } 24 | ], 25 | "sendWelcomeFileRedirect": true 26 | } -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/webapp/Component.js: -------------------------------------------------------------------------------- 1 | sap.ui.define([ 2 | "sap/ui/core/UIComponent", 3 | "sap/ui/Device", 4 | "UI5_Template/model/models" 5 | ], function(UIComponent, Device, models) { 6 | "use strict"; 7 | 8 | return UIComponent.extend("UI5_Template.Component", { 9 | 10 | metadata: { 11 | manifest: "json" 12 | }, 13 | 14 | /** 15 | * The component is initialized by UI5 automatically during the startup of the app and calls the init method once. 16 | * @public 17 | * @override 18 | */ 19 | init: function() { 20 | // call the base component's init function 21 | UIComponent.prototype.init.apply(this, arguments); 22 | 23 | // set the device model 24 | this.setModel(models.createDeviceModel(), "device"); 25 | } 26 | }); 27 | }); -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/neo-app.json: -------------------------------------------------------------------------------- 1 | { 2 | "welcomeFile": "/webapp/index.html", 3 | "routes": [ 4 | { 5 | "path": "/resources", 6 | "target": { 7 | "type": "service", 8 | "name": "sapui5", 9 | "entryPath": "/resources" 10 | }, 11 | "description": "SAPUI5 Resources" 12 | }, 13 | { 14 | "path": "/test-resources", 15 | "target": { 16 | "type": "service", 17 | "name": "sapui5", 18 | "entryPath": "/test-resources" 19 | }, 20 | "description": "SAPUI5 Test Resources" 21 | }, 22 | { 23 | "path": "/sap/opu/odata", 24 | "target": { 25 | "type": "destination", 26 | "name": "XXX", 27 | "entryPath": "/sap/opu/odata" 28 | }, 29 | "description": "XXX" 30 | } 31 | ], 32 | "sendWelcomeFileRedirect": true 33 | } 34 | -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | UI5_Template 9 | 10 | 17 | 18 | 19 | 20 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/webapp/controller/Master.controller.js: -------------------------------------------------------------------------------- 1 | sap.ui.define([ 2 | "sap/ui/core/mvc/Controller" 3 | ], function(Controller) { 4 | "use strict"; 5 | 6 | return Controller.extend("test_MasterDetailTable.controller.Master", { 7 | 8 | onInit: function() { 9 | 10 | this.getView().setModel(this.getOwnerComponent().getModel("employees")); 11 | 12 | }, 13 | 14 | // onNavToDetail : function (oEvent){ 15 | // this.getOwnerComponent().getRouter().navTo("detail", { 16 | // detailId : 3 //oCtx.getProperty("detailId") 17 | // }); 18 | // } 19 | 20 | onNavToDetail : function (oEvent){ 21 | var oItem = oEvent.getSource().getSelectedItem(); 22 | var oCtx = oItem.getBindingContext(); 23 | var oId = oCtx.getProperty("Carrier") + '-' + oCtx.getProperty("IdEmployee"); //oCtx.getPath() - prepare detailId for URL /detail/{detailId} 24 | 25 | this.getOwnerComponent().getRouter().navTo("detail", { 26 | detailId : oId 27 | }); 28 | } 29 | 30 | }); 31 | }); -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/webapp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | test_MasterDetailTable 9 | 10 | 11 | 18 | 19 | 20 | 21 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/.user.project.json: -------------------------------------------------------------------------------- 1 | { 2 | "run": [ 3 | { 4 | "filePath": "/webapp/Component.js", 5 | "previewMode": 1, 6 | "dataMode": 1, 7 | "workspace": "withoutWorkspace", 8 | "ui5ActiveVersion": null, 9 | "ui5VerSource": null, 10 | "isDefaultVersion": 0, 11 | "urlParameters": [], 12 | "hashParameter": "", 13 | "backendSystem": [], 14 | "_metadata": { 15 | "runnerId": "fiorirunner", 16 | "id": 3849133, 17 | "displayName": "Run Component.js", 18 | "lastRunTimeStamp": 1531592381685 19 | } 20 | }, 21 | { 22 | "filePath": "/webapp/index.html", 23 | "previewMode": 1, 24 | "dataMode": 1, 25 | "workspace": "withoutWorkspace", 26 | "ui5ActiveVersion": null, 27 | "ui5VerSource": null, 28 | "isDefaultVersion": 0, 29 | "urlParameters": [], 30 | "hashParameter": "", 31 | "backendSystem": [], 32 | "_metadata": { 33 | "runnerId": "webapprunner", 34 | "id": 5263253, 35 | "displayName": "Run index.html", 36 | "lastRunTimeStamp": 1531592273397 37 | } 38 | } 39 | ] 40 | } -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/.project.json: -------------------------------------------------------------------------------- 1 | { 2 | "projectType": [ 3 | "sap.watt.uitools.ide.fiori", 4 | "com.watt.common.builder.sapui5clientbuild" 5 | ], 6 | "build": { 7 | "targetFolder": "dist", 8 | "sourceFolder": "webapp", 9 | "buildRequired": true 10 | }, 11 | "generation": [ 12 | { 13 | "templateId": "ui5template.basicSAPUI5ApplicationProjectCommon", 14 | "templateVersion": "1.32.0", 15 | "dateTimeStamp": "Sat, 14 Jul 2018 18:15:52 GMT" 16 | }, 17 | { 18 | "templateId": "ui5template.basicSAPUI5ApplicationProject", 19 | "templateVersion": "1.40.12", 20 | "dateTimeStamp": "Sat, 14 Jul 2018 18:15:52 GMT" 21 | } 22 | ], 23 | "translation": { 24 | "translationDomain": "", 25 | "supportedLanguages": "en,fr,de", 26 | "defaultLanguage": "en", 27 | "defaultI18NPropertyFile": "i18n.properties", 28 | "resourceModelName": "i18n" 29 | }, 30 | "basevalidator": { 31 | "services": { 32 | "xml": "fioriXmlAnalysis", 33 | "js": "fioriJsValidator" 34 | } 35 | }, 36 | "codeCheckingTriggers": { 37 | "notifyBeforePush": true, 38 | "notifyBeforePushLevel": "Error", 39 | "blockPush": false, 40 | "blockPushLevel": "Error" 41 | } 42 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SAP: ABAP OData Service & UI5 CRUD App Example 2 | ==== 3 | 4 | Welcome to a simple tutorial series about creating an SAP OData Service in ABAP and consuming its CRUD functionality with a UI5 Master-Detail app. 5 | 6 | In this tutorial series you will.. 7 | * [01] ..create an OData-Service and implement associated CRUD functionality using ABAP-code to access an existing table in the SAP-System 8 | * [02] ..get to know how to use an OData-Service with different request parameters 9 | * [03] ..get to know SAP/open UI5 () and implement a Hello World Example 10 | * [04] ..access your OData-Service [01] and display the data using master-table and detail-form. In the detail form xou can also create, update, delete the current record. 11 | 12 | The tutorial is contained in the *PDF document in the corresponding directory*. There may also be additional informations and files. 13 | 14 | The series cover the following topics: 15 | - create OData-Service from DDIC and implement CRUD with ABAP 16 | - use OData-Service 17 | - UI5 Basics (View, Controller, Model, Component, I18n, Icons, Messages, Routing/Navigation, DataBinding) 18 | 19 | 20 | For further information check out the following links 21 | - https://openui5.org/ Main page 22 | - https://openui5.hana.ondemand.com/ : Reference Docu 23 | - https://open.sap.com/courses/ui51 : Online Course 24 | -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/webapp/Component.js: -------------------------------------------------------------------------------- 1 | sap.ui.define([ 2 | "sap/ui/core/UIComponent", 3 | "sap/ui/Device", 4 | "sap/ui/model/odata/v2/ODataModel", 5 | "test_MasterDetailTable/model/models" 6 | ], function(UIComponent, Device, ODataModel, models) { 7 | "use strict"; 8 | 9 | return UIComponent.extend("test_MasterDetailTable.Component", { 10 | 11 | metadata: { 12 | manifest: "json" 13 | }, 14 | 15 | /** 16 | * The component is initialized by UI5 automatically during the startup of the app and calls the init method once. 17 | * @public 18 | * @override 19 | */ 20 | init: function() { 21 | // call the base component's init function 22 | UIComponent.prototype.init.apply(this, arguments); 23 | 24 | // create the views based on the url/hash 25 | this.getRouter().initialize(); 26 | 27 | // set the device model 28 | this.setModel(models.createDeviceModel(), "device"); 29 | 30 | // set the odata model for emoloyees 31 | // var sUrl = "/sap/opu/odata/sap/ZOD_EMPLOYEE_MSC_SRV/"; 32 | // var oModel = new ODataModel(sUrl, { 33 | // useBatch: false, 34 | // defaultBindingMode: "TwoWay" 35 | // }); 36 | // 37 | // this.setModel(oModel, "employees"); 38 | // var oModel = this.getModel("employees"); 39 | // oModel.setDefaultBindingMode(sap.ui.model.BindingMode.TwoWay); 40 | // oModel.setUseBatch(false); 41 | 42 | } 43 | }); 44 | }); 45 | -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/webapp/controller/App.controller.js: -------------------------------------------------------------------------------- 1 | sap.ui.define([ 2 | "sap/ui/core/mvc/Controller" 3 | ], function(Controller) { 4 | "use strict"; 5 | 6 | return Controller.extend("test_MasterDetailTable.controller.App", { 7 | 8 | /** 9 | * Called when a controller is instantiated and its View controls (if available) are already created. 10 | * Can be used to modify the View before it is displayed, to bind event handlers and do other one-time initialization. 11 | * @memberOf test_MasterDetailTable.view.Main 12 | */ 13 | // onInit: function() { 14 | // 15 | // }, 16 | 17 | /** 18 | * Similar to onAfterRendering, but this hook is invoked before the controller's View is re-rendered 19 | * (NOT before the first rendering! onInit() is used for that one!). 20 | * @memberOf test_MasterDetailTable.view.Main 21 | */ 22 | // onBeforeRendering: function() { 23 | // 24 | // }, 25 | 26 | /** 27 | * Called when the View has been rendered (so its HTML is part of the document). Post-rendering manipulations of the HTML could be done here. 28 | * This hook is the same one that SAPUI5 controls get after being rendered. 29 | * @memberOf test_MasterDetailTable.view.Main 30 | */ 31 | // onAfterRendering: function() { 32 | // 33 | // }, 34 | 35 | /** 36 | * Called when the Controller is destroyed. Use this one to free resources and finalize activities. 37 | * @memberOf test_MasterDetailTable.view.Main 38 | */ 39 | // onExit: function() { 40 | // 41 | // } 42 | 43 | }); 44 | 45 | }); -------------------------------------------------------------------------------- /03_UI5_HelloWorld/UI5_TemplateApp/webapp/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "_version": "1.5.0", 3 | "sap.app": { 4 | "id": "UI5_Template", 5 | "type": "application", 6 | "i18n": "i18n/i18n.properties", 7 | "applicationVersion": { 8 | "version": "1.0.0" 9 | }, 10 | "title": "{{appTitle}}", 11 | "description": "{{appDescription}}", 12 | "sourceTemplate": { 13 | "id": "ui5template.basicSAPUI5ApplicationProject", 14 | "version": "1.40.12" 15 | } 16 | }, 17 | 18 | "sap.ui": { 19 | "technology": "UI5", 20 | "icons": { 21 | "icon": "", 22 | "favIcon": "", 23 | "phone": "", 24 | "phone@2": "", 25 | "tablet": "", 26 | "tablet@2": "" 27 | }, 28 | "deviceTypes": { 29 | "desktop": true, 30 | "tablet": true, 31 | "phone": true 32 | }, 33 | "supportedThemes": [ 34 | "sap_hcb", 35 | "sap_belize" 36 | 37 | ] 38 | }, 39 | 40 | "sap.ui5": { 41 | "rootView": { 42 | "viewName": "UI5_Template.view.View1", 43 | "type": "XML" 44 | }, 45 | "dependencies": { 46 | "minUI5Version": "1.30.0", 47 | "libs": { 48 | "sap.ui.core": {}, 49 | "sap.m": {}, 50 | "sap.ui.layout": {}, 51 | "sap.ushell": {}, 52 | "sap.collaboration": {}, 53 | "sap.ui.comp": {}, 54 | "sap.uxap": {} 55 | } 56 | }, 57 | "contentDensities": { 58 | "compact": true, 59 | "cozy": true 60 | }, 61 | "models": { 62 | "i18n": { 63 | "type": "sap.ui.model.resource.ResourceModel", 64 | "settings": { 65 | "bundleName": "UI5_Template.i18n.i18n" 66 | } 67 | } 68 | }, 69 | "resources": { 70 | "css": [{ 71 | "uri": "css/style.css" 72 | }] 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/.project.json: -------------------------------------------------------------------------------- 1 | { 2 | "projectType": [ 3 | "sap.watt.uitools.ide.fiori", 4 | "com.watt.common.builder.sapui5clientbuild" 5 | ], 6 | "build": { 7 | "targetFolder": "dist", 8 | "sourceFolder": "webapp", 9 | "buildRequired": true 10 | }, 11 | "generation": [ 12 | { 13 | "templateId": "ui5template.basicSAPUI5ApplicationProjectCommon", 14 | "templateVersion": "1.32.0", 15 | "dateTimeStamp": "Sat, 02 Jun 2018 13:21:33 GMT" 16 | }, 17 | { 18 | "templateId": "ui5template.basicSAPUI5ApplicationProject", 19 | "templateVersion": "1.40.12", 20 | "dateTimeStamp": "Sat, 02 Jun 2018 13:21:33 GMT" 21 | }, 22 | { 23 | "templateId": "ui5template.basicSAPUI5ApplicationComponent", 24 | "templateVersion": "1.4.0", 25 | "dateTimeStamp": "Sat, 02 Jun 2018 13:23:23 GMT" 26 | }, 27 | { 28 | "templateId": "servicecatalog.connectivityComponent", 29 | "templateVersion": "0.0.0", 30 | "dateTimeStamp": "Sun, 10 Jun 2018 09:19:52 GMT" 31 | } 32 | ], 33 | "translation": { 34 | "translationDomain": "", 35 | "supportedLanguages": "en,fr,de", 36 | "defaultLanguage": "en", 37 | "defaultI18NPropertyFile": "i18n.properties", 38 | "resourceModelName": "i18n" 39 | }, 40 | "basevalidator": { 41 | "services": { 42 | "xml": "fioriXmlAnalysis", 43 | "js": "fioriJsValidator" 44 | } 45 | }, 46 | "codeCheckingTriggers": { 47 | "notifyBeforePush": true, 48 | "notifyBeforePushLevel": "Error", 49 | "blockPush": false, 50 | "blockPushLevel": "Error" 51 | }, 52 | "mockpreview": { 53 | "mockUri": "/sap/opu/odata/sap/ZOD_EMPLOYEE_MSC_SRV", 54 | "metadataFilePath": "", 55 | "loadJSONFiles": false, 56 | "loadCustomRequests": false, 57 | "mockRequestsFilePath": "" 58 | } 59 | } -------------------------------------------------------------------------------- /04_UI5_CRUD/ABAP_UI5-CRUDnav_MasterDetail/webapp/view/Detail.view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 26 | 27 | 28 | 29 |