Troubleshooting Deployment to an ABAP System from SAP Web IDE
SAP Web IDE offers the ability to deploy applications into your ABAP system as a new app or as an update to an existing one.
All you have to do it to right-click your app and choose Deploy -> Deploy to SAPUI5 ABAP Repository, fill in the necessary information such as name, description and package, and click Finish.
- When the system is selected in the first step of the wizard, we execute a call to get the discovery XML of the /sap/bc/adt service (issuing GET for /sap/bc/adt/discovery). Then we analyze the result XML to verify all is valid to proceed. If something is missing or there was a problem issuing the request we show an error (more details below).
- A new application is deployed on the server by issuing POST/PUT requests for its resources.
- Upon update of an existing application, we deploy the entire app and not only the changed resources, because there is no tracking on changes being done to the app outside of SAP Web IDE and by other users. This is similar to the functionality of the /UI5/UI5_REPOSITORY_LOAD function (with slight difference).
Here are some problems and solutions that I’ve gathered from my experience here on SCN:
- Problem: I don’t have the needed authorizations to deploy.
Solution: You should obtain all the needed authorizations in order to be able to deploy. See this comment for more details.
- Problem: My ABAP system is showing in SAP Web IDE but not in this wizard.
Solution: Make sure you have the dev_abap WebIDEUsage configured in your destination in HCP cockpit.
- Problem: I get an error when my system is selected in the first step of the wizard.
Solution: This can happen for several reasons:
- This error is presented: “Service cannot be reached”.
It means that /sap/bc/adt service isn’t activated in your backend system.
Go to transaction SICF and activate it. Then reopen the wizard in SAP Web IDE.
- This error is presented: “Make sure /sap/bc/adt/discovery is reachable and returns a valid XML. If a login page is presented, change the configuration of your system to Basic Authentication as Form Authentication is not supported”.
This can be due to the fact that indeed Form Authentication or SAML is configured and that is currently not supported. A possible workaround would be to either change the entire configuration to Basic Authentication or create an external alias in SICF only for the /sap/bc/adt service, and delete the SAML configuration for this alias. This way the SAML will not be triggered for this service.
- An “authorization” error is displayed because the /sap/bc/adt/ service isn’t activated in transaction SICF. Example:
- A “forbidden” error is displayed due to missing authorizations to access /sap/bc/adt/discovery. The best way to check this is by trying to access the discovery in the browser directly from the system’s host and port and not via SAP Web IDE using the same credentials, and see if the user gets a valid response. Examples: Not able to access Gateway system from WEB IDE
- A “forbidden” error is displayed with no prompt for user credentials because the ICF node for ADT is configured with fixed user credentials. The solution would be to remove the fixed user credentials. This can also occur during the deployment process and result in an “CSRF token validation failed” error. Example: CSRF token validation failed while deploying extended fiori application to ABAP Repository
- A “forbidden” error is displayed because SAP Note 1977537 is not implemented (Introduction of XHR client authentication). If you have not implemented this note or if it needs an update, make sure you implement the latest version of the note.
- The following error is displayed: “Cannot select the system. Check the configuration for ABAP Development Tools“. This can be due to missing prerequisites, or missing authorizations, see example: Error Connecting to ABAP Repository from webIDE.
- The following error is displayed: “Access denied to resource /sap/bc/adt/discovery on system XXX. In case this was a valid request, ensure to expose the resource correctly in your cloud connector“. In order to resolve this issue make sure you exposed the /sap/bc/adt path in your cloud connector, including sub-paths.
- This error is presented: “Service cannot be reached”.
- Problem: I can only deploy to $TMP package.
Solution: Either a note implementation is missing, or some note’s status needs a reset due to the SAP_BASIS version. Please follow the prerequisites mentioned in our documentation.
- Problem: I’m getting an error after selecting a package or an application and in the browser’s network trace I see “CSRF token validation failed” error when trying to
reach /sap/bc/adt/cts/transportchecks service.
Solution: In short, this issue may happen because the backend system expects a request with HTTPS and receives a request with HTTP or vice versa.
Then it performs a redirect which makes the CSRF token invalid. Make sure to configure the destination in HCP cockpit and Cloud Connector in the
same way the backend expects to get it (or change the security configuration of your backend system).
- Problem: I’m getting this error upon deployment: “Cannot deploy application XXX: Remote creation in customer namespace not possible“.
Solution: The target system is running in SAP mode.You can either use the SAP namespace in the given application name, or change the system to work in customer mode if possible. Alternatively an empty app can be created with report /UI5/UI5_REPOSITORY_LOAD via SAPGUI and then you can deploy into it.
- Problem: I’m getting this error upon deployment: “Cannot deploy application XXX: SAP object YYY cannot be assigned to package ZZZ“.
Solution: Verify the BSP app name matches the package you selected in terms of their namespace (whether they should start with a Z or a Y).
See more details in this thread for example: The object is not assigned to package my new ZP… | SCN
- Problem: I’m getting this error upon deployment: “No development license for user XXX”.
Solution: This is the standard behavior of an ABAP system. To deploy, the user has to be registered as a developer in the system.
- Problem: I’m getting this error upon deployment: “Object X is already locked in request Y of user Z”.
Solution: Make sure to select the right transport in the wizard. If selecting a transport isn’t possible check the prerequisites and make sure all relevant notes are implemented, and that you have all relevant authorizations for the /sap/bc/adt/cts/transportchecks service.
- Problem: I’m getting this error upon deployment: “Cannot deploy the application. Virus scan server error. No virus scan profile is selected as the default”.
Solution: You need to select a virus scan profile in your backend system or switch it off. Example:
- Problem: I’m getting this error upon deployment: “Cannot deploy the application: Request XXX is not a local request“. The transport request is created as part of the wizard.
Solution: Both the package and the new transport request have a transport layer assigned to them. In this case, the package has a local transport layer assigned to it, but the transport request created is not a local request. See SAP Note 2121673 that deals with inconsistencies in the transport handling, and how such inconsistencies might result in this error. Check whether you have the latest release of this note and that the package is defined as described in the note.
- Problem: Empty files aren’t being deployed.
Solution: Implement SAP Note 2211746.
- Problem: I get an error during deployment: “Cannot deploy application <app name>: HTTP Status 504 – An internal application error occurred”.
Solution: This can happen if the application contains a rather large file, and the HTML5 Dispatcher (which is on the route from SAP Web IDE to the ABAP system) gets a timeout when trying to dispatch it.
Sometimes the HTML5 dispatcher has a shorter timeout (30s) than the ABAP system itself (5m), so the ABAP system is actually able to handle the upload of the large file but the HTML5 dispatcher raises a timeout in the process.
The solution would be to increase the timeout of the HTML5 Dispatcher.
Take a look at Accessing REST Services under Destination Properties and increase the timeout to the maximum of 300s.
You may need to perform an ICM hard reset if raising the timeout does not help.
Finally if none of the above helps, I suggest to identify the large file and upload it manually via SE80.
- Problem: I get an error during deployment: “Cannot deploy application <app name>: Resource XXX does already exist”
Solution: The problem is that SAP Web IDE tries to create a new resource instead of updating it since it already exists.
But the real problem relies in the UI5RepositoryPathMapping.xml file.
This file contains a list of all files in the application and their paths and it should be valid. SAP Web IDE examines this file in order to get the app’s structure, but if the file is not valid, i.e. manual changes have been made to it, errors such as this occur.
You should make sure that this file is valid and depicts the true structure of the app.
- Problem: After deploying an extended application and executing it from Fiori Launchpad I get this error: “File <namespace/<app name>/index.html NOT found!“.
Answer: The LPD_CUST URL should be accurate (possible need to end with /webapp). Example: Deploy Extended app
- Problem: I get an error during deployment: “Cannot deploy application <app name>:
A dynpro popup has been opened during processing“.
Solution: This should not happen.
This error indicates that the server has tried to open a transport selection dialog, which won’t work if called via HTTP like in this case.
A possible reason would be that the given application namespace does not match the namespace of the selected package.
- Problem: I get an error during deployment: “Object <object name> cannot be created without a package” OR “Page <page name> does not exist in application <app name>”.
Solution: This issue can result in different error messages. The root cause is missing server stickiness during the deployment process, i.e. your system has several application servers and the deployment requests are switching between them.
An example of a faulty situation: the request to create a folder is sent to one application server and the request to create a file in this folder is sent to another application server. This request then fails because it can’t find the folder.
Usually, when using a Web Dispatcher, session stickiness is ensured, however this is not the case if the message server of the system is used for load balancing of HTTP requests. This is a known limitation that should be avoided.
If the message server of your system is configured either in your destination in the cockpit or in your cloud connector, this should be changed. Either use a real Web Dispatcher or specify the specific app server.
- Whenever you experience an issue with the deployment and ask for help, it’s very helpful to attach the network trace available in the browser’s Developer Tools, specifically the failed request and its response. Also attach how your destination is configured.
- You can see the progress of the deployment in the SAP Web IDE Console (available from the View menu).
For more troubleshooting, check out Web IDE technical FAQ.