打开Android studio,在工程的build.gradle里加入下面的依赖,导入SAP OData offline库:
implementation group:'com.sap.cloud.android', name:'offline-odata', version: sdkVersion
点击Sync now:
新建一个java文件:SAPServiceManager.java
使用的import如下:
import android.content.Context;
import android.util.Log;
import android.widget.Toast;
import com.sap.cloud.mobile.odata.core.AndroidSystem;
import com.sap.cloud.mobile.odata.offline.OfflineODataDefiningQuery;
import com.sap.cloud.mobile.odata.offline.OfflineODataException;
import com.sap.cloud.mobile.odata.offline.OfflineODataParameters;
import com.sap.cloud.mobile.odata.offline.OfflineODataProvider;
import java.net.MalformedURLException;
import java.net.URL;
// 将OfflineODataProvider注释掉,改为OfflineODataProvider
//private OnlineODataProvider provider;
private OfflineODataProvider provider;
private static final String TAG = SAPServiceManager.class.getName();
OData offiline datastore的setup方法:
public void openODataStore(Action0 callback, Context context) {
setupOfflineOData(callback, context);
}
private void setupOfflineOData(Action0 callback, Context context) {
try {
if (configurationData.loadData()) {
Toast.makeText(context, "Opening the offline store which may take a few moments the first time it is opened.", Toast.LENGTH_LONG).show();
//Initialize application context for use by OfflineODataProvider
AndroidSystem.setContext(context);
//commonly set parameters include setStoreEncryptionKey, setStoreName, setStorePath
OfflineODataParameters offParam = new OfflineODataParameters();
String serviceUrl = configurationData.getServiceUrl();
URL url = new URL(serviceUrl + CONNECTION_ID_ESPMCONTAINER);
provider = new OfflineODataProvider(url, offParam, ClientProvider.get());
//Specifies which entities we wish to include in the offline store
provider.addDefiningQuery(new OfflineODataDefiningQuery("Customers", "Customers", false));
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (OfflineODataException e) {
e.printStackTrace();
}
//opens the offline store. This can take a minute or so the first time it is called as it is created and populated.
Log.d(TAG, "About to call open on the offline store.");
provider.open(() -> {
Log.d(TAG, "Offline store opened.");
eSPMContainer = new ESPMContainer(provider);
callback.call();
syncOfflineData(); //TODO could be triggered via a menu action
}, (OfflineODataException offlineODataException) -> {
Log.d(TAG, "Offline store did not open.", offlineODataException);
});
}
public void syncOfflineData() {
//send the local changes to the back end OData service
Log.d(TAG, "About to call provider.upload.");
provider.upload(() -> {
Log.d(TAG, "Successfully uploaded the changed data.");
//get changes from the back end OData service.
provider.download(() -> {
Log.d(TAG, "Successfully downloaded the changed data.");
}, (error) -> {
Log.d(TAG, "Failed when downloading the changed data with error: " + error.getMessage());
});
}, (error) -> {
Log.d(TAG, "Failed when uploading the changed data with error: " + error.getMessage());
});
}
public String getServiceRoot() {
if (configurationData.loadData()) {
String serviceUrl = configurationData.getServiceUrl();
if (serviceRoot == null) {
serviceRoot = serviceUrl + "/" + CONNECTION_ID_ESPMCONTAINER;
}
}
else {
throw new IllegalStateException("SAPService manager configurationData.loadData() failed.");
}
return serviceRoot;
}
新建LogonActivity.java,调用之前实现的sapServiceManager.openODataStore:
第一次运行应用,会发现offline OData store的初始化日志:
现在可以测试离线模式了,打开移动设备的飞行模式:
选择存储于OData offline store上的某个客户,点击编辑按钮:
修改city字段:
关闭该应用,关闭设备的飞行模式,再启动该应用,在logcat里能观察到之前处于离线模式修改的数据已经自动同步到了后台online store里:
相关推荐
本文将详细介绍如何使用Java调用SAP ODATA服务,并针对描述中的几个关键问题进行深入探讨。 #### 1. 未经授权 (401) 在调用SAP ODATA服务时,如果出现“401 Unauthorized”错误,通常是因为服务器拒绝了请求,因为...
在Java开发中,调用SAP ODATA服务是企业级集成和数据交换的常见场景。在实际操作中,可能会遇到一些挑战,如身份验证、请求方法的使用、跨域问题以及错误处理。以下是对这些知识点的详细说明: 1. **身份验证 (401 ...
在进行SAP NetWeaver的Gateway服务开发时,我们使用OData通道方法来实现。SAP为这个过程提供了一份How-To Guide,指导开发者如何编写OData通道。该指南涵盖了从创建模型提供类(Model Provider Class)开始的所有...
在SAP系统中,ODATA是一种基于RESTful协议的Web服务技术,用于提供与后端业务数据的交互接口。本文将详细介绍SAP后台...通过这样的服务,前端应用可以轻松地与SAP后台系统进行数据交互,实现业务流程的自动化和集成。
一个典型的场景是移动应用与SAP后端系统的集成,通过ODATA服务,移动应用可以直接查询、修改SAP系统中的业务数据,实现无代码或低代码开发。 本教程将详细介绍以上概念,并通过实际示例指导你完成一个完整的SAP ...
### SAP Fiori OData 实施步骤详解 #### 一、OData与SAP Fiori的关系 在SAP Fiori环境中,OData(Open Data Protocol)扮演着至关重要的角色。它是一种用于定义构建和消费RESTful API的最佳实践的标准协议。通过...
在实际应用中,OData常用于构建RESTful API,使得不同平台和设备上的应用可以轻松地与后端数据服务进行交互。通过这个简单的demo,学习者可以了解OData的工作原理,以及如何在实际开发中利用这些查询选项来优化数据...
Android应用开发者可以利用OData库来实现与服务器上的数据源进行通信,如微软的SharePoint、SAP等支持OData的服务。 在给定的资源中,我们看到一个名为"odata_1.jar"的文件,这很可能是用于Android平台的OData...
SapAPI 该程序正在读取SAP API。 此API从防火墙后面的SAP ECC系统公开ODATA。 需要一个天蓝色的AD帐户,一个SAP-id,包括访问SAP系统中技术角色的权限。 SAP API已在Azure API管理中注册。
6. **移动应用开发**:如何利用SAP Gateway和OData创建适应不同移动设备的应用,包括iOS和Android平台。 7. **企业级应用集成**:讨论如何将SAP Gateway和OData服务与其他系统集成,如社交媒体、物联网(IoT)设备或...
【SAP Gateway与OData】是SAP低代码开发中的关键组成部分,对于理解和实现企业级应用集成至关重要。SAP Gateway是一种技术平台,它允许不同系统之间的数据交换,特别是与SAP系统和其他非SAP系统之间的交互。OData...
SAP Fiori 是 SAP 软件和应用程序的新用户体验(UX),提供了一组应用程序,用于常规业务功能,如工作批准,金融应用程序,计算应用程序和各种自助服务应用程序。SAP Fiori 提供了 300 多个基于角色的应用程序,如...
消费者可以使用多种方式利用OData服务,如使用SAP UI5框架构建前端应用,或者通过编程语言(如Java、.NET或JavaScript)的库直接调用API。此外,其他非SAP平台如Microsoft PowerApps或Salesforce也可轻松集成SAP ...
OData,全称为Open Data ...对于SAP环境而言,OData服务是实现移动应用、Web应用以及与其他系统集成的重要手段。了解和掌握OData,对于任何希望扩展SAP系统功能并实现跨平台数据交互的开发人员来说,都是非常有价值的。
OData:开放数据协议(Open Data Protocol,简称OData)是一种描述如何创建和访问Restful服务的OASIS标准。该标准由微软发起,前三个版本1.0、2.0、3.0都是微软开放标准,遵循微软开放规范承诺书(Microsoft Open ...
该框架不仅支持在线和离线模式下的数据访问,还提供了一系列高级功能,如安全性、推送通知、性能监测等,以满足企业级应用的需求。此外,文档还指出了未来版本中计划增加的一些特性和功能,这些改进将进一步提升...
sap press doc 解压密码:abap_developer
在本教程中,我们将深入探讨如何开发一个使用SAPUI5和oData访问的数据交互应用程序。SAPUI5是SAP提供的一个强大的JavaScript框架,用于构建企业级的Web应用程序。而oData是一种开放的协议,它允许客户端通过HTTP访问...
SAP Core OData Processor API是SAP开发的一个关键组件,它主要用于处理OData(Open Data Protocol)服务的实现,这是一种基于RESTful架构的数据访问协议,广泛应用于企业级应用程序,特别是那些基于云服务的系统。...
SAPUI5与SAP Fiori紧密相连,Fiori是SAP用户界面设计的一套原则和模式,它定义了应用应该如何表现和工作,而SAPUI5就是实现这些原则和模式的技术框架。SAPUI5运行环境是指使用该框架开发的应用可以部署和运行的平台...