首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Etag支持S/4 EX

Etag支持S/4 EX
EN

Stack Overflow用户
提问于 2020-09-04 16:12:28
回答 1查看 159关注 0票数 2

SDK支持Etag:https://sap.github.io/cloud-sdk/docs/java/features/odata/use-typed-odata-v4-client-in-sap-cloud-sdk-for-java/#handling-of-etags

因此,在S/4EX中使用BusinessPartner实体进行了实验。

但似乎没有If-Match标头:

为什么头文件没有显示出来-- etag有任何先决条件吗?

(代表实施合作伙伴团队参加)

我检查了响应的VersionIdentifier,但没有将其设置为值。我还检查了响应的JSON __metadeta和header,但似乎没有与ETag值对应的值。

代码

代码语言:javascript
运行
复制
BusinessPartner bp1 = new DefaultBusinessPartnerService().getBusinessPartnerByKey(bpId).execute(dest);
log.debug("get 1: {}", bp1);
log.debug("get 1 VersionIdentifier: {}", bp1.getVersionIdentifier());

bp1.setOrganizationBPName1("SCP Update 1st:" + System.currentTimeMillis());
ODataUpdateResult result1 = new DefaultBusinessPartnerService().updateBusinessPartner(bp1).execute(dest);
log.debug("Update1 Http Status: {}", result1.getHttpStatusCode());

bp1.setOrganizationBPName1("SCP Update 2nd:" + System.currentTimeMillis());
bp1.setVersionIdentifier("dummy");
ODataUpdateResult result2 = new DefaultBusinessPartnerService().updateBusinessPartner(bp1).execute(dest);
log.debug("Update2 Http Status: {}", result2.getHttpStatusCode());

日志

代码语言:javascript
运行
复制
get 1: BusinessPartner(super=VdmObject(customFields={}, changedOriginal...
get 1 VersionIdentifier: None
Update1 Http Status: 204
Update2 Http Status: 204

GET Response JSON(__metadata) / Response Header

代码语言:javascript
运行
复制
"__metadata": {
    "id": "https://xxx.xxx.xxx.xxx:xxxxxx/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner('1000001')",
    "uri": "https://xxx.xxx.xxx.xxx:xxxxxx/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner('1000001')",
    "type": "API_BUSINESS_PARTNER.A_BusinessPartnerType"
},
代码语言:javascript
运行
复制
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
content-length: 3152
dataserviceversion: 2.0
sap-metadata-last-modified: Thu, 14 May 2020 23:58:07 GMT
cache-control: no-store, no-cache
sap-processing-info: ODataBEP=,crp=,RAL=,st=,MedCacheHub=SHM,codeployed=X,softstate=
sap-server: true
sap-perf-fesrec: 243070.000000

我尝试在我的测试代码中将VersionIdentifier设置为一个无意义的值(第二次更新)。更新过程似乎是成功的,尽管请求头现在添加了"If-Match“。(我预计更新会失败,因为值永远不匹配,所以我希望更新会失败。)

2nd Update(setVersionIdenfifier)

代码语言:javascript
运行
复制
PATCH http://xxx.xxx.xxx.xxx:xxxxxx/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner(BusinessPartner='1000001') HTTP/1.1
x-csrf-token: xxx
Content-Type: application/json
Accept: application/json
If-Match: dummy
Authorization: Basic xxx
SAP-Connectivity-SCC-Location_ID: xxx
Proxy-Authorization: Bearer xxx
sap-language: en
sap-client: xxx
Content-Length: 55
EN

回答 1

Stack Overflow用户

发布于 2020-10-05 15:51:23

如果ETags不是OData服务响应的一部分,那么您应该联系维护S/4后端的IT/管理员。SAP Cloud SDK仅使用OData服务。不幸的是,如果它被禁用,它就不能利用ETag支持。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63737305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档