1

我一直在尝试将生成的 Android 代码用于从本机 android 应用程序部署的 MBO。

接下来的步骤如下:

  1. 使用 SAP BAPI (BAPI_FLIGHT_GETLIST) 创建的 MBO

  2. 将其部署到无线服务器中

  3. 生成代码

  4. 将代码复制到 Android 项目

  5. 使用生成的代码通过以下步骤从 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());
    

我可以在 MySyncStatusListener 的 objectSyncStatus() 方法中看到状态。

最初它尝试上传数据,因为第一次运行没有本地数据,它发送一些空值,然后等待来自服务器的确认。我长时间获得 APPLICATION_SYNC_RECEIVING_UPLOAD_ACK 状态并且从未从服务器获得确认,因此数据同步进入死锁。

同时我试图检查服务器日志,它显示:

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

如果我禁用代码的同步部分,我可以运行以下代码,但结果始终为 0,这很明显,因为没有同步就没有可用的本地数据。

 vi) Access Database

       if(!FlightSearchDB.databaseExists()){

            FlightSearchDB.createDatabase();

        }

        FlightSearchDB.openConnection();



        GenericList<Flight> flights = Flight.findAll();

任何人都可以告诉我,如果代码/配置问题有任何问题,我需要解决以访问数据。

4

1 回答 1

0

问题在于配置。

我遵循了 sup 站点中给出的示例。(http://scn.sap.com/docs/DOC-8803)问题不在于代码,而在于我在模拟器中使用的服务器配置和用户配置文件。

您可以参考我在 ( http://scn.sap.com/message/13405735#13405735 ) 中的帖子以获取工作代码。

于 2013-02-26T18:53:52.323 回答