Я пытался использовать сгенерированный код Android для развернутого MBO из собственного приложения для Android.Как получить данные из MBO, созданного из SAP, используя SUP
шаг последовал выглядит следующим образом:
МВО создан с использованием SAP BAPI (BAPI_FLIGHT_GETLIST)
развернут его в UnWired сервер
генерируется код
скопировал код в проект Android
используется сгенерированный код для доступа к данным из MBO, используя следующие шаги
I) Установить данные приложения
Application app = Application.getInstance(); app.setApplicationIdentifier("FlightSearch"); app.setApplicationContext(<android context>); FlightSearchDB.setApplication(app);
II) Установить учетные данные
ConnectionProperties connProps = app.getConnectionProperties(); LoginCredentials loginCredentials = new LoginCredentials(USERNAME, PASSWORD); connProps.setLoginCredentials(loginCredentials); connProps.setServerName(HOST); connProps.setPortNumber(PORT);
III) зарегистрировать соединение
if (app.getRegistrationStatus() != RegistrationStatus.REGISTERED) { app.registerApplication(TIMEOUT); } else { app.startConnection(TIMEOUT); }
IV) Установить параметр синхронизации
ConnectionProfile profile = FlightSearchDB.getSynchronizationProfile(); profile.setServerName(HOST); profile.setPortNumber(2480); profile.setNetworkProtocol("http,https"); profile.setDomainName("default"); profile.setAsyncReplay(true); profile.save();
v) начать синхронизацию
FlightSearchDB.synchronize(new MySyncStatusListener());
я могу увидеть статус в objectSyncStatus (метода) MySyncStatusListener.
Первоначально он пытался загрузить данные, поскольку локальные данные для первого запуска не отправляются с некоторыми нулевыми значениями, а затем ждут от сервера. Я получаю статус APPLICATION_SYNC_RECEIVING_UPLOAD_ACK в течение длительного времени и никогда не получаю ack от сервера, поэтому синхронизация данных переходит к мертвой блокировке.
В то же время я пытался проверить логи сервера и показывает:
2012-06-21 02: 03: 26.135 CONSOLE MMS бассейн-1-поточно-18 -/регистрация/RegistrationServlet [ком. sybase.sup.server.Console] 6146
2012-06-21 02: 03: 25,491 CONSOLE MMS бассейн-1-токарно-16 -/регистрация/RegistrationServlet [com.sybase.sup.server.Console] 6038
Если я отключу часть синхронизации кода, я могу запустить следующий код, но результат всегда равен 0, что очевидно, так как локальные данные не будут доступны без синхронизации.
vi) Access Database
if(!FlightSearchDB.databaseExists()){
FlightSearchDB.createDatabase();
}
FlightSearchDB.openConnection();
GenericList<Flight> flights = Flight.findAll();
Может кто-нибудь, дайте мне знать, если есть какие-либо проблемы с выдачей кода/конфигурации, которые мне нужно решить, чтобы получить доступ к данным.