如何通过SAP Web IDE(Neo)中的带有hdbprocedure的create调用XSODATA服务

2020-08-14 03:57发布

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

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


专家们,

1)我在SAP Hana Web开发工作台中创建了.hdbprocedure。

过程" TEST"。" demo.test01 :: EmpInsert"(

在新的" demo.test01 :: Employee"中,

OUT错误" demo_tz.test01 :: Err")

语言SQLSCRIPT SQL安全调用者

开始

DECLARE CURSOR c_cursor FOR SELECT EMP_ID,EMP_NAME,DEPARTMENT FROM:new;

从:new;选择"部门"进入部门;

从"测试"中删除。" demo.test01 :: Employee",WHERE DEPARTMENT =:部门;

FOR cur_row as c_cursor DO

emp_id = cur_row.EMP_ID;

emp_name = cur_row.EMP_NAME;

emp_dept = cur_row.DEPARTMENT;

插入"测试"。" demo.test01 :: Employee"值(emp_id,emp_name,emp_dept); END FOR;

END

2)我使用该过程创建了xsodata。

服务{

"测试"。" demo.test01 ::雇员"为"雇员"

使用" demo.test01 :: EmpInsert"创建; }

3)我在Web IDE Neo环境中创建了SAPUI5应用程序

我的要求是使用SAP Web IDE中的xsodata创建新数据。

我想在xsodata服务调用期间传递json数据数组。

我尝试了此操作,但是尽管不确定是否允许,但它不起作用。

var oData = [];

oEntry2 = {" EMP_ID":" E0002"," EMP_NAME":"测试用户1","部门":" IT"};

oEntry2 = {" EMP_ID":" E0002"," EMP_NAME":"测试用户1","部门":" IT"};

oData.push(oEntry1);

oData.push(oEntry2);

oModel.create(sPath,oData,{成功:函数(){},错误:函数(){});

我该怎么做才能达到上述要求?

请提供参考/样品。

最好的问候

Thiri

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

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


专家们,

1)我在SAP Hana Web开发工作台中创建了.hdbprocedure。

过程" TEST"。" demo.test01 :: EmpInsert"(

在新的" demo.test01 :: Employee"中,

OUT错误" demo_tz.test01 :: Err")

语言SQLSCRIPT SQL安全调用者

开始

DECLARE CURSOR c_cursor FOR SELECT EMP_ID,EMP_NAME,DEPARTMENT FROM:new;

从:new;选择"部门"进入部门;

从"测试"中删除。" demo.test01 :: Employee",WHERE DEPARTMENT =:部门;

FOR cur_row as c_cursor DO

emp_id = cur_row.EMP_ID;

emp_name = cur_row.EMP_NAME;

emp_dept = cur_row.DEPARTMENT;

插入"测试"。" demo.test01 :: Employee"值(emp_id,emp_name,emp_dept); END FOR;

END

2)我使用该过程创建了xsodata。

服务{

"测试"。" demo.test01 ::雇员"为"雇员"

使用" demo.test01 :: EmpInsert"创建; }

3)我在Web IDE Neo环境中创建了SAPUI5应用程序

我的要求是使用SAP Web IDE中的xsodata创建新数据。

我想在xsodata服务调用期间传递json数据数组。

我尝试了此操作,但是尽管不确定是否允许,但它不起作用。

var oData = [];

oEntry2 = {" EMP_ID":" E0002"," EMP_NAME":"测试用户1","部门":" IT"};

oEntry2 = {" EMP_ID":" E0002"," EMP_NAME":"测试用户1","部门":" IT"};

oData.push(oEntry1);

oData.push(oEntry2);

oModel.create(sPath,oData,{成功:函数(){},错误:函数(){});

我该怎么做才能达到上述要求?

请提供参考/样品。

最好的问候

Thiri

付费偷看设置
发送
5条回答
大简至美
1楼 · 2020-08-14 04:13.采纳回答

好吧,thx是有关JSON数组的提示。

create函数仅支持对象,不支持数组; 这意味着一次调用create函数只能创建一个条目。 您必须为要创建的每个条目调用create函数。 如果要一次将所有数据发送到后端,可以对每个数据对象使用函数createEntry,然后调用函数commitChanges将其传输到后端。 使用createEntry函数的groupId和changeetId参数,您可以控制数据的"捆绑"方式。 如果是,您是否收到错误或任何其他提示?

CPLASF-自律
2楼-- · 2020-08-14 04:20

根据您在以上评论中发布的错误消息,对我来说,您似乎正在调用一个错误的端点,该端点不可用 在OData服务中。 请检查(并在此处显示)您的OData模型是否指向正确的OData服务,以及您用于创建操作的路径是否指向该OData服务的"雇员"集合。

天桥码农
3楼-- · 2020-08-14 04:28

嗨,弗洛里安 Pfeffer,

感谢您的反馈。

这是错误信息。

oError.statusCode" 400"

oError.statusText"错误请求"

oError.responseText"错误处理请求流。该请求应该是有效的顶级资源对象。"

最好的问候

Thiri

Baoming ROSE
4楼-- · 2020-08-14 04:02

嗨,专家

我曾尝试使用ajax POST方法将参数数据作为JSON.stringfy(data)方法传递。

它遇到了相同的错误代码:400

请提供正确的方法。

这是我的Ajax POST代码。

var jsonData = JSON.stringify(oData);

jQuery.ajax({

类型:" POST",

url:"/xxxxxxx/Employee.xsodata/Employee",

数据:jsonData,

contentType:" application/json",

beforeSend:函数(xhr){

xhr.setRequestHeader(" X-CSRF-Token",令牌);

},

成功:function(data,textStatus,jqXHR){

result ="成功"; window.alert("发布成功");

},

错误:函数(数据,xhr,textStatus){

result ="错误"; window.alert("发布失败");

}});

最好的问候

Thiri

悠然的二货
5楼-- · 2020-08-14 04:04

嗨Florian Pfeeffer,

感谢您的反馈。

URL是正确的,因为它可以存储一个记录json数据。

仅在传递json数据数组时发生错误。

因此,可能无法通过oModel.create方法传递json数据数组。

最好的问候

Thiri

一周热门 更多>