业务场景:
可能存在某些场景,实例逻辑绑定在一起,需要与同一逻辑工作单元一起处理或处理。
示例:
以销售订单为例,其中,可能需要更新两个或多个相关实体,并且必须在单个实体中一起处理请求.SAPNet-Weaver网关能够在一个请求中执行多个操作,可用于处理此类场景。
网关为SAP系统提供odataapi。此统一接口支持一组给定的操作,如创建、读取、更新和删除。但是,根据业务需求,淘客宝,客户机可能需要在一个HTTP中发送多个操作请求。开始使用SP04,SAP Net Weaver Gateway为客户端操作提供了将多个操作批处理为单个HTTP请求的能力。
前提条件:
批处理请求由两个组件组成
批处理请求头
批处理请求作为单个HTTP POST请求发送到服务的批处理端点。
例如::基本服务URL/sap/opu/odata/iwfnd/Servicename/$batch
批处理请求必须由指定"multipart/mixed"内容类型和"boundary"规范的内容类型头组成。
内容-类型:多部分/混合边界=批次
参考请查看下面的屏幕截图。
批次申请正文:
批次申请正文为由一系列有序的检索操作和/或更改集组成。检索操作通常是使用HTTP GET方法执行的查询或读取操作。
修改此类操作时,在OData批处理术语中称为"更改集"。变更集可以由使用POST执行的创建、更新或删除操作组成,PUT和DELETE方法。
网关中批量请求的处理
检索和更改集操作由网关进行不同的处理。
检索操作:
每个检索操作,如$Batch请求中的查询或读取操作,将从网关单独传输到后端系统中的数据提供器应用程序,以供使用处理。
变更集操作:
将每个变更集视为一个逻辑工作单元(LUW),更改集的所有操作将立即从网关发送到后端系统中的数据提供程序应用程序进行处理。
结果:
所有操作的结果将在网关系统中收集,人工智能技术发展,然后作为一个HTTP响应发送给OData使用者。
批处理:in$Batch功能提供了两个附加方法到/IWBEP/IF\MGW\u APPL\u SRV\u运行时数据提供程序接口。
变更集\u开始变更集结束
在SAP网关中,默认情况下,每个变更集只允许一个操作。如果在变更集中继续执行多个操作,则默认实现将抛出异常。
为了处理变更集中的多个操作,数据分析平台,大数据时代是什么意思,默认实现必须由应用程序使用这些方法覆盖(Changeset\u begin和Changeset\u end)
在SAP中,我们不必编写任何附加逻辑来实现批处理,只需重新定义如下所示的方法
/IWBEP/IF\u MGW\u APPL\u SRV\u RUNTIME~ CHANGESET\u BEGIN and
/IWBEP/IF\u MGW\u APPL\u SRV\u RUNTIME~ CHANGE SET\u END
创建一个项目,然后右键单击数据模型文件夹,选择import DDIC structure并将实体类型名称指定为…。。并为实体类型选择所需的属性。
然后单击生成运行时对象。显示"生成对象成功",淘客cms,该时间自动生成所有类
右击类以DPS\u EXT结束,选择go to ABAP workbench,然后重新定义以下方法
/IWBEP/IF\MGW\u APPL\u SRV\u RUNTIME~ CHANGESET\u BEGIN
/IWBEP/IF\u MGW\u APPL\u SRV\u RUNTIME~ CHANGESET\u END
批处理读取操作:
在下面的过程中,我通过批处理请求使用单个请求获取两个实体数据集
URL:/sap/opu/odata/sap/ZHK\u BATCH\u REQUEST1\u SRV/$BATCH
头:
授权:sap ID&PASSWORD
x-csrf-token:输入token
内容类型:multipart/mixed;边界=BATCH
请求主体:
–BATCH内容类型:应用程序/http内容传输编码:二进制接受:application/xml
GET EmpDSet(EmpId='1′)HTTP/1.1"基于员工ID的读取操作
–批处理内容类型:应用程序/http内容传输编码:二进制Accept:application/xml
GET EmpDSet HTTP/1.1"获取所有员工数据(设置数据)
–批处理-
使用批处理创建操作:
执行包含多个创建操作的批处理请求的示例
URL:/sap/opu/odata/sap/ZHK\u batch\u REQUEST1\u SRV/$batch
头:
授权:sap ID&密码
x-csrf-token:输入token
内容类型:multipart/mixed;boundary=batch
请求主体:
–batch内容类型:多部分/混合;边界=变更集
–变更集内容类型:应用程序/http内容传输编码:二进制
POST EmpDSet HTTP/1.1内容类型:application/atom+xml内容长度:588
:8000/sap/opu/odata/sap/ZHK\u BATCH\u REQUEST1\u SRV/EmpDSet('1')EmpDSet('1')2015-08-31T05:52:12Z7TEST7KKD1234
–变更集内容类型:应用程序/http内容传输编码:二进制
POST EmpDSet HTTP/1.1内容类型:application/atom+xml内容长度:588
:8000/sap/opu/odata/sap/ZHK\u BATCH\u REQUEST1\u SRV/EmpDSet('1')EmpDSet('1')2015-08-31T05:52:12Z8TEST8KKD1234
–变更集-–batch–
输出屏幕截图:
后端结果:
使用batch更新操作:
执行包含多个更新操作(更改名称)的批处理请求的示例。
URL:/sap/opu/odata/sap/ZHK\u batch\u REQUEST1\u SRV/$batch
头:
授权:sap ID&PASSWORD
x-csrf-token:Enter token
内容类型:多部分/混合;边界=批次
更新前:
响应主体:
–批次内容类型:多部分/混合;边界=变更集
–变更集内容类型:应用程序/http内容传输编码:二进制
PUT EmpDSet('8')HTTP/1.1内容类型:application/atom+xml内容长度:588
:8000/sap/opu/odata/sap/ZHK\u BATCH\u REQUEST1\u SRV/EmpDSet('1')EmpDSet('1')2015-08-31T05:52:12Z8已更新rjy56
–变更集内容类型:应用程序/http内容传输编码:二进制
PUT EmpDSet('9')HTTP/1.1内容类型:application/atom+xml内容长度:588
:8000/sap/opu/odata/sap/ZHK\u BATCH\u REQUEST1\u SRV/EmpDSet('1')EmpDSet('1')2015-08-31T05:52:12Z