在XSODATA服务中调用hdbProcedure

2020-08-25 19:12发布

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

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


我想在xsodata服务中调用hdbprocedure。 并通过xsodata服务将记录插入表中。

在Hana云中创建表

创建列表" SYSTEM"。" DEMO_TABLE"(
     默认情况下,DEMOULT产生的" DEMOID"整数CS_INT不为空,
     " DEMONO" VARCHAR(50),
     " LOGDATE" LONGDATECS_LONGDATE,
     首要的关键 (
         " DEMOID"
     )
 )卸载优先级5自动合并; 

创建hdbprocedure(insertDemo.hdbprocedure)

过程"系统"。" PODDEMO :: insertDemo"(
     IN in_demo" SYSTEM"。" TT_DEMO_TABLE_IN",
     OUT out_demoId" SYSTEM"。" TT_DEMO_TABLE_OUT"
 )
    语言SQLSCRIPT
    如
 开始
     DECLARE DEMO_NO VARCHAR(50);
     (选择" DEMONO"进入DEMO_NO FROM:in_demo);

     插入"系统"。" DEMO_TABLE"(DEMONO,LOGDATE)值(DEMO_NO,NOW());
   
   out_demoId = SELECT MAX(DEMOID)作为DEMOID
     FROM" SYSTEM"。" DEMO_TABLE";
 END 

在hdbprocedure中为输入和输出创建两个表类型

TT_DEMO_TABLE_OUT-用于输出

创建类型" SYSTEM"。" TT_DEMO_TABLE_OUT"为表(" DEMOID" INT CS_INT); 

TT_DEMO_TABLE_IN-用于输入

创建类型" SYSTEM"。" TT_DEMO_TABLE_IN"如表(" DEMONO" VARCHAR(50)CS_STRING);
 

创建了XSODATA服务(insert.xsodata)并称为hdbprocedure。

服务{
    " SYSTEM"。" DEMO_TABLE"作为"表"
    使用" PODDEMO :: insertDemo"创建;
 } 

我面临的问题是无法将记录插入表中。

请帮助。

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

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


我想在xsodata服务中调用hdbprocedure。 并通过xsodata服务将记录插入表中。

在Hana云中创建表

创建列表" SYSTEM"。" DEMO_TABLE"(
     默认情况下,DEMOULT产生的" DEMOID"整数CS_INT不为空,
     " DEMONO" VARCHAR(50),
     " LOGDATE" LONGDATECS_LONGDATE,
     首要的关键 (
         " DEMOID"
     )
 )卸载优先级5自动合并; 

创建hdbprocedure(insertDemo.hdbprocedure)

过程"系统"。" PODDEMO :: insertDemo"(
     IN in_demo" SYSTEM"。" TT_DEMO_TABLE_IN",
     OUT out_demoId" SYSTEM"。" TT_DEMO_TABLE_OUT"
 )
    语言SQLSCRIPT
    如
 开始
     DECLARE DEMO_NO VARCHAR(50);
     (选择" DEMONO"进入DEMO_NO FROM:in_demo);

     插入"系统"。" DEMO_TABLE"(DEMONO,LOGDATE)值(DEMO_NO,NOW());
   
   out_demoId = SELECT MAX(DEMOID)作为DEMOID
     FROM" SYSTEM"。" DEMO_TABLE";
 END 

在hdbprocedure中为输入和输出创建两个表类型

TT_DEMO_TABLE_OUT-用于输出

创建类型" SYSTEM"。" TT_DEMO_TABLE_OUT"为表(" DEMOID" INT CS_INT); 

TT_DEMO_TABLE_IN-用于输入

创建类型" SYSTEM"。" TT_DEMO_TABLE_IN"如表(" DEMONO" VARCHAR(50)CS_STRING);
 

创建了XSODATA服务(insert.xsodata)并称为hdbprocedure。

服务{
    " SYSTEM"。" DEMO_TABLE"作为"表"
    使用" PODDEMO :: insertDemo"创建;
 } 

我面临的问题是无法将记录插入表中。

请帮助。

付费偷看设置
发送
3条回答
Haoba3210
1楼-- · 2020-08-25 20:08

好的,这里的问题是,您试图将OUT参数用于其他应使用的参数。 对于存在基于过程的OData,将OUT参数始终解释为包含发生的错误的参数(在您的响应中,您将看到返回的值被解释为错误。由于该"错误"信息,因此写入操作(您的插入内容将按如下所述回滚) 在文档)中。

如果要返回创建的ID,则必须切换到 XS JavaScript OData写出口此处。因此,插入后,您必须像现在一样确定ID(仅使用XSJS逻辑即可)并更新 " afterTableNam中的值 e"。

骆驼绵羊
2楼-- · 2020-08-25 19:58

您遇到可以与我们分享的任何错误吗?

葫芦娃快救爷爷
3楼-- · 2020-08-25 19:42

我正在通过邮递员测试上述xsodata服务并获得以下错误 状态为400错误的请求。

 <?xml version =" 1.0" encoding =" utf-8" standalone =" yes"?>
 
     
     发生自定义错误。 查看错误详细信息。
     <内部错误>
         <错误细节>
              135 
         
     
 
 

仅" DEMOID"在递增(由于创建表时我保留了"自动递增"字段),但记录未登录到" SYSTEM"。" DEMO_TABLE"表。

您能帮我吗?

一周热门 更多>