如何使用Odata一次向数据库表中发布多行...

2020-08-21 15:38发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好专家

我想使用Odata发布方法为远程启用的功能模块将多个记录发布到数据库表中。 为此,使用SE80,我使用功能模块创建了数据模型和表的映射字段。 然后创建一个消费模型并激活服务。 然后从REST Client调用该服务,并尝试使用XML Content进行发布,如下所示。

在下面的XML内容中,我尝试将2条记录发布到DB表中,但是将错误显示为"解析XML流时出错"。

您能否建议如何使用Odata创建/发布方法一次传递多个记录,就像我们在功能模块执行时通过单击表选项卡中的NewLine/DoubleLine来发布多个记录一样。


XML内容:


<?xml version =" 1.0" encoding =" utf-8"?>

http://Server:port/sap/opu/odata/sap/Z_RFC_POST/z_rfc_postCollection/"

xmlns =" http://www.w3.org/2005/Atom " xmlns :m =" http://schemas.microsoft.com/ado/2007/08/dataservices/metadata "

xmlns:d =" http://schemas.microsoft.com/ado/2007/08/dataservices ">

http://Server:port/sap/opu/odata/sap/Z_RFC_POST/z_rfc_postCollection/

收货状态

scheme =" http://schemas.microsoft.com/ado/2007/08/dataservices/scheme "/>

0000000050

Ram

金奈

0000000090

库马尔

班加罗尔

感谢您的帮助。

谢谢

Uday。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好专家

我想使用Odata发布方法为远程启用的功能模块将多个记录发布到数据库表中。 为此,使用SE80,我使用功能模块创建了数据模型和表的映射字段。 然后创建一个消费模型并激活服务。 然后从REST Client调用该服务,并尝试使用XML Content进行发布,如下所示。

在下面的XML内容中,我尝试将2条记录发布到DB表中,但是将错误显示为"解析XML流时出错"。

您能否建议如何使用Odata创建/发布方法一次传递多个记录,就像我们在功能模块执行时通过单击表选项卡中的NewLine/DoubleLine来发布多个记录一样。


XML内容:


<?xml version =" 1.0" encoding =" utf-8"?>

http://Server:port/sap/opu/odata/sap/Z_RFC_POST/z_rfc_postCollection/"

xmlns =" http://www.w3.org/2005/Atom " xmlns :m =" http://schemas.microsoft.com/ado/2007/08/dataservices/metadata "

xmlns:d =" http://schemas.microsoft.com/ado/2007/08/dataservices ">

http://Server:port/sap/opu/odata/sap/Z_RFC_POST/z_rfc_postCollection/

收货状态

scheme =" http://schemas.microsoft.com/ado/2007/08/dataservices/scheme "/>

0000000050

Ram

金奈

0000000090

库马尔

班加罗尔

感谢您的帮助。

谢谢

Uday。

付费偷看设置
发送
6条回答
Baoming ROSE
1楼-- · 2020-08-21 15:48

嗨,Uday,

您已经重新定义了/IWBEP/IF_MGW_APPL_SRV_RUNTIME〜CHANGESET_BEGIN和

/IWBEP/IF_MGW_APPL_SRV_RUNTIME〜CHANGESET_END方法来进行批量更新。 请找到以下链接。

http://help.sap .com/saphelp_gateway20sp06/helpdata/zh-CN/90/dc8363306c47d3b2fca1398f5de94b/content.htm

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/40546820-3ea7-2f10-dfab-be373c0da357?overridelayout = true

您的创建URL如下所示,您必须在请求正文中粘贴多个记录。 如有任何问题,请告诉我。

http://Server:port/sap/opu/odata/sap/Z_RFC_POST/z_rfc_postCollection/$ 批处理

<?xml version =" 1.0" encoding =" utf-8"?>

http://Server:port/sap/opu/odata/sap/Z_RFC_POST/z_rfc_postCollection/"

xmlns =" http://www.w3.org/2005/Atom " xmlns:m =" http://schemas.microsoft.com/ado/2007/08/dataservices/metadata "

xmlns:d =" http://schemas.microsoft.com/ado/2007/08/dataservices ">

< id> http://Server:port/sap/opu/odata/sap/Z_RFC_POST/z_rfc_postCollection/

< title type =" text">收货状态

<类别术语="/img/Z_RFC_POST./z_rfc_post"

scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme "/>

<内容类型=" application/atom + xml">

0000000050

Ram

Chennai

< p> 0000000090

库马尔

班加罗尔

<?xml version =" 1.0" encoding =" utf-8"?>

http://Server:port/sap/opu/odata/sap/Z_RFC_POST/z_rfc_postCollection/"

xmlns =" http://www.w3。 org/2005/Atom " xmlns:m =" http://schemas.microsoft.com/ado/2007/08/dataservices/metadata "

xmlns:d =" htt p://schemas.microsoft.com/ado/2007/08/dataservices ">

http://服务器 :port/sap/opu/odata/sap/Z_RFC_POST/z_rfc_postCollection/

收货状态

scheme=" http: //schemas.microsoft.com/ado/2007/08/dataservices/scheme "/>

<内容类型=" application/atom + xml">

0000000051

Ram

Chennai

0000000090

库马尔

班加罗尔

派大星 ヾ
2楼-- · 2020-08-21 15:51

您是否已完成此案例?
因为我有相同的问题。

CJones
3楼-- · 2020-08-21 16:03

嗨,Uday,

OData不支持创建多结果 一次性记录。

但是有一个称为深度插入的概念,您可以在其中一次创建父项和子项。 例如销售订单和多个销售订单项目。

在此处检查如何进行深度插入。

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e0d92637-3d0d-2f10-ebb2-efc1f40a85e8?QuickLink = index&overridelayout = true&53717156092624

有一个选项可以批量更新和搜索 谷歌与OData和$ batch了解更多。

另一个解决方法是为您的实体创建一个虚拟父实体(您需要为其创建多个记录),为您的虚拟实体做一个深层插入,并在数据提供者类方法中,访问所有 孩子们记录下来并打电话给您的FM。

谢谢

克里希纳

Doze时光
4楼-- · 2020-08-21 15:59

Uday,

到目前为止,我还没有尝试过 。 但是您的请求似乎没有错。 (由Arun提供的那一个,而不是您发布的原始的一个。)

只是猜测。

您可以删除以下行(多次提及)并尝试吗?

<?xml version =" 1.0" encoding =" utf-8" standalone =" yes"?>

还要确保此处提到的属性名称与元数据中提到的属性名称完全相同。

野沐沐
5楼-- · 2020-08-21 15:43

嗨,Uday,

我建议您做的是:

尝试首先使用相同的URL和请求正文仅创建一个记录 :

<?xml version =" 1.0" encoding =" utf-8" standalone =" yes"?>

http://www.w3.org/2005/Atom "

xmlns:d =" http://schemas.microsoft.com/ado/2007/08/dataservices "

xmlns :m =" http://schemas.microsoft.com/ado/2007/08/dataservices/metadata ">

0000000 101

AAAA

Mangalore

< p>

如果适用,请执行批处理

请注意,在执行批处理命令时,必须考虑空格,以便帖子主体不应该包含不必要的新行或空格,因为网关正在对其进行解析。

请告诉我们您是否成功。

祝您好运

跑了。

me_for_i
6楼-- · 2020-08-21 15:45

您好,Kishor,

您共享的链接太有用了。 我对UI5表控件与OData模型绑定并且行是可编辑的东西感到困惑。 用户可以更改除键值之外的任何行。 我在页脚中提供了一个更新按钮。 有什么办法可以在单个有效载荷中更新后台设置的实体?

致谢

Sreehari

一周热门 更多>