1

HANA 版本:SP12

全部,

正如 Lars 在许多博客和论坛中所描述的那样,我已经成功地使用 INPUT_PARAMETERS 创建了 Calc Views。虽然在直接查询单个和多个输入时这些视图可以正常工作,但我遇到了在存储的过程或表函数中对 Calc 视图本身执行连接的问题。

例子:

" BASE_SCHEMA"."BASE_TABLE_EXAMPLE " - 记录数 (*) ~ 200 万条记录

  • 键:材料(20k 不同),植物(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 = 

  select 
  PLANT
 ,MATERIAL

 from "BASE_SCHEMA"."BASE_TABLE_EXAMPLE"
 group by PLANT,MATERIAL; 

我会考虑执行以下操作,但在连接多个字符串以在 nvarchar(5000) 的输入参数中使用时,输出会导致问题。

select

string_agg(PLANT,''',''') as PLANT
,string_agg(MATERIAL,''',''') as MATERIAL
into var_PLANT, var_MATERIAL

from
(
   select

   PLANT
   ,MATERIAL

   from :base_data
);

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

base_calc =

  select

  PLANT
  ,MATERIAL
  ,MATERIAL_BU
  ,etc....

  from "_SYS_BIC"."CA_EXAMPLE_PRODUCTIVITY"

  (PLACEHOLDER."IP_MATNR"=> :var_MATERIAL,  --<---Fails here. :(
   PLACEHOLDER."IP_PLANT"=> :var_PLANT);

在 SAP SCN 上提出的问题。位于这里

4

1 回答 1

0

您是否尝试使用 WHERE 子句而不是 PLACEHOLDER?

base_calc =

select

PLANT,
MATERIAL,
MATERIAL_BU,
etc....

from "_SYS_BIC"."CA_EXAMPLE_PRODUCTIVITY"

WHERE MATERIAL = var_MATERIAL AND PLANT = var_PLANT;
于 2019-02-06T06:14:09.290 回答