2020-08-31 10:43发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我需要在多个SQL选择中显示几个常量。 这些常量来自仅包含一条记录的表。
如果标量函数不允许任何SQL操作,如何从HANA过程或函数中获取这些常量。
SELECT MANDT,MATNR,Cosant01,constant02
从" SAPSR3"到" MARA"
谢谢
Aleksandrs,您好
请尝试使用交叉连接(1 = 1条件)使用以下语句。 它将帮助您从设置表中获取常量。
开始 IT_MARA =从DUMMY中选择100 AS MANDT,从MATNR中选择'10 -10' 全联盟 从DUMMY中选择100 AS MANDT,'10 -20'AS MATNR ; IT_SETUP =从DUMMY中选择'AA'AS Costant01,'BB'AS constant02; SELECT MARA。*,SETUP。* 来自:IT_MARA AS MARA JOIN:IT_SETUP AS SETUP 开1 = 1 ; END
输出如下图所示:
capture.jpg
代替1 = 1的"技巧"也可以 为此使用正确的SQL连接:
CROSS JOIN
SELECT/* SELECT *确实不应该使用*/ MARA。,MARA。,MARA。 ,SETUP。,SETUP。,SETUP。,SETUP。 从 :IT_MARA AS MARA CROSS JOIN:IT_SETUP AS SETUP;
请注意,交叉联接将为两个表中每个元组组合创建一个结果元组。 这可能不是OP想要的。
感谢Lars
设置表中的参数取决于客户端。 我想通过函数/过程来选择它们,以避免加入
表MARA客户端相关
选择MANDT,MATNR,procedure01()AS CLIENT_ID,procedure02作为CO_AREA
表参数中的参数-取决于客户端
MANDT CLIENT_ID CO_AREA
联接将是更快的选项-不知道为什么要避免它。
选择mandt, matnr, " abc"为常量1, '123'为常量2 来自MARA。
不幸的是,常量应该从设置表中获取,因为它们可以更改并且可以在多个地方使用。
硬编码不是一个好的选择。
最多设置5个标签!
Aleksandrs,您好
请尝试使用交叉连接(1 = 1条件)使用以下语句。 它将帮助您从设置表中获取常量。
输出如下图所示:
capture.jpg
代替1 = 1的"技巧"也可以 为此使用正确的SQL连接:
CROSS JOIN
请注意,交叉联接将为两个表中每个元组组合创建一个结果元组。 这可能不是OP想要的。
感谢Lars
设置表中的参数取决于客户端。 我想通过函数/过程来选择它们,以避免加入
表MARA客户端相关
选择MANDT,MATNR,procedure01()AS CLIENT_ID,procedure02作为CO_AREA
表参数中的参数-取决于客户端
MANDT CLIENT_ID CO_AREA
联接将是更快的选项-不知道为什么要避免它。
不幸的是,常量应该从设置表中获取,因为它们可以更改并且可以在多个地方使用。
硬编码不是一个好的选择。
一周热门 更多>