Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
yuval_morad
Advisor
Advisor
50,056

Introduction



PLEASE CHECK THE NEW MIGRATION BLOG
https://blogs.sap.com/2022/01/06/migrate-sap-fiori-projects-from-sap-web-ide-to-sap-business-applica...

SAP Business Application Studio (aka BAS) is the evolution of SAP Web IDE. It is a modular development environment, built on “Eclipse Theia”, an open-source IDE that embraces the Microsoft VS Code experience. It aims to improve time to value of the developers, provide a modern development experience and allow simple integration with SAP’s services and systems.

In this blog post, I will guide you through migrating an SAP Fiori application from SAP Web IDE to SAP Business Application Studio. The SAP Fiori application consumes an S/4 HANA on-prem service and is deployed to the SAP UI5 Repository on ABAP environment.

You can also watch my video or a a video from UI5Con showing a new application development, or you can also check my blog post regarding SAP Fiori application development.

For migration of SAP Fiori application from Neo to Cloud Foundry follow this blog post.

The environment setup below only needs to be performed one time.

Environment Setup



  1. Create a subaccount in your global account or use an existing account and skip to Step three.
    Note
    : You do NOT have to enable Cloud Foundry since the SAP Fiori application runtime is on the ABAP environment.

  2. For trial account, Make sure that your subaccount has an SAP Business Application Studio entitlement. If the entitlement is missing, add it from Entitlements menu.
    .

  3. Navigate to the Subscriptions menu and search for SAP Business Application Studio. Click on the tile and click Subscribe.

  4. Assign yourself to a developer role:

    1. Navigate to Security > Trust Configuration.

    2. Click the sap.default link.

    3. Enter your email address.

    4. Click Assign Role Collection.

    5. Select "Business_Application_Studio_Developer" from the dialog box.






      5. Launch SAP Business Application Studio:



    1. Navigate to Subscriptions menu and locate the SAP Business Application Studio tile.

    2. Click Go to Application.




The SAP Business Application Studio Dev Spaces UI opens.


 

6. Create an SAP Fiori Dev Space:



    1. Click Create Dev Space.

    2. Enter a name for the dev space.

    3. Select the SAP Fiori type (from the left side).

    4. Click Create Dev Space.

    5. Launch the dev space by clicking on the dev space name.





 


 

7. Import your destination:



    1. Navigate to your Neo account and export the existing destination required for the SAP Fiori app to your PC.

    2. Navigate to Connectivity > Destinations in your new subaccount and import the existing destination.

    3. Make sure that the following properties are set in Additional Properties of the destination:

      1. HTML5.DynamicDestination = true

      2. WebIDEEnabled = true

      3. WebIDEUsage = odata_abap,dev_abap
        In case your service is not an abap catalog, add WebIDEUsage = odata_gen
        Do NOT maintain both odata_abap and odata_gen as WebIDEUsage.

      4. HTML5.Timeout = 60000



    4. Make sure that your subaccount is connected to your on-prem destination with
      a cloud connector.




 


 

 

 

 

Migrating your Project


During migration, you import your existing project, adjust four files and run the application in SAP Business Application Studio.

Import your project


You can clone your project from GIT using the command line in SAP Business Application Studio.
Note: See Connecting to External Systems for more information on using a destination with Cloud Connector as your GIT on-prem setup.

Alternatively, import your project as follows:



    1. Click File > Open Workspace and create a workspace in the projects folder.

    2. Export your project (e.g. "onprem" project) from SAP Web IDE Full Stack to your PC.

    3. Unzip the project on your PC.

    4. Drag and drop the project to the SAP Business Application Studio.




 



     

Adjust your project


Only 4 files should be changed to enable your SAP Fiori app to run on Application Studio:

  1. Create an “xs-app.json” file under the project's root folder to enable the local run.This file replaces the “neo-app.json” file, which is not required.

  2. Adapt the “package.json” file with the relevant required dev-dependencies, such as code assist, build, and local run.

  3. Adapt the “ui5.yaml” file to include the relevant SAPUI5 build tasks.

  4. Adapt "index.html" to use absolute SAPUI5 URL.


 



xs-app.json File



  1. Create the file under the project's root folder (e.g. "onprem") folder.

  2. Copy the following snippet and enter your destination name. This snippet:

    1. Adds a route to your "on-prem" destination.

    2. Adds a route to enable the local run.











{
"authenticationMethod": "none",
"routes":
[
{
"authenticationType": "none",
"csrfProtection": false,
"source": "^/sap/opu/odata/",
"destination": "<YourDestination>"
},
{
"source": "^(.*)$",
"target": "$1",
"service": "html5-apps-repo-rt"
}
]

}

 

package.json File


If no specific dev-dependencies/scripts are added,
replace the content with the following snippet and adjust the name in bold:



{
"name": "onprem",
"version": "0.0.1",
"devDependencies": {
"@sapui5/ts-types": "1.71.x",
"@sap/ui5-builder-webide-extension": "1.0.x",
"@sap/approuter": "8.1.x",
"@sap/html5-repo-mock": "1.6.x"

},
"scripts": {
"build": "ui5 build --include-task=generateManifestBundle generateCachebusterInfo",
"start-local": "node node_modules/@sap/html5-repo-mock/index.js"
},
"ui5": {
"dependencies": [
"@sap/ui5-builder-webide-extension"
]
}
}



ui5.yaml File


If no specific SAPUI5 build tasks are added, replace the content with the following snippet and adjust the "nameSpace" value in bold:

specVersion: '1.0'
metadata:
name: onprem
type: application
resources:
configuration:
propertiesFileSourceEncoding: UTF-8
builder:
customTasks:
- name: webide-extension-task-updateManifestJson
afterTask: generateVersionInfo
configuration:
appFolder: webapp
destDir: dist
- name: webide-extension-task-resources
afterTask: webide-extension-task-updateManifestJson
configuration:
nameSpace: ns



index.html File


SAPUI5 bootstrap can refer to relative URL then it will be consumed from ABAP runtime and not from CDN. Adjust the "src" value in bold:

     <script id="sap-ui-bootstrap"  
   src= "./resources/sap-ui-core.js"


 

Delete files


The following files and folders can be deleted:
".che" folder, ".user.project.json", "extensionDocu.properties", "neo-app.json",
"package-lock.json"
, "readme.txt"




Test your SAP Fiori Application



  1. Perform an npm install from the terminal.

  2. Create a run configuration from the run panel.

  3. Bind your destination in the run configuration.

  4. Locally run your app accessing your remote service.


Your app is running in a new browser tab.

Build and deploy your SAP Fiori Application



  1. Perform an npm run build from the terminal.

  2. Execute "abap-deploy" and answer the questions from the terminal.


Your app is deployed to the ABAP system.

 

Conclusions


You have accomplished the following tasks:

  1. Setup SAP Business Application Studio development environment.

  2. Migrate an SAP Fiori application consuming ABAP on-prem service from SAP Web IDE to SAP Business Application Studio.

  3. Test the application locally and deploy it to ABAP.


You can continue and learn about SAP Fiori development using SAP Business Application Studio in this blog post.
97 Comments
yuval_morad
Advisor
Advisor
0 Kudos
it should not be bold, give it any name
0 Kudos
Importing files / folders from Local Machine to Trial Work Space.

Hi Yuval,

Under Section 'Migrating your Project' -> 'Import your project'
For trial environment,
Is there any option to copy folder from local machine to Work Space.
Because in Menu there is no option.

Also copying from Windows explorer to BAS Explorer does not work.
In WebIDE there was option to import zip file from local Machine to WebIDE

For moving folders with in trial environment,
Is GIT the only option?

Thanks,

Vikas
yuval_morad
Advisor
Advisor
0 Kudos
Hi Vikas,

Just drag and drop to the workspace, there is no import support.
former_member641899
Discoverer
0 Kudos

Hi Yuval,

 

Yes Check connection in destination does not work properly when we configure destination in CF via cloud connector, whereas we can access destination in our UI5 development in BAS even though it shows error while testing connection.

 

Also step 1,2 works well, but deployment stuck with error:

Failed to deploy Application: <Request failed with status code 403>

 

where as i have followed:

  1. open terminal using project in workspace
  2. run command–> npm run build
  3. run command–> abap-deploy
  4. it shows below options:
  5. Specify the source folder path for deployment … ./dist
    ✔ Select a target ABAP system › SAPXX (http://sapxx:8XXX : 100)
    ✔ Enter an application name … ztestproj
    ✔ Enter a description for the application …
    ✔ Enter a package for the deployed application … zfioriXX
    ✔ Enter a transport request for the deployed application … CXXXXXX
  6. The “ztestproj” application is being deployed to ABAP in ‘create’ mode.
    Failed to deploy Application: <Request failed with status code 403>

 

Please add-in in case there are any hidden steps to deploy ui5 app from BAS to on-premises SAP system.

 

 

yuval_morad
Advisor
Advisor
0 Kudos
No hidden steps that I can think of, see the my video in this introduction above
https://www.youtube.com/watch?v=PFBoqhAJmP4&feature=youtu.be

Can you deploy to $TMP a new app?
Hyuk_Oh
Explorer
0 Kudos

Hello Yuval.

Thanks for your blog post.

I have a question.

How can I download source code from S4HANA on-premise server?

WebIDE has an import menu to download source code from a SAP server,

but I can’t find anything similar on BAS.

Is the git an only way to manage source code?

 

Thanks in advance.

 

yuval_morad
Advisor
Advisor
0 Kudos
Hi

Currently yes, git is the source control, ABAP is the runtime environment and in the UI5 Repository your BSP app should not function as source control, e.g test folder should appear only in source code and component preload should appear only in BSP app and not in the source control.
kivancaktas
Explorer
0 Kudos

Hi Yuval,

I have created mta project and added extended Fiori App that normally runs on NEO- Portal and my purpose is migrate these apps to the CF – Portal. When I try to create mtar archive the terminal giving error as below:

  Process Failed With Error

Error Message:
Failed to read manifest.json for project caallapv: ENOENT: no such file or directory, open 'mtafolder/standard_old_fioriapp/webapp/manifest.json'

What is your suggesting to migrate Fiori apps that has no descriptor file (manifest.json) ?

 

Kind regards,

Kivanc

yuval_morad
Advisor
Advisor
0 Kudos
You need a manifest sonce it is a requirment for HTML5 Repository in CF.

The min information inside is app id and version.

I propose that you create a simple UI5 app for CF with your app name on BAS, and replace the webapp folder with you webapp folder
kivancaktas
Explorer
0 Kudos

Many thanks! I was planning the same but didn’t sure about what is the minimum info needed for manifest. I will let you know about the result.

vijayfcb
Discoverer
0 Kudos
Hi Yuval.

Thank you for the blog.

I have migrated my application from WEBIDE to BAS. It is working as expected.

But when I am deploying the application from BAS, it is getting deployed in Create mode and is giving an error as:

Failed to deploy Application: <SAPUI5 ABAP Repository with name “X” already exists SAPUI5 ABAP Repository with name “X” already exists>


deploy error


Can you please help me on this.

Does the error related to the spec version in ui5.yaml file, i have set it as 1.0 as suggested.


ui5.yaml


 

Kindly let us know, what may be wrong.

Thanks

Vijay
Hi,

 

npm run deploy

is what we need.

abap-deploy always uses create mode...
former_member193202
Participant
0 Kudos
Hi Yuval,

 

we moved an app from webide(productive) to bas(trial), moving worked but we have troubles in testing there.

 

we have a neo-app.json with a lot of entries like (loading components):

{
"path": "/sap/bc/ui5_ui5/tyed/mm_mat_class",
"target": {
"type": "application",
"name": "matclassification"
},
"description": "matclassification"
},

 

where when in webide the source should be loaded from cloud (neo) , and the /sap/bc path is the path in abap backend.

it would be great if there would be an example how to do this in xs-app.json

 

and will be there one day a tool that can convert from webide to bas?

 

as we are not sure, if we should migrate to Bas^ß, when is it worth to migrate, how much is the effort^ß

we have a lot of fiori apps build with webîde, a  many common components etc.

best regards,

oliver
yuval_morad
Advisor
Advisor
0 Kudos
Hi

I think there is a plan for migration tool from Neo to CF.

But in your case the runtime is not migrated and stays ABAP, so it is not relevant.

If I get it right you consume a reuse lib in your application.

1. Do you fetch it also locally or consume the remote lib only in testing?

2. Can you share the manifest, the component.js and index.html or any other file where you refer to the reuse lib

3. BAS is not beta and except tools for reuse library you can try and work with it

If needed and not solved we can have next week a call and migrate your apps
former_member193202
Participant
Hello yuval,

thanks for your reply.

we are consuming the common components only in testing, they are all deployed to backend, it is just useful if we changes this common components and want to test in webide in another application.

over the time we have some different approaches for consuming,mostly we do it like that:

neo-app.json:

{
"path": "/sap/bc/ui5_ui5/tyed/mm_mat_class",
"target": {
"type": "application",
"name": "matclassification"
},
"description": "matclassification"
},

 

in component.js:

something like that:

jQuery.sap.registerModulePath("tyed.mm.mat_classification", "/sap/bc/ui5_ui5/tyed/mm_mat_class");

 

the application mm_mat_class is also in abap backend and in cloud deployed

 

I know bas is not beta, and so we are thinking about to move from Neo to CloudFoundry and therefor we have to migrate our fiori-content.

 

But we have time, we are just playing around with the trial version, so that's why i asked if there will come a tool that does all this manual steps for me 😉 - bas is cool for developing, but not as easy to handle for all the deploying tasks , but we have not done much in the trial version til now.

 

regrads oliver

 
yuval_morad
Advisor
Advisor
0 Kudos
So

This blog refer to tool migration and runtime stays ABAP, in addition reuse lib consumption not covered since we did not deliver tools for it.

I can propose the following:

1. Describe the specific runtime migration you plan, is it Neo to CF or you stay in ABAP

2. Send a sample git sandbox app of the reuse lib and its consumption app and we can check it and propose what to change

OR

Set a one hour call next Monday and we will migrate online
former_member193202
Participant
0 Kudos
hello yuval,

 

just one question befor i can send you samples.

what do you mean with neo to CF or stay in abap.

 

we have everything deployed in abap backend - just for testing we use common libraries deployed to cloud platform (neo) , and we use webIde just for developing.

we are not planning to have an apps or parts of apps running in cloud or running on abap Cloud , we push everything to Erp(and soon s/4) backend.

 
yuval_morad
Advisor
Advisor
0 Kudos
ok no runtime migration, do you prefer to work with remote reuse lib from ABAP or local ones?
former_member193202
Participant
0 Kudos
in Webide with the neo-app.json above we  have the possiblity that in WebIde the shared Sources are loaded from cloudPlatform, and when we are onPremise for sure the libraries are loaded from backed.

 

If this is also possible when we are in BAS than  very nice, and what would be the steps.

 

deploying all apps to CF first , and how has the xs-app.json file look like or the coding for loading comparable to

example:

jQuery.sap.registerModulePath(“tyed.mm.mat_classification”, “/sap/bc/ui5_ui5/tyed/mm_mat_class”);

or is this all the same?
yuval_morad
Advisor
Advisor
0 Kudos
Hi

I prefer you would not need to deploy to CF, for me it sounds wrong.

If you want to run with local reuse lib since it is keep changed by you, fetch it from git.

If you do not own it it should be loaded from ABAP on runtime.

We should check how, any way as offered please decide if to share sample sandbox app in git hub and its reuse lib.

Or we can meet next week and check it on your real app
former_member193202
Participant
0 Kudos
oh i see, now i understand. ok we would fetch from abap and if we nned we would fetch from local. that makes sense for us.

 

for the above example in neoapp

{
“path”: “/sap/bc/ui5_ui5/tyed/mm_mat_class”,
“target”: {
“type”: “application”,
“name”: “matclassification”
},
“description”: “matclassification”
},

and in the code

jQuery.sap.registerModulePath(“tyed.mm.mat_classification”, “/sap/bc/ui5_ui5/tyed/mm_mat_class”);

 

how should this be changed to always load from abap backend in xs-app.js ?

regards oliver
yuval_morad
Advisor
Advisor
0 Kudos
I will check it next week and contact you if we have a solution in BAS
former_member193202
Participant
0 Kudos
thanks a lot 🙂
ertugrul
Participant
0 Kudos

Hi Everyone,


I get the following error while deploying fiori project from BAS. Is there anyone have an idea?


"Failed to deploy Application: <Request failed with status code 403>"


ertugrul
Participant
0 Kudos

and also looked at the /n/iwfnd/error_log. I get the following error.

“No service found for namespace ‘/UI5/’, name ‘ABAP_REPOSITORY_SRV’, version ‘0001’”.

This service is not available in gw. I found the following note in sap help. On the system I want to deploy, fes 1.53.9. Now, will I not be able to deploy from the beginning on systems below 1.60?

Aurelien
Participant
0 Kudos
Guys,

 

Did you found out a solution for this ? I'm highly interested as well on this.

 

Thanks

Aurélien
former_member193202
Participant
0 Kudos
hi aurelien,

for my understanding bas always loads from abap backend or it loads the source if you have them imported in your bas workspace.

in webide it loads sources with my example above also from the cloud.

i have no idea if or how this could be done with bas, but we have at the moment only the trial version and made no further investigations.

So for the moment we still have no urgent plans to migrate to bas as webide will be supported anywas as long as users have productive accounts there.

 

regards oliver
0 Kudos
For Migration projects, Unable to establish connection at Runtime, But gets connected in preview mode.

Hi Yuval,

 

While creating a new project using Template and ES5 connectivity, works fine at Run time.

But for migrating projects runtime DB connection error occurs.

 

I had copied open sap course ui51, w2u1 folder to Workspace.

/home/user/projects/w2u1

Created the 4 files, /home/user/projects/w2u1/xs-app.json, package.json, ui5.yaml

Using 'npm init', 'ui5 init', 'npm install' commands.

 

In Workspace, click index.html->Open In Preview, data is fetched.

Using F12, Ctrl+R, below URL was obtained.

https://11XXc0a4trial-workspaces-ws-h8rpn-theia.eu10.trial.applicationstudio.cloud.sap/destinations/ES5/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/$metadata?sap-language=EN

 

But when I run the app, all features works fine except DB connection.

At run time, the url is pointing to

https://11XXc0a4trial-workspaces-ws-h8rpn-app1.eu10.trial.applicationstudio.cloud.sap/destinations/ES5/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/$metadata?sap-language=EN

which fails.

 

Only difference I see in url is DesignMode-theia, RunTime-app1.

 

Are you aware of such problems.

 

Also while Migrating from webide the folders under w2u1 are  webapp, node_modules

And Files ui5.yaml, xs-app.json, package.json, package-lock.json

Also deleted neo-app.json file.

 

When I create a new project using Template, the folder structure is

Directory: HTML5Module,testes5-approuter

Files: mta.yaml  package.json

 

In HTML5Module folder, the folders are webapp and files are package.json,  tsconfig.json,  ui5.yaml,   xs-app.json

 

When I start with a new project from template, everything works fine, no issues.

My concern is with Migration of project with DB connection.

In the Migration project approuter folder is missing,

Is something wrong?

 

Below is xs-app.json file

{

"authenticationMethod": "none",

"routes": [ {

"authenticationType": "none",

"csrfProtection": false,

"source": "^/sap/opu/odata/iwbep/GWSAMPLE_BASIC/",

"destination": "ES5" },

{

"source": "^(.*)$",

"target": "$1",

"service": "html5-apps-repo-rt",

"authenticationType": "xsuaa" } ] }

 

In Manifest.json below entry is there

"dataSources": {

"ES5": {

"uri": "/destinations/ES5/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/",

"type": "OData",

"settings": {

"odataVersion": "2.0"

}                                            }                             }

Thanks,

Vikas
0 Kudos
For me I just omit this message as what I understand there can not be popup for login info like user and password (that is why please try later). You can check the response with network developer tools there is 200 code for tenant request. When you connect application to this destination it should work. 
0 Kudos

I did all the steps and I get “Failed to load resource: the server responded with a status of 503 ().”  When I create the project from scratch with the same settings all works fine.

I have OData destination connected. I checked xs-app.json and ui5.yaml file, Component.js, index.html and all the rest of the files. I migrated all the code from working project to the migrated one and still the same error. 

yuval_morad
Advisor
Advisor
Please share the

  1. manifest.json

  2. package.json

  3. index.html

0 Kudos
manifest.json

 

```
{
  “_version”: “1.12.0”,
  “sap.app”: {
    “id”: “nox.nox-ncp”,
    “type”: “application”,
    “i18n”: “i18n/i18n.properties”,
    “applicationVersion”: {
      “version”: “1.0.0”
    },
    “title”: “{{appTitle}}”,
    “description”: “{{appDescription}}”,
    “sourceTemplate”: {
      “id”: “servicecatalog.connectivityComponentForManifest”,
      “version”: “0.0.0”
    },
    “dataSources”: {
      “MY_SOURCE”: {
        “uri”: “/sap/opu/odata/sap/MY_SOURCE/”,
        “type”: “OData”,
        “settings”: {
          “localUri”: “localService/metadata.xml”,
          “annotations”: [“annotation0”]
        }
      },
      “annotation0”: {
        “type”: “ODataAnnotation”,
        “uri”: “localService/annotation0.xml”,
        “settings”: {
          “localUri”: “localService/annotation0.xml”
        }
      }
    },
    “crossNavigation”: {
      “inbounds”: {}
    }
  },
  “sap.ui”: {
    “technology”: “UI5”,
    “icons”: {
      “icon”: “sap-icon://batch-payments”,
      “favIcon”: “”,
      “phone”: “”,
      “phone@2”: “”,
      “tablet”: “”,
      “tablet@2”: “”
    },
    “deviceTypes”: {
      “desktop”: true,
      “tablet”: true,
      “phone”: true
    }
  },
  “sap.ui5”: {
    “flexEnabled”: false,
    “rootView”: {
      “viewName”: “nox.nox-ncp.view.App”,
      “type”: “XML”,
      “async”: true,
      “id”: “root”
    },
    “dependencies”: {
      “minUI5Version”: “1.65.6”,
      “libs”: {
        “sap.m”: {},
        “sap.ui.comp”: {
          “minVersion”: “”
        },
        “sap.ui.core”: {},
        “sap.ui.export”: {
          “minVersion”: “”
        },
        “sap.ui.fl”: {
          “minVersion”: “”
        },
        “sap.ui.layout”: {},
        “sap.ui.unified”: {
          “minVersion”: “”
        },
        “sap.uxap”: {
          “minVersion”: “”
        }
      }
    },
    “contentDensities”: {
      “compact”: true,
      “cozy”: true
    },
    “models”: {
      “i18n”: {
        “type”: “sap.ui.model.resource.ResourceModel”,
        “settings”: {
          “bundleName”: “nox.nox-ncp.i18n.i18n”
        }
      },
      “@i18n”: {
        “type”: “sap.ui.model.resource.ResourceModel”,
        “uri”: “i18n/i18n.properties”
      },
      “currencies”: {
        “type”: “sap.ui.model.json.JSONModel”,
        “settings”: {},
        “uri”: “model/Currencies.json”,
        “preload”: true
      },
      “”: {
        “type”: “sap.ui.model.odata.v2.ODataModel”,
        “settings”: {
          “defaultOperationMode”: “Server”,
          “defaultBindingMode”: “OneWay”,
          “defaultCountMode”: “Request”,
          “useBatch”: false
        },
        “dataSource”: “MY_SOURCE”,
        “preload”: true
      },
      “settings”: {
        “type”: “sap.ui.model.json.JSONModel”,
        “settings”: {},
        “preload”: true,
        “uri”: “”
      },
      “offices”: {
        “type”: “sap.ui.model.json.JSONModel”,
        “settings”: {},
        “preload”: true
      },
      “clients”: {
        “type”: “sap.ui.model.json.JSONModel”,
        “settings”: {},
        “preload”: false
      },
      “products”: {
        “type”: “sap.ui.model.json.JSONModel”,
        “settings”: {},
        “preload”: true
      }
    },
    “resources”: {
      “css”: [
        {
          “uri”: “css/style.css”
        }
      ]
    },
    “routing”: {
      “config”: {
        “routerClass”: “sap.m.routing.Router”,
        “viewType”: “XML”,
        “async”: true,
        “viewPath”: “nox.nox-ncp.view”,
        “controlAggregation”: “pages”,
        “controlId”: “root”,
        “transition”: “slide”,
        “viewLevel”: 1,
        “bypassed”: {
          “target”: “targetNotFound”
        }
      },
      “routes”: [
        {
          “pattern”: “/”,
          “name”: “routeHomePage”,
          “target”: “targetHomePage”,
          “titleTarget”: “”
        },
        {
          “pattern”: “office/{office}/:?query:”,
          “name”: “routeMaster”,
          “target”: “targetMaster”,
          “titleTarget”: “”
        },
        {
          “name”: “routeProduct”,
          “pattern”: “office/{office}/product/{product}/:?query:”,
          “target”: “targetProduct”,
          “titleTarget”: “”
        }
      ],
      “targets”: {
        “targetHomePage”: {
          “viewName”: “HomePage”,
          “viewId”: “homePage”,
          “transition”: “slide”,
          “viewLevel”: 2,
          “title”: “Strona Ustawień”
        },
        “targetMaster”: {
          “viewName”: “Master”,
          “viewId”: “master”,
          “transition”: “slide”,
          “viewLevel”: 3,
          “title”: “Strona Produktów”
        },
        “targetProduct”: {
          “viewName”: “Product”,
          “viewId”: “product”,
          “viewType”: “XML”,
          “viewLevel”: 4,
          “title”: “Strona Produktu”
        },
        “targetNotFound”: {
          “viewName”: “NotFound”,
          “transition”: “show”
        }
      }
    }
  },
  “sap.platform.hcp”: {
    “uri”: “webapp”,
    “_version”: “1.1.0”
  }
}
```
package.json

 

```
{
  “name”: “nox-ncp”,
  “version”: “0.0.1”,
  “description”: “”,
  “private”: true,
  “devDependencies”: {
    “@ui5/cli”: “2.2.6”,
    “@sapui5/ts-types”: “1.71.x”,
    “@sap/ui5-builder-webide-extension”: “1.0.x”,
    “@sap/approuter”: “8.5.1”,
    “@sap/html5-repo-mock”: “1.6.0”
  },
  “scripts”: {
    “build”: “ui5 build –include-task=generateManifestBundle generateCachebusterInfo”,
    “start-local”: “node node_modules/@sap/html5-repo-mock/index.js”
  },
  “ui5”: {
    “dependencies”: [“@sap/ui5-builder-webide-extension”]
  }
}

 

“`

 

index.html
“`
<!DOCTYPE html>
<html>
  <head>
    <meta charset=”utf-8″>
      <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
    <title>NOX NCP</title>
    <script id=”sap-ui-bootstrap”
      src=”./resources/sap-ui-core.js”
      data-sap-ui-theme=”sap_belize”
      data-sap-ui-resourceroots='{“nox.nox-ncp”: “./”}’
      data-sap-ui-compatVersion=”edge”
      data-sap-ui-oninit=”module:sap/ui/core/ComponentSupport”
      data-sap-ui-async=”true”
      data-sap-ui-preload=”async”
      data-sap-ui-frameOptions=”trusted”>
    </script>
  </head>
  <body class=”sapUiBody”>
    <div data-sap-ui-component data-name=”nox.nox-ncp” data-id=”container” data-settings='{“id” : “nox-ncp”}’></div>
  </body>
</html>
```

 

I just checked still the same problem. I would be very appreciated for any help 😕
yuval_morad
Advisor
Advisor
Ok I think you found a bug!

The local run fails in case of dash in the app id

we will work on a fix.

Until then I propose to create a new project w/o dash in the id

e.g. replace nox.nox-ncp with nox.nox_ncp

 
0 Kudos
Yes! That was the problem thank you very much! 🙂
andreas_gall2
Participant
0 Kudos
Sorry for late answer. See vaibhav.goel.sap.1986 answer.
jalf1991
Explorer
0 Kudos
Hi yuval.morad

 

Great blog thanks. I this moment, i have a app SAPUI5 html5 in my BAS IDE. I am trying to consume a API REST (Internet) using Destination. I have 2 scenarios:

but before I show you key config about my project:

xs-app.json

{

    "welcomeFile": "/index.html",

    "authenticationMethod": "route",

    "logout": {

        "logoutEndpoint": "/do/logout"

    },

    "routes": [


        {


            "source": "^/confiar",

            "destination": "confiar",

            "target": "/$1"


        },


         {

            "source": "^(.*)$",

            "target": "$1",

            "service": "html5-apps-repo-rt",

            "authenticationType": "xsuaa"

        }


    ]

}


package.json

{

  "name": "apptestweb",

  "version": "0.0.1",

  "devDependencies": {

    "@sap/ui5-builder-webide-extension": "1.0.x",

    "@ui5/cli": "2.2.6",

    "eslint": "5.16.x",

    "@sap/eslint-plugin-ui5-jsdocs": "2.0.x",

    "@sapui5/ts-types": "1.71.x",

    "bestzip": "2.1.4",

    "rimraf": "3.0.2",

    "@sap/approuter": "9.3.0",

    "@sap/html5-repo-mock": "2.0.0"

  },

  "ui5": {

    "dependencies": [

      "@sap/ui5-builder-webide-extension"

    ]

  }

}



mta.yaml




    commands:

    - npm run build

    supported-platforms: []

resources:

- name: destination

  parameters:

    service-plan: lite

    service-name: AppTestWeb_destination

    service: destination

  type: org.cloudfoundry.managed-service

- name: AppTestWeb_html_repo_runtime

  type: org.cloudfoundry.managed-service

  parameters:

    service: html5-apps-repo

    service-plan: app-runtime

- name: AppTestWeb_html_repo_host

  type: org.cloudfoundry.managed-service

  parameters:

    service: html5-apps-repo

    service-plan: app-host

- name: uaa_AppTestWeb

  type: org.cloudfoundry.managed-service

  parameters:

    path: ./xs-security.json

    service: xsuaa

    service-name: AppTestWeb-xsuaa-service

    service-plan: application

build-parameters:

  before-all:

  - builder: custom

    commands:

    - npm install




ui5.yaml




specVersion: '1.0'

metadata:

  name: HTML5Module

type: application

resources:

  configuration:

    propertiesFileSourceEncoding: UTF-8

builder:

  resources:

    excludes:

      - "/test/**"

      - "/localService/**"

  customTasks:

  - name: webide-extension-task-updateManifestJson

    afterTask: generateVersionInfo

    configuration:

      appFolder: webapp

      destDir: dist

  - name: webide-extension-task-resources

    afterTask: webide-extension-task-updateManifestJson

    configuration:

      nameSpace: ns

  - name: webide-extension-task-copyFile

    afterTask: webide-extension-task-resources

    configuration:

      srcFile: "/xs-app.json"

      destFile: "/xs-app.json"



manifest.json





{

    "_version": "1.12.0",

    "sap.app": {

        "id": "ns.HTML5Module",

        "type": "application",

        "i18n": "i18n/i18n.properties",

        "applicationVersion": {

            "version": "1.0.0"

        },

        "title": "{{appTitle}}",

        "description": "{{appDescription}}",

        "resources": "resources.json",

        "ach": "ach",

        "sourceTemplate": {

            "id": "html5moduletemplates.basicSAPUI5ApplicationProjectModule",

            "version": "1.40.12"

        },

        "crossNavigation": {

            "inbounds": {

                "intent1": {

                    "signature": {

                        "parameters": {},

                        "additionalParameters": "allowed"

                    },

                    "semanticObject": "Dynamic",

                    "action": "display",

                    "title": "{{appTitle}}",

                    "info": "{{appTitle}}",

                    "subTitle": "{{appSubTitle}}",

                    "icon": "sap-icon://sales-order"

                }

            }

        }

    },"sap.cloud": {

        "service": "com.sap.jalf.app"

    },

    "sap.ui": {

        "technology": "UI5",

        "icons": {

            "icon": "",

            "favIcon": "",

            "phone": "",

            "phone@2": "",

            "tablet": "",

            "tablet@2": ""

        },

        "deviceTypes": {

            "desktop": true,

            "tablet": true,

            "phone": true

        }

    },

    "sap.ui5": {

        "flexEnabled": false,

        "rootView": {

            "viewName": "ns.HTML5Module.view.TestView",

            "type": "XML",

            "async": true,

            "id": "TestView"

        },

        "dependencies": {

            "minUI5Version": "1.60.1",

            "libs": {

                "sap.ui.core": {},

                "sap.m": {},

                "sap.ui.layout": {}

            }

        },

        "contentDensities": {

            "compact": true,

            "cozy": true

        },

        "models": {

            "i18n": {

                "type": "sap.ui.model.resource.ResourceModel",

                "settings": {

                    "bundleName": "ns.HTML5Module.i18n.i18n"

                }

            }

        },

        "resources": {

            "css": [

                {

                    "uri": "css/style.css"

                }

            ]

        },

        "routing": {

            "config": {

                "routerClass": "sap.m.routing.Router",

                "viewType": "XML",

                "async": true,

                "viewPath": "ns.HTML5Module.view",

                "controlAggregation": "pages",

                "controlId": "app",

                "clearControlAggregation": false

            },

            "routes": [

                {

                    "name": "RouteTestView",

                    "pattern": "RouteTestView",

                    "target": [

                        "TargetTestView"

                    ]

                }

            ],

            "targets": {

                "TargetTestView": {

                    "viewType": "XML",

                    "transition": "slide",

                    "clearControlAggregation": false,

                    "viewId": "TestView",

                    "viewName": "TestView"

                }

            }

        }

    }

}



 

Destination config CF:

 


destination attributes


 

 

The escenarios are:

 

1-  Run The app  from SAP BAS local IDE: When i run  my app and the app consume (request http) the endpoint destination,  I am getting the next message ERROR:  ." Make sure that the destination is set correctly and that your credentials are valid".

 

2- Deploy the app in CF and run it: When i run  my app and the app consume (request http) the endpoint destination,  I am getting a 404 NOT FOUND Message

 

Apreciate your help with this issue that i have.

 

Thanks so much!

 
WRoeckelein
Active Participant
0 Kudos

Hi alfredosemeco ,

were you already able to resolve this problem in the local BAS preview? Cause I get the same error message there (but I only get the error in a trial account. In our partner account this is working), Unfortunatly due to the problem described in note 3010638 I can't check the connection in the BTP Cockpit, SCC however reports the trial account as connected).

Thanks,

Wolfgang

 

former_member327092
Participant
0 Kudos
yuval.morad

I am getting the same issue as -


wroeckelein.fum and


alfredosemeco









alfredosemeco - I see you have fixed your issue in the comments section in blog - https://blogs.sap.com/2018/10/08/using-the-destination-service-in-the-cloud-foundry-environment/


Could you please help with what are the changes you have made? Any pointers, please reply back to the fourm question above posted will help.


0 Kudos
Hi,

I see some source code is not completed. Can you please share some sample project?

BR,

Ray
former_member750741
Discoverer
0 Kudos
Hi yuval,

i've tried to follow your steps for the migrtion, but when i launch the app locally in my BAS space, the detinatinations are still not found (error 404), how can I bind the destinations that i should use on my local run? cause  the run configuration give me the possibility of binding only a destination and not all the ones that I need to call in my app.

Thanks

Walter.
former_member361216
Discoverer
0 Kudos
Hi xepehlivan, I started getting the same error this month when deploying from VS Code. In December I was working correctly.


Did you found any workaround for this problem?

 

I don´t want to go back to WebIDE 😞
former_member361216
Discoverer
0 Kudos
Issue solved installing the version 1.X.X (npm i ui5-nwabap-deployer-cli@1.0.4 -g).

Version 2.X requires the service ABAP_REPOSITORY_SRV.

more info can be found in https://www.npmjs.com/package/ui5-nwabap-deployer-cli

 

 

 

 
0 Kudos
Hi Yuval,

 

I did all the steps and it is working fine but the problem is at the time of deploying. getting below error.

ertugrul
Participant
0 Kudos
Hi Silvano,

Good news and thank u for your information.

So we can also use BAS on low systems, right?
former_member361216
Discoverer
0 Kudos
Yes, I have updated the ui5-nwabap-deployer to latest version and started getting that error.

Until my Gateway is not updated with the service ABAP_REPOSITORY_SRV I will continue using 1.0.4 of ui5-nwabap-deployer.

 

 
ertugrul
Participant
0 Kudos
ok I will try to use it this way as soon as possible.
sopiken
Explorer
0 Kudos
Hi yuval.morad ,

Is there a way to convert a sapui5 app to an offline mobile app in business application studio?