通过xsjs在Hana 2.0 SPS 03中执行基本查询的问题

2020-09-05 05:20发布

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

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


我正在尝试在Hana 2.0 SPS 03环境中执行以下代码。

TEMP_DATA是上下文名称,而Entity是实体名称。 我的项目中没有名称空间。

直截了当但是运行此命令时,出现错误" 500个无效的列名:ID ",但是当我更改查询以在id列中添加双引号时(如下所示) 我的查询执行。

 var query ='从TEMP_DATA.Entity选择'id'作为"标识符"; 

但这对我来说是个问题,因为我已将上下文和实体名称设置为与我的1.0名称匹配,因此1.0中的代码可在2.0中使用。 如果必须在select子句中为列添加引号,则必须手动对所有文件中的所有查询执行此操作,这将很耗时。 那么,有没有一种方法可以使1.0工件中的所有查询都可以在表名称更改的情况下在2.0中工作?

P.S。 我在程序和函数中也发现了相同的问题

(8.8 kB)

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

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


我正在尝试在Hana 2.0 SPS 03环境中执行以下代码。

TEMP_DATA是上下文名称,而Entity是实体名称。 我的项目中没有名称空间。

直截了当但是运行此命令时,出现错误" 500个无效的列名:ID ",但是当我更改查询以在id列中添加双引号时(如下所示) 我的查询执行。

 var query ='从TEMP_DATA.Entity选择'id'作为"标识符"; 

但这对我来说是个问题,因为我已将上下文和实体名称设置为与我的1.0名称匹配,因此1.0中的代码可在2.0中使用。 如果必须在select子句中为列添加引号,则必须手动对所有文件中的所有查询执行此操作,这将很耗时。 那么,有没有一种方法可以使1.0工件中的所有查询都可以在表名称更改的情况下在2.0中工作?

P.S。 我在程序和函数中也发现了相同的问题

(8.8 kB)
付费偷看设置
发送
3条回答
jovirus
1楼 · 2020-09-05 06:00.采纳回答

>列创建不是这里的问题。 我已经使其符合1.0定义

,但我相信这是问题所在。 查询1仅在id列实际上是数据库中的ID时才有效。 如果不引用该列,则将其转换为全部大写。 只有将Column在所有小写字母中都明确定义为id时,查询2才起作用。 我认为,如果您查看目录中的表定义,将会发现旧版本与新版本有所不同。 这就是为什么我问您如何创建表格的原因。 如果使用CDS,则与列大小写直接相关的语法规则已更改。 因此,相同的CDS语法不会导致在数据库中创建相同的事物。

路亽曱_Ryan
2楼-- · 2020-09-05 06:06

这很有道理。 是的,如上所述,我将该列作为id(小写)。 我可以将其更改为ID并进行测试。

同时,表定义为2.0的CDS格式。 我的目的是使1.0中的所有工件都能以最小的努力在2.0中工作。 因此,如果我在表定义中将任何具有小写字母的列名转换为大写字母,那么在具有小写字母列名的工件中执行的任何查询都将自动转换为大写字母,但执行会顺利进行

# p#

您如何创建此表? 我认为,在创建该列时,如果要避免调整查询,则应指定该列的大小写以匹配之前的大小写。 您正在使用HDBCDS吗? 大小写的使用有所不同,您可能需要调整定义。

SAP浪
3楼-- · 2020-09-05 06:05

列创建不是这里的问题。 我已经使其与1.0定义相匹配。 问题是xsjs和过程中的查询形式。

情况1:var query ='从TEMP_DATA.Entity选择ID作为"标识符";
 情况2:var query ='从TEMP_DATA.Entity选择'id'作为"标识符"; 

在情况1中:id不能用双引号引起来,这就是在1.0文件中编写查询的方式。 但是在按2.0版本执行时,出现错误" 500无效的列名称:ID"

在情况2中:当我在列中添加""(即从id到" id")时,我的代码将执行。

以一个更复杂的查询为例,该查询具有case语句,聚合,子查询等。如果我的查询按case 1执行,则可以在使用简单脚本进行迁移的同时更改表名(如果需要)。 但是,如果我必须用引号将所有列括起来,如第2种情况,就无法使用我提到的脚本coz来完成,这存在复杂的情况,而且在许多情况下,查询是使用多行字符串构建的,甚至可以通过 围绕函数,并生成查询字符串。

一周热门 更多>