如何使用SUP从SAP创建的MBO访问数据

时间:2012-06-21 09:57:08

标签: android sup

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

接下来的步骤如下:

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

  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());
    
  6. 我可以在MySyncStatusListener的objectSyncStatus()方法中看到状态。

    最初它尝试上传数据,因为第一次运行时没有本地数据,它会发送一些空值,然后等待来自服务器的ack。我长时间获得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();
    

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

1 个答案:

答案 0 :(得分:0)

问题在于配置。

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

您可以在(http://scn.sap.com/message/13405735#13405735)中查询我的帖子,了解工作代码。