i have been trying to use the generated Android code for a deployed MBO from a native android application.
the step followed is as follows :
MBO created using a SAP BAPI ( BAPI_FLIGHT_GETLIST)
deployed it into the unwired server
generated the code
copied the code to a Android project
used the generated code to access the data from MBO using the following steps
i) Set application details
Application app = Application.getInstance(); app.setApplicationIdentifier("FlightSearch"); app.setApplicationContext(<android context>); FlightSearchDB.setApplication(app);
ii) Set authentication credentials
ConnectionProperties connProps = app.getConnectionProperties(); LoginCredentials loginCredentials = new LoginCredentials(USERNAME, PASSWORD); connProps.setLoginCredentials(loginCredentials); connProps.setServerName(HOST); connProps.setPortNumber(PORT);
iii) register connection
if (app.getRegistrationStatus() != RegistrationStatus.REGISTERED) { app.registerApplication(TIMEOUT); } else { app.startConnection(TIMEOUT); }
iv) Set sync parameter
ConnectionProfile profile = FlightSearchDB.getSynchronizationProfile(); profile.setServerName(HOST); profile.setPortNumber(2480); profile.setNetworkProtocol("http,https"); profile.setDomainName("default"); profile.setAsyncReplay(true); profile.save();
v) start sync
FlightSearchDB.synchronize(new MySyncStatusListener());
i can see the status in objectSyncStatus() method of MySyncStatusListener.
initially it tried to upload data , since no local data is there for the first run it sends some null values and then wait for the ack from server. I get APPLICATION_SYNC_RECEIVING_UPLOAD_ACK status for a long time and never get a ack from server hence data sync goes in to a dead lock.
In the mean time i tried to check the server logs and it shows :
2012-06-21 02:03:26.135 CONSOLE MMS pool-1-thread-18 - /registration/RegistrationServlet [com.sybase.sup.server.Console]6146
2012-06-21 02:03:25.491 CONSOLE MMS pool-1-thread-16 - /registration/RegistrationServlet [com.sybase.sup.server.Console]6038
If i disable the sync part of the code, i can run the following code but the result is always 0 which is obvious, since there will be no local data available without sync.
vi) Access Database
if(!FlightSearchDB.databaseExists()){
FlightSearchDB.createDatabase();
}
FlightSearchDB.openConnection();
GenericList<Flight> flights = Flight.findAll();
Can anybody let me know, if there is any issue with the code / configuration issue which i need to resolve to access the data.