如何在存储过程中调用计算视图时传递多输入参数

2020-09-23 23:15发布

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

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


专家们,

我已经创建了一个存储过程,该存储过程正在调用``计算''视图。我需要传递多个输入参数值,但我不能这样做。 我已经检查了所有与此相关的博客,但是到处都通过传递值本身来显示它。 我想传递输入参数而不是值。下面是我的代码段。

-IP_MATERIAL = 000000000067064914 000000000062040102;(输入参数)

如果(LENGTH(:IP_MATERIAL)<= 19)然后

VAR_IP_MATERIAL:= REPLACE(''''||:IP_MATERIAL ||'''','OR',''',''');

ELSE VAR_IP_MATERIAL:= REPLACE(''''||:IP_MATERIAL ||'''','OR',''''','''''));

END IF;

-VAR_IP_MATERIAL ='000000000067064914'',''000000000062040102'(输入参数的转换值)

TT_AK =

从" _SYS_BIC"中选择SELECT MANDT,MATNR,WERKS,C_DATE,LGORT,SUM(IFNULL(" LABST",0))AS C_OPENING_STOCK,SUM(IFNULL(" LABST",0))AS LABST。" A。CA_PS_MARD "((PLACEHOLDER。" $ IP_PLANT $" =>:VAR_PLANT,PLACEHOLDER。" $ IP_MATERIAL $" =>:IP_MATERIAL,PLACEHOLDER。" $ IP_DATE_TO_RUN_REPORT $" =>:IP_CURR_DATE,PLACEHOLDER。" $ IP_STORAGE _):LOC $ GROUP BY MANDT,MATNR,WERKS,C_DATE,LGORT;

通过上面的代码,我能够传递单个值作为输入参数,但是如果像000000000067064914 OR 那样传递IP_MATERIAL,即我正在传递两种材料并进行一些字符串解决,我最终将其作为

'000000000067064914'',''000000000062040102'然后抛出错误。

我以前在SP内部使用Dynamic SQL仍然可以正常工作。但是我想删除动态SQL部分。

动态SQL代码(更早):

EXEC'INSERT INTO #OPENING_STOCK SELECT MANDT,MATNR,WERKS,C_DATE,LGORT,SUM(IFNULL(" LABST",0))AS C_OPENING_STOCK,SUM(IFNULL(" LABST",0))AS LABST FROM" _SYS_BIC"。" A.CA_PS_MARD"(PLACEHOLDER。" $ IP_PLANT $" =>'||:VAR_PLANT ||',PLACEHOLDER。" $ IP_MATERIAL $" =>'||:VAR_IP_MATERIAL ||',PLACEHOLDER。" $ IP_DATE_TO_RUN_REPORT $" =>'''|| :: IP_CURR_DATE ||''',PLACEHOLDER。" $ IP_STORAGE_LOC $" =>'||:VAR_LGORT ||')GROUP BY MANDT,MATNR,WERKS,C_DATE,LGORT';;

这很好用。


我应该如何传递值,我什至尝试使用VAR_IP_MATERIAL的不同组合,如'''000000000062040102'',''000000000067064914'''但全部徒劳,还是我在调用存储过程时需要做一些代码更改 .....请帮助我。

我正在使用SAP HANA 1.0 SPS 11。

此致

Anuj Kumar

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

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


专家们,

我已经创建了一个存储过程,该存储过程正在调用``计算''视图。我需要传递多个输入参数值,但我不能这样做。 我已经检查了所有与此相关的博客,但是到处都通过传递值本身来显示它。 我想传递输入参数而不是值。下面是我的代码段。

-IP_MATERIAL = 000000000067064914 000000000062040102;(输入参数)

如果(LENGTH(:IP_MATERIAL)<= 19)然后

VAR_IP_MATERIAL:= REPLACE(''''||:IP_MATERIAL ||'''','OR',''',''');

ELSE VAR_IP_MATERIAL:= REPLACE(''''||:IP_MATERIAL ||'''','OR',''''','''''));

END IF;

-VAR_IP_MATERIAL ='000000000067064914'',''000000000062040102'(输入参数的转换值)

TT_AK =

从" _SYS_BIC"中选择SELECT MANDT,MATNR,WERKS,C_DATE,LGORT,SUM(IFNULL(" LABST",0))AS C_OPENING_STOCK,SUM(IFNULL(" LABST",0))AS LABST。" A。CA_PS_MARD "((PLACEHOLDER。" $ IP_PLANT $" =>:VAR_PLANT,PLACEHOLDER。" $ IP_MATERIAL $" =>:IP_MATERIAL,PLACEHOLDER。" $ IP_DATE_TO_RUN_REPORT $" =>:IP_CURR_DATE,PLACEHOLDER。" $ IP_STORAGE _):LOC $ GROUP BY MANDT,MATNR,WERKS,C_DATE,LGORT;

通过上面的代码,我能够传递单个值作为输入参数,但是如果像000000000067064914 OR 那样传递IP_MATERIAL,即我正在传递两种材料并进行一些字符串解决,我最终将其作为

'000000000067064914'',''000000000062040102'然后抛出错误。

我以前在SP内部使用Dynamic SQL仍然可以正常工作。但是我想删除动态SQL部分。

动态SQL代码(更早):

EXEC'INSERT INTO #OPENING_STOCK SELECT MANDT,MATNR,WERKS,C_DATE,LGORT,SUM(IFNULL(" LABST",0))AS C_OPENING_STOCK,SUM(IFNULL(" LABST",0))AS LABST FROM" _SYS_BIC"。" A.CA_PS_MARD"(PLACEHOLDER。" $ IP_PLANT $" =>'||:VAR_PLANT ||',PLACEHOLDER。" $ IP_MATERIAL $" =>'||:VAR_IP_MATERIAL ||',PLACEHOLDER。" $ IP_DATE_TO_RUN_REPORT $" =>'''|| :: IP_CURR_DATE ||''',PLACEHOLDER。" $ IP_STORAGE_LOC $" =>'||:VAR_LGORT ||')GROUP BY MANDT,MATNR,WERKS,C_DATE,LGORT';;

这很好用。


我应该如何传递值,我什至尝试使用VAR_IP_MATERIAL的不同组合,如'''000000000062040102'',''000000000067064914'''但全部徒劳,还是我在调用存储过程时需要做一些代码更改 .....请帮助我。

我正在使用SAP HANA 1.0 SPS 11。

此致

Anuj Kumar

付费偷看设置
发送
1条回答

一周热门 更多>