加入表函数或存储过程时,HANA Calc View占位符的用法

2020-09-16 13:08发布

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

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


HANA版本:SP12

全部

我已经多次使用Lars的描述使用INPUT_PARAMETERS成功创建了Calc视图,但是在将完整的过滤器推送到SQL脚本的CTE/temp表中的PLACEHOLDER时遇到了麻烦。 当直接查询少于5000个字符的单个和多个输入时,尽管这些视图正常工作,但在存储的proc或表函数中对Calc View本身执行联接时遇到了问题。

示例:

" BASE_SCHEMA"。" BASE_TABLE_EXAMPLE "-记录数(*)〜200万条记录

  • 键:材质(不同2万个),植物(不同200个)

" _SYS_BIC"。" CA_EXAMPLE_PRODUCTIVITY "

  • 输入参数:IP_MATNR(nvarchar(5000)),IP_PLANT(nvarchar(5000))

问题1:nvarchar的最大值为5000。如果不同字符的计数为5000+,则无法在参数内使用多个输入。

问题2:如何以与在SQL中执行INNER_JOIN相同的方法使用PLACEHOLDER逻辑。

 base_data =

   选择
   厂
  ,材料

  来自" BASE_SCHEMA"。" BASE_TABLE_EXAMPLE"
  按植物,材料分组;
 

我想执行以下操作,但是在nvarchar(5000)的输入参数中串联多个字符串以供使用时,输出会引起问题。

选择

 string_agg(PLANT,''',''')作为工厂
 ,string_agg(MATERIAL,''',''')as MATERIAL
 进入var_PLANT,var_MATERIAL

 从
 (
    选择

    厂
    ,材料

    来自:base_data
 );
 

到目前为止,虽然我很成功,但是一旦将变量添加到Calc视图的PLACEHOLDER中,它就无法说明我向IP传递了太多字符。 有什么建议??? 预先感谢。

 base_calc =

   选择

   厂
   ,材料
   ,MATERIAL_BU
   ,等等....

   来自" _SYS_BIC"。" CA_EXAMPLE_PRODUCTIVITY"
   (PLACEHOLDER。" IP_MATNR" =>:var_MATERIAL,-<---此处失败。:(
    PLACEHOLDER。" IP_PLANT" =>:var_PLANT); 

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

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


HANA版本:SP12

全部

我已经多次使用Lars的描述使用INPUT_PARAMETERS成功创建了Calc视图,但是在将完整的过滤器推送到SQL脚本的CTE/temp表中的PLACEHOLDER时遇到了麻烦。 当直接查询少于5000个字符的单个和多个输入时,尽管这些视图正常工作,但在存储的proc或表函数中对Calc View本身执行联接时遇到了问题。

示例:

" BASE_SCHEMA"。" BASE_TABLE_EXAMPLE "-记录数(*)〜200万条记录

  • 键:材质(不同2万个),植物(不同200个)

" _SYS_BIC"。" CA_EXAMPLE_PRODUCTIVITY "

  • 输入参数:IP_MATNR(nvarchar(5000)),IP_PLANT(nvarchar(5000))

问题1:nvarchar的最大值为5000。如果不同字符的计数为5000+,则无法在参数内使用多个输入。

问题2:如何以与在SQL中执行INNER_JOIN相同的方法使用PLACEHOLDER逻辑。

 base_data =

   选择
   厂
  ,材料

  来自" BASE_SCHEMA"。" BASE_TABLE_EXAMPLE"
  按植物,材料分组;
 

我想执行以下操作,但是在nvarchar(5000)的输入参数中串联多个字符串以供使用时,输出会引起问题。

选择

 string_agg(PLANT,''',''')作为工厂
 ,string_agg(MATERIAL,''',''')as MATERIAL
 进入var_PLANT,var_MATERIAL

 从
 (
    选择

    厂
    ,材料

    来自:base_data
 );
 

到目前为止,虽然我很成功,但是一旦将变量添加到Calc视图的PLACEHOLDER中,它就无法说明我向IP传递了太多字符。 有什么建议??? 预先感谢。

 base_calc =

   选择

   厂
   ,材料
   ,MATERIAL_BU
   ,等等....

   来自" _SYS_BIC"。" CA_EXAMPLE_PRODUCTIVITY"
   (PLACEHOLDER。" IP_MATNR" =>:var_MATERIAL,-<---此处失败。:(
    PLACEHOLDER。" IP_PLANT" =>:var_PLANT); 
付费偷看设置
发送
2条回答
梦想连接
1楼-- · 2020-09-16 13:31

HI Dakota,

您是否考虑过将表类型作为输入参数? 这样,您可以拥有值列表,而不是连接字符串? 它可能会更好,所以您不限于需要通过多少次。 一旦您在视图中拥有表类型的值,那么您可以尝试加入-这是否适合您的要求?

欢呼

SG

Haoba3210
2楼-- · 2020-09-16 13:35

感谢您的回复,格雷罗先生,

老实说,我不认为要传递表类型。 我一定会调查一下,并用我的结果回复。 谢谢您,先生。

一周热门 更多>