Let's follow up this discussion at the Neptune Community

(this forum will be kept in read-only mode)

Application Update

Hi , I am having the following issue. We have several application running in Phonegap using the App Cache. We have recently made changes to two of them. One has updated fine but the second one refuses to get latest version from the server. Is there a way to force a update on the device. The change are visible when running in browser.


I believe I found the problem it seems to occur on the transport of a application because all the Neptune tables are fully buffered the application update occurs before the actual application buffered is updated from the database. The Update date is checked in the method GET_APP_DATA and it finds the mismatch between the application date and the date on the device and flags it as


wa_app_cache-invalid = 'true'.


The application is then updated from the buffer and not from the table itself. This might actually be a SAP system issue but I need to correct this. So what I have done is add a global parameter that I can add the application id's of those I want to force a refresh . I then added a  Implicit enhancement at the end get_app_data where I then force  the application invalidation. This seems to work for now .


Is there a standard way provided by Neptune to Invalidate a Application which can be done from the server (Not from the device)?



Hi Rikardt


The timestamp on the Application in NAD should be the part to invalidate the App and download a new one. If the change you have done was translation from the Builder, we know there is a missing functionality to update the timestamp of the App. Could that be the problem ?


Regards
Ole Andre

Hi Ole Andre


I have a bit more of a look and it looks to me that it might have been one of two issues.


1. Either the following to tables weren't refreshed in the SAP buffer and when the update occurred the Application was not updated but the timestamp was.

/NEPTUNE/HTML

/NEPTUNE/SCRIPT


2. Debugging a device that was not updating from SAP I found that the method 

GET_APP_DATA in the class

/NEPTUNE/CL_NAD_APPCACHE was not being  passed any values from the

table IT_APP_DATA.


After flushing the table buffers and manually adding the application data to IT_APP_DATA in debug mode and setting the

wa_app_cache-invalid = 'false'. The Screen was updated.


The logic in the javascript in the appcache  to remove the application is


// Delete Applications from Cache

$.each(appData, function (i, data)

{

if (data.INVALID == true)

{

// Build Local Storage Key

var appKey = 'AppCache_' + data.APPLID;

localStorage.remove(appKey);

}

}

);


This works fine. So the question is why is the applications not passed when a

AppCache.Update() is called. I haven't looked at the Update routine yet.



Hi Rikardt


The timestamp that are checked is the /neptune/app - update date/time. If that have changed from the App currently on the device (IT_APP_DATA), then a local delete is performed and a new version is downloaded.


Also it will trigger an App update if the users language have changed. 



Regards

Ole Andre

Login or Signup to post a comment